关键词:MODBUS RTU CRC校验,串口调试器,MODBUS RTU协议
本文由艺捷自动化编写,其旗下产品有易为二维码说明书小程序
在工业自动化通讯中,Modbus RTU是使用非常广泛的一种通讯协议.尽管它的通讯效率不高,但由于它现场接线简单,有众多设备厂商支持,简单好用,所以是一种重要的通讯方式,有时候甚至是唯一可选的通讯方式.因为有许多的仪表只支持Modbus RTU通讯协议.
首先,说一下在什么情况下需要用到这种Modbus RTU通讯帧的CRC校验计算.如果你的上位机中有现成的Modbus RTU通讯指令则不用关注帧的细节.比如用PLC通过485总线来与现场仪表进行Modbus RTU通讯,则PLC程序中有相应的Modbus RTU通讯指令,只需调用这些指令就可以了,你无需知道CRC校验是如何计算的.比如你用西门子200 SMART PLC做主站与多个设备从站做485通讯,只需要调用MBUS_CTRL和MBUS_MSG这两条指令就可以了.那么我们什么时候需要计算Modbus RTU帧里面CRC校验数值呢.就是用电脑与仪表进行通讯的时候.比如你去现场调查或者调试,只带了笔记本电脑和一些配套的串口通讯器件,你想验证一下现场的仪表能不能实现Modbus RTU通讯,就需要自己写出通讯帧的内容,然后通过笔记本发出去.仪表如果能通讯会返回相应的应答帧.这就需要你能计算出通讯帧里面的CRC校验码,这个校验码有一定的算法,可以查看相关资料,但要人工计算这个校验码太费事了.这里介绍一个软件,详细说明它的使用方法,并提供这个软件的程序文件.
笔记本电脑一般的电气工程师都会有,但要进行串行通讯的话,往往需要加一点串口通讯的器件.现在笔记本电脑几乎都没有串口的,这就需要给电脑加一个串口.一般是USB转RS232转换器,或者USB转RS485转换器,或者RS232转485转换器.还有USB转422转换器,但用的不多,485用的居多.232和485的串口我都用过,后面我会推荐一下好用的串口器件.
这里讲的CRC校验工具是计算通讯帧中CRC校验字节的软件,我会另外附加文件提供给您。实际上要在电脑上收发串口数据,还需要一种串口调试器软件,我后面会给出链接。串口调试器软件的用法就不在这里详细讲述了,可以参考我写的一篇名为《如何使用串口调试器测试串行通讯》的文章。有了通讯软件还需要知道怎么编写通讯帧,这就要比较熟悉Modbus RTU通讯协议。这个通讯协议是一个非常古老的通讯协议了,但现在还在广泛的使用。这个通讯协议的全部文本我这里也有,我也会另外附加文件提供给您。当你初步掌握了这个协议之后,你就知道怎么写一个通讯帧发给仪表了,最大的难题还是CRC校验码的计算,也就是这篇文章所要讲述的主要内容。
那么CRC校验工具,串口调试软件,Modbus RTU协议文本,以及相关的硬件产品都会在下面给出链接或下载方式,软硬件都准备齐全后,后面具体介绍怎么操作。
附加内容:
下面是一些本文所提到的一些资源:
晶华USB转RS232串口线转换器
https://item.taobao.com/item.htm?spm=a21dvs.23580594.0.0.621e3d0dWvnvKo&ft=t&id=748385000856
绿联USB转RS485电脑422九针串口
https://item.taobao.com/item.htm?spm=a21dvs.23580594.0.0.621e3d0dWvnvKo&ft=t&id=748530793717
大瀛RS232转RS485转换器
https://item.taobao.com/item.htm?spm=a21dvs.23580594.0.0.621e3d0dWvnvKo&ft=t&id=748603026607
易为二维码说明书,已经上线,可在电气柜体上粘贴二维码扫码查看电气图纸和资料.
串口调试器
https://item.taobao.com/item.htm?spm=a21dvs.23580594.0.0.1d293d0dMIKIbe&ft=t&id=751573174633
CRC校验工具
https://item.taobao.com/item.htm?spm=a21dvs.23580594.0.0.1d293d0dMIKIbe&ft=t&id=748401044135
现在可以在易为二维码说明书小程序,下载上面所有的软件和文档。扫一扫以下小程序码即刻下载。
有了上面提供的资料和工具后,下面具体讲解Modbus RTU的帧结构和CRC校验字节的计算.
上篇讲到在什么情况下需要用到CRC校验计算,现在详细介绍一下如何计算这个值.
第一,先介绍一下Modbus RTU通讯帧的结构.
RTU模式每个字节的格式为:
编码系统:8位二进制.
数据位:起始位,数据位(首先发送最低有效位),奇偶校验,停止位.
帧发送方式:每个字符或字节均由从左到右顺序发送.
校验:循环冗余校验(CRC),低位字节先发.
Modbus-RTU报文帧
地址 |
功能码 |
数据 |
CRC校验 |
|
1字节 |
1字节 |
0到252字节 |
2字节 |
|
|
|
|
CRC低 |
CRC高 |
那么CRC校验是计算的那一部分数据呢,具体说是从地址字节开始到校验字节之前的字节,搞清楚这点很重要.
下面看一下PZ系列多功能表Modbus RTU通讯的例子.
下面的例子是从01 号从机读3 个采集到的基本数据(数据帧中每个地址占用2 个字节)UAB、UBC、UCA,其中UAB 的地址为0028H, UBC 的地址为0029H, UCA 的地址为002AH。
主机需要发送如下帧.
地址码 |
功能码 |
起始地址 |
寄存器数量 |
CRC校验码 |
|||
|
|
高字节 |
低字节 |
高字节 |
低字节 |
低字节 |
高字节 |
01H |
03H |
00H |
28H |
00H |
03H |
85H |
C3H |
生成一个CRC有固定的流程,这里不做详细阐述.这里讲述如何利用CRC校验工具软件来计算这个CRC校验码.打开程序后先点Modbus-CRC16,输入上面帧中从地址码到CRC校验码之前的16进制数,01 03 00 28 00 03,点计算,计算结果为C385,计算结果需要注意的是,C3为高字节,85为低字节,不要搞混了.下图展示操作画面.
想了解具体的操作步骤,并获得相关的调试软件轻看如下项目<串口调试资料包>.
本资料包里面包含的内容:
号 |
名称 |
属性 |
说明 |
1 |
CRC校验工具 |
exe程序 |
用来计算MODBUS RTU的CRC校验码 |
2 |
ModbusRTU协议手册打印 |
pdf文档 |
Modbus RTU通讯协议的详细文本 |
3 |
MODBUS RTU报文帧CRC校验的计算及校验工具的使用 |
pdf文档 |
描述MODBUS RTU报文帧CRC校验的计算及检验工具的使用 |
4 |
SSCOM串口调试器 |
exe程序 |
发送串口数据和接收串口数据的软件 |
5 |
如何使用串口调试器测试串行通讯 |
pdf文档 |
介绍如何做串口通讯调试,以及调试软件的使用 |
6 |
用MCGS触摸屏模拟器模拟仪表的MODBUS RTU通讯 |
pdf文档 |
介绍不用触摸屏,只用电脑模拟串口通讯的方法 |
7 |
UartAssist串口调试助手(新增) |
exe程序 |
可以直接生成Modbus报文的串口调试软件。 |
获取详细资料,点击以下链接: