cvlsam
富士低壓,POD(觸摸屏),PLC專賣
級別: VIP會員
|
這個是Modbus RTU CRC16,套用的多項式為X16+X15+X2+1 算法為:將初始數(shù)據(jù)設置為FFFF,然后,將第一個數(shù)據(jù)H05與初始數(shù)據(jù)做異或,結果保存在CRC寄存器中。 將CRC中的數(shù)據(jù)右移,直到Flag位為1,將結果與多項式進行異或,保存在CRC寄存器,然后CRC寄存器中的數(shù)據(jù)繼續(xù)右移,直到Flag為1,然后繼續(xù)上面這一步,直到第一個數(shù)據(jù)處理完畢。此時,裝入第二個數(shù)據(jù),繼續(xù)上述過程,直到所有的數(shù)據(jù)處理完畢。 你的這個如果使用手工計算的話,大約要計算61步,其中還要確保你不被轉暈掉。用Execl畫表格計算會更快一點,當然,你也可以去下載計算器來計算。 Regards |
---|---|
本帖最近評分記錄: |
cvlsam
富士低壓,POD(觸摸屏),PLC專賣
級別: VIP會員
|
1、Flag是什么,右移標志位,并不是每右移一步既要XOR異或的,只有標志位為1時才進行。 如:1000 1111 1001 1000,那么需要右移4位后,才進行XOR異或,右移一次0 1000 1111 1001 100 Flag中為0,不進行XOR,右移第二次,00 1000 1111 1001 10 Flag中仍然為0,右移第三次,000 1000 1111 1001 1 Flag中仍然為0,右移第4次,0000 1000 1111 1001 此時Flag中為1,進行異或。 2、手工計算絕對會崩潰的,早上早點起床進行計算,頭腦清晰。 3、字符串請你填入你要計算的字符串啊,比如你現(xiàn)在的05 06 00 0D 17 70。具體你要看你的軟件說明,我自己寫的計算器是輸入0506000D1770進行計算的,查表法要快于一般算法,但是要正確的建立表才是關鍵,查表法有出錯的可能,但是可以忽略。 如果你使用高級語言與之通訊,那么相關高級語言的CRC算法鋪天蓋地。 Regards |
---|---|
|