Modbus crc16校验
CRC-16 / MODBUS :
1)CRC寄存器初始值為 FFFF;即16位全為1;
2)CRC-16 / MODBUS的多項式A001H (1010 0000 0000 0001B) ‘H’表示16進制數,‘B’表示二進制數
計算步驟為:
(1).預置 16 位寄存器為十六進制 FFFF(即全為 1) ,稱此寄存器為 CRC 寄存器;
(2).把第一個 8 位數據與 16 位 CRC 寄存器的低位相異或,把結果放于 CRC 寄
存器;
(3).檢測相異或后的CRC寄存器的最低位,若最低位為1:CRC寄存器先右移1位,再與多項式A001H進行異或;若為0,則CRC寄存器右移1位,無需與多項式進行異或。
(4).重復步驟 3 ,直到右移 8 次,這樣整個 8 位數據全部進行了處理;
(5).重復步驟 2 到步驟4,進行下一個 8 位數據的處理;
(6).最后得到的 CRC 寄存器即為 CRC 碼。
補充:
多項式產生:
如x16+x12+x5+1
x16表示第16位為1,x5表示第5位為1
(1 << 16) | (1 << 12) | (1 << 5) | (1) = 0x11021
但是CRC16只取低16位,寫成16進制數就是 0x1021
參考:https://blog.csdn.net/u013625451/article/details/81239572?spm=1001.2101.3001.6650.6&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7ERate-6.pc_relevant_default&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7ERate-6.pc_relevant_default
總結
以上是生活随笔為你收集整理的Modbus crc16校验的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: MySQL中修改表结构的关键字_下列SQ
- 下一篇: ajax上传文件判断大小,JavaScr