{"id":10355,"date":"2022-07-10T10:58:51","date_gmt":"2022-07-10T02:58:51","guid":{"rendered":"https:\/\/www.modbus.cn\/?p=10355"},"modified":"2024-05-07T23:36:29","modified_gmt":"2024-05-07T15:36:29","slug":"crc-16-modbus-yuan-li-jian-jie-dai-ma-shi-li","status":"publish","type":"post","link":"https:\/\/www.modbus.cn\/en\/10355.html","title":{"rendered":"CRC-16 MODBUS\u539f\u7406\u7b80\u4ecb\uff0c\u4ee3\u7801\u793a\u4f8b"},"content":{"rendered":"<p class=\"wp-block-paragraph\">CRC\u7801\u7531\u53d1\u9001\u7aef\u8ba1\u7b97\uff0c\u653e\u7f6e\u4e8e\u53d1\u9001\u4fe1\u606f\u62a5\u6587\u7684\u5c3e\u90e8\u3002\u63a5\u6536\u4fe1\u606f\u7684\u8bbe\u5907\u518d\u91cd\u65b0\u8ba1\u7b97\u63a5\u6536\u5230\u4fe1\u606f\u62a5\u6587\u7684CRC\uff0c\u6bd4\u8f83\u8ba1\u7b97\u5f97\u5230\u7684CRC\u662f\u5426\u4e0e\u63a5\u6536\u5230\u7684\u76f8\u7b26\uff0c\u5982\u679c\u4e24\u8005\u4e0d\u76f8\u7b26\uff0c\u5219\u8868\u660e\u51fa\u9519\u3002<br>\u6821\u9a8c\u7801\u7684\u8ba1\u7b97\u591a\u9879\u5f0f\u4e3a(X16 + X15 + X2 + 1)\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u5177\u4f53CRC16\u7801\u7684\u8ba1\u7b97\u65b9\u6cd5\u662f\uff1a<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><br>1\uff0e\u9884\u7f6e1\u4e2a16\u4f4d\u7684\u5bc4\u5b58\u5668\u4e3a\u5341\u516d\u8fdb\u5236FFFF\uff08\u5373\u5168\u4e3a1\uff09\uff1b\u79f0\u6b64\u5bc4\u5b58\u5668\u4e3aCRC\u5bc4\u5b58\u5668\uff1b<br>2\uff0e\u628a\u7b2c\u4e00\u4e2a8\u4f4d\u4e8c\u8fdb\u5236\u6570\u636e \uff08\u65e2\u901a\u8baf\u4fe1\u606f\u5e27\u7684\u7b2c\u4e00\u4e2a\u5b57\u8282\uff09\u4e0e16\u4f4d\u7684CRC\u5bc4\u5b58\u5668\u7684\u4f4e8\u4f4d\u76f8\u5f02\u6216\uff0c\u628a\u7ed3\u679c\u653e\u4e8eCRC\u5bc4\u5b58\u5668\uff1b<br>3\uff0e\u628aCRC\u5bc4\u5b58\u5668\u7684\u5185\u5bb9\u53f3\u79fb\u4e00 \u4f4d\uff08\u671d\u4f4e\u4f4d\uff09\u75280\u586b\u8865\u6700\u9ad8\u4f4d\uff0c\u5e76\u68c0\u67e5\u53f3\u79fb\u540e\u7684\u79fb\u51fa\u4f4d\uff1b<br>4\uff0e\u5982\u679c\u79fb\u51fa\u4f4d\u4e3a0\uff1a\u91cd\u590d\u7b2c3\u6b65\uff08\u518d\u6b21\u53f3\u79fb\u4e00\u4f4d\uff09\uff1b<br>\u5982\u679c\u79fb\u51fa\u4f4d\u4e3a1\uff1aCRC\u5bc4\u5b58\u5668\u4e0e\u591a\u9879\u5f0fA001\uff081010 0000 0000 0001\uff09\u8fdb\u884c\u5f02\u6216\uff1b(Modbus)<br>5\uff0e\u91cd\u590d\u6b65\u9aa43\u548c4\uff0c\u76f4\u5230\u53f3\u79fb8\u6b21\uff0c\u8fd9\u6837\u6574\u4e2a8\u4f4d\u6570\u636e\u5168\u90e8\u8fdb\u884c\u4e86\u5904\u7406\uff1b<br>6\uff0e\u91cd\u590d\u6b65\u9aa42\u5230\u6b65\u9aa45\uff0c\u8fdb\u884c\u901a\u8baf\u4fe1\u606f\u5e27\u4e0b\u4e00\u4e2a\u5b57\u8282\u7684\u5904\u7406\uff1b<br>7\uff0e\u5c06\u8be5\u901a\u8baf\u4fe1\u606f\u5e27\u6240\u6709\u5b57\u8282\u6309\u4e0a\u8ff0\u6b65\u9aa4\u8ba1\u7b97\u5b8c\u6210\u540e\uff0c\u5f97\u5230\u768416\u4f4dCRC\u5bc4\u5b58\u5668\u7684\u9ad8\u3001\u4f4e\u5b57\u8282\u8fdb\u884c\u4ea4\u6362\uff1b<br>8\uff0e\u6700\u540e\u5f97\u5230\u7684CRC\u5bc4\u5b58\u5668\u5185\u5bb9\u5373\u4e3a\uff1aCRC\u7801\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u4ee3\u7801<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>unsigned int GetCRC16(unsigned char *ptr,  unsigned char len)\n{\n    unsigned int index;\n    unsigned char crch = 0xFF;  \/\/\u9ad8CRC\u5b57\u8282\n    unsigned char crcl = 0xFF;  \/\/\u4f4eCRC\u5b57\u8282\n    unsigned char code TabH&#91;] = {  \/\/CRC\u9ad8\u4f4d\u5b57\u8282\u503c\u8868\n        0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0,  \n        0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41,  \n        0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0,  \n        0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40,  \n        0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1,  \n        0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41,  \n        0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1,  \n        0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41,  \n        0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0,  \n        0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40,  \n        0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1,  \n        0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40,  \n        0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0,  \n        0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40,  \n        0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0,  \n        0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40,  \n        0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0,  \n        0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41,  \n        0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0,  \n        0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41,  \n        0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0,  \n        0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40,  \n        0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1,  \n        0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41,  \n        0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0,  \n        0x80, 0x41, 0x00, 0xC1, 0x81, 0x40  \n    } ;  \n    unsigned char code TabL&#91;] = {  \/\/CRC\u4f4e\u4f4d\u5b57\u8282\u503c\u8868\n        0x00, 0xC0, 0xC1, 0x01, 0xC3, 0x03, 0x02, 0xC2, 0xC6, 0x06,  \n        0x07, 0xC7, 0x05, 0xC5, 0xC4, 0x04, 0xCC, 0x0C, 0x0D, 0xCD,  \n        0x0F, 0xCF, 0xCE, 0x0E, 0x0A, 0xCA, 0xCB, 0x0B, 0xC9, 0x09,  \n        0x08, 0xC8, 0xD8, 0x18, 0x19, 0xD9, 0x1B, 0xDB, 0xDA, 0x1A,  \n        0x1E, 0xDE, 0xDF, 0x1F, 0xDD, 0x1D, 0x1C, 0xDC, 0x14, 0xD4,  \n        0xD5, 0x15, 0xD7, 0x17, 0x16, 0xD6, 0xD2, 0x12, 0x13, 0xD3,  \n        0x11, 0xD1, 0xD0, 0x10, 0xF0, 0x30, 0x31, 0xF1, 0x33, 0xF3,  \n        0xF2, 0x32, 0x36, 0xF6, 0xF7, 0x37, 0xF5, 0x35, 0x34, 0xF4,  \n        0x3C, 0xFC, 0xFD, 0x3D, 0xFF, 0x3F, 0x3E, 0xFE, 0xFA, 0x3A,  \n        0x3B, 0xFB, 0x39, 0xF9, 0xF8, 0x38, 0x28, 0xE8, 0xE9, 0x29,  \n        0xEB, 0x2B, 0x2A, 0xEA, 0xEE, 0x2E, 0x2F, 0xEF, 0x2D, 0xED,  \n        0xEC, 0x2C, 0xE4, 0x24, 0x25, 0xE5, 0x27, 0xE7, 0xE6, 0x26,  \n        0x22, 0xE2, 0xE3, 0x23, 0xE1, 0x21, 0x20, 0xE0, 0xA0, 0x60,  \n        0x61, 0xA1, 0x63, 0xA3, 0xA2, 0x62, 0x66, 0xA6, 0xA7, 0x67,  \n        0xA5, 0x65, 0x64, 0xA4, 0x6C, 0xAC, 0xAD, 0x6D, 0xAF, 0x6F,  \n        0x6E, 0xAE, 0xAA, 0x6A, 0x6B, 0xAB, 0x69, 0xA9, 0xA8, 0x68,  \n        0x78, 0xB8, 0xB9, 0x79, 0xBB, 0x7B, 0x7A, 0xBA, 0xBE, 0x7E,  \n        0x7F, 0xBF, 0x7D, 0xBD, 0xBC, 0x7C, 0xB4, 0x74, 0x75, 0xB5,  \n        0x77, 0xB7, 0xB6, 0x76, 0x72, 0xB2, 0xB3, 0x73, 0xB1, 0x71,  \n        0x70, 0xB0, 0x50, 0x90, 0x91, 0x51, 0x93, 0x53, 0x52, 0x92,  \n        0x96, 0x56, 0x57, 0x97, 0x55, 0x95, 0x94, 0x54, 0x9C, 0x5C,  \n        0x5D, 0x9D, 0x5F, 0x9F, 0x9E, 0x5E, 0x5A, 0x9A, 0x9B, 0x5B,  \n        0x99, 0x59, 0x58, 0x98, 0x88, 0x48, 0x49, 0x89, 0x4B, 0x8B,  \n        0x8A, 0x4A, 0x4E, 0x8E, 0x8F, 0x4F, 0x8D, 0x4D, 0x4C, 0x8C,  \n        0x44, 0x84, 0x85, 0x45, 0x87, 0x47, 0x46, 0x86, 0x82, 0x42,  \n        0x43, 0x83, 0x41, 0x81, 0x80, 0x40  \n    } ;\n    while (len--)  \/\/\u8ba1\u7b97\u6307\u5b9a\u957f\u5ea6\u7684CRC\n    {\n        index = crch ^ *ptr++;\n        crch = crcl ^ TabH&#91; index];\n        crcl = TabL&#91; index];\n    }\n   \n    return ((crch&lt;&lt;8) | crcl);  \n}                           \n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u8be5\u51fd\u6570\u5373\u76f4\u63a5\u8fd4\u56de\u8ba1\u7b97\u7684CRC\u503c<\/p>\n\n\n\n<figure class=\"wp-block-image size-full is-resized\"><img data-dominant-color=\"e6e5e6\" data-has-transparency=\"false\" decoding=\"async\" sizes=\"(max-width: 800px) 100vw, 800px\" src=\"https:\/\/image.modbus.cn\/wp-content\/uploads\/2023\/11\/20231128214627583.png\"  class=\"wp-image-26038 not-transparent\" style=\"--dominant-color: #e6e5e6; width:824px;height:auto\"><\/figure>\n<span id=\"magicpostMarker\"><\/span>","protected":false},"excerpt":{"rendered":"<p>CRC\u7801\u7531\u53d1\u9001\u7aef\u8ba1\u7b97\uff0c\u653e\u7f6e\u4e8e\u53d1\u9001\u4fe1\u606f\u62a5\u6587\u7684\u5c3e\u90e8\u3002\u63a5\u6536\u4fe1\u606f\u7684\u8bbe&#8230;<\/p>","protected":false},"author":1,"featured_media":10376,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_members_access_role":[],"_members_access_error":""},"categories":[691],"tags":[905,630,632],"class_list":["post-10355","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-modbus-code-base","tag-char","tag-crc","tag-unsigned"],"_links":{"self":[{"href":"https:\/\/www.modbus.cn\/en\/wp-json\/wp\/v2\/posts\/10355","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.modbus.cn\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.modbus.cn\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.modbus.cn\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.modbus.cn\/en\/wp-json\/wp\/v2\/comments?post=10355"}],"version-history":[{"count":0,"href":"https:\/\/www.modbus.cn\/en\/wp-json\/wp\/v2\/posts\/10355\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.modbus.cn\/en\/wp-json\/wp\/v2\/media\/10376"}],"wp:attachment":[{"href":"https:\/\/www.modbus.cn\/en\/wp-json\/wp\/v2\/media?parent=10355"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.modbus.cn\/en\/wp-json\/wp\/v2\/categories?post=10355"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.modbus.cn\/en\/wp-json\/wp\/v2\/tags?post=10355"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}