RS232/485/422 TO CAN
| ||||||||||||||||||||||
| ||||||||||||||||||||||
说明
产品概述
RS232/485/422 TO CAN 是一款工业级 RS232/485/422 转 CAN 隔离型转换器,内置电源隔离、ADI 磁耦隔离和 TVS 等保护电路,工业导轨外壳设计。RS232/485/422 TO CAN 操作简单,零延时自动收发转换,具有通信速度快、稳定、可靠、安全等特点,可适用于各种通信要求较高的工控设备或应用。
产品特性
- 采用 SP3232EEN+SP485EEN 芯片方案,高速通信稳定、可靠、兼容性好
- 板载一体式电源隔离,可提供稳定的隔离电压,隔离端无须额外供电
- 板载一体式数字隔离,可进行信号隔离,可靠性高、抗干扰强、功耗低
- 符合 CAN 2.0B(扩展帧)规范,兼容 CAN 2.0A(标准帧);符合 ISO 11898-1/2/3。
- 支持 CAN 通讯波特率范围:10kbps~1000kbps,可选 CAN 波特率
- 高速转换,RS232/485/422 在 115200 波特率,CAN 在 250kbps 下,CAN 发送速度可达 1270 扩展帧/秒(接近理论最大值 1309 扩展帧/秒);
- 实现 CAN 与 RS232/485/422 的双向数据通讯;
- 4 种 CAN 工作模式:透明转换、透明带标识转换、格式转换和 Modbus RTU 协议转换;
- 板载 TVS (瞬态电压抑制管),可有效抑制电路中的浪涌电压和瞬态尖峰电压,防雷防静电
- 板载自恢复保险丝和保护二极管,可确保电流和电压稳定输出,防过流过压,提高抗冲击能力
- 板载 15KV ESD 隔离保护和 600W 雷电浪涌保护
- 板载 RS485/RS422 接口的 120R 终端电阻,可通过跳线帽设置修改
- 可以通过RS232/485/422 实现对设备的固件升级,方便定制固件;
- 支持通过配置软件或串口指令设置工作参数,可断电保存
- 板载端子供电接口,支持 5 ~ 36V DC 宽电压范围供电
- 外置 4 个 LED 指示灯,方便查看电源和信号收发状态
- 工业级金属外壳,支持壁挂和导轨两种安装方式,坚固美观,易安装
产品参数
产品类型 | 工业级隔离型 RS232/485/422 TO CAN 转换器 | |
主机接口 | CAN | |
设备接口 | RS232/485/422 | |
CAN接口 | 通信速率 | 10kbps~1000kbps |
方向控制 | 硬件自动判别和控制数据传输方向 | |
匹配电阻 | 默认120R匹配电阻 | |
接口形式 | 接线端子 | |
CAN接口引脚 | H、L、GND | |
RS232/485/422接口 | 通信速率 | 1200bps ~ 460800bps |
方向控制 | 硬件自动判别和控制数据传输方向 | |
匹配电阻 | 默认NC,预留120R匹配电阻,可跳线帽使能 | |
RS232接口形式 | DB9 接口 | |
RS485/422接口形式 | 接线端子 | |
RS485接口引脚 | A+、B-、GND | |
RS422接口引脚 | TA、TB、RA、RB、GND | |
接口保护 | 提供 600W 防雷、浪涌和 15KV 静电保护 (板载 120R 平衡电阻) | |
传输模式 | 点对多 (至多 32 个节点,16 个节点以上建议加中继器) | |
按键 | 按下1秒 | 系统复位 |
长按5秒 | 恢复出厂状态 | |
指示灯 | PWR | 电源指示灯,接入电源,检测到电压则亮红灯 |
RUN | 运行状态指示灯,正常运行以1秒间隔闪烁 | |
COM | CAN 发送指示灯,有数据从 CAN 口发出时亮蓝灯 RS232/485/422 接收指示灯,有数据从设备接口发回 RS232/485/422 时亮蓝灯 | |
CAN | CAN 接收指示灯,有数据从设备接口发回 CAN 时亮蓝灯 RS232/485/422 发送指示灯,有数据从 RS232/485/422 口发出时亮蓝灯 | |
使用环境 | 温度范围 | -10℃ ~70℃ |
接口介绍
产品尺寸
默认出厂设置
设备配置
使用 USB TO 4CH Serial Converter (或其他USB转RS232、USB转RS485、USB转RS422设备)进行初始化配置,不进行配置则保持出厂设置状态
硬件连接
- 连接 USB 转 RS232/485/422 设备(以下为连接 USB TO 4CH Serial Converter的 RS485 接口)
RS232/485/422 TO CAN - RS485 USB TO 4CH Serial Converter - Port C RS485 - GND Port C - GND RS485 - A+ Port C - A+ RS485 - B- Port C - B-
软件操作
- 打开 SSCOM ,查看使用的 COM 口,当前使用 COM42 进行演示
- 打开 CAN转串口配置软件
- 可根据需求调整显示语言(以下使用默认英文界面)
- 选择上方连接 RS232/485/422 对应的 COM 口,打开串口
- 点击 获取设备参数
- 若需修改设备参数,直接修改后点击保存设备参数,然后点击 重启设备(示例修改 CAN ID)
模式使用说明
透明转换
- 透明转换方式下,转换器接收到一侧总线的数据就立即转换发送至另一总线侧。
串行帧转CAN
- 串行帧的全部数据依序填充到CAN 报文帧的数据域里。转换器接收到串行总线上的一帧数据后立即转到CAN总线上。转换成的CAN 报文帧信息(帧类型部分)和帧ID 来自用户事先的配置,并且在转换过程中帧类型和帧ID 一直保持不变。
- 数据转换对应格式如下图所示
- 如果收到串的行帧长度小于等于8字节,依序将字符1到n(n为串行帧长度)填充到CAN报文的数据域的1到n个字节位置(如上图中n为7)。
- 如果串行帧的字节数大于8,那么处理器从串行帧首个字符开始,第一次取8个字符依次填充到CAN报文的数据域。将数据发至CAN总线后,再转换余下的串行帧数据填充到CAN报文的数据域,直到其数据被转换完。
- 例如,CAN参数设置中选择了“标准帧”,CAN ID 填00000060,注意标准帧只有后11位有效。
- 转成CAN的数据如下
CAN帧转串口
- 对于CAN总线的报文也是收到一帧就立即转发一帧。
- 转换时将CAN报文数据域中的数据依序全部转换到串行帧中。数据格式对应如下图所示。
- 如果在配置的时候,开启了“CAN信息是否转串行中”,那么转换器会将CAN报文的“帧信息”字节直接填充至串行帧。
- 如果开启了“CAN帧ID是否转串行中”,那么也将CAN报文的“帧ID”字节全部填充至串行帧。
- 例如,开启了“CAN信息是否转串行中”,不开启“CAN帧ID是否转串行中”,CAN帧转到串行如下图
透明带ID转换
- 透明带标识转换是透明转换的特殊用法,有利于用户通过转换器更方便的组建自己的网络,使用自定的应用协议。
- 该方式把串行帧中的地址信息自动转换成CAN总线的帧ID。只要在配置中告诉转换器该地址在串行帧的起始位置和长度,转换器在转换时提取出这个帧ID 填充在CAN 报文的帧ID域里,作为该串行帧的转发时的CAN报文的ID。在CAN报文转换成串行帧的时候也把CAN报文的ID转换在串行帧的相应位置。注意在该转换模式下,配置软件的“CAN参数设置”项的“CAN ID”无效,因为此时发送的标识符(帧ID)由上述的串行帧中的数据填充的。
串行帧转CAN
- 转换器接收完一帧串行数据后,立即转发到CAN总线上。
- 串行帧中所带有的CAN的ID在串行帧中的起始地址和长度可由配置设定。起始地址的范围是0~7,长度范围分别是1~2(标准帧)或1~4(扩展帧)。
- 转换时根据事先的配置将串行帧中的CAN帧ID对应全部转换到CAN报文的帧ID域中(如果所带帧ID个数少于CAN报文的帧ID个数,那么在CAN报文的填充顺序是帧ID1~ID4,并将余下的ID填为0),其它的数据依序转换。
- 如果一帧CAN报文未将串行帧数据转换完,则仍然用相同的ID作为CAN报文的帧ID继续转换直到将串行帧转换完成,如下图所示。
- 例如,CAN ID在串行帧中的起始地址是0,长度是3(扩展帧情况下),串行帧和转换成CAN报文结果如下图所示。其中,两帧CAN 报文用相同的ID 进行转换。
CAN帧转串行
- 假定配置的CAN ID在串行帧中的起始地址是0,长度是3(扩展帧情况下),CAN报文和转换成串行帧的结果如下图
Modbus协议转换
- 将标准的Modbus RTU串行数据协议转换成特定的CAN数据格式,此种转换一般要求CAN总线设备报文可编辑。
- 串口侧数据必须符合标准的Modbus RTU协议,否则不能转换,注意,CRC校验不转换到CAN侧。
- CAN侧制定了一个简单高效的分段通讯格式来实现 Modbus RTU的通讯,不区分主机和从机,用户只需按照标准的Modbus RTU协议通讯即可。
- CAN侧不需要加CRC校验,转换器收到最后一个CAN帧后,会自动加上CRC,组成一帧标准的Modbus RTU数据包,发到串口上。
- 该模式下,配置软件的【CAN参数设置】的【CAN ID】无效,因为此时发送的标识符(帧ID)由Modbus RTU串行帧中的地址域(节点ID)填充。
串行帧格式(Modbus RTU)
- 串行参数:波特率、数据位、停止位和校验位都可通过配置软件设置。
- 数据协议需符合标准的Modbus RTU协议。
CAN帧格式
- CAN侧设计了一套分段协议格式,其定义了一个长度大于 8 字节的信息进行分段以及重组的方法,如下所示。
- 注意,当CAN帧为单帧时,分段标志位为0x00。
- CAN帧信息(远程帧或数据帧;标准帧或扩展帧)通过配置软件设置。
- 传输的 Modbus协议内容即可从“数据 2”字节开始,如果协议内容大于 7 个字节,那么将剩下的协议内容照这种分段格式继续转换,直到转换完成。
- 数据1是分段控制信息(占1个字节,8Bit),其含义如下:
分段标记
占1个Bit位(Bit7), 标志该报文是否是分段报文。该位为 0 表示单独报文,为 1 表示属于被分段报文中的一帧。
分段类型
占2个Bit位(Bit6,Bit5),用于表示该报文在分段报文中的类型
分段计数器
占5个Bit位(Bit4-Bit0),用于区分同一帧Modbus报文中分段的序号,够验证是同一帧的分段是否完整。
转换示例
- 串口侧Modbus RTU数据(十六进制):
01 03 14 00 0A 00 00 00 00 00 14 00 00 00 00 00 17 00 2C 00 37 00 C8 4E 35
- 第一个字节01是Modbus RTU的地址码,转换成CAN的ID.7-ID.0。
- 最后2个字节(4E 35)为Modbus RTU的CRC校验,丢掉不转换。
- 最终转成CAN数据报文如下:
第1帧CAN报文:81 03 14 00 0A 00 00 00
第2帧CAN报文:a2 00 00 14 00 00 00 00
第3帧CAN报文:a3 00 17 00 2C 00 37 00
第4帧CAN报文:c4 c8
- CAN报文的帧类型(标准帧或扩展帧)通过配置软件设置;
- 每个CAN报文的第一个数据都有分段信息来填充(81、a2、a3和c4),该信息不转换到Modbus RTU帧中,仅做为报文的确认控制信息。
- CAN侧的数据到ModBus RTU的转换原理和上面相同,CAN侧收到上述4条报文后,转换器会将收到的CAN报文按照上述的CAN分段机制组合成一帧RTU数据,并在结尾加上CRC校验
功能验证
RS232 TO CAN 测试
使用 USB-CAN-A 与 USB TO 4CH Serial Converter 进行功能演示
硬件连接
- 连接 CAN 设备
RS232/485/422 TO CAN - CAN USB-CAN-A CAN - CAN H CAN - CAN H CAN - CAN L CAN - CAN L CAN - CAN G CAN - GND
- 连接 RS232 设备
RS232/485/422 TO CAN - RS232 USB TO 4CH Serial Converter - Port D RS232 - GND Port D - GND RS232 - TXD Port D - RXD RS232 - RXD Port D - TXD
软件操作
- 开启 USB-CAN-A_TOOL
- 选择 USB-CAN-A 对应 COM 口,点击 打开
- 选择 CAN设备的波特率为 250kbps,点击 设置并启动 ,输入需要发送的数据,选择 循环
- 开启 1 个 SSCOM,选择 USB TO 4CH Serial Converter 的 Port D 对应 COM 口,点击 打开串口
- 在 SSCOM 软件中,勾选 HEX显示、HEX发送、加时间戳和分包显示,并输入要发送的数据
11 22 33 44 55 66 77 88
- 在 USB-CAN-A_TOOL 中选中一个数据,点击 发送选中帧
- 可看到一收一发的现象
- 或点击 SSCOM 的定时发送
- 可看到一收一发的现象
RS485 TO CAN 测试
使用 USB-CAN-A 与 USB TO 4CH Serial Converter 进行功能演示
硬件连接
- 连接 CAN 设备
RS232/485/422 TO CAN - CAN USB-CAN-A CAN - CAN H CAN - CAN H CAN - CAN L CAN - CAN L CAN - CAN G CAN - GND
- 连接 RS485 设备
RS232/485/422 TO CAN - RS485 USB TO 4CH Serial Converter - Port C RS485 - GND Port C - GND RS485 - A+ Port C - A+ RS485 - B- Port C - B-
软件操作
- 开启 USB-CAN-A_TOOL
- 选择 USB-CAN-A 对应 COM 口,点击 打开
- 选择 CAN设备的波特率为 250kbps,点击 设置并启动 ,输入需要发送的数据,选择 循环
- 开启 1 个 SSCOM,选择 USB TO 4CH Serial Converter 的 Port C 对应 COM 口,点击 打开串口
- 在 SSCOM 软件中,勾选 HEX显示、HEX发送、加时间戳和分包显示,并输入要发送的数据
11 22 33 44 55 66 77 88
- 在 USB-CAN-A_TOOL 中选中一个数据,点击 发送选中帧
- 可看到一收一发的现象
- 或点击 SSCOM 的定时发送
- 可看到一收一发的现象
RS422 TO CAN测试
使用 USB-CAN-A 与 USB TO 4CH Serial Converter 进行功能演示
硬件连接
- 连接 CAN 设备
RS232/485/422 TO CAN - CAN USB-CAN-A CAN - CAN H CAN - CAN H CAN - CAN L CAN - CAN L CAN - CAN G CAN - GND
- 连接 RS422 设备
RS232/485/422 TO CAN - RS422 USB TO 4CH Serial Converter - Port C RS422 - GND Port C - GND RS422 - TA Port C - RA RS422 - TB Port C - RB RS422 - RA Port C - TA RS422 - RB Port C - TB
软件操作
- 开启 USB-CAN-A_TOOL
- 选择 USB-CAN-A 对应 COM 口,点击 打开
- 选择 CAN设备的波特率为 250kbps,点击 设置并启动 ,输入需要发送的数据,选择 循环
- 开启 1 个 SSCOM,选择 USB TO 4CH Serial Converter 的 Port C 对应 COM 口,点击 打开串口
- 在 SSCOM 软件中,勾选 HEX显示、HEX发送、加时间戳和分包显示,并输入要发送的数据
11 22 33 44 55 66 77 88
- 在 USB-CAN-A_TOOL 中选中一个数据,点击 发送选中帧
- 可看到一收一发的现象
- 或点击 SSCOM 的定时发送
- 可看到一收一发的现象
RS485 CAN HAT 上扩展
RS485 CAN HAT 相关使用说明
请先行了解 RS485 CAN HAT 相关使用
接口扩展
扩展 CAN 接口
- 连接 RS485 口,将 RS485 CAN HAT 扩展为 2 个 CAN 接口
RS232/485/422 TO CAN - RS485 RS485 CAN HAT RS485 - A+ RS485 - A+ RS485 - B- RS485 - B-
扩展 RS232/485/422 接口
- 连接 CAN 口,将 RS485 CAN HAT 扩展为 1 个 RS485 接口和一个 RS232/485/422 接口
RS232/485/422 TO CAN - CAN RS485 CAN HAT CAN - CAN H CAN - CAN H CAN - CAN L CAN - CAN L
示例演示
使用 RS232/485/422 TO CAN 让 RS485 CAN HAT 的 RS485 与 CAN 进行通信
硬件连接
RS232/485/422 TO CAN - RS485 RS485 CAN HAT CAN - CAN H CAN - CAN H CAN - CAN L CAN - CAN L RS485 - A+ RS485 - A+ RS485 - B- RS485 - B-
软件操作
前置操作
- 将 RS485 CAN HAT 模块与树莓派连接,然后修改开机脚本config.txt
sudo nano /boot/config.txt
- 在最后一行加入如下:
dtparam=spi=on dtoverlay=mcp2515-can0,oscillator=12000000,interrupt=25,spimaxfrequency=2000000
- 同时在 /boot/config.txt 找到如下配置语句使能串口,如果没有,可添加在文件最后面。
enable_uart=1
安装库
以下操作为必须操作
安装can-utils
sudo apt-get install can-utils
安装 wiringpi 环境
#打开树莓派终端,并运行以下指令 cd sudo apt-get install wiringpi #对于树莓派2019年5月之后的系统(早于之前的可不用执行),可能需要进行升级: wget https://project-downloads.drogon.net/wiringpi-latest.deb sudo dpkg -i wiringpi-latest.deb gpio -v # 运行gpio -v会出现2.52版本,如果没有出现说明安装出错
安装 Python 环境
sudo apt-get update sudo apt-get install python3-pip sudo apt-get install python-serial
- 配置运行环境
sudo pip install python-can
- 若上方指令运行失败,请使用下列其他镜像源下载
sudo pip install -i https://pypi.tuna.tsinghua.edu.cn/simple python-can
sudo pip install -i https://mirrors.aliyun.com/pypi/simple python-can
sudo pip install -i https://pypi.mirrors.ustc.edu.cn/simple python-can
修改 RS232/485/422 TO CAN 配置
- 使用 软件修改 RS232/485/422 TO CAN 设备的 CAN 接口 ID
- 将CAN ID 设置为 123 ,请按照 设备配置 依次操作
C 示例
- 若以执行过下载操作,请跳过文件删除步骤与程序下载步骤(即下方两点)
- 删除此前下载的资料包,请注意:若需要保留原 RS485_CAN_HAT_Code 文件请拷贝至其他路径
cd rm -rf RS485_CAN_HAT_Code.zip rm -rf RS232-485-422_Code.zip rm -rf RS485_CAN_HAT_Code sudo ifconfig can0 down
- 下载示例程序
cd sudo apt-get install unzip wget https://www.waveshare.net/w/upload/6/6b/RS232-485-422_Code.zip unzip RS232-485-422_Code.zip sudo chmod 777 -R RS485_CAN_HAT_Code/
- 运行CAN发送、RS485接收示例
cd cd RS485_CAN_HAT_Code/CAN_TO_RS485/wiringPi/ make clean make sudo ./can_send
- 运行RS485发送、CAN接收示例
cd cd RS485_CAN_HAT_Code/RS485_TO_CAN/wiringPi/ make clean make sudo ./485_send
Python 示例
- 若以执行过下载操作,请跳过文件删除步骤与程序下载步骤(即下方两点)
- 删除此前下载的资料包,请注意:若需要保留原 RS485_CAN_HAT_Code 文件请拷贝至其他路径
cd rm -rf RS485_CAN_HAT_Code.zip rm -rf RS232-485-422_Code.zip rm -rf RS485_CAN_HAT_Code sudo ifconfig can0 down
- 下载示例程序
cd sudo apt-get install unzip wget https://www.waveshare.net/w/upload/6/6b/RS232-485-422_Code.zip unzip RS232-485-422_Code.zip sudo chmod 777 -R RS485_CAN_HAT_Code/
- 重新打开can0,运行CAN发送、RS485接收示例
cd cd RS485_CAN_HAT_Code/CAN_TO_RS485/python/ sudo python can_send.py
- 重新打开can0,运行RS485发送、CAN接收示例
cd cd RS485_CAN_HAT_Code/RS485_TO_CAN/python/ sudo python 485_send.py
资料
软件
外部测试程序
数据手册
FAQ
- 请长按复位键5秒以上,直到指示灯连续闪烁(恢复出厂),再根据所需重新配置通信参数即可。
{{{5}}}
- 有的,如须修改120R匹配电阻,可在 RS485/422 端将跳线帽移至 120R 位置。
{{{5}}}
- 将 RS485/422 的跳线帽移至120欧姆位置。
{{{5}}}
- 不使能 RS485/422 的两个120Ω终端匹配电阻,即跳线帽跳到NC。
{{{5}}}