記得上次回答過三菱plc中Modbus通訊中ASCII碼模式LRC校驗碼程式的編寫,與LRC相比,Rtu模式中的crc校驗碼的計算較為複雜,它需要一系列的異或計算。
1、crc計算原理
2、需要了解概念
異或計算,很簡答就是比較二進位制資料0和1,如果兩個值一樣則輸出0,不一樣輸出1,比如1000,1110 與0010,1010進行異或計算,結果就是1010,0100:
移位、高位補零,LSB值的示意圖如下,首先將資料整體右移,最低位即為溢位位就是LSB值,移除了LSB需要在最高位補零,最後的結果就是移位後的資料。
3、結算過程例子
為了更詳細、具體的瞭解如何計算出crc校驗碼,我們舉例說明資料02的crc校驗碼過程:
按照crc校驗碼的計算原理一步步進行即可,首先對資料與初始crc進行異或運算,接下來就是右移位、判斷LSB,迴圈8次將資料02的8位全部計算完成,最後crc暫存器中的資料就是crc值,不過在通訊時候需要將高低位進行調換。
4、crc校驗碼的三菱plc程式程式設計
這裡需要了解三菱的相關指令,
1迴圈指令 FOR NETX,
2跳轉指令CJ
3右移位指令SFTR
4異或計算指令WXOR
D0是通訊命令資料的個數,D10V1是資料,D100、D102就是最後的crc校驗碼。
記得上次回答過三菱plc中Modbus通訊中ASCII碼模式LRC校驗碼程式的編寫,與LRC相比,Rtu模式中的crc校驗碼的計算較為複雜,它需要一系列的異或計算。
1、crc計算原理
2、需要了解概念
異或計算,很簡答就是比較二進位制資料0和1,如果兩個值一樣則輸出0,不一樣輸出1,比如1000,1110 與0010,1010進行異或計算,結果就是1010,0100:
移位、高位補零,LSB值的示意圖如下,首先將資料整體右移,最低位即為溢位位就是LSB值,移除了LSB需要在最高位補零,最後的結果就是移位後的資料。
3、結算過程例子
為了更詳細、具體的瞭解如何計算出crc校驗碼,我們舉例說明資料02的crc校驗碼過程:
按照crc校驗碼的計算原理一步步進行即可,首先對資料與初始crc進行異或運算,接下來就是右移位、判斷LSB,迴圈8次將資料02的8位全部計算完成,最後crc暫存器中的資料就是crc值,不過在通訊時候需要將高低位進行調換。
4、crc校驗碼的三菱plc程式程式設計
這裡需要了解三菱的相關指令,
1迴圈指令 FOR NETX,
2跳轉指令CJ
3右移位指令SFTR
4異或計算指令WXOR
D0是通訊命令資料的個數,D10V1是資料,D100、D102就是最後的crc校驗碼。