﻿{"id":969,"date":"2014-12-26T13:11:16","date_gmt":"2014-12-26T05:11:16","guid":{"rendered":"http:\/\/www.tansoo.cn\/?p=969"},"modified":"2014-12-26T13:17:15","modified_gmt":"2014-12-26T05:17:15","slug":"modbus%e5%8d%8f%e8%ae%aecrc16%e6%a0%a1%e9%aa%8cs7-scl%e7%ae%97%e6%b3%95","status":"publish","type":"post","link":"http:\/\/www.tansoo.cn\/?p=969","title":{"rendered":"ModBus\u534f\u8baeCRC16\u6821\u9a8cS7-SCL\u7b97\u6cd5"},"content":{"rendered":"<p>\u7b97\u6cd5\u6e90\u4ee3\u7801\uff1a <\/p>\n<pre class=\"lang:delphi decode:true \" >FUNCTION FC16 : WORD\r\n\/\/\r\n\/\/ ModBus CRC16\u7b97\u6cd5\r\n\/\/ www.tansoo.cn\r\nCONST\r\n    \/\/ Constants\r\n    ARRAY_COUNT := 32;\r\nEND_CONST\r\n\r\nVAR_INPUT\r\n    Byte_Array : ARRAY[0..ARRAY_COUNT-1] OF BYTE;\r\n    Count : INT;\r\nEND_VAR\r\n\r\nVAR_TEMP\r\n    CRC16Lo, CRC16Hi, CL, CH, UseHi, UseLo: WORD;     \r\n    i, index: INT;\r\nEND_VAR\r\n    CRC16Lo := 16#FF; \/\/CRC16Lo\u4e3aCRC\u5bc4\u5b58\u5668\u4f4e8\u4f4d     \r\n    CRC16Hi := 16#FF; \/\/CRC16Hi\u4e3aCRC\u5bc4\u5b58\u5668\u9ad88\u4f4d     \r\n    CL := 16#01;     \r\n    CH := 16#A0; \/\/  A001 H \u662fCRC\uff0d16\u591a\u9879\u5f0f\u4ee3\u7801     \r\n    FOR i := 0 TO Count-1 DO     \r\n        CRC16Lo := CRC16Lo XOR Byte_Array[i]; \/\/\u6bcf\u4e00\u4e2a\u6570\u636e\u4e0eCRC\u5bc4\u5b58\u5668\u5f02\u6216     \r\n        FOR index := 0 TO 7 DO     \r\n            UseHi := CRC16Hi;     \r\n            UseLo := CRC16Lo;     \r\n            CRC16Hi := SHR (IN:=CRC16Hi, N:=1);     \r\n            CRC16Lo := SHR (IN:=CRC16Lo, N:=1); \/\/\u53f3\u79fb\u4e00\u4f4d     \r\n            IF ((UseHi AND 16#1) = 16#1) THEN \/\/\u5982\u679c\u9ad8\u4f4d\u5b57\u8282\u6700\u540e\u4e00\u4f4d\u662f1\u7684\u8bdd     \r\n                CRC16Lo := CRC16Lo OR 16#80; \/\/\u4f4e\u4f4d\u5b57\u8282\u53f3\u79fb\u540e\u524d\u9762\u88651     \r\n            END_IF;\r\n            \r\n            IF ((UseLo AND 16#1) = 16#1) THEN \/\/\u5982\u679cLSB \u4e3a1\uff0c\u5219\u4e0e\u591a\u9879\u5f0f\u8fdb\u884c\u5f02\u6216     \r\n                CRC16Hi := CRC16Hi XOR CH;     \r\n                CRC16Lo := CRC16Lo XOR CL;     \r\n            END_IF;     \r\n        END_FOR;     \r\n    END_FOR;     \r\n    FC016 := SHL(IN:=CRC16Lo, N:=8) OR CRC16Hi;\r\nEND_FUNCTION\r\n<\/pre>\n<p> <!--more--><\/p>\n<p>\u8c03\u7528\u65b9\u6cd5\uff1a<\/p>\n<pre class=\"lang:delphi decode:true \" >ORGANIZATION_BLOCK CYCLE\r\nVAR_TEMP\r\n    systemdata : ARRAY[0..20] OF BYTE; \/\/OB1\u4e13\u7528\u533a\r\n    DD : ARRAY[0..31] OF BYTE;\r\nEND_VAR\r\nBEGIN\r\n    dd[0] := 16#31;\r\n    dd[1] := 16#32;\r\n    dd[2] := 16#33;\r\n    dd[3] := 16#34;\r\n    MW110 := FC16(Byte_Array := DD \/\/ IN: ARRAY\r\n     ,Count := 4 \/\/ IN: INT\r\n     ); \/\/ WORD\r\n          \r\nEND_ORGANIZATION_BLOCK\r\n<\/pre>\n","protected":false},"excerpt":{"rendered":"<p>\u7b97\u6cd5\u6e90\u4ee3\u7801\uff1a FUNCTION FC16 : WORD \/\/ \/\/ ModBus CRC16\u7b97\u6cd5 \/\/ www [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[2],"tags":[15,54,55],"class_list":["post-969","post","type-post","status-publish","format-standard","hentry","category-program","tag-crc","tag-s7-scl","tag-plc"],"_links":{"self":[{"href":"http:\/\/www.tansoo.cn\/index.php?rest_route=\/wp\/v2\/posts\/969","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/www.tansoo.cn\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/www.tansoo.cn\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/www.tansoo.cn\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/www.tansoo.cn\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=969"}],"version-history":[{"count":0,"href":"http:\/\/www.tansoo.cn\/index.php?rest_route=\/wp\/v2\/posts\/969\/revisions"}],"wp:attachment":[{"href":"http:\/\/www.tansoo.cn\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=969"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/www.tansoo.cn\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=969"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/www.tansoo.cn\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=969"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}