yc-can-rtu 是一款用于 can-modbus 现场总线与 rs-232 总线或 rs-485 总线之间数据转换的协议型转换器,支持标准 modbus rtu 协议。集成 1 路rs-232 通道、1 路rs-485 通道、1 路can-modbus 通道,可以方便地嵌入使用 rs-232 接口和 rs-485 接口的节点上,在不需要改变原有硬件结构的前提下使设备获得can-modbus 通讯接口,实现 rs-232 或 rs-485 设备与can-modbus 网络之间的连接及数据通讯。
透明传输
串行帧到can 通道
设备以 pc 端软件配置好的 can 帧类型和 id 作为 can 发送的类型和 id, 不断转发 rs-232 接口接收到的数据。
当 232 接口收到连续 8 个字节或者不够 8 个字节但一帧结束会立即转发到
can 总线,即如果一帧串口数据多于 8 个字节则每次发送 8 个字节直到最后一
段不足 8 个字节,如果一帧串口数据少于 8 个字节则一次发完。
串行帧转 can 帧信息用户不用管,里面包含了帧信息(标准帧还是扩展帧) 以及数据字节长度;帧 id 是由用户在软件配置的,下次配置之前永远保持不变。
can 通道到串行帧
当 can 总线收到一帧 can 信息(一帧 can 数据小于等于 8 个字节)会立即转发到 232 接口。如果使能了“can 帧信息发送到串行帧”则会把帧信息填充在第一个字节,如果使能了“can 帧 id 发送到串行帧”则会把帧信息填充在之后的 2(标准帧)或 4(扩展帧)个字节,之后填充数据。
带标志转换
串行帧到can 通道
带标志转换可以通过配置软件指定 can 发送时的 id 类型,在串行帧第几个字节开始(从 0 开始)、id 长度是多少(1-4)。
232 接口收到一帧串行数据会根据上述配置取出id 的并以此作为can 发送
id 发送这一帧串行数据。
带标志转换同样是边收边转发,只要 232 接口收到这帧已经包含的完整 id
并且数据够了 8 个字节或一帧结束就立即转发。
串行帧 帧信息 帧信息 帧信息 帧信息
数据 1 帧 id id id id
数据 2 数据域 数据 1 数据 11 。
数据 3 id 数据 2 数据 12 。
数据 4 id 数据 5 数据 13 。
数据 5 数据 6 数据 14 。
。 数据 7 数据 15 。
数据 n-2 数据 8 数据 16 数据 n-1
数据 n-1 数据 9 。 数据 n
数据 n 数据 10 。
如上表格:配置为带标志转换模式,以标准帧发送,id 长度为 2,id 从第
2 字节开始(从 0 开始计数)。只要 232 接口收到前 4 个字节就确定了 id,收完了
前 10 个字节就开始发送了,之后每收 8 个字节就发送,直到这一帧发完。下一帧串行帧收到 4 个字节之后重新设置发送 id。
注意事项:串行帧中 id 长度与 can 发送 id 对应关系
串行帧中 id 长度与 can 发送 id 对应关系
id 长度 标准帧 扩展帧
1 id 低 8 位 id 最低 8 位(7-0)
2 id 高 3 位,id 低 8 位 id 15-8 位,id 7-0 位
3 空字节,id 高 3 位,id 低 8 位 id 23-16 位,id 15-8 位,id
7-0 位
4 空字节,空字节,id 高 3 位,id 低 8 位 id 最高五位,id 23-16 位,
id 15-8 位,id 7-0 位
can 通道到串行帧
当can 收到一帧数据也会立即转发到232 接口,同时会在相应位置填充can 帧 id,因为串行帧格式原因,所以务必保证软件配置的can 信息(can 类型、
id 长度)与 can 网络一致。
can 帧 串行帧
帧信息 标准帧 0x00+数据字节长度
扩展帧 0x80+数据字节长度 数据 1
帧 id 标准帧 11 位,扩展帧 29 位 数据 2
数据域 数据 1 id 高 3 位
数据 2 id 低 8 位
数据 3 数据 3
数据 4 数据 4
数据 5 数据 5
数据 6 数据 6
数据 7 数据 7
数据 8 数据 8
注意事项:can 发送 id 填充到串行帧规则
can 发送 id 填充到串行帧规则
串行帧 id 长度 填充规则
标准帧 1 id 低 8 位
2 id 高 3 位,id 低 8 位
3 空字节,id 高 3 位,id 低 8 位
4 空字节,空字节,id 高 3 位,id 低 8 位
扩展帧 1 id 最低 8 位(7-0)
2 id 15-8 位,id 7-0 位
3 id 23-16 位,id 15-8 位,id 7-0 位
4 id 最高五位,id 23-16 位,id 15-8 位,id 7-0 位
modbus 转换
modbus 转 can 模式中设备并不作为 modbus 主站或者从站,只负责把
modbus 帧通过 can 发送出去,另一个使用相同协议的设备还原 modbus 并把应答 modbus 帧发到 can 网络。
rs-485 采用标准 modbus rtu 协议,所以用户在软件配置时务必确保设置是否符合 modbus rtu 协议。
modbus rtu 协议对规定,数据格式为 1 位起始位,8 位数据位,1 位停止位,偶校验(也可以奇校验或者无校验,如果无校验则把停止位设为两位),
crc16modbus 校验,modbus 一帧最长为 256 字节。
设备收到完整一帧 modbus 会进行 crc 校验, 如果没有错误会把这条
modbus 帧通过 can 发送到 can 网络,但不会发送最后两个字节的 crc,因为
can 可靠性非常高,出错概率极低。当设备从 can 通道收到完整一帧 modbus
之后会自动加上 crc 校验然后通过 rs-485 发送出去。
rs-485 通道到can 通道
modbus 转can 与前两种转换方式不同,只有在收到完整一帧 modbus 之后, 设备才会把 modbus 第一字节(地址字节)作为 can 发送 id,通过如下分段方
式进行拆包然后完成 can 通道的转发。因为一帧 can 帧最多携带 8 个数据, 为了能在另一端正确地完成对一帧 modbus 的拼接故参考 devicenet(一个 can 应用层协议)分段报文传送协议进行拆包,然后通过 can 通道发送,在另一端按此协议重组。
因为 modbus 转换模式下只有在收到完整一帧 modbus 数据才会转发,且根据 modbus 协议,modbus 是“问答”型协议,所以要等待另一端响应之后才能发送下一阵 modbus 数据,或者超时无应答也可以再次发送。如果发送频率过快,
“问完没答”就发下一针可能造成数据丢失或数据错误。分段拆包格式如下:
7 6 5 4 3 2 1 0
帧信息
帧 id1
数据 1 分段标记 分段类型 分段计数器
数据 2 数据 1
数据 3 数据 2
数据 4 数据 3
数据 5 数据 4
数据 6 数据 5
数据 7 数据 6
数据 8 数据 7
分段标记:0 单独报文,1 分段报文中的一段;
分段类型:0 第一个分段,1 中间分段,2 最后分段
分段计数器:每一段的标志,该段在整个报文中的序号 0-31
can 通道到rs-485 通道
设备把 can 通道收上来的 can 帧按拆包规则逆向组合,之后在最后加上两个字节 crc 之后通过 rs-485 通道发送出去
LED产业逐步开始进入成熟期 预计2020年中国LED行业总体产值将突破10000亿元
几亿人都在用的手机软件,正偷偷吃电,怪不得电池不耐用!
PS4版《赛博朋克2077》性能问题 CPU造成
深圳市数字创意产业协会搞了一场元宇宙发布会,积木易搭视创云会场提供一站式解决方案
四足行走机器人SpotMini 波士顿动力公司展示最新进展
Can转RTU网关can网关线束连接什么地方
开路电压怎样测量_短路电流补偿测量
CTSD ADC架构的固有混叠抑制及如何简化信号链设计
KOH硅湿法蚀刻工艺详解
气动隔膜调节阀密封失效的原因是什么
百度Apollo自动驾驶继续攀峰,并在全国多地点亮智能交通版图
交换机和Wi-Fi将是无线网络的坚强后盾
新能源汽车线束设计防错的具体措施
UnitedSiC在650V产品系列中新增7个SiC FET
美国打造机器人军团,代替士兵作战,将实现无伤亡作战
乙类双电源互补对称功率放大电路
英飞凌第4季营收受到全球汽车需求疲软的影响
工业相机八问,机器视觉工程师必知
是否有老年痴呆人,人工智能可提前十年告知你
常规的家用安防摄像头需要具备那些功能