蒙自CAN转232/485/422协议转换器

CAN-UART系列CAN转UART模块体积小巧,本模块可以快速将串口TTL信号通讯设备连接CAN-bus 现场总线。CAN转RS232/485/422模块使用亚当外壳方便安装DIN导轨,模块UART端为标准RS232/485/422接口方便现场连接。 模块UART支持600~921600bps,CAN支持5Kbps~1Mbps速率任意设置。 模块供5种数据转换模式:透明转换、带标识转换、 Modbus-RTU转换 (Modbus转换功能仅在CAN总线设备报文可编辑的情况下可以使用),Modbus-RTU从机转换、格式转换。 CANCOM模块可用CAN-TTL端口、串口端RS232/485/422、USB虚拟串口连接PC后使用软件或“AT”命令两种配置方法。模块可以很方便地嵌入到具有UART接口的设备中,在不需改变原有硬件结构的前提下使设备获得CAN-bus通讯接口,实现具有UART设备和CAN-bus网络之间的数据通讯。

类别:

蒙自CANbus系列

产品描述


功能特点

共5种转换模式:

透明转换、

带标识符 转换、

Modbus-RTU分包组包、

Modbus-RTU从机、

自定义CAN帧格式(允许包首插入0-4个用户自定字节,包尾插入0-4个用户自定字节);支持256条UARTID与CAN标识符ID映射(CAN-TTL模块支持16条映射);


UARTID与CAN标识符ID映射,在UART端用户自定义字节与0-4字节长度可选;
提供三种ID映射方向UARTID映射到CANID、CANID映射到UARTID、双向映射;
CAN帧类型包括:标准数据帧、标准扩展帧、标准远程帧、扩展远程帧;
CANbus具有14组过滤器,每组过滤器允许工作在

标准列表模式、

扩展列表模式、

标准屏蔽模式、

扩展屏蔽模式总共4种模式;


过滤器列表模式多至56个标准帧标识符ID或28个扩展帧标识符ID;
CAN缓冲区256帧,串口缓冲区2帧每帧2048字节;
支持 CAN2.0A、CAN2.0B 协议符合ISO/DIS 11898-1/2规范;
1 路UART_TTL或RS485/422通道600~460800bps之间波特率;
CAN-UART_TTL提供RS485控制输出,CAN-UART RS232提供硬件控制CTS\RTS;
1 路CANbus 通道2.5K-1Mbps之间允许自定义波特率;
CANbus离线自动恢复功能;
CAN-UART_TTL内置120欧终端电阻,CAN-UART内置120欧终端电阻用户可配置;
通过UART、UART_TTL、USB虚拟串口连接上位机软件或AT命令配置;
用户随时在工作模式与配置模式切换;
支持上位机软件更新运行程序;
内置硬件看门狗,稳定不宕机;
隔离电压2500VDC,CAN端口与RS485/422浪涌保护600W,静电保护15KV;
模块1.72cm x 1.55cm x 0.4cm大小(CAN-UART_TTL模块),12个点贴片或插针连接用户设备(CAN-UART_TTL模块);
CAN-UART_TTL模块5V供电,CAN-RS232/485/422使用DC9-40V供电内部提供过压过流保护;
CAN-RS232/485/422支持DIN35导轨安装;
自主研发可根据用户需要定制功能。



五种转换模式

 

透明转换模式

透明转换模式下转换器接收到一侧总线的数据就立即转换发送至另一总线侧。这样以数据流的方式来处理,最大限度地提高了转换器效率。

CAN报文ID、帧类型通过软件配置,CAN帧数据长度由转换器自动生成。CAN帧数据长度最大为8字节,不足8字节时由串口接收间隔时间决定分包。CAN接收到的帧数据会发送UART侧,只要UART发送缓冲区内有数据就会连续发送。根据配置可以把CAN帧信息和CANID转发到UART帧中。

 

1.串行帧转 CAN 报文。

配置透传模式 CAN 报文帧信息为“标准数据帧”,帧ID为0x03、0x45。

2.CAN 报文转串行帧。

CAN过滤器必须允许接收0x1A34的扩展帧。

 


透明带标识符转换模式

透明带标识转换模式下把串行帧中的地址信息自动转换成CAN总线的报文ID。此模式要在配置中告知转换器该地址在串行帧的起始位置(起始偏移)和长度,转换器在接收到UART数据时可以按照配置自动提取出ID添加到CAN报文ID域中。此时CAN端口发送标识符无意义,只有CAN帧类型有起作用。在标准类型报文时串口中的ID总是和07FF与运算,在扩展类型报文时串口中的ID总是和1FFFFFFF与运算,然后把运算结果插入到对应的CAN报文ID域中。

1.串行帧转 CAN 报文

串行帧中所带有的CAN的标识在串行帧中的起始偏移和长度可由配置设定。起始地址的范围是0~8,长度范围分别是1~4。在下图中选择的位置为5,长度为2进行串口到CAN报文的转换。

  

注意:这里串口内ID位A3 B2 但是CAN标准帧ID最大为07 FF,与运算后CANID为03 B2。透明带标识转模式转换器可以启动ID映射功能把A3 B2映射为CAN标准帧或扩展帧ID范围内的所有值。

2.CAN 报文转串行帧

CAN报文收到一帧就立即转发一帧,每次转发的时候也是根据事先配置的CAN帧ID在串行帧中的位置和长度把接收到的CAN报文的ID作相应的转换。值得注意的是,无论是串行帧还是CAN报文在应用的时候其帧格式(标准帧还是扩展帧)应该符合事先配置的帧格式要求,否则可能致使通讯不成功。这里还是选择的起始偏移为5,长度为2进行CAN报文到串行帧的转换。

       

注意: 这里配置串口ID长度为2所以扩展帧ID0x12345678取低两个字节。透明带标识转模式转换器可以启动ID映射功能把0x12345678映射为串口ID长度范围内的所有值。


Modbus-RTU分包组包模式

注意:Modbus-RTU分包组包模式仅在CAN总线设备报文可编辑的情况下可以使用。

模块串口侧使用标准的 Modbus RTU 格式,所以模块可以和任何标准的 Modbus RTU 设备连接。模块在 Modbus 总线上扮演的是协议验证和转发的角色,而不是 Modbus 主机或从机,只要按照 Modbus 协议通信即可。CAN帧ID由Modbus协议地址或映射ID自动填充。CAN报文内的分包组包字节和ModbusCRC自动生成或去除。串口侧由两个发送和两个接收缓冲区组成,每个缓冲区2048字节共2048字节*4=8192字节。借助双缓冲区优势转换器可以连续处理两帧Modbus数据。Modbus-RTU帧长度要小于缓冲区长度: 2048 字节。在串口侧Modbus严格按照4.1节中 UART串行帧间隔时间处理。用户可按照实际情况配置“串行帧之间的接收时间间隔”和“串行帧之间的发送时间间隔”。推荐使用Modbus协议规定间隔时间发送4字节接收3.5字节。

在CAN侧,制定了一个简单易用的分包组包通讯格式来实现 Modbus 的通讯。CAN分包组包机制,采用 CAN 数据的第一个字节存储分段信息,在使用上用户可不关心该机制。串口数据依然是透明传输。

 

分段标志:0 表示该报文为单独报文,1 表示该报文属于分段报文中的一帧;

 

分段类型:0 表示为该报文的第一个分段,1 表示为该报文的中间分段,2 表示为该报文的最后分段,单独报文该位为 0;

 

分段计数器:表示该分段在整个报文中的序号,从 1 开始到 31 循环;

此模式可以启用ID映射功能,ID映射方向包括:串口ID映射到CANID标识符、CANID标识符映射到串口ID和双向映射。共256条ID映射可编辑,序号越小的优先级越高的原则。此模式串口ID长度默认为1,偏移默认为0,用户不可编辑。

串口接收机制:当接收数据间隔时间大于“串行帧之间的接收时间间隔” 时认为收到一包完整数据,在CRC验证为有效数据后就会启动 CAN发送。用户必须正确配置 “串行帧之间的接收时间间隔”让转换器判断串行完整Modbus-RTU数据帧。在Modbus-RTU协议中串口的发送间隔必须大于4个字节时间,接收间隔小于3.5个字节时间。例如9600,n,8,1 配置3.5个字节时间为:1(秒)/9600*10(位)*3.5(字节) = 3647us ≈ 36*100us,“串行帧之间的接收时间间隔”写入36。如串口19200,n,8,1 配置3.5 个字节时间为:1(秒)/19200*10(位)*3.5(字节) ≈ 0.001822s = 1822us ≈ 18 *100us,“串行帧之间的接收时间间隔”写入18。

 

 

串口发送机制:当CAN收到数据帧为最后分段时启动数据转换。使用CANID低字节作为ModbusID,如果启动帧映射功能模块检索到CANID的匹配则使用配置好的UARTID作为Modbus的ID字节。转换过程中模块使用分段字节自动排序有效数据,去除分段字节,添加CRC写入串口发送缓冲区。模块串口检测“串行帧之间的发送时间间隔”大于或等于配置时间,启动数据的发送输出。Modbus协议要求发送间隔大于4字节。例如4800,n,8,1 配置4个字节时间为:1(秒)/4800*10(位)*4(字节) ≈  8333us ≈ 84*100us,“串行帧之间的发送时间间隔”写入84。57600,n,8,1 配置4个字节时间为:1(秒)/57600*10(位)*4(字节) ≈  694us ≈ 7*100us,“串行帧之间的发送时间间隔”写入7。

 


Modbus-RTU从机模式

Modbus-RTU从机模式,支持标准 Modbus-RTU 协议的 10H 和 03H功能码其他功能码响应为80+功能码。使用(10H)写多个寄存器指令,实现 CAN 数据的发送。使用(03H)读多个寄存器指令,可以实现 CAN 缓存数据的读取。CAN 收发缓冲器具备 256 帧的 CAN 发送缓存和256帧的接收缓存。

CAN帧格式为下图。

 

 

使用配置软件修改模块Modbus从机地址,软件配置如下图:

例如模块作为从机地址配置0x01使用功能码0x10写多个寄存器发送数据:

使用串口调试工具发送16进制数:01 10 00 00 00 0B 16 00 88 12 34 56 67 00 11 00 22 00 33 00 44 00 55 00 66 00 77 00 88 FF C6数据格式说明如下图其中的起始地址模块不做任何判断。

     

例如模块接收到01 10 00 00 00 0B 16 00 87 12 34 56 67 00 11 00 22 00 33 00 44 00 55 00 66 00 77 00 88 00 39 如果Modbus要转换7字节数据位,必须写入00 88位置转换器会忽略此寄存器置位但CRC会计算该位置。

例如模块作为从机地址配置0x01使用功能码0x03读多个寄存器读出模块内CAN数据:


自定义CAN帧模式

使用一下CAN帧格式允许用户自定义0-4个起始字节和0-4个结束字节。例如可以设置3个起始字符“AT+”16进制数为0x41 0x54 0x2B,两个结束换行符“\r\n”16进制数为0x0D 0x0A。借助此功能用户可以自由定义起始字节和结束字节。CAN帧格式固定为下图。

下例设置帧起始为0,帧结束为0。