智能协议转换器
(SG_CAN_Modbus)
天津滨海新区三格电子科技有限公司
一、产品概述
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-115200bps。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~115200bps;
支持三种数据转换方式:透明传输、带标志转换和Modbus协议转换,支持Modbus RTU协议,透明传输和带标志转换支持RS-232和CAN口,Modbus转换支持RS-485和CAN口;
电源:DC 9-24 V,典型值12V 50mA;
内置终端电阻,短接端口使能;
工作温度:-40℃ ~ 85℃。
性能参数:每秒转发7000字节(透明传输,RS-232接口115200bps,CAN接口500Kbps),内置21K接收缓冲区,保证大量突发数据不丢包。
三、外观与接口定义
3.1产品外观
3.2接口定义
VIN+、VIN- |
电源正负极 |
Res1+、Res1- |
CAN-Bus 120欧姆终端电阻选择端 |
CAN_H、CAN_L |
CAN-Bus连接端 |
Res2+、Res2- |
485总线 120欧姆匹配电阻选择端 |
485_A、485_B |
485总线连接端 |
SET、MODE、STAND |
模式选择 |
RS-232 |
232接口 |
VIN+、VIN-分别为电源的正负极;
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,通道关闭 |
485 |
Modbus转换模式下灯亮代表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-115200 |
|
数据位 |
固定为8位 |
|
校验位 |
无校验None、奇校验Odd、偶校验Even |
|
停止位 |
0.5bit、1bit、1.5bit、2bit |
|
流控制 |
无None |
|
帧间隔 |
以多少个字节时长作为一帧结束1-32Byte,Modbus转换模式下不可设定,固定为3.5Byte |
|
CAN参数 |
||
波特率 |
CAN通道速率,5K-500Kbps |
|
帧类型 |
以何种CAN帧转发232/485通道收到的数据,标准帧、扩展帧 |
|
ID偏移 |
带标志转换用,指示ID在串行帧的起始地址0-7Byte |
|
ID长度 |
带标志转换用,指示ID的占用几个字节长度1-4Byte |
|
CAN_ID |
透明传输用,指定以哪个ID转发232通道收到的数据 |
|
CAN过滤设置 |
||
接收单选框 |
用来设定是否接收标准帧和扩展帧 |
|
滤波单选框 |
用来设定是否启用帧ID过滤,只有使能相应接收才可选择 |
|
ID起始 |
需要接收的ID最小值,标准帧0001-07FF 扩展帧000000001-01FFFFFFF |
|
ID结束 |
需要接受的ID最大值标准帧,范围同上 |
|
其他参数 |
||
允许CAN帧信息发送到串行数据 |
透明传输有效,一个字节,最高位0代表标准帧,1代表扩展帧,最低4位帧数据长度 |
|
允许CAN帧ID发送到串行数据 |
透明传输有效,收到的标准帧ID两个字节表示,扩展帧ID四个字节表示 |
注意事项:
软件会自动失能无关选项。
标准帧ID共11位范围0001--07FF,扩展帧ID共29位范围000000000--01FFFFFFF。
串行帧用两个字节(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个字节则一次发完。
串行帧 |
|
帧信息 |
用户配置 |
用户配置 |
用户配置 |
数据1 |
帧ID |
用户配置 |
用户配置 |
用户配置 |
|
数据2 |
数据域 |
数据1 |
数据9 |
。 |
|
数据3 |
数据2 |
数据10 |
。 |
||
。 |
数据3 |
。 |
。 |
||
。 |
数据4 |
。 |
。 |
||
。 |
数据5 |
。 |
。 |
||
数据n-2 |
数据6 |
。 |
数据n-1 |
||
数据n-1 |
数据7 |
。 |
数据n |
||
数据n |
数据8 |
。 |
|
串行帧转CAN帧信息用户不用管,里面包含了帧信息(标准帧还是扩展帧)以及数据字节长度;帧ID是由用户在软件配置的,下次配置之前永远保持不变。
5.1.2 CAN通道到串行帧
当CAN总线收到一帧CAN信息(一帧CAN数据小于等于8个字节)会立即转发到232接口。如果使能了“CAN帧信息发送到串行帧”则会把帧信息填充在第一个字节,如果使能了“CAN帧ID发送到串行帧”则会把帧信息填充在之后的2(标准帧)或4(扩展帧)个字节,之后填充数据。
CAN帧 |
|
串行帧 |
|
帧信息 |
标准帧000+数据字节长度 扩展帧080+数据字节长度 |
帧信息(可选) |
|
帧ID |
标准帧11位,扩展帧29位 |
帧ID(可选) |
|
数据域 |
数据1 |
数据1 |
|
数据2 |
数据2 |
||
数据3 |
数据3 |
||
数据4 |
数据4 |
||
数据5 |
数据5 |
||
数据6 |
数据6 |
||
数据7 |
数据7 |
||
数据8 |
数据8 |
5.2带标志转换
5.2.1 串行帧到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位 |
5.2.2 CAN通道到串行帧
当CAN收到一帧数据也会立即转发到232接口,同时会在相应位置填充CAN帧ID,因为串行帧格式原因,所以务必保证软件配置的CAN信息(CAN类型、ID长度)与CAN网络一致。
CAN帧 |
|
串行帧 |
|
帧信息 |
标准帧000+数据字节长度 扩展帧080+数据字节长度 |
数据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位 |
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数据,或者超时无应答也可以再次发送。如果发送频率过快,“问完没答”就发下一针可能造成数据丢失或数据错误。
分段拆包格式如下:
|
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
5.3.2 CAN通道到RS-485通道
设备把CAN通道收上来的CAN帧按拆包规则逆向组合,之后在最后加上两个字节CRC之后通过RS-485通道发送出去
天津滨海新区三格电子科技有限公司是集产品研发、生产、服务和销售为一体的高科技型企业。公司主要致力于光纤通信、无线通信、信号采集于分析、科研平台产品的研发与生产。产品主要有多业务光端机、光猫、光纤收发器、光口交换机、噪声与振动信号采集卡、通用信号采集卡、WIFI无线采集卡等。
技术创新是三格电子持续发展的不竭动力,只有创新才能在激烈的竞争中把握先机,赢得主动,在新技术、新产品不断升级浪潮中始终保持旺盛的生命力。为保持公司技术的领先,三格电子在研发领域投入了大量资金。公司的研发人员实现了多项发明专利、实用新型专利。科技创造安全,质量成就价值,自公司成立以来三格电子一直在努力创新,并不断地完善产品种类、服务以及系统的解决方案。