PLC、变频器等常用的,MODBUS RTU通讯中,CRC校验码的计算

工控中常常使用的MODBUS协议通信有两种数据模式进行,一种是ASCII码(American Standard Code for Information International Interchange,美国信息交换标准代码),另外一种是RTU(远程终端单元)。通过这个协议,数据可以从A设备发送到B设备,为了确保数据能够成功发送,就需要一个校验码或者检查码来确定,通俗的将就对暗号,这个校验码会在A和B设备分别计算,首先在A设备计算一下数据的校验码J1,连数据一块发送到B设备,B设备接收到数据后,根据接收的数据也计算了一个检验码J2,如果J1=J2,则通讯成功,否则通讯失败。所以这个检验码很重要。

数据帧的校验方式主要包括字节的位校验(奇偶检验)、帧的整个数据的检验(CRC或者LRC),ASCII码模式一般用LRC校验,RTU用CRC校验,位校验一般在通讯方式设定即可,我们在通信时常常需要对CRC或者LRC值得计算进行编程,在悟空回答中回答过LRC值的计算,相对来说CRC的计算较为复杂,今天我们就说下CRC计算的原理,清楚以后PLC的编程就容易写了。

接下来我们需要了解一下几个概念,移位、异或计算,LSB。

移位,这个较为简单,比如1000,1001,向右移位则变成0100,0100,高位补零,

LSB(Least Significant Bit),最低有效位,就是1000,1001中最后一位1,在移位是最右边的1是要移除的。

异或计算,两个数一样输出0,不一样输出1,比如1001,0001与0111,0100进行异或计算,结果就是:

1110,0101。

PLC、变频器等常用的,MODBUS RTU通讯中,CRC校验码的计算

异或计算

看下CRC计算原理:

1、给CRC暂存器中存入初始值FFFFH

2、第一个8位数据与CRC的数据进行异或计算,并且放入到CRC暂存器中(覆盖原来的FFFFH)

3、右移一位CRC,将高位补零

4、检测LSB就是移除位的数据,如果是1,将CRC与预置值A001H进行异或计算,结果存放到CRC暂存器,如果是0,则不进行,只需要把移位后的数据存放到CRC寄存器中即可。

5、重复步骤3~4,将8位数据全部计算完成

6、重复步骤2~5计算一个8位数据,直到所有数据计算完成,将最后CRC暂存器中数据的高低8位交换就得到了CRC校验码。

听起来步骤很麻烦,下面我们具体具体说明如何计算:

对8位数据01H计算CRC校验码

使用CRC计算器可知01H的CRC校验码是 7E 80H,如下:

PLC、变频器等常用的,MODBUS RTU通讯中,CRC校验码的计算

CRC计算器

按照步骤一步一步来:

初始CRC: 1111111111111111

01数据: 0000000000000001

异或计算: 1111111111111110 (CRC暂存器)

移位: 0111111111111111 (高位补零,LSB=0)

移动1位完成

移位: 0011111111111111 (高位补零,LSB=1,与预置值A001H进行异或计算)

预置值: 1010000000000001

异或计算: 1001111111111110 (CRC暂存器)

移动2位完成

移位: 0100111111111111 (高位补零,LSB=0)

移动3位完成

移位: 0010011111111111 (高位补零,LSB=1,与预置值A001H进行异或计算)

预置值: 1010000000000001

异或计算: 1000011111111110 (CRC暂存器)

移动4位完成

移位: 0100001111111111 (高位补零,LSB=0)

移动5位完成

移位: 0010000111111111 (高位补零,LSB=1,与预置值A001H进行异或计算)

预置值: 1010000000000001

异或计算: 1000000111111110 (CRC暂存器)

移动6位完成

移位: 0100000011111111 (高位补零,LSB=0)

移动7位完成

移位: 0010000001111111 (高位补零,LSB=1,与预置值A001H进行异或计算)

预置值: 1010000000000001

异或计算: 1000000001111110 (CRC暂存器)

移动8位完成,整个步骤完成, 将CRC暂存器 1000000001111110=807EH,交换高低位置,

则最后的CRC校验码=7E 80。

以上就是CRC计算的过程,不知道你掌握与否,下章将介绍基于PLC中的CRC校验码程序的编写。

下面视频演示计算过程:

视频加载中...
-->


分享到:


相關文章: