CAN通讯以其高稳定性,被广泛应用在工业通讯、工业物联网以及工业控制领域。传统的设备大都是串口通讯如RS485/RS232,这类设备如果要接入CAN网络,一般需要CAN转换器。针对这种应用,智嵌物联ZQWL研发出了高稳定高效率的CAN转串口/CAN转网络系列设备,如CAN转串口系列有型号ZQWL-RCAN-1C311/1D311,CAN转网络系列有型号ZQWL-CANET-1C111/1C112等。
本文以ZQWL-RCAN-1C311为例介绍CAN与串口设备的转换使用说明。
一、硬件准备
为了测试1C311,需要以下硬件:
- 1C311一个;
- DC5V 1A电源适配器一个;
- 串口线一个(如果不测RS232功能,可以不用);
- 串口(或USB)转RS485接头一个(如果不测RS485功能,可以不用);
- USB转CAN设备一个(推荐型号:ZQWL-UCAN-5C121);
1.1透传测试
1、RS232与CAN透传测试
用串口线将电脑和设备的RS232口(DB9)连接,连接好usb转CAN调试器(第一次使用需要安装软件和驱动,详细使用方法请咨询相关厂家),然后DC5V 1A电源适配器给设备供电。
打开串口调试助手,选择所用的串口号,并将串口的参数按照图1.2.2设置。设置好后打开串口。
打开usb转can调试软件,设置好波特率为250kbps:
图 1.2.2 RS232与CAN数据透传
经过以上步骤后,CAN与RS232就可以互相发数据了。
2、RS485与CAN透传测试
用串口(或USB)转RS485接头将电脑和设备的RS485口(绿色插头,A接A,B接B)连接,连接好usb转CAN调试器(第一次使用需要安装软件和驱动,详细使用方法请咨询相关厂家),然后用DC5V 1A电源适配器给设备供电。
测试方法和RS232与CAN透传完全一样。
二、功能简介
ZQWL-RCAN-1C311是一款小巧精致、高性能、高稳定性的串口转CAN模块。它具有1路RS232接口、1路RS485接口和1路CAN接口。串口的波特率支持1200~460800bps;CAN的波特率支持10kbps~1000kbps。可以通过RS232/485实现对设备的固件升级,使用非常方便。
用户利用它可以轻松完成串口设备与CAN设备的互联。
2.1硬件特点
2.2设备特性
·实现CAN与RS232/485的双向数据通讯;
·支持Modbus RTU协议转换;
·可以通过RS232/485实现对设备的固件升级,方便定制固件;
·接口静电防护;浪涌防护;具有优良的EMC性能;
·14组可设置的滤波器;
·4种工作模式:透明转换、透明带标识转换、格式转换和Modbus RTU协议转换;
·具有离线检测和自动恢复功能;
·符合CAN 2.0B规范,兼容CAN 2.0A;符合ISO 11898-1/2/3。
·波特率支持10kbps~1000kbps。
·CAN缓冲器达1000帧,保证数据不丢失;
·高速转换,串口在115200波特率,CAN在250kbps下,CAN发送速度可达1270扩展帧/秒(接近理论最大值1309);串口在460800波特率,CAN在1000kbps下,CAN发送速度可达5000扩展帧/秒以上;
三、模块硬件接口
3.1模块接口及尺寸
图2尺寸
3.2模块指示灯含义
本模块共有4个LED指示灯:PWR、RUN、COM和CAN。其基本含义如表1:
表1指示灯基本含义
3.1RS232/485接口
本模块共有1路RS232/485接口(5.00mm绿色端子引出),其中RS232采用DB9母头(孔型),信号定义如下:
可以与标准公头串口线对接。
3.4电源接口
本模块采用DC5~36V宽压供电,模块功率小于0.2W。
供电接口采用两种:5.08mm间距工业级接线端子和黑色电源适配器插座,两种接口任选其一,如下图:
3.5CAN接口
CAN接口采用5.00mm绿色端子方式引出,接口具有120欧姆终端电阻选择功能。
其中“RS”为终端电阻选择,如果用导线将“RS”和“CAN_L”连接起来,则模块内部的120欧电阻并入到CAN总线中;否则,120欧电阻未接入总线。
(按照ISO 11898规范,为了增强CAN-bus通讯的可靠性,CAN-bus总线网络的两个端点
通常要加入终端匹配电阻(120Ω),如下图所示。终端匹配电阻的大小由传输电缆的特性阻抗所决定,例如,双绞线的特性阻抗为120Ω,则总线上的两个端点也应集成120Ω终端电
阻。)
四、模块参数配置
本模块可以用“智嵌物联CAN转串口配置软件”通过RS232或RS485接口来实现对模块的参数配置。如果不慎配置错误而导致无法连接设备,可以通过“CFG”按钮来恢复出厂参数(按住CFG,保持5秒,3个绿色指示灯同步闪烁后,再松开)。
4.1智嵌串口服务器配置软件
配置前必须要知道模块上次配置成功的RS232/485波特率,如果忘记,可以通过对模块恢复出厂,出厂参数为115200,8,N,1:
第一步选择合适的“串口号”;
第二步选择上次模块的波特率等参数;
第三步“打开串口”;
第四步“获取设备参数”;
五、转换参数设置
该部分规定了设备的转换模式、转换方向、CAN标识符在串行中的位置、CAN信息是否转串行中以及CAN帧ID是否转串行中等。
5.1转换模式
转换模式有4种可以选择:透明转换、透明带标识转换,格式转换和Modbus协议转换。
- 透明转换
是将一种格式的总线数据原样转换成另一种总线的数据格式,而不附加数据和对数据做修改。这样既实现了数据格式的交换又没有改变数据内容,对于两端的总线来说转换器如同透明的一样。这种方式下不会增加用户通讯负担,而能够实时的将数据原样转换,能承担较大流量的数据的传输。
- 透明带标识转换
是透明转换的一种特殊的用法,也不附加协议。这种转换方式是根
据通常的串行帧和CAN报文的共有特性,使这两种不同的总线类型也能轻松的组建同一个
通信网络。该方式能将串行帧中的“地址”转换到CAN报文的标识域中,其中串行帧“地址”在串行帧中的起始位置和长度均可配置,所以在这种方式下,转换器能最大限度地适应用户的自定义协议。
- 格式转换
是一种最简单的使用模式,数据格式约定为13字节,包含了CAN帧的所以信息。
- Modbus协议转换
是将标准的Modbus RTU串行数据协议转换成特定的CAN数据格式,此种转换一般要求CAN总线设备报文可编辑。
5.2转换方向
有3种可以选:双向、仅串口转CAN和仅CAN转串口。
双向:转换器将串行总线的数据转换到CAN总线,也将CAN总线的数据转换到串行
总线。
仅串口转CAN:只将串行总线的数据转换到CAN总线,而不将CAN总线的数据转换
到串行总线。这种方式可以最大限度的过滤掉CAN总线上的干扰。
仅CAN转串口:只将CAN总线的数据转换到串行总线,而不将串行总线的数据转换
到CAN总线。
5.3CAN标识符在串行中的位置
该参数只有在“透明带ID转换”模式下有效:
在串口数据转换成CAN报文时,CAN报文的帧ID的起始字节在串行帧中的偏移地址和帧ID的长度。
帧ID长度在标准帧的时候可填充1到2个字节,分别对应CAN报文的ID1,ID2,在扩展帧的时候可以填充1~4个字节ID1,ID2,ID3和ID4。标准帧时ID为11位,扩展帧时ID为29位。
获取参数成功后,就可以修改参数了,修改完成,点击“保存设备参数”,然后重启设备。下面对配置软件里的各项参数进行说明。
5.4CAN信息是否转串行中
该参数仅在“透明转换”模式下使用,当选中该项后,转换器工作时会将CAN报文的
帧信息添加在串行帧的第一个字节。未选中时不转换CAN的帧信息 。
5.5CAN帧ID是否转串行中
该参数仅在“透明转换”模式下使用,当选中该项后,转换器工作时会将CAN报文的
帧ID添加在串行帧的帧数据之前,帧信息之后(如果允许帧信息转换)。未选中时不转换
CAN的帧ID。
六、CAN参数设置
该部分可以设置转换器的CAN的波特率、CAN发送ID、帧类型以及CAN的滤波器。
CAN波特率支持10kbps~1000kbps,也支持用户自己定义。帧类型支持扩展帧和标准帧。CAN的帧ID为十六进制格式,在“透明转换”模式和“透明带标识转换”模式时有效,向CAN总线以此ID发送数据;在“格式转换”模式下该参数无效。
CAN接收滤波器共有14组,每组都有“滤波类型”、“过滤验收码”和“过滤屏蔽码”组成。下面详细介绍如何使用。
6.1CAN波特率设置
波特率列表里已经预定了大部分常用波特率:
如果需要其他波特率,可以选择“自定义”,然后再点“自定义波特率”来设置期望波特率:
波特率计算公式为:36000000/(同步段+相位缓冲段1+相位缓冲段2)/预分频;
例如250K的波特率:36000000/(1+15+2)/8 = 250000 = 250K。
一般情况下,只需要在“期望波特率”里填写所需的波特率,软件就会自动计算出相应的参数(比如:预分频),这时会得到一个“实际波特率”,如果两者的值不同,可以打开“高级选项”:
6.2CAN滤波器设置
CAN的14组接收滤波器在出厂时都处于禁止状态,即不对CAN总线数据做过滤。当用户需要使用滤波器时,只需要在配置软件里添加即可,一共可以添加14组:
滤波类型:可选“标准帧”和“扩展帧”;
过滤验收码:用于比对CAN接收到的帧ID,以确定该帧是否被接收,十六进制格式。
过滤屏蔽码:用于屏蔽验收码里的某些位,以确定验收码某些位(bit)是否参与比对(对应位为0不参与比对,为1参与比对),十六进制格式。
举例1:滤波器类型选择“标准帧”;“过滤验收码”填00 00 00 01,“过滤屏蔽码”填00 00 0F FF;
释义:由于标准帧ID只有11位,验收码和屏蔽码最后11位有意义, 屏蔽码最后11位全是1,所以验收码的后11位全部参与比对,因此上述设置可以让帧ID为0001的标准帧通过。
举例2:滤波器类型选择“标准帧”;“过滤验收码”填00 00 00 01,“过滤屏蔽码”填00 00 0F F0;
释义:同例1,标准帧只有11位有效,屏蔽码的最后4位是0,表示验收码的最后4位不参与对比,因此上述设置可以让帧ID从00 00到000F的一组标准帧通过。
举例3:滤波器类型选择“扩展帧”;“过滤验收码”填00 03 04 01,“过滤屏蔽码”填1F FF FF FF;
释义:扩展帧有29位,屏蔽码的后29位全为1,表示验收码的后29位全部参与比对,因此上述设置可以让帧ID为00 03 04 01的扩展帧通过。
举例4:滤波器类型选择“扩展帧”;“过滤验收码”填00 03 04 01,“过滤屏蔽码”填1F FC FF FF;
释义:根据上述设置可以让帧ID从00 00 04 01到00 0F 04 01的一组扩展帧通过。
七、转换示例
7.1透明转换
透明转换方式下,转换器接收到一侧总线的数据就立即转换发送至另一总线侧。
- 串行帧转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帧转到串行如下图:
7.2透明带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继续转换直到将串行帧转换完成。
例如,CANID在串行帧中的起始地址是0,长度是3(扩展帧情况下),串行帧和转
换成CAN报文结果如下图所示。其中,两帧CAN报文用相同的ID进行转换。
CAN帧转串行
假定配置的CANID在串行帧中的起始地址是0,长度是3(扩展帧情况下),CAN报文和转换成串行帧的结果如下图:
八、格式转换
数据转换格式,如下图所示每一个CAN帧包含13个字节,13个字节内容包括CAN信息+ID+数据。
九、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数据(十六进制):
0103 14 00 0A 00 00 00 00 00 14 00 00 00 00 00 17 00 2C 00 37 00 C84E 35
第一个字节01是Modbus RTU的地址码,转换成CAN的ID.7-ID.0;
最后2个字节(4E 35)为Modbus RTU的CRC校验,丢掉不转换。
最终转成CAN数据报文如下:
第1帧CAN报文:8103 14 00 0A 00 00 00
第2帧CAN报文:a200 00 14 00 00 00 00
第3帧CAN报文:a300 17 00 2C 00 37 00
第4帧CAN报文:c4c8
CAN报文的帧类型(标准帧或扩展帧)通过配置软件设置;
每个CAN报文的第一个数据都有分段信息来填充(81、a2、a3和c4),该信息不转换到Modbus RTU帧中,仅做为报文的确认控制信息。
CAN侧的数据到ModBus RTU的转换原理和上面相同,CAN侧收到上述4条报文后,转换器会将收到的CAN报文按照上述的CAN分段机制组合成一帧RTU数据,并在结尾加上CRC校验:
每个CAN报文的第一个数据都有分段信息来填充(81、a2、a3和c4),该信息不转换
到Modbus RTU帧中,仅做为报文的确认控制信息。
-
工业自动化
+关注
关注
17文章
2371浏览量
67228
发布评论请先 登录
相关推荐
评论