嵌入式
返回首页

智嵌物联CAN转串口RS485 RS232使用说明

2024-10-09 来源:elecfans

CAN通讯以其高稳定性,被广泛应用在工业通讯、工业物联网以及工业控制领域。传统的设备大都是串口通讯如RS485/RS232,这类设备如果要接入CAN网络,一般需要CAN转换器。针对这种应用,智嵌物联ZQWL研发出了高稳定高效率的CAN转串口/CAN转网络系列设备,如CAN转串口系列有型号ZQWL-RCAN-1C311/1D311,CAN转网络系列有型号ZQWL-CANET-1C111/1C112等。

pYYBAGIYRueAHg3UABbBOuWK39E035.png

本文以ZQWL-RCAN-1C311为例介绍CAN与串口设备的转换使用说明。


一、硬件准备

为了测试1C311,需要以下硬件:

  • 1C311一个;

  • DC5V 1A电源适配器一个;

  • 串口线一个(如果不测RS232功能,可以不用);

  • 串口(或USB)转RS485接头一个(如果不测RS485功能,可以不用);

  • USB转CAN设备一个(推荐型号:ZQWL-UCAN-5C121);


pYYBAGIYRziAKZyWAAgPq1Z2xZ0597.png

1.1透传测试

先用产品的默认参数来测试,默认参数如下:

pYYBAGIYR0iAdlF9AAFYnyxprmg675.png

1、RS232与CAN透传测试

用串口线将电脑和设备的RS232口(DB9)连接,连接好usb转CAN调试器(第一次使用需要安装软件和驱动,详细使用方法请咨询相关厂家),然后DC5V 1A电源适配器给设备供电。

打开串口调试助手,选择所用的串口号,并将串口的参数按照图1.2.2设置。设置好后打开串口。

打开usb转can调试软件,设置好波特率为250kbps:

pYYBAGIYR0iAQfCGAAQTxGeSxVc251.png

图 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硬件特点

poYBAGIYR1aAe4t2AAKs5ICTLGc506.png

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模块接口及尺寸

pYYBAGIYRvSAC9Y2AAqJNFVvcRA195.pngpYYBAGIYR3qABk4kABgqL-MnIy8906.pngpYYBAGIYR3qATVO4AAAMHYPFe1w383.png

图2尺寸

3.2模块指示灯含义

本模块共有4个LED指示灯:PWR、RUN、COM和CAN。其基本含义如表1:

表1指示灯基本含义

poYBAGIYR3qABypIAAFxBeAykqo395.png

3.1RS232/485接口

本模块共有1路RS232/485接口(5.00mm绿色端子引出),其中RS232采用DB9母头(孔型),信号定义如下:

pYYBAGIYR8WAam03AAK9uia8T9c339.png

可以与标准公头串口线对接。

3.4电源接口

本模块采用DC5~36V宽压供电,模块功率小于0.2W。

供电接口采用两种:5.08mm间距工业级接线端子和黑色电源适配器插座,两种接口任选其一,如下图:

poYBAGIYR8aACSExAATaNJP6RK4121.png

3.5CAN接口

CAN接口采用5.00mm绿色端子方式引出,接口具有120欧姆终端电阻选择功能。

pYYBAGIYR-GAd8J-AAGTnyly1S4124.png

其中“RS”为终端电阻选择,如果用导线将“RS”和“CAN_L”连接起来,则模块内部的120欧电阻并入到CAN总线中;否则,120欧电阻未接入总线。

(按照ISO 11898规范,为了增强CAN-bus通讯的可靠性,CAN-bus总线网络的两个端点

通常要加入终端匹配电阻(120Ω),如下图所示。终端匹配电阻的大小由传输电缆的特性阻抗所决定,例如,双绞线的特性阻抗为120Ω,则总线上的两个端点也应集成120Ω终端电

阻。)

poYBAGIYSAOAI1mSAAKJzwUTh_c295.png

四、模块参数配置

本模块可以用“智嵌物联CAN转串口配置软件”通过RS232或RS485接口来实现对模块的参数配置。如果不慎配置错误而导致无法连接设备,可以通过“CFG”按钮来恢复出厂参数(按住CFG,保持5秒,3个绿色指示灯同步闪烁后,再松开)。

4.1智嵌串口服务器配置软件

配置前必须要知道模块上次配置成功的RS232/485波特率,如果忘记,可以通过对模块恢复出厂,出厂参数为115200,8,N,1:

poYBAGIYSFWALu4KABNQlkiB0Ss495.png

第一步选择合适的“串口号”;

第二步选择上次模块的波特率等参数;

第三步“打开串口”;

第四步“获取设备参数”;

五、转换参数设置

该部分规定了设备的转换模式、转换方向、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转换”模式下有效:

pYYBAGIYSHuAZLz-AAATAgqTWEg613.png

在串口数据转换成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波特率设置

波特率列表里已经预定了大部分常用波特率:

pYYBAGIYSLiAfk0CAAAOub_NuNs020.png

如果需要其他波特率,可以选择“自定义”,然后再点“自定义波特率”来设置期望波特率:

poYBAGIYSMiAWt_fAAB9WKZ_uWA136.png

波特率计算公式为:36000000/(同步段+相位缓冲段1+相位缓冲段2)/预分频;

例如250K的波特率:36000000/(1+15+2)/8 = 250000 = 250K。

一般情况下,只需要在“期望波特率”里填写所需的波特率,软件就会自动计算出相应的参数(比如:预分频),这时会得到一个“实际波特率”,如果两者的值不同,可以打开“高级选项”:

pYYBAGIYSMiAbLQoAABsG_e6uag776.png

6.2CAN滤波器设置

CAN的14组接收滤波器在出厂时都处于禁止状态,即不对CAN总线数据做过滤。当用户需要使用滤波器时,只需要在配置软件里添加即可,一共可以添加14组:

pYYBAGIYSMiAOO7aAAASpZQAZEo975.png

滤波类型:可选“标准帧”和“扩展帧”;

过滤验收码:用于比对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的一组扩展帧通过。

poYBAGIYSMiAAAlNAAAYXxdXsXU917.png

七、转换示例

7.1透明转换

透明转换方式下,转换器接收到一侧总线的数据就立即转换发送至另一总线侧。

  1. 串行帧转CAN

串行帧的全部数据依序填充到CAN报文帧的数据域里。转换器接收到串行总线上的一帧数据后立即转到CAN总线上。转换成的CAN报文帧信息(帧类型部分)和帧ID来自用户事先的配置,并且在转换过程中帧类型和帧ID一直保持不变。

数据转换对应格式如下图所示:

如果收到串的行帧长度小于等于8字节,依序将字符1到n(n为串行帧长度)填充到CAN报文的数据域的1到n个字节位置(如下图中n为7)。

如果串行帧的字节数大于8,那么处理器从串行帧首个字符开始,第一次取8个字符依

次填充到CAN报文的数据域。将数据发至CAN总线后,再转换余下的串行帧数据填充到CAN报文的数据域,直到其数据被转换完。

poYBAGIYSNWAblW1AADIaVZhCLU421.png

例如,CAN参数设置中选择了“标准帧”,CAN ID 填00000060,注意标准帧只有后11位有效。

转成CAN的数据如下:

pYYBAGIYSNWADZNcAACmrvy8fl0986.png

CAN帧转串口

对于CAN总线的报文也是收到一帧就立即转发一帧。数据格式对应如下图所示。

转换时将CAN报文数据域中的数据依序全部转换到串行帧中。

如果在配置的时候,开启了“CAN信息是否转串行中”,那么转换器会将CAN报文的“帧信息”字节直接填充至串行帧。

如果开启了“CAN帧ID是否转串行中”,那么也将CAN报文的“帧ID”字节全部填充至串行帧。

pYYBAGIYSOaAaAXyAADS6IIs6O4556.png

例如,开启了“CAN信息是否转串行中”,不开启“CAN帧ID是否转串行中”,CAN帧转到串行如下图:

poYBAGIYSOaAXeu-AAB-5Iw-lOE647.png

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继续转换直到将串行帧转换完成。

pYYBAGIYSOaAfbcvAAG42TndKPo489.png

例如,CANID在串行帧中的起始地址是0,长度是3(扩展帧情况下),串行帧和转

换成CAN报文结果如下图所示。其中,两帧CAN报文用相同的ID进行转换。

poYBAGIYSOaANeTcAAF7E06XB5E853.png

CAN帧转串行

假定配置的CANID在串行帧中的起始地址是0,长度是3(扩展帧情况下),CAN报文和转换成串行帧的结果如下图:

pYYBAGIYSQSATgqcAACxTS7xXjE731.png

八、格式转换

数据转换格式,如下图所示每一个CAN帧包含13个字节,13个字节内容包括CAN信息+ID+数据。

poYBAGIYSQSAHZRbAAFMRUNa09I390.pngpoYBAGIYSQSANF2CAAIx9svyong438.pngpYYBAGIYSQSAe_ITAAE3BG1D5nE253.png

九、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。

poYBAGIYSQSAHRjNAAIppQ0UGcE385.png


CAN帧信息(远程帧或数据帧;标准帧或扩展帧)通过配置软件设置。

传输的 Modbus协议内容即可从“数据2”字节开始,如果协议内容大于7个字节,那么将剩下的协议内容照这种分段格式继续转换,直到转换完成。

数据1是分段控制信息(占1个字节,8Bit),其含义如下:

●分段标记

占1个Bit位(Bit7), 标志该报文是否是分段报文。该位为 0 表示单独报文,为 1 表示属于被分段报文中的一帧。

●分段类型

占2个Bit位(Bit6,Bit5),用于表示该报文在分段报文中的类型:

pYYBAGIYSQSAKXtcAAE5M99L-Xw606.png

●分段计数器

占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帧中,仅做为报文的确认控制信息。

poYBAGIYSQWAVMMyAAQh745Ylcg164.png

CAN侧的数据到ModBus RTU的转换原理和上面相同,CAN侧收到上述4条报文后,转换器会将收到的CAN报文按照上述的CAN分段机制组合成一帧RTU数据,并在结尾加上CRC校验:

pYYBAGIYSQWAFb7OAAN83TSvi74561.png


每个CAN报文的第一个数据都有分段信息来填充(81、a2、a3和c4),该信息不转换

到Modbus RTU帧中,仅做为报文的确认控制信息。


进入嵌入式查看更多内容>>
相关视频
  • PX4固件二次开发课程

  • RISC-V嵌入式系统开发

  • NuttX Workshop 2024

  • 自己动手写操作系统

  • SOC系统级芯片设计实验

  • 自己动手做一台计算机

最新器件
精选电路图
  • 红外线探测报警器

  • 短波AM发射器电路设计图

  • 使用ESP8266从NTP服务器获取时间并在OLED显示器上显示

  • 用NE555制作定时器

  • 带有短路保护系统的5V直流稳压电源电路图

  • 基于TDA2003的简单低功耗汽车立体声放大器电路

    相关电子头条文章