回覆列表
  • 1 # 工控人

    記得上次回答過三菱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校驗碼。

  • 中秋節和大豐收的關聯?
  • 電池用斷路器註冊商標屬於哪一類?