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校驗碼程序的編寫。

下面視頻演示計算過程:

視頻加載中...
-->


分享到:


相關文章: