liwen8966
工控世界讓我們認識,更讓我們相識!
級別: 探索解密
|
求助,最近在做MODBUS協議通信,主要問題是校驗問題CRC16不知道怎么去運算,不知道三菱有沒有這樣的功能自動計算,或者有運算公式也可以!謝謝大家 |
---|---|
|
二手工控電器
且行且珍惜
級別: 工控俠客
|
我也在搞CRC校驗不知道樓主用什么PLC?? |
|
---|---|---|
|
litung
臺灣-李同在
級別: VIP會員
|
CRC-16碼由兩個字節構成,在開始時CRC暫存器的每一位都預置為1,然後把CRC暫存器與8-bit的資料進行異或,之後對CRC暫存器從高到低進 行移位,在最高位(MSB)的位置補零,而最低位(LSB,移位後已經被移出CRC暫存器)如果為1,則把暫存器與預定義的多項式碼進行異或,否則如果 LSB為零,則無需進行異或。重複上述的由高至低的移位8次,第一個8-bit資料處理完畢,用此時CRC暫存器的值與下一個8-bit資料異或並進行如 前一個資料似的8次移位。所有的字元處理完成後CRC暫存器內的值即為最終的CRC值。 下面為CRC的計算過程: 1.設置CRC暫存器,並給其賦值FFFF(hex)。 2.將資料的第一個8-bit字元與16位CRC暫存器的低8位進行異或,並把結果存入CRC暫存器。 3.CRC暫存器向右移一位,MSB補零,移出並檢查LSB。 4.如果LSB為0,重複第三步;若LSB為1,CRC暫存器與多項式碼(0xA001)相異或(XOR)。 5.重複第3與第4步直到8次移位全部完成。此時一個8-bit資料處理完畢。 6.重複第2至第5步直到所有資料全部處理完成。 7.最終CRC暫存器的內容即為CRC值。 |
|
---|---|---|
本帖最近評分記錄:
|
550374389
!!!
級別: 論壇先鋒
|
樓上大俠能舉個例子來詳細說明嗎???最后好有數學算式,您上面說的實在太抽象了,俺文化低實在看不明啊 謝謝您了 |
---|---|
|
sjm213
有小知識,無大學問。
級別: 論壇版主
|
http://www.nusil.com.cn/read-gktid-69959.html |
---|---|
本帖最近評分記錄: |
litung
臺灣-李同在
級別: VIP會員
|
若你的PLC是FX3U的話 不用去管公式 只要一個指令,就會自動幫你把結果算出來了。 若不是的話,程式就要自己寫了 |
|
---|---|---|
|
550374389
!!!
級別: 論壇先鋒
|
謝謝版主啊~~~這貼俺收藏了 |
---|---|
|