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