如何实现总线之间数据的转换 一、产品概述 SG_CAN_Modbus是一款用于CAN-Bus现场总线与RS-232总线或RS-485总线之间数据转换的协议型转换器,支持标准Modbus RTU协议。集成1路RS-232通道、1路RS-485通道、1路CAN-Bus通道,可以方便地嵌入使用RS-232接口和RS-485接口的节点上,在不需要改变原有硬件结构的前提下使设备获得CAN-Bus通讯接口,实现RS-232或RS-485设备与CAN-Bus网络之间的连接及数据通讯。SG_CAN_Modbus的RS-232通道和RS-485通道支持多种常用波特率,范围是1200-bps。CAN-Bus通道支持多种常用CAN速率范围是5K-500Kbps。使用本公司提供的配置软件,用户可以灵活设置模块的转换参数。 二、规格特性 实现CAN-Bus与RS-232/RS-485的双向数据通讯; 支持 CAN2.0A 和 CAN2.0B 协议,符合 ISO/DIS 11898 规范; 集成 1 路 CAN-bus 通讯接口,通讯速率在5K~500Kbps; 集成 1 路 RS-232和1路RS-485 通讯接口,通讯速率在 1200~bps; 支持三种数据转换方式:透明传输、带标志转换和Modbus协议转换,支持Modbus RTU协议,透明传输和带标志转换支持RS-232和CAN口,Modbus转换支持RS-485和CAN口; 电源:DC 9-24 V,典型值12V 50mA; 内置终端电阻,短接端口使能; 工作温度:-40℃ ~ 85℃。 性能参数:每秒转发7000字节(透明传输,RS-232接口bps,CAN接口500Kbps),内置21K接收缓冲区,保证大量突发数据不丢包。 三、外观与接口定义VIN+、VIN-电源正负极Res1+、Res1-CAN-Bus 120欧姆终端电阻选择端CAN_H、CAN_LCAN-Bus连接端Res2+、Res2-485总线 120欧姆匹配电阻选择端485_A、485_B485总线连接端SET、MODE、STAND模式选择RS-接口 Res1+和Res1-是CAN-Bus总线120欧姆终端电阻使能端,如果此节点需要120欧姆终端电阻则短路这两个端口即可,已内置120欧姆电阻; CAN_H、CAN_L为CAN信号的连接端; Res2+和Res2-是485总线120欧姆匹配电阻使能端,如果此节点需要120欧姆匹配电阻则短路这两个接口,已内置120欧姆电阻; 485_A、485_B为485信号的连接端,且已内置150K上下拉电阻; STAND、MODE、SET为模式选择接口,短接MODE和SET并重新上电设备进入配置模式,短接MODE和STAND并重新上电设备进入收发模式; RS-232接口使用DB9母头接口,接口定义如下
3.3指示灯说明指示灯功能Power电源状态,灯亮表示电源正常CAN灯亮代表CAN通道在发送数据232透明传输和带标志转换下灯亮代表232通道在发送,Modbus转换模式下灯亮代表CAN通道错误计数达到255,通道关闭485Modbus转换模式下灯亮代表485通道在发送,透明传输和带标志转换下灯亮代表CAN通道错误计数达到255,通道关闭 只有在有数据发送时灯才亮,时间很短,如果有数据连续发送会看到灯闪烁。 3.4接线说明 为了增强CAN-bus 通讯的可靠性,CAN-bus 总线网络的两个端点,通常要加入终端匹配电阻(120欧姆),也就是说如果设备工作在CAN-Bus终端则需要接入120欧姆终端电阻,此时只需短路Res1+和Res1-即可(120R电阻已内置)。 CAN通讯线可以使用双绞线、屏蔽双绞线。若通讯距离超过1KM时,应保证线的截面积大于1.0mm2。具体规格,应根据距离而定,常规是随距离的加长而适当加大。 RS-485是差分电平通信,在距离较长或速率较高时,线路存在回波干扰,此时需要在通信线路首末两端并联120欧姆匹配电阻,推荐在线路长度大于300米时,才考虑加匹配电阻。如需使用短路Res2+和Res2即可-。 四、软件说明 4.1软件参数
全局参数设备型号选择为“CAN网关”串口号设备在电脑上对应的串口号转换模式透明传输、带标志转换、Modbus转换232/485参数波特率232或者485通道的速率,1200-数据位固定为8位校验位无校验None、奇校验Odd、偶校验Even停止位0.5bit、1bit、1.5bit、2bit流控制无None帧间隔以多少个字节时长作为一帧结束1-32Byte,Modbus转换模式下不可设定,固定为3.5ByteCAN参数波特率CAN通道速率,5K-500Kbps帧类型以何种CAN帧转发232/485通道收到的数据,标准帧、扩展帧ID偏移带标志转换用,指示ID在串行帧的起始地址0-7ByteID长度带标志转换用,指示ID的占用几个字节长度1-4ByteCAN_ID透明传输用,指定以哪个ID转发232通道收到的数据CAN过滤设置接收单选框用来设定是否接收标准帧和扩展帧滤波单选框用来设定是否启用帧ID过滤,只有使能相应接收才可选择ID起始需要接收的ID最小值,标准帧0x001-0x7FF扩展帧0x00000001-0x1FFFFFFFID结束需要接受的ID最大值标准帧,范围同上其他参数允许CAN帧信息发送到串行数据透明传输有效,一个字节,最高位0代表标准帧,1代表扩展帧,最低4位帧数据长度允许CAN帧ID发送到串行数据透明传输有效,收到的标准帧ID两个字节表示,扩展帧ID四个字节表示 注意事项: 软件会自动失能无关选项。 标准帧ID共11位范围0x001–0x7FF,扩展帧ID共29位范围0x00000000–0x1FFFFFFF。 串行帧用两个字节(16位)中低11位表示标准帧,用四个字节(32位)中低29位表示扩展帧。 透明传输模式下如果使能了“允许CAN帧ID转发到串行帧”,当CAN通道收到标准帧会把ID转成两个字节,收到扩展帧会把ID转为四个字节。建议在同时接收标准帧和扩展帧的情况下如果使能了“允许CAN帧ID转发到串行帧”则同时使能“允许CAN帧信息转发到串行帧”。 带标志转换模式下会把串行帧相应ID位字节转为CAN发送字节,同时把CAN通道收到的CAN帧ID转发到相应位置。建议如果接收扩展帧请把ID长度设置为4个字节长度,否则ID可能出错,详见后面转换方式。 Modbus转换模式下会把485通道收到每帧第一个字节(即地址)作为CAN发送ID,相应的把CAN通道收到的CAN帧ID最低8位(一个字节)作为Modbus应答帧第一个字节(地址)。 帧间隔用来确定232通道或者485通道一帧数据是否发完,当连续超过帧间隔时间没有收到下一字节即可认为一帧结束。帧间隔单位是在设定波特率下一个字节时长。根据Modbus RTU传输协议,在波特率不大于19200的情况下帧间隔固定3.5个字节时长,大于19200时按固定时长1.75ms(因为中间一般有很多中断要处理)作为一帧间隔。故,本设备三种转换模式也参照此协议,即(帧间隔÷波特率)要不小于(3.5÷19200)。 4.2配置说明 在使用本产品之前需要先通过配置软件配置好收发模式和参数,否则软件会按最近一次配置模式进行工作。 配置时短接SET和MODE端,通过USB转串口线连接电脑和设备的232接口并重新上电,打开配置软件选择设备型号为CAN网关,选择串口并打开然后进行参数设定。 设置好参数配置即可把配置信息写入设备,之后软件会提示是否配置成功。 五、转换方式 5.1透明传输 5.1.1串行帧到CAN通道 设备以PC端软件配置好的CAN帧类型和ID作为CAN发送的类型和ID,不断转发RS-232接口接收到的数据。 当232接口收到连续8个字节或者不够8个字节但一帧结束会立即转发到CAN总线,即如果一帧串口数据多于8个字节则每次发送8个字节直到最后一段不足8个字节,如果一帧串口数据少于8个字节则一次发完。
串行帧转CAN帧信息用户不用管,里面包含了帧信息(标准帧还是扩展帧)以及数据字节长度;帧ID是由用户在软件配置的,下次配置之前永远保持不变。 5.1.2 CAN通道到串行帧 当CAN总线收到一帧CAN信息(一帧CAN数据小于等于8个字节)会立即转发到232接口。如果使能了“CAN帧信息发送到串行帧”则会把帧信息填充在第一个字节,如果使能了“CAN帧ID发送到串行帧”则会把帧信息填充在之后的2(标准帧)或4(扩展帧)个字节,之后填充数据。
5.2带标志转换 5.2.1 串行帧到CAN通道 带标志转换可以通过配置软件指定CAN发送时的ID类型,在串行帧第几个字节开始(从0开始)、ID长度是多少(1-4)。 232接口收到一帧串行数据会根据上述配置取出ID的并以此作为CAN发送ID发送这一帧串行数据。 带标志转换同样是边收边转发,只要232接口收到这帧已经包含的完整ID并且数据够了8个字节或一帧结束就立即转发。
如上表格:配置为带标志转换模式,以标准帧发送,ID长度为2,ID从第2字节开始(从0开始计数)。只要232接口收到前4个字节就确定了ID,收完了前10个字节就开始发送了,之后每收8个字节就发送,直到这一帧发完。下一帧串行帧收到4个字节之后重新设置发送ID。 注意事项:串行帧中ID长度与CAN发送ID对应关系串行帧中ID长度与CAN发送ID对应关系ID长度标准帧扩展帧1ID低8位ID最低8位(7-0)2ID高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位 5.2.2 CAN通道到串行帧 当CAN收到一帧数据也会立即转发到232接口,同时会在相应位置填充CAN帧ID,因为串行帧格式原因,所以务必保证软件配置的CAN信息(CAN类型、ID长度)与CAN网络一致。
注意事项:CAN发送ID填充到串行帧规则
5.3 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发送出去。 5.3.1 RS-485通道到CAN通道 Modbus转CAN与前两种转换方式不同,只有在收到完整一帧Modbus之后,设备才会把Modbus第一字节(地址字节)作为CAN发送ID,通过如下分段方式进行拆包然后完成CAN通道的转发。因为一帧CAN帧最多携带8个数据,为了能在另一端正确地完成对一帧Modbus的拼接故参考DeviceNet(一个CAN应用层协议)分段报文传送协议进行拆包,然后通过CAN通道发送,在另一端按此协议重组。 因为Modbus转换模式下只有在收到完整一帧Modbus数据才会转发,且根据Modbus协议,Modbus是“问答”型协议,所以要等待另一端响应之后才能发送下一阵Modbus数据,或者超时无应答也可以再次发送。如果发送频率过快,“问完没答”就发下一针可能造成数据丢失或数据错误。 分段拆包格式如下:
分段标记:0单独报文,1分段报文中的一段; 分段类型:0第一个分段,1中间分段,2最后分段 分段计数器:每一段的标志,该段在整个报文中的序号0-31 5.3.2 CAN通道到RS-485通道 设备把CAN通道收上来的CAN帧按拆包规则逆向组合,之后在最后加上两个字节CRC之后通过RS-485通道发送出去
2024最新激活全家桶教程,稳定运行到2099年,请移步至置顶文章:https://sigusoft.com/99576.html
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。 文章由激活谷谷主-小谷整理,转载请注明出处:https://sigusoft.com/82773.html