{"id":91115,"date":"2026-08-06T23:08:32","date_gmt":"2026-08-06T15:08:32","guid":{"rendered":"https:\/\/www.wsisp.com\/helps\/91115.html"},"modified":"2026-08-06T23:08:32","modified_gmt":"2026-08-06T15:08:32","slug":"%e6%99%ba%e6%85%a7%e5%9f%8e%e5%b8%82%e6%b2%99%e7%9b%98%e6%a8%a1%e5%9e%8b%e5%a4%9a%e7%b3%bb%e7%bb%9f%e5%8d%8f%e5%90%8c%e6%8e%a7%e5%88%b6%e7%b3%bb%e7%bb%9f%e8%ae%be%e8%ae%a1%ef%bc%9a%e5%9f%ba%e4%ba%8est","status":"publish","type":"post","link":"https:\/\/www.wsisp.com\/helps\/91115.html","title":{"rendered":"\u667a\u6167\u57ce\u5e02\u6c99\u76d8\u6a21\u578b\u591a\u7cfb\u7edf\u534f\u540c\u63a7\u5236\u7cfb\u7edf\u8bbe\u8ba1\uff1a\u57fa\u4e8eSTM32\u4e0eModbus RTU\u7684\u56ed\u533a-\u57ce\u5e02-\u6570\u5b57\u5b6a\u751f\u8054\u52a8\u65b9\u6848"},"content":{"rendered":"<p>\u667a\u6167\u57ce\u5e02\u6c99\u76d8\u6a21\u578b\u4e0e\u667a\u6167\u56ed\u533a\u6c99\u76d8\u6a21\u578b\u6d89\u53ca\u57ce\u5e02\u5168\u666f&#xff08;\u529f\u80fd\u5206\u533a\u3001\u4ea4\u901a\u7f51\u7edc\u3001\u516c\u5171\u8bbe\u65bd\u3001\u751f\u6001\u7eff\u5730&#xff09;\u3001\u667a\u6167\u56ed\u533a&#xff08;\u7814\u53d1\u529e\u516c\u3001\u667a\u80fd\u5236\u9020\u3001\u4ed3\u50a8\u7269\u6d41\u3001\u5546\u4e1a\u914d\u5957\u3001\u667a\u80fd\u5b89\u9632\u3001\u667a\u6167\u80fd\u6e90\u3001\u667a\u6167\u4ea4\u901a&#xff09;\u3001\u6570\u5b57\u5b6a\u751f&#xff08;\u865a\u5b9e\u53cc\u5411\u6620\u5c04\u3001\u5b9e\u65f6\u6570\u636e\u53ef\u89c6\u5316\u3001\u667a\u80fd\u8c03\u5ea6&#xff09;\u7b49\u591a\u4e2a\u7cfb\u7edf\u7684\u534f\u540c\u63a7\u5236\u4e0e\u52a8\u6001\u6f14\u793a\u3002\u4e00\u5957\u5b8c\u6574\u7684\u667a\u6167\u57ce\u5e02\u6c99\u76d8\u63a7\u5236\u7cfb\u7edf&#xff0c;\u9700\u8981\u540c\u65f6\u9a71\u52a8\u591a\u8def\u706f\u5e26\u65f6\u5e8f\u6f14\u793a\u4ea4\u901a\u6d41\u3001\u6570\u636e\u6d41\u3001\u80fd\u6e90\u6d41\u3001\u5b89\u9632\u6d41\u7b49\u591a\u6761\u8def\u5f84\u7684\u534f\u540c\u8fd0\u884c&#xff0c;\u591a\u8def\u4fe1\u53f7\u8054\u52a8\u5c55\u793a\u201c\u65e5\u5e38\u8fd0\u8425\u201d\u201c\u9ad8\u5cf0\u7ba1\u7406\u201d\u201c\u5e94\u6025\u54cd\u5e94\u201d\u201c\u8282\u80fd\u6a21\u5f0f\u201d\u7b49\u591a\u79cd\u5de5\u51b5&#xff0c;\u540c\u65f6\u9884\u7559\u6570\u636e\u63a5\u53e3\u5b9e\u73b0\u4e0e\u6570\u5b57\u5b6a\u751f\u5e73\u53f0\u7684\u53cc\u5411\u901a\u4fe1\u3002\u4e0e\u5de5\u4e1a\u751f\u4ea7\u7ebf\u6c99\u76d8&#xff08;\u805a\u7126\u7269\u6599\u8def\u5f84\u7684\u63a5\u529b\u8054\u52a8&#xff09;\u4e0d\u540c&#xff0c;\u667a\u6167\u57ce\u5e02\u6c99\u76d8\u63a7\u5236\u7cfb\u7edf\u7684\u6838\u5fc3\u662f\u201c\u7269\u7406\u7a7a\u95f4-\u6570\u636e\u6d41-\u667a\u80fd\u51b3\u7b56\u201d\u4e09\u5c42\u67b6\u6784\u7684\u534f\u540c\u2014\u2014\u57ce\u5e02\u6216\u56ed\u533a\u7684\u7269\u7406\u7a7a\u95f4\u600e\u4e48\u5448\u73b0\u3001\u6570\u636e\u600e\u4e48\u6d41\u52a8\u3001\u667a\u80fd\u7cfb\u7edf\u600e\u4e48\u54cd\u5e94&#xff0c;\u6bcf\u4e2a\u73af\u8282\u7684\u63a7\u5236\u903b\u8f91\u5fc5\u987b\u4e0e\u5b9e\u9645\u667a\u6167\u57ce\u5e02\u6216\u667a\u6167\u56ed\u533a\u7684\u8fd0\u8425\u903b\u8f91\u4e00\u81f4\u3002<\/p>\n<p>\u672c\u6587\u7ed3\u5408\u7b51\u57ce\u4e16\u7eaa\u6a21\u578b\u5728\u5de5\u4e1a\u6c99\u76d8\u63a7\u5236\u7cfb\u7edf\u5f00\u53d1\u4e2d\u7684\u9879\u76ee\u7ecf\u9a8c&#xff08;2008\u5e74\u6210\u7acb&#xff0c;2000\u33a1\u5236\u4f5c\u5de5\u5382&#xff0c;\u63a7\u5236\u7cfb\u7edf\u81ea\u4e3b\u7814\u53d1&#xff0c;\u5df2\u4e3a\u534e\u5317\u7535\u529b\u5927\u5b66\u3001\u56fd\u673a\u96c6\u56e2\u3001\u5df4\u65af\u592b\u3001\u56fd\u5bb6\u7535\u7f51\u3001\u6e05\u534e\u5927\u5b66\u7b49500&#043;\u4f01\u4e8b\u4e1a\u5355\u4f4d\u63d0\u4f9b\u670d\u52a1&#xff09;&#xff0c;\u68b3\u7406\u667a\u6167\u57ce\u5e02\u6c99\u76d8\u6a21\u578b\u591a\u7cfb\u7edf\u534f\u540c\u63a7\u5236\u7cfb\u7edf\u7684\u8bbe\u8ba1\u4e0e\u5b9e\u73b0\u65b9\u6848&#xff0c;\u6db5\u76d6\u7cfb\u7edf\u67b6\u6784\u3001\u786c\u4ef6\u9009\u578b\u3001\u591a\u8def\u5f84\u706f\u5e26\u65f6\u5e8f\u63a7\u5236\u3001\u591a\u5de5\u51b5\u5207\u6362\u903b\u8f91\u3001Modbus RTU\u5bc4\u5b58\u5668\u6620\u5c04\u3001\u6570\u5b57\u5b6a\u751f\u6570\u636e\u5bf9\u63a5\u53ca\u4ee3\u7801\u5b9e\u73b0\u3002<\/p>\n<p>\u4e00\u3001\u667a\u6167\u57ce\u5e02\u6c99\u76d8\u63a7\u5236\u7cfb\u7edf\u7684\u6280\u672f\u9700\u6c42<br \/>\n\u667a\u6167\u57ce\u5e02\u6c99\u76d8\u7684\u63a7\u5236\u7cfb\u7edf\u9700\u6c42\u4e0e\u666e\u901a\u5de5\u4e1a\u6c99\u76d8\u6709\u663e\u8457\u5dee\u5f02&#xff1a;<\/p>\n<p>\u529f\u80fd\u6a21\u5757\u6280\u672f\u8981\u6c42\u5b9e\u73b0\u96be\u5ea6<br \/>\n\u591a\u8def\u5f84\u534f\u540c\u65f6\u5e8f\u6f14\u793a\u4ea4\u901a\u6d41\u3001\u6570\u636e\u6d41\u3001\u80fd\u6e90\u6d41\u3001\u5b89\u9632\u6d41\u7b49\u591a\u6761\u8def\u5f84\u6309\u57ce\u5e02\u8fd0\u884c\u903b\u8f91\u65f6\u5e8f\u6d41\u52a8\u9ad8<br \/>\n\u591a\u5de5\u51b5\u6a21\u5f0f\u5207\u6362\u65e5\u5e38\u8fd0\u8425\/\u9ad8\u5cf0\u7ba1\u7406\/\u5e94\u6025\u54cd\u5e94\/\u8282\u80fd\u6a21\u5f0f&#xff0c;\u4e00\u952e\u5207\u6362\u9ad8<br \/>\n\u5206\u533a\u72ec\u7acb\u63a7\u5236\u884c\u653f\u529e\u516c\u533a\u3001\u5546\u4e1a\u533a\u3001\u5c45\u4f4f\u533a\u3001\u5de5\u4e1a\u533a\u3001\u751f\u6001\u533a\u72ec\u7acb\u4eae\u706f\u5c55\u793a\u4e2d<br \/>\n\u6570\u5b57\u5b6a\u751f\u6570\u636e\u5bf9\u63a5\u652f\u6301Modbus RTU\/MQTT\u534f\u8bae&#xff0c;\u4e0e\u6570\u5b57\u5b6a\u751f\u5e73\u53f0\u53cc\u5411\u901a\u4fe1\u4e2d\u9ad8<br \/>\n\u865a\u5b9e\u53cc\u5411\u6620\u5c04\u7269\u7406\u6c99\u76d8\u72b6\u6001\u6620\u5c04\u81f3\u6570\u5b57\u5b6a\u751f\u5e73\u53f0&#xff0c;\u5e73\u53f0\u6307\u4ee4\u9a71\u52a8\u6c99\u76d8\u54cd\u5e94\u4e2d\u9ad8<br \/>\n\u591a\u8272\u8def\u5f84\u533a\u5206\u4e0d\u540c\u989c\u8272\u706f\u5e26\u533a\u5206\u6570\u636e\u6d41\u3001\u4ea4\u901a\u6d41\u3001\u80fd\u6e90\u6d41\u3001\u5b89\u9632\u6d41\u4e2d<br \/>\n\u7b51\u57ce\u4e16\u7eaa\u6a21\u578b\u7684\u5de5\u4e1a\u6c99\u76d8\u63a7\u5236\u7cfb\u7edf\u65b9\u6848&#xff0c;\u57fa\u4e8e\u4e0a\u8ff0\u9700\u6c42&#xff0c;\u91c7\u7528STM32&#043;Modbus RTU\u67b6\u6784&#xff0c;\u5df2\u5728\u591a\u5957\u6c99\u76d8\u9879\u76ee\u4e2d\u5b8c\u6210\u90e8\u7f72\u9a8c\u8bc1\u3002<\/p>\n<p>\u4e8c\u3001\u4e3a\u4ec0\u4e48\u667a\u6167\u57ce\u5e02\u6c99\u76d8\u5fc5\u987b\u7528STM32&#043;Modbus RTU\u65b9\u6848<br \/>\n\u667a\u6167\u57ce\u5e02\u6c99\u76d8\u7684\u63a7\u5236\u7cfb\u7edf\u6709\u51e0\u4e2a\u7279\u6b8a\u8981\u6c42&#xff1a;<\/p>\n<p>\u7b2c\u4e00&#xff0c;\u591a\u8def\u5f84\u534f\u540c\u65f6\u5e8f\u63a7\u5236\u7684\u590d\u6742\u5ea6\u9ad8\u3002 \u667a\u6167\u57ce\u5e02\u6c99\u76d8\u9700\u8981\u540c\u65f6\u5448\u73b0\u4ea4\u901a\u6d41\u3001\u6570\u636e\u6d41\u3001\u80fd\u6e90\u6d41\u3001\u5b89\u9632\u6d41\u7b49\u591a\u6761\u8def\u5f84\u7684\u534f\u540c\u8fd0\u884c&#xff0c;\u5404\u8def\u5f84\u4e4b\u95f4\u7684\u65f6\u5e8f\u903b\u8f91\u9700\u4e0e\u5b9e\u9645\u57ce\u5e02\u8fd0\u884c\u903b\u8f91\u5bf9\u5e94\u3002STM32\u7684\u4e2d\u65ad\u54cd\u5e94\u7cbe\u5ea6\u53ef\u8fbe1ms\u7ea7&#xff0c;\u914d\u5408\u72b6\u6001\u673a\u7f16\u7a0b\u53ef\u5b9e\u73b0\u590d\u6742\u7684\u591a\u8def\u5f84\u65f6\u5e8f\u8c03\u5ea6\u3002<\/p>\n<p>\u7b2c\u4e8c&#xff0c;\u591a\u5de5\u51b5\u6a21\u5f0f\u5207\u6362\u7075\u6d3b\u3002 \u667a\u6167\u57ce\u5e02\u6c99\u76d8\u9700\u8981\u652f\u6301\u201c\u65e5\u5e38\u8fd0\u8425\u201d\u201c\u9ad8\u5cf0\u7ba1\u7406\u201d\u201c\u5e94\u6025\u54cd\u5e94\u201d\u201c\u8282\u80fd\u6a21\u5f0f\u201d\u7b49\u591a\u79cd\u5de5\u51b5\u7684\u4e00\u952e\u5207\u6362\u3002STM32\u65b9\u6848\u901a\u8fc7\u5bc4\u5b58\u5668\u5728\u7ebf\u5207\u6362\u5de5\u51b5&#xff0c;\u65e0\u9700\u91cd\u7f16\u8bd1\u4ee3\u7801\u3002<\/p>\n<p>\u7b2c\u4e09&#xff0c;\u6570\u5b57\u5b6a\u751f\u6570\u636e\u5bf9\u63a5\u662f\u6838\u5fc3\u9700\u6c42\u3002 \u667a\u6167\u57ce\u5e02\u6c99\u76d8\u901a\u5e38\u9700\u8981\u4e0e\u6570\u5b57\u5b6a\u751f\u5e73\u53f0\u6216\u56ed\u533aIBMS\u5e73\u53f0\u5bf9\u63a5&#xff0c;\u5b9e\u73b0\u7269\u7406\u6c99\u76d8\u4e0e\u6570\u5b57\u5b6a\u751f\u4f53\u7684\u53cc\u5411\u540c\u6b65\u3002STM32\u65b9\u6848\u652f\u6301Modbus RTU\u534f\u8bae&#xff0c;\u53ef\u901a\u8fc7MQTT\u7b49\u534f\u8bae\u4e0e\u7b2c\u4e09\u65b9\u5e73\u53f0\u5bf9\u63a5\u3002<\/p>\n<p>STM32 vs PLC \u9009\u578b\u5bf9\u6bd4<br \/>\n\u5bf9\u6bd4\u9879PLC\u65b9\u6848STM32\u65b9\u6848<br \/>\n\u786c\u4ef6\u6210\u672c8000-15000\u5143800-1500\u5143<br \/>\n\u65f6\u5e8f\u63a7\u5236\u7cbe\u5ea610-20ms\u626b\u63cf\u5468\u671f1ms\u4e2d\u65ad\u54cd\u5e94<br \/>\n\u591a\u8def\u5f84\u534f\u540c\u63a7\u5236\u68af\u5f62\u56fe\u5b9e\u73b0\u56f0\u96beC\u8bed\u8a00\u72b6\u6001\u673a\u7075\u6d3b\u53ef\u63a7<br \/>\n\u591a\u6bb5\u706f\u5e26\u63a7\u5236\u9700\u4e13\u7528\u901a\u8baf\u6a21\u5757GPIO\u76f4\u63a5\u9a71\u52a8WS2812B<br \/>\n\u591a\u5de5\u51b5\u5207\u6362\u9700\u590d\u6742\u68af\u5f62\u56fe\u903b\u8f91\u5bc4\u5b58\u5668\u5728\u7ebf\u5207\u6362<br \/>\n\u6570\u5b57\u5b6a\u751f\u5bf9\u63a5\u9700\u989d\u5916\u7f51\u5173\u6a21\u5757\u4e32\u53e3\u76f4\u63a5\u8f93\u51faMQTT\/Modbus<br \/>\n\u540e\u671f\u4fee\u6539\u9700\u7f16\u7a0b\u8f6f\u4ef6\u6388\u6743\u5bc4\u5b58\u5668\u5728\u7ebf\u4fee\u6539<br \/>\n\u4e3a\u4ec0\u4e48\u7528RS485\/Modbus RTU&#xff1f;<br \/>\n\u667a\u6167\u57ce\u5e02\u6c99\u76d8\u6a21\u578b\u5185\u90e8\u8bbe\u5907\u5206\u5e03\u5e7f\u6cdb&#xff08;\u591a\u5206\u533a\u3001\u591a\u7cfb\u7edf&#xff09;&#xff0c;RS485\u603b\u7ebf\u652f\u6301\u591a\u70b9\u901a\u8baf&#xff08;\u7406\u8bba32\u4e2a\u8282\u70b9&#xff09;&#xff0c;\u4e00\u7ebf\u4e32\u63a5\u6240\u6709\u8bbe\u5907&#xff0c;\u5e03\u7ebf\u7b80\u6d01\u3002Modbus RTU\u662f\u5de5\u4e1a\u6807\u51c6\u534f\u8bae&#xff0c;\u652f\u6301\u63a5\u5165\u6570\u5b57\u5b6a\u751f\u5e73\u53f0\u3001IBMS\u5e73\u53f0\u7b49\u7b2c\u4e09\u65b9\u8bbe\u5907\u3002<\/p>\n<p>\u4e09\u3001\u7cfb\u7edf\u67b6\u6784\u8bbe\u8ba1<br \/>\n3.1 \u603b\u4f53\u67b6\u6784<br \/>\ntext<br \/>\n\u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510<br \/>\n\u2502              \u6570\u5b57\u5b6a\u751f\u5e73\u53f0\/IBMS&#xff08;\u6570\u636e\u53ef\u89c6\u5316 &#043; \u8fdc\u7a0b\u63a7\u5236&#xff09;          \u2502<br \/>\n\u2502        \u5b9e\u65f6\u6570\u636e\u5c55\u793a  \u667a\u80fd\u8c03\u5ea6  \u8fdc\u7a0b\u6307\u4ee4\u4e0b\u53d1                      \u2502<br \/>\n\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518<br \/>\n\u2502 MQTT\/Modbus RTU&#xff08;4G\/WiFi\u7f51\u5173&#xff09;<br \/>\n\u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u25bc\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510<br \/>\n\u2502              \u89e6\u6478\u5c4f\/\u4e2d\u63a7\u5e73\u677f&#xff08;Modbus RTU \u4e3b\u7ad9&#xff09;                  \u2502<br \/>\n\u2502        \u5de5\u51b5\u5207\u6362  \u901f\u5ea6\u8c03\u8282  \u5206\u533a\u63a7\u5236  \u6a21\u5f0f\u5207\u6362                    \u2502<br \/>\n\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518<br \/>\n\u2502 RS485&#xff08;9600,8N1,120\u03a9\u7ec8\u7aef\u7535\u963b&#xff09;<br \/>\n\u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u25bc\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510<br \/>\n\u2502              STM32F103RCT6 \u4ece\u7ad9&#xff08;\u8fb9\u7f18\u8ba1\u7b97\u7f51\u5173&#xff09;                 \u2502<br \/>\n\u2502        \u6307\u4ee4\u89e3\u6790 \u2192 \u72b6\u6001\u673a\u8c03\u5ea6 \u2192 GPIO\/\u5355\u603b\u7ebf\u8f93\u51fa                   \u2502<br \/>\n\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518<br \/>\n\u2502         \u2502         \u2502         \u2502<br \/>\n\u250c\u2500\u2500\u2500\u25bc\u2500\u2500\u2500\u2510 \u250c\u2500\u2500\u2500\u25bc\u2500\u2500\u2500\u2510 \u250c\u2500\u2500\u2500\u25bc\u2500\u2500\u2500\u2510 \u250c\u2500\u2500\u2500\u25bc\u2500\u2500\u2500\u2510<br \/>\n\u2502\u4ea4\u901a\u6d41  \u2502 \u2502\u6570\u636e\u6d41  \u2502 \u2502\u80fd\u6e90\u6d41  \u2502 \u2502\u5b89\u9632\u6d41  \u2502<br \/>\n\u2502\u706f\u5e26   \u2502 \u2502\u706f\u5e26   \u2502 \u2502\u706f\u5e26   \u2502 \u2502\u706f\u5e26   \u2502<br \/>\n\u2502(\u7eff\u8272) \u2502 \u2502(\u84dd\u8272) \u2502 \u2502(\u6a59\u8272) \u2502 \u2502(\u7ea2\u8272) \u2502<br \/>\n\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518 \u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518 \u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518 \u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518<br \/>\n3.2 \u786c\u4ef6\u9009\u578b<br \/>\n\u7ec4\u4ef6\u9009\u578b\u6570\u91cf\u9009\u578b\u7406\u7531<br \/>\n\u4e3b\u63a7MCUSTM32F103RCT61256KB Flash&#xff0c;51\u4e2aGPIO&#xff0c;3\u4e2aUSART<br \/>\n\u901a\u8baf\u63a5\u53e3MAX485ESA1RS485\u6536\u53d1\u5668&#xff0c;\u5de5\u4e1a\u7ea7\u6297\u5e72\u6270<br \/>\n\u706f\u5e26WS2812B&#xff08;60\u706f\/\u7c73&#xff09;\u4f9d\u8def\u5f84\u6570\u5355\u603b\u7ebf\u63a7\u5236&#xff0c;\u6bcf\u706f\u72ec\u7acb\u5bfb\u5740<br \/>\n\u6570\u636e\u7f51\u5173ESP8266\/4G\u6a21\u57571WiFi\/4G\u4e0a\u4e91&#xff0c;MQTT\u534f\u8bae<br \/>\n\u7535\u6e9024V\u21925V\u9694\u79bb\u6a21\u57571\u9694\u79bb\u4f9b\u7535<br \/>\n\u4e2d\u63a7\u5c4f7\u5bf8\u4e32\u53e3\u5c4f1\u652f\u6301Modbus RTU\u4e3b\u7ad9\u534f\u8bae<br \/>\n3.3 GPIO\u5206\u914d\u8868&#xff08;\u4ee5\u5178\u578b\u667a\u6167\u57ce\u5e02\u6c99\u76d8\u4e3a\u4f8b&#xff09;<br \/>\n\u7aef\u53e3\u529f\u80fd\u4fe1\u53f7\u7c7b\u578b\u8bf4\u660e<br \/>\nPA9\/PA10USART1\u901a\u8baf\u4e0e\u4e2d\u63a7\u5c4fRS485\u901a\u8baf<br \/>\nPA2\/PA3USART2\u901a\u8baf\u9884\u7559\u4e0e4G\/WiFi\u7f51\u5173\u901a\u8baf<br \/>\nPB0\u4ea4\u901a\u6d41\u8def\u5f84\u706f\u5e26\u5355\u603b\u7ebf\u8f93\u51faWS2812B&#xff08;\u7eff\u8272&#xff09;<br \/>\nPB1\u6570\u636e\u6d41\u8def\u5f84\u706f\u5e26\u5355\u603b\u7ebf\u8f93\u51faWS2812B&#xff08;\u84dd\u8272&#xff09;<br \/>\nPB2\u80fd\u6e90\u6d41\u8def\u5f84\u706f\u5e26\u5355\u603b\u7ebf\u8f93\u51faWS2812B&#xff08;\u6a59\u8272&#xff09;<br \/>\nPB3\u5b89\u9632\u6d41\u8def\u5f84\u706f\u5e26\u5355\u603b\u7ebf\u8f93\u51faWS2812B&#xff08;\u7ea2\u8272&#xff09;<br \/>\nPB4\u884c\u653f\u529e\u516c\u533a\u706f\u5e26\u5355\u603b\u7ebf\u8f93\u51faWS2812B&#xff08;\u5206\u533a\u6807\u8bc6&#xff09;<br \/>\nPB5\u5546\u4e1a\u533a\u706f\u5e26\u5355\u603b\u7ebf\u8f93\u51faWS2812B&#xff08;\u5206\u533a\u6807\u8bc6&#xff09;<br \/>\nPB6\u5c45\u4f4f\u533a\u706f\u5e26\u5355\u603b\u7ebf\u8f93\u51faWS2812B&#xff08;\u5206\u533a\u6807\u8bc6&#xff09;<br \/>\nPB7\u751f\u6001\u533a\u706f\u5e26\u5355\u603b\u7ebf\u8f93\u51faWS2812B&#xff08;\u5206\u533a\u6807\u8bc6&#xff09;<br \/>\n\u56db\u3001Modbus\u5bc4\u5b58\u5668\u6620\u5c04\u8bbe\u8ba1<br \/>\n\u4ee5\u4e0b\u4e3a\u667a\u6167\u57ce\u5e02\u6c99\u76d8\u63a7\u5236\u7cfb\u7edf\u7684\u5bc4\u5b58\u5668\u5b9a\u4e49&#xff08;\u517132\u4e2a\u4fdd\u6301\u5bc4\u5b58\u5668&#xff09;&#xff1a;<\/p>\n<p>4.1 \u7cfb\u7edf\u63a7\u5236\u5bc4\u5b58\u5668&#xff08;40001-40008&#xff09;<br \/>\n\u5bc4\u5b58\u5668\u5730\u5740\u504f\u79fb\u5730\u5740\u529f\u80fd\u6570\u636e\u7c7b\u578b\u8bfb\u5199\u53d6\u503c\u8303\u56f4\u8bf4\u660e<br \/>\n400010&#215;0000\u7cfb\u7edf\u542f\u505cbitR\/W0\/10&#061;\u505c\u6b62&#xff0c;1&#061;\u542f\u52a8<br \/>\n400020&#215;0001\u8fd0\u884c\u6a21\u5f0fuint16R\/W1-41&#061;\u65e5\u5e38\u8fd0\u8425&#xff0c;2&#061;\u9ad8\u5cf0\u7ba1\u7406&#xff0c;3&#061;\u5e94\u6025\u54cd\u5e94&#xff0c;4&#061;\u8282\u80fd\u6a21\u5f0f<br \/>\n400030&#215;0002\u5f53\u524d\u573a\u666fuint16R0-40&#061;\u5f85\u673a&#xff0c;1&#061;\u57ce\u5e02\u5168\u666f&#xff0c;2&#061;\u667a\u6167\u56ed\u533a&#xff0c;3&#061;\u6570\u5b57\u5b6a\u751f&#xff0c;4&#061;\u5168\u573a\u666f<br \/>\n400040&#215;0003\u901f\u5ea6\u6863\u4f4duint16R\/W1-5\u6863\u4f4d\u8d8a\u9ad8&#xff0c;\u6f14\u793a\u8282\u594f\u8d8a\u5feb<br \/>\n400050&#215;0004\u5faa\u73af\u6a21\u5f0fuint16R\/W0\/10&#061;\u5355\u6b21&#xff0c;1&#061;\u65e0\u9650\u5faa\u73af<br \/>\n400060&#215;0005\u7cfb\u7edf\u72b6\u6001uint16R0-30&#061;\u505c\u6b62&#xff0c;1&#061;\u8fd0\u884c\u4e2d&#xff0c;2&#061;\u544a\u8b66&#xff0c;3&#061;\u6545\u969c<br \/>\n400070&#215;0006\u6570\u5b57\u5b6a\u751f\u5bf9\u63a5\u5f00\u5173bitR\/W0\/10&#061;\u5173\u95ed&#xff0c;1&#061;\u5f00\u542f<br \/>\n400080&#215;0007\u56fa\u4ef6\u7248\u672cuint16R\u2014\u53ea\u8bfb<br \/>\n4.2 \u8def\u5f84\u63a7\u5236\u5bc4\u5b58\u5668&#xff08;40009-40016&#xff09;<br \/>\n\u5bc4\u5b58\u5668\u5730\u5740\u504f\u79fb\u5730\u5740\u529f\u80fd\u6570\u636e\u7c7b\u578b\u8bfb\u5199\u8bf4\u660e<br \/>\n400090&#215;0008\u4ea4\u901a\u6d41\u706f\u5e26bitR\/W1&#061;\u70b9\u4eae&#xff08;\u7eff\u8272&#xff09;<br \/>\n400100&#215;0009\u6570\u636e\u6d41\u706f\u5e26bitR\/W1&#061;\u70b9\u4eae&#xff08;\u84dd\u8272&#xff09;<br \/>\n400110x000A\u80fd\u6e90\u6d41\u706f\u5e26bitR\/W1&#061;\u70b9\u4eae&#xff08;\u6a59\u8272&#xff09;<br \/>\n400120x000B\u5b89\u9632\u6d41\u706f\u5e26bitR\/W1&#061;\u70b9\u4eae&#xff08;\u7ea2\u8272&#xff09;<br \/>\n400130x000C\u884c\u653f\u529e\u516c\u533a\u706f\u5e26bitR\/W1&#061;\u70b9\u4eae<br \/>\n400140x000D\u5546\u4e1a\u533a\u706f\u5e26bitR\/W1&#061;\u70b9\u4eae<br \/>\n400150x000E\u5c45\u4f4f\u533a\u706f\u5e26bitR\/W1&#061;\u70b9\u4eae<br \/>\n400160x000F\u751f\u6001\u533a\u706f\u5e26bitR\/W1&#061;\u70b9\u4eae<br \/>\n4.3 \u53c2\u6570\u5bc4\u5b58\u5668&#xff08;40017-40032&#xff09;<br \/>\n\u5bc4\u5b58\u5668\u5730\u5740\u504f\u79fb\u5730\u5740\u529f\u80fd\u6570\u636e\u7c7b\u578b\u8bfb\u5199\u8bf4\u660e<br \/>\n400170&#215;0010\u8def\u5f84\u6d41\u901fuint16R\/W1-100&#xff0c;\u706f\u5e26\u6d41\u52a8\u901f\u5ea6<br \/>\n400180&#215;0011\u4ea4\u901a\u6d41\u91cf\u6a21\u62dfuint16R0-100&#xff0c;\u6a21\u62df\u5b9e\u65f6\u4ea4\u901a\u6d41\u91cf<br \/>\n400190&#215;0012\u6570\u636e\u541e\u5410\u91cf\u6a21\u62dfuint16R0-100&#xff0c;\u6a21\u62df\u5b9e\u65f6\u6570\u636e\u6d41\u91cf<br \/>\n400200&#215;0013\u80fd\u8017\u6307\u6570\u6a21\u62dfuint16R0-100&#xff0c;\u6a21\u62df\u5b9e\u65f6\u80fd\u8017\u6c34\u5e73<br \/>\n400210&#215;0014\u5b89\u9632\u7b49\u7ea7\u6a21\u62dfuint16R0-100&#xff0c;\u6a21\u62df\u5b9e\u65f6\u5b89\u9632\u72b6\u6001<br \/>\n400220&#215;0015\u4eba\u6d41\u5bc6\u5ea6\u6a21\u62dfuint16R0-100&#xff0c;\u6a21\u62df\u5b9e\u65f6\u4eba\u6d41\u5bc6\u5ea6<br \/>\n40023-400320&#215;0016-0x001F\u4fdd\u7559\u5bc4\u5b58\u5668\u2014\u2014\u9884\u7559\u6269\u5c55<br \/>\n\u4e94\u3001\u6838\u5fc3\u4ee3\u7801\u5b9e\u73b0<br \/>\n5.1 Modbus\u4ece\u7ad9\u521d\u59cb\u5316\u4e0e\u591a\u8def\u5f84\u63a7\u5236<br \/>\ncpp<br \/>\n#include \u201cModbusRTU.h\u201d<br \/>\n#include \u201cAdafruit_NeoPixel.h\u201d<\/p>\n<p>#define SLAVE_ID 1<br \/>\n#define BAUD_RATE 9600<\/p>\n<p>\/\/ \u706f\u5e26GPIO\u5b9a\u4e49&#xff08;WS2812B&#xff09;<br \/>\n#define LED_TRAFFIC     PB0   \/\/ \u4ea4\u901a\u6d41\u706f\u5e26&#xff08;\u7eff\u8272&#xff09;<br \/>\n#define LED_DATA        PB1   \/\/ \u6570\u636e\u6d41\u706f\u5e26&#xff08;\u84dd\u8272&#xff09;<br \/>\n#define LED_ENERGY      PB2   \/\/ \u80fd\u6e90\u6d41\u706f\u5e26&#xff08;\u6a59\u8272&#xff09;<br \/>\n#define LED_SECURITY    PB3   \/\/ \u5b89\u9632\u6d41\u706f\u5e26&#xff08;\u7ea2\u8272&#xff09;<br \/>\n#define LED_ADMIN       PB4   \/\/ \u884c\u653f\u529e\u516c\u533a\u706f\u5e26<br \/>\n#define LED_COMMERCIAL  PB5   \/\/ \u5546\u4e1a\u533a\u706f\u5e26<br \/>\n#define LED_RESIDENTIAL PB6   \/\/ \u5c45\u4f4f\u533a\u706f\u5e26<br \/>\n#define LED_ECO         PB7   \/\/ \u751f\u6001\u533a\u706f\u5e26<\/p>\n<p>#define PATH_NUM 4      \/\/ 4\u6761\u8def\u5f84&#xff1a;\u4ea4\u901a\/\u6570\u636e\/\u80fd\u6e90\/\u5b89\u9632<br \/>\n#define AREA_NUM 4      \/\/ 4\u4e2a\u5206\u533a&#xff1a;\u884c\u653f\/\u5546\u4e1a\/\u5c45\u4f4f\/\u751f\u6001<\/p>\n<p>ModbusRTU mb;<br \/>\nuint16_t holdingRegs[32] &#061; {0};<\/p>\n<p>\/\/ \u5404\u5de5\u51b5\u6f14\u793a\u65f6\u957f&#xff08;ms&#xff09;<br \/>\nuint16_t modeDurations[4] &#061; {8000, 6000, 5000, 7000};<br \/>\nuint16_t baseDurations[4] &#061; {8000, 6000, 5000, 7000};<\/p>\n<p>\/\/ \u72b6\u6001\u673a\u53d8\u91cf<br \/>\nenum SystemState { STOPPED, RUNNING, PAUSED, FAULT };<br \/>\nSystemState currentState &#061; STOPPED;<br \/>\nvolatile uint8_t currentMode &#061; 0;<br \/>\nvolatile unsigned long modeStartTime &#061; 0;<br \/>\nvolatile uint16_t modeElapsedMs &#061; 0;<\/p>\n<p>\/\/ \u706f\u5e26\u5bf9\u8c61&#xff08;8\u8def&#xff09;<br \/>\nAdafruit_NeoPixel strips[8] &#061; {<br \/>\nAdafruit_NeoPixel(LED_COUNT, LED_TRAFFIC, NEO_GRB &#043; NEO_KHZ800),<br \/>\nAdafruit_NeoPixel(LED_COUNT, LED_DATA, NEO_GRB &#043; NEO_KHZ800),<br \/>\nAdafruit_NeoPixel(LED_COUNT, LED_ENERGY, NEO_GRB &#043; NEO_KHZ800),<br \/>\nAdafruit_NeoPixel(LED_COUNT, LED_SECURITY, NEO_GRB &#043; NEO_KHZ800),<br \/>\nAdafruit_NeoPixel(LED_COUNT, LED_ADMIN, NEO_GRB &#043; NEO_KHZ800),<br \/>\nAdafruit_NeoPixel(LED_COUNT, LED_COMMERCIAL, NEO_GRB &#043; NEO_KHZ800),<br \/>\nAdafruit_NeoPixel(LED_COUNT, LED_RESIDENTIAL, NEO_GRB &#043; NEO_KHZ800),<br \/>\nAdafruit_NeoPixel(LED_COUNT, LED_ECO, NEO_GRB &#043; NEO_KHZ800)<br \/>\n};<\/p>\n<p>void setup() {<br \/>\nSystemClock_Config();  \/\/ 72MHz<br \/>\nSerial1.begin(BAUD_RATE);<br \/>\nmb.begin(&amp;Serial1);<br \/>\nmb.slave(SLAVE_ID);<br \/>\nmb.addHreg(0, holdingRegs, 32);<\/p>\n<p>mb.onGet(handleRead);<br \/>\nmb.onSet(handleWrite);<\/p>\n<p>for (int i &#061; 0; i &lt; 8; i&#043;&#043;) {<br \/>\n    strips[i].begin();<br \/>\n    strips[i].show();<br \/>\n}<\/p>\n<p>Timer1.initialize(1000);<br \/>\nTimer1.attachInterrupt(stateMachineTick);<\/p>\n<p>}<\/p>\n<p>void loop() {<br \/>\nmb.task();  \/\/ Modbus\u534f\u8bae\u5904\u7406<br \/>\n}<br \/>\n5.2 \u591a\u8def\u5f84\u534f\u540c\u65f6\u5e8f\u63a7\u5236<br \/>\ncpp<br \/>\nvoid stateMachineTick() {<br \/>\nif (currentState !&#061; RUNNING) return;<\/p>\n<p>modeElapsedMs&#043;&#043;;<\/p>\n<p>\/\/ \u9636\u6bb5\u5207\u6362\u903b\u8f91&#xff08;\u591a\u8def\u5f84\u534f\u540c\u6f14\u793a&#xff09;<br \/>\nif (modeElapsedMs &gt;&#061; modeDurations[currentMode]) {<br \/>\n    modeElapsedMs &#061; 0;<br \/>\n    currentMode&#043;&#043;;<br \/>\n    if (currentMode &gt;&#061; 4) {<br \/>\n        if (holdingRegs[4] &#061;&#061; 1) currentMode &#061; 0;<br \/>\n        else { currentState &#061; STOPPED; return; }<br \/>\n    }<br \/>\n    switchMode(currentMode);<br \/>\n    holdingRegs[2] &#061; currentMode &#043; 1;<br \/>\n}<\/p>\n<p>\/\/ \u5b9e\u65f6\u6a21\u62df\u6570\u636e\u66f4\u65b0&#xff08;\u4f9b\u6570\u5b57\u5b6a\u751f\u5e73\u53f0\u8bfb\u53d6&#xff09;<br \/>\nupdateSimulationData();<\/p>\n<p>}<\/p>\n<p>\/\/ \u5de5\u51b5\u5207\u6362&#xff08;\u591a\u8def\u5f84\u534f\u540c\u6f14\u793a&#xff09;<br \/>\nvoid switchMode(uint8_t mode) {<br \/>\nallLightsOff();<\/p>\n<p>\/\/ \u5404\u5de5\u51b5\u989c\u8272\u4e0e\u8def\u5f84\u7ec4\u5408\u5b9a\u4e49<br \/>\nuint32_t pathColors[4] &#061; {<br \/>\n    0x00FF00,  \/\/ \u4ea4\u901a\u6d41&#xff08;\u7eff\u8272&#xff09;<br \/>\n    0x0066FF,  \/\/ \u6570\u636e\u6d41&#xff08;\u84dd\u8272&#xff09;<br \/>\n    0xFF6600,  \/\/ \u80fd\u6e90\u6d41&#xff08;\u6a59\u8272&#xff09;<br \/>\n    0xFF0000   \/\/ \u5b89\u9632\u6d41&#xff08;\u7ea2\u8272&#xff09;<br \/>\n};<\/p>\n<p>switch(mode) {<br \/>\n    case 0:  \/\/ \u65e5\u5e38\u8fd0\u8425\u6a21\u5f0f&#xff1a;\u56db\u8def\u5f84\u534f\u540c\u8fd0\u884c<br \/>\n        for (int i &#061; 0; i &lt; 4; i&#043;&#043;) {<br \/>\n            flowLight(strips[i], pathColors[i], 1500);<br \/>\n        }<br \/>\n        \/\/ \u5206\u533a\u706f\u5e26\u5168\u90e8\u70b9\u4eae&#xff08;\u4f4e\u4eae\u5ea6&#xff09;<br \/>\n        for (int i &#061; 4; i &lt; 8; i&#043;&#043;) {<br \/>\n            dimLight(strips[i], 0xFFFFFF, 50);<br \/>\n        }<br \/>\n        break;<\/p>\n<p>    case 1:  \/\/ \u9ad8\u5cf0\u7ba1\u7406\u6a21\u5f0f&#xff1a;\u4ea4\u901a\u6d41&#043;\u6570\u636e\u6d41\u5f3a\u5316<br \/>\n        flowLight(strips[0], 0x00FF00, 800);   \/\/ \u4ea4\u901a\u6d41\u52a0\u901f<br \/>\n        flowLight(strips[1], 0x0066FF, 800);   \/\/ \u6570\u636e\u6d41\u52a0\u901f<br \/>\n        \/\/ \u5546\u4e1a\u533a\u3001\u5c45\u4f4f\u533a\u9ad8\u4eae<br \/>\n        flowLight(strips[5], 0xFFFFFF, 500);<br \/>\n        flowLight(strips[6], 0xFFFFFF, 500);<br \/>\n        break;<\/p>\n<p>    case 2:  \/\/ \u5e94\u6025\u54cd\u5e94\u6a21\u5f0f&#xff1a;\u5b89\u9632\u6d41\u4e3b\u5bfc<br \/>\n        flowLight(strips[3], 0xFF0000, 300);   \/\/ \u5b89\u9632\u6d41\u5feb\u901f\u95ea\u70c1<br \/>\n        \/\/ \u6240\u6709\u5206\u533a\u7ea2\u8272\u6307\u793a<br \/>\n        for (int i &#061; 4; i &lt; 8; i&#043;&#043;) {<br \/>\n            for (int p &#061; 0; p &lt; strips[i].numPixels(); p&#043;&#043;) {<br \/>\n                strips[i].setPixelColor(p, 0xFF0000);<br \/>\n            }<br \/>\n            strips[i].show();<br \/>\n        }<br \/>\n        break;<\/p>\n<p>    case 3:  \/\/ \u8282\u80fd\u6a21\u5f0f&#xff1a;\u80fd\u6e90\u6d41\u4f18\u5316<br \/>\n        flowLight(strips[2], 0xFF6600, 2000);  \/\/ \u80fd\u6e90\u6d41\u7f13\u6162\u6d41\u52a8<br \/>\n        \/\/ \u4ec5\u884c\u653f\u529e\u516c\u533a\u4fdd\u6301\u4f4e\u4eae\u5ea6<br \/>\n        dimLight(strips[4], 0xFFFFFF, 30);<br \/>\n        break;<br \/>\n}<\/p>\n<p>}<\/p>\n<p>void flowLight(Adafruit_NeoPixel &amp;strip, uint32_t color, int duration) {<br \/>\nint len &#061; strip.numPixels();<br \/>\nint steps &#061; 20;<br \/>\nfor (int step &#061; 0; step &lt; steps; step&#043;&#043;) {<br \/>\nstrip.clear();<br \/>\nint pos &#061; (len * step) \/ steps;<br \/>\nstrip.setPixelColor(pos, color);<br \/>\nif (pos &gt; 0) strip.setPixelColor(pos &#8211; 1, color);<br \/>\nstrip.show();<br \/>\ndelay(duration \/ steps);<br \/>\n}<br \/>\n}<\/p>\n<p>void dimLight(Adafruit_NeoPixel &amp;strip, uint32_t color, uint8_t brightness) {<br \/>\nuint8_t r &#061; (color &gt;&gt; 16) &amp; 0xFF;<br \/>\nuint8_t g &#061; (color &gt;&gt; 8) &amp; 0xFF;<br \/>\nuint8_t b &#061; color &amp; 0xFF;<br \/>\nr &#061; (r * brightness) \/ 255;<br \/>\ng &#061; (g * brightness) \/ 255;<br \/>\nb &#061; (b * brightness) \/ 255;<br \/>\nuint32_t dimmed &#061; (r &lt;&lt; 16) | (g &lt;&lt; 8) | b;<br \/>\nfor (int p &#061; 0; p &lt; strip.numPixels(); p&#043;&#043;) {<br \/>\nstrip.setPixelColor(p, dimmed);<br \/>\n}<br \/>\nstrip.show();<br \/>\n}<\/p>\n<p>void allLightsOff() {<br \/>\nfor (int i &#061; 0; i &lt; 8; i&#043;&#043;) {<br \/>\nstrips[i].clear();<br \/>\nstrips[i].show();<br \/>\n}<br \/>\n}<\/p>\n<p>\/\/ \u6a21\u62df\u6570\u636e\u66f4\u65b0&#xff08;\u4f9b\u6570\u5b57\u5b6a\u751f\u5e73\u53f0\u8bfb\u53d6&#xff09;<br \/>\nvoid updateSimulationData() {<br \/>\nstatic int cycle &#061; 0;<br \/>\ncycle &#061; (cycle &#043; 1) % 100;<\/p>\n<p>\/\/ \u6a21\u62df\u4ea4\u901a\u6d41\u91cf&#xff08;\u6839\u636e\u5de5\u51b5\u53d8\u5316&#xff09;<br \/>\nuint16_t trafficBase &#061; (holdingRegs[1] &#061;&#061; 2) ? 80 : 40;<br \/>\nholdingRegs[17] &#061; trafficBase &#043; (cycle % 30);<\/p>\n<p>\/\/ \u6a21\u62df\u6570\u636e\u541e\u5410\u91cf<br \/>\nholdingRegs[18] &#061; 50 &#043; (cycle % 40);<\/p>\n<p>\/\/ \u6a21\u62df\u80fd\u8017\u6307\u6570&#xff08;\u8282\u80fd\u6a21\u5f0f\u4e0b\u964d&#xff09;<br \/>\nif (holdingRegs[1] &#061;&#061; 4) {<br \/>\n    holdingRegs[19] &#061; 20 &#043; (cycle % 15);<br \/>\n} else {<br \/>\n    holdingRegs[19] &#061; 50 &#043; (cycle % 30);<br \/>\n}<\/p>\n<p>\/\/ \u6a21\u62df\u5b89\u9632\u7b49\u7ea7&#xff08;\u5e94\u6025\u6a21\u5f0f\u5347\u9ad8&#xff09;<br \/>\nif (holdingRegs[1] &#061;&#061; 3) {<br \/>\n    holdingRegs[20] &#061; 80 &#043; (cycle % 20);<br \/>\n} else {<br \/>\n    holdingRegs[20] &#061; 20 &#043; (cycle % 20);<br \/>\n}<\/p>\n<p>\/\/ \u6a21\u62df\u4eba\u6d41\u5bc6\u5ea6<br \/>\nholdingRegs[21] &#061; 30 &#043; (cycle % 50);<\/p>\n<p>}<br \/>\n5.3 \u6570\u5b57\u5b6a\u751f\u6570\u636e\u5bf9\u63a5<br \/>\ncpp<br \/>\n\/\/ \u6570\u5b57\u5b6a\u751f\u6570\u636e\u4e0a\u62a5&#xff08;\u901a\u8fc7\u4e32\u53e3\u4ee5JSON\u683c\u5f0f\u8f93\u51fa&#xff09;<br \/>\nvoid reportToDigitalTwin() {<br \/>\nif (holdingRegs[6] !&#061; 1) return;  \/\/ \u6570\u5b57\u5b6a\u751f\u5bf9\u63a5\u5f00\u5173\u5173\u95ed<\/p>\n<p>String json &#061; &#034;{&#034;;<br \/>\njson &#043;&#061; &#034;\\\\&#034;mode\\\\&#034;:&#034; &#043; String(holdingRegs[1]) &#043; &#034;,&#034;;<br \/>\njson &#043;&#061; &#034;\\\\&#034;traffic\\\\&#034;:&#034; &#043; String(holdingRegs[17]) &#043; &#034;,&#034;;<br \/>\njson &#043;&#061; &#034;\\\\&#034;data_flow\\\\&#034;:&#034; &#043; String(holdingRegs[18]) &#043; &#034;,&#034;;<br \/>\njson &#043;&#061; &#034;\\\\&#034;energy\\\\&#034;:&#034; &#043; String(holdingRegs[19]) &#043; &#034;,&#034;;<br \/>\njson &#043;&#061; &#034;\\\\&#034;security\\\\&#034;:&#034; &#043; String(holdingRegs[20]) &#043; &#034;,&#034;;<br \/>\njson &#043;&#061; &#034;\\\\&#034;crowd\\\\&#034;:&#034; &#043; String(holdingRegs[21]);<br \/>\njson &#043;&#061; &#034;}&#034;;<\/p>\n<p>Serial2.println(json);  \/\/ \u901a\u8fc7USART2\u53d1\u9001\u81f3\u7f51\u5173<\/p>\n<p>}<\/p>\n<p>\/\/ \u5bc4\u5b58\u5668\u8bfb\u5199\u56de\u8c03<br \/>\nuint16_t handleRead(uint16_t offset, uint8_t index) {<br \/>\n\/\/ \u6570\u5b57\u5b6a\u751f\u5e73\u53f0\u8bfb\u53d6\u65f6&#xff0c;\u89e6\u53d1\u6570\u636e\u4e0a\u62a5<br \/>\nif (offset &gt;&#061; 17 &amp;&amp; offset &lt;&#061; 21 &amp;&amp; holdingRegs[6] &#061;&#061; 1) {<br \/>\nreportToDigitalTwin();<br \/>\n}<br \/>\nreturn holdingRegs[offset];<br \/>\n}<\/p>\n<p>void handleWrite(uint16_t offset, uint8_t index, uint16_t value) {<br \/>\nswitch(offset) {<br \/>\ncase 0:  \/\/ \u7cfb\u7edf\u542f\u505c<br \/>\nif (value &#061;&#061; 1 &amp;&amp; currentState !&#061; RUNNING) {<br \/>\ncurrentState &#061; RUNNING;<br \/>\ncurrentMode &#061; 0;<br \/>\nmodeElapsedMs &#061; 0;<br \/>\nswitchMode(0);<br \/>\nholdingRegs[5] &#061; 1;<br \/>\n} else if (value &#061;&#061; 0) {<br \/>\ncurrentState &#061; STOPPED;<br \/>\nallLightsOff();<br \/>\nholdingRegs[2] &#061; 0;<br \/>\nholdingRegs[5] &#061; 0;<br \/>\n}<br \/>\nbreak;<\/p>\n<p>    case 1:  \/\/ \u8fd0\u884c\u6a21\u5f0f\u5207\u6362<br \/>\n        holdingRegs[1] &#061; value;<br \/>\n        if (holdingRegs[0] &#061;&#061; 1) {<br \/>\n            currentMode &#061; value &#8211; 1;<br \/>\n            modeElapsedMs &#061; 0;<br \/>\n            switchMode(currentMode);<br \/>\n        }<br \/>\n        break;<\/p>\n<p>    case 3:  \/\/ \u901f\u5ea6\u6863\u4f4d<br \/>\n        if (value &gt;&#061; 1 &amp;&amp; value &lt;&#061; 5) {<br \/>\n            for (int i &#061; 0; i &lt; 4; i&#043;&#043;) {<br \/>\n                modeDurations[i] &#061; baseDurations[i] \/ value;<br \/>\n            }<br \/>\n        }<br \/>\n        break;<\/p>\n<p>    case 6:  \/\/ \u6570\u5b57\u5b6a\u751f\u5bf9\u63a5\u5f00\u5173<br \/>\n        holdingRegs[6] &#061; value;<br \/>\n        if (value &#061;&#061; 1) {<br \/>\n            \/\/ \u9996\u6b21\u5f00\u542f\u65f6\u4e0a\u62a5\u5f53\u524d\u72b6\u6001<br \/>\n            reportToDigitalTwin();<br \/>\n        }<br \/>\n        break;<\/p>\n<p>    case 8: case 9: case 10: case 11:  \/\/ \u8def\u5f84\u72ec\u7acb\u63a7\u5236<br \/>\n        int idx &#061; offset &#8211; 8;<br \/>\n        if (value &#061;&#061; 1) {<br \/>\n            flowLight(strips[idx], pathColors[idx], 1000);<br \/>\n        } else {<br \/>\n            strips[idx].clear();<br \/>\n            strips[idx].show();<br \/>\n        }<br \/>\n        break;<\/p>\n<p>    default:<br \/>\n        holdingRegs[offset] &#061; value;<br \/>\n        break;<br \/>\n}<br \/>\nholdingRegs[offset] &#061; value;<\/p>\n<p>}<br \/>\n\u516d\u3001\u5173\u952e\u6280\u672f\u7ec6\u8282<br \/>\n6.1 \u591a\u8def\u5f84\u534f\u540c\u65f6\u5e8f\u63a7\u5236<br \/>\n\u667a\u6167\u57ce\u5e02\u6c99\u76d8\u7684\u6838\u5fc3\u4ef7\u503c\u5728\u4e8e\u201c\u57ce\u5e02\u8fd0\u884c\u903b\u8f91\u8bb2\u5f97\u6e05\u695a\u201d\u2014\u2014\u4ea4\u901a\u600e\u4e48\u8d70\u3001\u6570\u636e\u600e\u4e48\u6d41\u3001\u80fd\u6e90\u600e\u4e48\u914d\u3001\u5b89\u9632\u600e\u4e48\u54cd\u5e94\u3002\u5c06\u56db\u6761\u8def\u5f84\u6620\u5c04\u5230\u4e0d\u540c\u989c\u8272\u7684\u706f\u5e26&#xff0c;\u901a\u8fc7\u72b6\u6001\u673a\u4f9d\u6b21\u6216\u534f\u540c\u89e6\u53d1&#xff0c;\u6a21\u62df\u57ce\u5e02\u5404\u7cfb\u7edf\u7684\u5b9e\u65f6\u8fd0\u884c\u72b6\u6001\u3002<\/p>\n<p>6.2 \u591a\u5de5\u51b5\u6a21\u5f0f\u5207\u6362\u8bbe\u8ba1<br \/>\n\u667a\u6167\u57ce\u5e02\u6c99\u76d8\u9700\u8981\u652f\u6301\u56db\u79cd\u5de5\u51b5\u6a21\u5f0f&#xff1a;<\/p>\n<p>\u6a21\u5f0f\u5bc4\u5b58\u5668\u503c\u529f\u80fd<br \/>\n\u65e5\u5e38\u8fd0\u84251\u56db\u8def\u5f84\u534f\u540c\u8fd0\u884c&#xff0c;\u5206\u533a\u706f\u5e26\u4f4e\u4eae\u5ea6<br \/>\n\u9ad8\u5cf0\u7ba1\u74062\u4ea4\u901a\u6d41&#043;\u6570\u636e\u6d41\u52a0\u901f&#xff0c;\u5546\u4e1a\u533a\/\u5c45\u4f4f\u533a\u9ad8\u4eae<br \/>\n\u5e94\u6025\u54cd\u5e943\u5b89\u9632\u6d41\u4e3b\u5bfc&#xff0c;\u6240\u6709\u5206\u533a\u7ea2\u8272\u6307\u793a<br \/>\n\u8282\u80fd\u6a21\u5f0f4\u80fd\u6e90\u6d41\u4f18\u5316&#xff0c;\u4ec5\u884c\u653f\u529e\u516c\u533a\u4f4e\u4eae\u5ea6<br \/>\n\u5de5\u51b5\u5207\u6362\u65f6\u9700\u540c\u6b65\u63a7\u5236\u8def\u5f84\u706f\u5e26\u548c\u5206\u533a\u706f\u5e26\u7684\u72b6\u6001\u3002<\/p>\n<p>6.3 \u6570\u5b57\u5b6a\u751f\u6570\u636e\u5bf9\u63a5<br \/>\n\u667a\u6167\u57ce\u5e02\u6c99\u76d8\u901a\u5e38\u9700\u8981\u4e0e\u6570\u5b57\u5b6a\u751f\u5e73\u53f0\u5bf9\u63a5&#xff0c;\u5b9e\u73b0\u201c\u7269\u7406\u6c99\u76d8\u2192\u865a\u62df\u5b6a\u751f\u4f53\u201d\u7684\u53cc\u5411\u540c\u6b65\u3002\u901a\u8fc7USART2\u4ee5JSON\u683c\u5f0f\u8f93\u51fa\u5b9e\u65f6\u6a21\u62df\u6570\u636e&#xff08;\u4ea4\u901a\u6d41\u91cf\u3001\u6570\u636e\u541e\u5410\u91cf\u3001\u80fd\u8017\u6307\u6570\u3001\u5b89\u9632\u7b49\u7ea7\u3001\u4eba\u6d41\u5bc6\u5ea6&#xff09;&#xff0c;\u7ecf4G\/WiFi\u7f51\u5173\u4e0a\u62a5\u81f3\u6570\u5b57\u5b6a\u751f\u5e73\u53f0\u3002\u5bc4\u5b58\u566840007&#xff08;\u6570\u5b57\u5b6a\u751f\u5bf9\u63a5\u5f00\u5173&#xff09;\u63a7\u5236\u662f\u5426\u4e0a\u62a5\u4e91\u7aef\u3002<\/p>\n<p>6.4 \u901a\u8baf\u5f02\u5e38\u5904\u7406<br \/>\n\u7b56\u7565\u5b9e\u73b0\u65b9\u5f0f\u9002\u7528\u573a\u666f<br \/>\n\u4fdd\u6301\u5f53\u524d\u72b6\u6001\u4e0d\u6539\u53d8\u8f93\u51fa&#xff0c;\u7b49\u5f85\u901a\u8baf\u6062\u590d\u5c55\u5385\u6f14\u793a<br \/>\n\u81ea\u52a8\u5207\u6362\u5b89\u5168\u6a21\u5f0f\u5207\u6362\u81f3\u505c\u6b62\u72b6\u6001\u5b89\u5168\u8981\u6c42\u8f83\u9ad8<br \/>\n\u72b6\u6001\u4e0a\u62a5\u5411\u4e0a\u4f4d\u673a\u53d1\u9001\u6545\u969c\u7801\u8fdc\u7a0b\u76d1\u63a7<br \/>\n\u4e03\u3001\u73b0\u573a\u8c03\u8bd5\u8981\u70b9<br \/>\n7.1 \u706f\u5e26\u5f02\u5e38\u6392\u67e5<br \/>\n\u73b0\u8c61\u6392\u67e5\u65b9\u5411\u89e3\u51b3\u65b9\u6848<br \/>\n\u706f\u5e26\u5168\u4eae\u767d\u5149\u6570\u636e\u7ebf\u865a\u63a5\u91cd\u65b0\u710a\u63a5&#xff0c;\u786e\u8ba4GPIO\u8f93\u51fa\u7535\u5e73<br \/>\n\u989c\u8272\u504f\u8272\u7535\u6e90\u7535\u538b\u4e0d\u8db3\u6d4b\u91cf\u672b\u7aef\u7535\u538b&#xff0c;&lt;4.8V\u9700\u589e\u52a0\u4f9b\u7535\u70b9<br \/>\n\u9996\u706f\u6b63\u5e38\u540e\u7eed\u4e0d\u4eaeMCU\u4e3b\u9891\u914d\u7f6e\u4e0d\u5f53\u786e\u8ba4\u7cfb\u7edf\u65f6\u949f72MHz&#xff0c;WS2812B\u65f6\u5e8f\u6b63\u786e<br \/>\n\u591a\u8def\u706f\u5e26\u989c\u8272\u4e32\u6270GPIO\/\u7535\u6e90\u786e\u8ba4\u5404\u706f\u5e26\u72ec\u7acbGPIO&#xff0c;\u7535\u6e90\u5206\u5f00\u8d70\u7ebf<br \/>\n7.2 \u6570\u5b57\u5b6a\u751f\u5bf9\u63a5\u5f02\u5e38\u6392\u67e5<br \/>\n\u73b0\u8c61\u6392\u67e5\u65b9\u5411\u89e3\u51b3\u65b9\u6848<br \/>\n\u6570\u636e\u4e0d\u4e0a\u62a5\u4e32\u53e3\u914d\u7f6e\u786e\u8ba4USART2\u6ce2\u7279\u7387\u4e0e\u7f51\u5173\u4e00\u81f4<br \/>\nJSON\u89e3\u6790\u5931\u8d25\u6570\u636e\u683c\u5f0f\u68c0\u67e5JSON\u683c\u5f0f\u662f\u5426\u6b63\u786e<br \/>\n\u4e0a\u62a5\u5ef6\u8fdf\u7f51\u5173\u901a\u4fe1\u68c0\u67e54G\/WiFi\u4fe1\u53f7\u5f3a\u5ea6<br \/>\n7.3 \u8c03\u8bd5\u5de5\u5177\u63a8\u8350<br \/>\n\u8c03\u8bd5\u9636\u6bb5\u63a8\u8350\u4f7f\u7528Modbus Poll&#xff08;Windows&#xff09;\u4f5c\u4e3a\u4e3b\u7ad9\u8c03\u8bd5\u5de5\u5177&#xff0c;\u914d\u5408USB\u8f6cRS485\u8f6c\u6362\u5668\u8fde\u63a5\u76ee\u6807\u677f\u3002\u6570\u5b57\u5b6a\u751f\u5bf9\u63a5\u8c03\u8bd5\u53ef\u4f7f\u7528\u4e32\u53e3\u8c03\u8bd5\u52a9\u624b\u67e5\u770bJSON\u6570\u636e\u8f93\u51fa\u683c\u5f0f\u3002<\/p>\n<p>\u516b\u3001\u5de5\u7a0b\u5b9e\u8df5\u80fd\u529b<br \/>\n\u57fa\u4e8eSTM32\u5e73\u53f0\u7684\u591a\u7cfb\u7edf\u534f\u540c\u63a7\u5236\u65b9\u6848&#xff0c;\u5df2\u5728\u7b51\u57ce\u4e16\u7eaa\u591a\u4e2a\u5de5\u4e1a\u6a21\u578b\u9879\u76ee\u4e2d\u5b8c\u6210\u90e8\u7f72\u9a8c\u8bc1&#xff1a;<\/p>\n<p>\u56fd\u673a\u96c6\u56e2\u67ec\u57d4\u5be8\u71c3\u673a\u8054\u5408\u5faa\u73af\u7535\u7ad9\u6c99\u76d8&#xff1a;6\u7ea7\u706f\u5149\u8054\u52a8\u300165\u7c73\u706f\u5e26&#xff0c;\u591a\u8282\u70b9\u65f6\u5e8f\u63a7\u5236<\/p>\n<p>\u534e\u5317\u7535\u529b\u5927\u5b66\u706b\u7535\u539f\u7406\u6559\u5b66\u6c99\u76d8&#xff1a;\u591a\u8def\u6e29\u5ea6\u3001\u538b\u529b\u4f20\u611f\u5668\u91c7\u96c6\u4e0e\u591a\u8bbe\u5907\u8054\u52a8\u63a7\u5236<\/p>\n<p>\u5de5\u4e1a\u6c99\u76d8\u6a21\u578b\u63a7\u5236\u7cfb\u7edf\u65b9\u6848&#xff1a;L1-L3\u4e09\u7ea7\u914d\u7f6e&#xff0c;\u8986\u76d6\u5de5\u4e1a\u6a21\u578b\u5168\u8c31\u7cfb<\/p>\n<p>\u4e0a\u8ff0\u9879\u76ee\u9a8c\u8bc1\u7684\u6838\u5fc3\u80fd\u529b&#xff08;\u591a\u8def\u706f\u5e26\u72ec\u7acb\u63a7\u5236\u3001\u591a\u8def\u5f84\u534f\u540c\u65f6\u5e8f\u3001\u591a\u5de5\u51b5\u6a21\u5f0f\u5207\u6362\u3001Modbus RTU\u6570\u636e\u5bf9\u63a5&#xff09;&#xff0c;\u4e0e\u667a\u6167\u57ce\u5e02\u6c99\u76d8\u7684\u63a7\u5236\u9700\u6c42\u4e00\u81f4\u3002<\/p>\n<p>\u7b51\u57ce\u4e16\u7eaa\u6a21\u578b\u5728\u667a\u6167\u57ce\u5e02\u6c99\u76d8\u65b9\u5411\u5177\u5907\u4ee5\u4e0b\u4e09\u9879\u6838\u5fc3\u4ea4\u4ed8\u80fd\u529b&#xff1a;<\/p>\n<li>\u57ce\u5e02\u89c4\u5212\u56fe\u7eb8\u7406\u89e3\u80fd\u529b<\/li>\n<p>\u6280\u672f\u56e2\u961f\u5177\u5907\u8bfb\u61c2\u57ce\u5e02\u89c4\u5212\u56fe\u7eb8\u548c\u56ed\u533a\u8bbe\u8ba1\u56fe\u7eb8\u7684\u80fd\u529b&#xff0c;\u80fd\u591f\u6309\u56fe\u7eb8\u7cbe\u786e\u8fd8\u539f\u5efa\u7b51\u5f62\u6001\u3001\u8def\u7f51\u7ed3\u6784\u3001\u529f\u80fd\u5206\u533a\u548c\u667a\u80fd\u5316\u7cfb\u7edf\u90e8\u7f72\u903b\u8f91\u3002\u5efa\u7b51\u5f62\u6001\u3001\u8def\u7f51\u7ed3\u6784\u3001\u529f\u80fd\u5206\u533a\u6309\u56fe\u65bd\u5de5\u3002<\/p>\n<li>\u591a\u8def\u5f84\u534f\u540c\u63a7\u5236\u80fd\u529b<\/li>\n<p>\u63a7\u5236\u7cfb\u7edf\u57fa\u4e8eSTM32\u5e73\u53f0\u81ea\u4e3b\u7814\u53d1&#xff0c;\u652f\u6301\u591a\u8def\u706f\u5e26\u65f6\u5e8f\u8054\u52a8\u3001\u591a\u5de5\u51b5\u5207\u6362&#xff08;\u65e5\u5e38\u8fd0\u8425\/\u9ad8\u5cf0\u7ba1\u7406\/\u5e94\u6025\u54cd\u5e94\/\u8282\u80fd\u6a21\u5f0f&#xff09;\u3001Modbus RTU\u6570\u636e\u5bf9\u63a5\u3002\u540e\u671f\u53ef\u6839\u636e\u5ba2\u6237\u9700\u6c42\u968f\u65f6\u4fee\u6539\u63a7\u5236\u903b\u8f91\u548c\u5de5\u51b5\u6a21\u5f0f&#xff0c;\u65e0\u9700\u4f9d\u8d56\u7b2c\u4e09\u65b9\u3002<\/p>\n<li>\u6570\u5b57\u5b6a\u751f\u6570\u636e\u5bf9\u63a5\u80fd\u529b<\/li>\n<p>\u63a7\u5236\u7cfb\u7edf\u9884\u7559Modbus RTU\u548cMQTT\u6570\u636e\u63a5\u53e3&#xff0c;\u652f\u6301\u4e0e\u6570\u5b57\u5b6a\u751f\u5e73\u53f0\u6216\u56ed\u533aIBMS\u5e73\u53f0\u5bf9\u63a5&#xff0c;\u5b9e\u73b0\u7269\u7406\u6c99\u76d8\u4e0e\u6570\u5b57\u5b6a\u751f\u4f53\u7684\u53cc\u5411\u540c\u6b65\u3002\u540e\u671f\u53ef\u6839\u636e\u9700\u6c42\u5bf9\u63a5\u7b2c\u4e09\u65b9\u5e73\u53f0\u3002<\/p>\n<p>\u4e5d\u3001\u603b\u7ed3<br \/>\n\u667a\u6167\u57ce\u5e02\u6c99\u76d8\u6a21\u578b\u591a\u7cfb\u7edf\u534f\u540c\u63a7\u5236\u7cfb\u7edf\u7684\u8bbe\u8ba1&#xff0c;\u6838\u5fc3\u5728\u4e8e\u4e09\u4e2a\u5c42\u9762&#xff1a;<\/p>\n<li>\n<p>\u591a\u8def\u5f84\u534f\u540c\u65f6\u5e8f\u63a7\u5236\u662f\u6838\u5fc3\u3002 \u667a\u6167\u57ce\u5e02\u6c99\u76d8\u7684\u4ef7\u503c\u5728\u4e8e\u201c\u57ce\u5e02\u8fd0\u884c\u903b\u8f91\u8bb2\u5f97\u6e05\u695a\u201d\u2014\u2014\u4ea4\u901a\u3001\u6570\u636e\u3001\u80fd\u6e90\u3001\u5b89\u9632\u56db\u6761\u8def\u5f84\u7684\u534f\u540c\u8fd0\u884c&#xff0c;\u6bcf\u4e00\u6bb5\u706f\u5149\u7684\u65f6\u5e8f\u6d41\u52a8\u90fd\u5728\u8bb2\u8ff0\u57ce\u5e02\u5404\u7cfb\u7edf\u7684\u5b9e\u65f6\u8fd0\u884c\u72b6\u6001\u3002\u91c7\u7528\u72b6\u6001\u673a\u7f16\u7a0b&#xff0c;\u5c06\u5404\u5de5\u51b5\u5b9a\u4e49\u4e3a\u72ec\u7acb\u72b6\u6001&#xff0c;\u5404\u72b6\u6001\u4e4b\u95f4\u901a\u8fc7\u65f6\u5e8f\u8ba1\u6570\u5668\u89e6\u53d1\u5207\u6362\u3002<\/p>\n<\/li>\n<li>\n<p>\u591a\u5de5\u51b5\u6a21\u5f0f\u5207\u6362\u662f\u4ef7\u503c\u5ef6\u4f38\u3002 \u65e5\u5e38\u8fd0\u8425\u3001\u9ad8\u5cf0\u7ba1\u7406\u3001\u5e94\u6025\u54cd\u5e94\u3001\u8282\u80fd\u6a21\u5f0f\u56db\u79cd\u5de5\u51b5\u8986\u76d6\u4e86\u57ce\u5e02\u5c55\u5385\u3001\u667a\u6167\u56ed\u533a\u7ba1\u63a7\u3001\u6570\u5b57\u5b6a\u751f\u5c55\u793a\u4e09\u79cd\u5178\u578b\u573a\u666f\u3002<\/p>\n<\/li>\n<li>\n<p>\u6570\u5b57\u5b6a\u751f\u6570\u636e\u5bf9\u63a5\u662f\u667a\u80fd\u5316\u4f53\u73b0\u3002 \u901a\u8fc7Modbus RTU\u5bc4\u5b58\u5668\u5b9e\u65f6\u4e0a\u62a5\u6a21\u62df\u6570\u636e&#xff0c;\u5b9e\u73b0\u7269\u7406\u6c99\u76d8\u4e0e\u6570\u5b57\u5b6a\u751f\u5e73\u53f0\u7684\u53cc\u5411\u540c\u6b65&#xff0c;\u8ba9\u667a\u6167\u57ce\u5e02\u6c99\u76d8\u4ece\u201c\u9759\u6001\u5c55\u793a\u201d\u5347\u7ea7\u4e3a\u201c\u52a8\u6001\u51b3\u7b56\u5de5\u5177\u201d\u3002<\/p>\n<\/li>\n<p>\u7b51\u57ce\u4e16\u7eaa\u6a21\u578b\u7684\u667a\u6167\u57ce\u5e02\u6c99\u76d8\u63a7\u5236\u7cfb\u7edf\u65b9\u6848&#xff0c;\u57fa\u4e8eSTM32\u5e73\u53f0\u81ea\u4e3b\u7814\u53d1&#xff0c;\u652f\u6301Modbus RTU\u534f\u8bae&#xff0c;\u5df2\u5728\u591a\u5957\u5de5\u4e1a\u6a21\u578b\u9879\u76ee\u4e2d\u5b8c\u6210\u90e8\u7f72\u9a8c\u8bc1\u3002\u63a7\u5236\u7cfb\u7edf\u652f\u6301\u591a\u8def\u706f\u5e26\u72ec\u7acb\u63a7\u5236\u3001\u591a\u8def\u5f84\u534f\u540c\u65f6\u5e8f\u3001\u591a\u5de5\u51b5\u6a21\u5f0f\u5207\u6362\u3001\u6570\u5b57\u5b6a\u751f\u6570\u636e\u5bf9\u63a5&#xff0c;\u540e\u671f\u53ef\u6839\u636e\u9700\u6c42\u968f\u65f6\u4fee\u6539\u63a7\u5236\u903b\u8f91\u3002<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u667a\u6167\u57ce\u5e02\u6c99\u76d8\u6a21\u578b\u4e0e\u667a\u6167\u56ed\u533a\u6c99\u76d8\u6a21\u578b\u6d89\u53ca\u57ce\u5e02\u5168\u666f&#xff08;\u529f\u80fd\u5206\u533a\u3001\u4ea4\u901a\u7f51\u7edc\u3001\u516c\u5171\u8bbe\u65bd\u3001\u751f\u6001\u7eff\u5730&#xff09;\u3001\u667a\u6167\u56ed\u533a&#xff08;\u7814\u53d1\u529e\u516c\u3001\u667a\u80fd\u5236\u9020\u3001\u4ed3\u50a8\u7269\u6d41\u3001\u5546\u4e1a\u914d\u5957\u3001\u667a\u80fd\u5b89\u9632\u3001\u667a\u6167\u80fd\u6e90\u3001\u667a\u6167\u4ea4\u901a&#xff09;\u3001\u6570\u5b57\u5b6a\u751f&#xff08;\u865a\u5b9e\u53cc\u5411\u6620\u5c04\u3001\u5b9e\u65f6\u6570\u636e\u53ef\u89c6\u5316\u3001\u667a\u80fd\u8c03\u5ea6&#xff09;\u7b49\u591a\u4e2a\u7cfb\u7edf\u7684\u534f\u540c\u63a7\u5236\u4e0e\u52a8\u6001\u6f14\u793a\u3002\u4e00\u5957\u5b8c\u6574\u7684\u667a\u6167\u57ce\u5e02\u6c99\u76d8\u63a7\u5236\u7cfb\u7edf&#xff0c;\u9700\u8981\u540c\u65f6\u9a71\u52a8\u591a\u8def\u706f\u5e26\u65f6\u5e8f\u6f14\u793a\u4ea4\u901a\u6d41\u3001\u6570\u636e\u6d41\u3001\u80fd\u6e90\u6d41\u3001\u5b89\u9632\u6d41\u7b49\u591a\u6761\u8def\u5f84\u7684\u534f\u540c\u8fd0\u884c&#xff0c;\u591a<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[217,1224,100,2948,43],"topic":[],"class_list":["post-91115","post","type-post","status-publish","format-standard","hentry","category-server","tag-stm32","tag-1224","tag-100","tag-2948","tag-43"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v20.3 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>\u667a\u6167\u57ce\u5e02\u6c99\u76d8\u6a21\u578b\u591a\u7cfb\u7edf\u534f\u540c\u63a7\u5236\u7cfb\u7edf\u8bbe\u8ba1\uff1a\u57fa\u4e8eSTM32\u4e0eModbus RTU\u7684\u56ed\u533a-\u57ce\u5e02-\u6570\u5b57\u5b6a\u751f\u8054\u52a8\u65b9\u6848 - \u7f51\u7855\u4e92\u8054\u5e2e\u52a9\u4e2d\u5fc3<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.wsisp.com\/helps\/91115.html\" \/>\n<meta property=\"og:locale\" content=\"zh_CN\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"\u667a\u6167\u57ce\u5e02\u6c99\u76d8\u6a21\u578b\u591a\u7cfb\u7edf\u534f\u540c\u63a7\u5236\u7cfb\u7edf\u8bbe\u8ba1\uff1a\u57fa\u4e8eSTM32\u4e0eModbus RTU\u7684\u56ed\u533a-\u57ce\u5e02-\u6570\u5b57\u5b6a\u751f\u8054\u52a8\u65b9\u6848 - \u7f51\u7855\u4e92\u8054\u5e2e\u52a9\u4e2d\u5fc3\" \/>\n<meta property=\"og:description\" content=\"\u667a\u6167\u57ce\u5e02\u6c99\u76d8\u6a21\u578b\u4e0e\u667a\u6167\u56ed\u533a\u6c99\u76d8\u6a21\u578b\u6d89\u53ca\u57ce\u5e02\u5168\u666f&#xff08;\u529f\u80fd\u5206\u533a\u3001\u4ea4\u901a\u7f51\u7edc\u3001\u516c\u5171\u8bbe\u65bd\u3001\u751f\u6001\u7eff\u5730&#xff09;\u3001\u667a\u6167\u56ed\u533a&#xff08;\u7814\u53d1\u529e\u516c\u3001\u667a\u80fd\u5236\u9020\u3001\u4ed3\u50a8\u7269\u6d41\u3001\u5546\u4e1a\u914d\u5957\u3001\u667a\u80fd\u5b89\u9632\u3001\u667a\u6167\u80fd\u6e90\u3001\u667a\u6167\u4ea4\u901a&#xff09;\u3001\u6570\u5b57\u5b6a\u751f&#xff08;\u865a\u5b9e\u53cc\u5411\u6620\u5c04\u3001\u5b9e\u65f6\u6570\u636e\u53ef\u89c6\u5316\u3001\u667a\u80fd\u8c03\u5ea6&#xff09;\u7b49\u591a\u4e2a\u7cfb\u7edf\u7684\u534f\u540c\u63a7\u5236\u4e0e\u52a8\u6001\u6f14\u793a\u3002\u4e00\u5957\u5b8c\u6574\u7684\u667a\u6167\u57ce\u5e02\u6c99\u76d8\u63a7\u5236\u7cfb\u7edf&#xff0c;\u9700\u8981\u540c\u65f6\u9a71\u52a8\u591a\u8def\u706f\u5e26\u65f6\u5e8f\u6f14\u793a\u4ea4\u901a\u6d41\u3001\u6570\u636e\u6d41\u3001\u80fd\u6e90\u6d41\u3001\u5b89\u9632\u6d41\u7b49\u591a\u6761\u8def\u5f84\u7684\u534f\u540c\u8fd0\u884c&#xff0c;\u591a\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.wsisp.com\/helps\/91115.html\" \/>\n<meta property=\"og:site_name\" content=\"\u7f51\u7855\u4e92\u8054\u5e2e\u52a9\u4e2d\u5fc3\" \/>\n<meta property=\"article:published_time\" content=\"2026-08-06T15:08:32+00:00\" \/>\n<meta name=\"author\" content=\"admin\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"\u4f5c\u8005\" \/>\n\t<meta name=\"twitter:data1\" content=\"admin\" \/>\n\t<meta name=\"twitter:label2\" content=\"\u9884\u8ba1\u9605\u8bfb\u65f6\u95f4\" \/>\n\t<meta name=\"twitter:data2\" content=\"6 \u5206\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.wsisp.com\/helps\/91115.html\",\"url\":\"https:\/\/www.wsisp.com\/helps\/91115.html\",\"name\":\"\u667a\u6167\u57ce\u5e02\u6c99\u76d8\u6a21\u578b\u591a\u7cfb\u7edf\u534f\u540c\u63a7\u5236\u7cfb\u7edf\u8bbe\u8ba1\uff1a\u57fa\u4e8eSTM32\u4e0eModbus RTU\u7684\u56ed\u533a-\u57ce\u5e02-\u6570\u5b57\u5b6a\u751f\u8054\u52a8\u65b9\u6848 - \u7f51\u7855\u4e92\u8054\u5e2e\u52a9\u4e2d\u5fc3\",\"isPartOf\":{\"@id\":\"https:\/\/www.wsisp.com\/helps\/#website\"},\"datePublished\":\"2026-08-06T15:08:32+00:00\",\"dateModified\":\"2026-08-06T15:08:32+00:00\",\"author\":{\"@id\":\"https:\/\/www.wsisp.com\/helps\/#\/schema\/person\/358e386c577a3ab51c4493330a20ad41\"},\"breadcrumb\":{\"@id\":\"https:\/\/www.wsisp.com\/helps\/91115.html#breadcrumb\"},\"inLanguage\":\"zh-Hans\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.wsisp.com\/helps\/91115.html\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.wsisp.com\/helps\/91115.html#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"\u9996\u9875\",\"item\":\"https:\/\/www.wsisp.com\/helps\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"\u667a\u6167\u57ce\u5e02\u6c99\u76d8\u6a21\u578b\u591a\u7cfb\u7edf\u534f\u540c\u63a7\u5236\u7cfb\u7edf\u8bbe\u8ba1\uff1a\u57fa\u4e8eSTM32\u4e0eModbus RTU\u7684\u56ed\u533a-\u57ce\u5e02-\u6570\u5b57\u5b6a\u751f\u8054\u52a8\u65b9\u6848\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.wsisp.com\/helps\/#website\",\"url\":\"https:\/\/www.wsisp.com\/helps\/\",\"name\":\"\u7f51\u7855\u4e92\u8054\u5e2e\u52a9\u4e2d\u5fc3\",\"description\":\"\u9999\u6e2f\u670d\u52a1\u5668_\u9999\u6e2f\u4e91\u670d\u52a1\u5668\u8d44\u8baf_\u670d\u52a1\u5668\u5e2e\u52a9\u6587\u6863_\u670d\u52a1\u5668\u6559\u7a0b\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.wsisp.com\/helps\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"zh-Hans\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.wsisp.com\/helps\/#\/schema\/person\/358e386c577a3ab51c4493330a20ad41\",\"name\":\"admin\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"zh-Hans\",\"@id\":\"https:\/\/www.wsisp.com\/helps\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/gravatar.wp-china-yes.net\/avatar\/?s=96&d=mystery\",\"contentUrl\":\"https:\/\/gravatar.wp-china-yes.net\/avatar\/?s=96&d=mystery\",\"caption\":\"admin\"},\"sameAs\":[\"http:\/\/wp.wsisp.com\"],\"url\":\"https:\/\/www.wsisp.com\/helps\/author\/admin\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"\u667a\u6167\u57ce\u5e02\u6c99\u76d8\u6a21\u578b\u591a\u7cfb\u7edf\u534f\u540c\u63a7\u5236\u7cfb\u7edf\u8bbe\u8ba1\uff1a\u57fa\u4e8eSTM32\u4e0eModbus RTU\u7684\u56ed\u533a-\u57ce\u5e02-\u6570\u5b57\u5b6a\u751f\u8054\u52a8\u65b9\u6848 - \u7f51\u7855\u4e92\u8054\u5e2e\u52a9\u4e2d\u5fc3","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.wsisp.com\/helps\/91115.html","og_locale":"zh_CN","og_type":"article","og_title":"\u667a\u6167\u57ce\u5e02\u6c99\u76d8\u6a21\u578b\u591a\u7cfb\u7edf\u534f\u540c\u63a7\u5236\u7cfb\u7edf\u8bbe\u8ba1\uff1a\u57fa\u4e8eSTM32\u4e0eModbus RTU\u7684\u56ed\u533a-\u57ce\u5e02-\u6570\u5b57\u5b6a\u751f\u8054\u52a8\u65b9\u6848 - \u7f51\u7855\u4e92\u8054\u5e2e\u52a9\u4e2d\u5fc3","og_description":"\u667a\u6167\u57ce\u5e02\u6c99\u76d8\u6a21\u578b\u4e0e\u667a\u6167\u56ed\u533a\u6c99\u76d8\u6a21\u578b\u6d89\u53ca\u57ce\u5e02\u5168\u666f&#xff08;\u529f\u80fd\u5206\u533a\u3001\u4ea4\u901a\u7f51\u7edc\u3001\u516c\u5171\u8bbe\u65bd\u3001\u751f\u6001\u7eff\u5730&#xff09;\u3001\u667a\u6167\u56ed\u533a&#xff08;\u7814\u53d1\u529e\u516c\u3001\u667a\u80fd\u5236\u9020\u3001\u4ed3\u50a8\u7269\u6d41\u3001\u5546\u4e1a\u914d\u5957\u3001\u667a\u80fd\u5b89\u9632\u3001\u667a\u6167\u80fd\u6e90\u3001\u667a\u6167\u4ea4\u901a&#xff09;\u3001\u6570\u5b57\u5b6a\u751f&#xff08;\u865a\u5b9e\u53cc\u5411\u6620\u5c04\u3001\u5b9e\u65f6\u6570\u636e\u53ef\u89c6\u5316\u3001\u667a\u80fd\u8c03\u5ea6&#xff09;\u7b49\u591a\u4e2a\u7cfb\u7edf\u7684\u534f\u540c\u63a7\u5236\u4e0e\u52a8\u6001\u6f14\u793a\u3002\u4e00\u5957\u5b8c\u6574\u7684\u667a\u6167\u57ce\u5e02\u6c99\u76d8\u63a7\u5236\u7cfb\u7edf&#xff0c;\u9700\u8981\u540c\u65f6\u9a71\u52a8\u591a\u8def\u706f\u5e26\u65f6\u5e8f\u6f14\u793a\u4ea4\u901a\u6d41\u3001\u6570\u636e\u6d41\u3001\u80fd\u6e90\u6d41\u3001\u5b89\u9632\u6d41\u7b49\u591a\u6761\u8def\u5f84\u7684\u534f\u540c\u8fd0\u884c&#xff0c;\u591a","og_url":"https:\/\/www.wsisp.com\/helps\/91115.html","og_site_name":"\u7f51\u7855\u4e92\u8054\u5e2e\u52a9\u4e2d\u5fc3","article_published_time":"2026-08-06T15:08:32+00:00","author":"admin","twitter_card":"summary_large_image","twitter_misc":{"\u4f5c\u8005":"admin","\u9884\u8ba1\u9605\u8bfb\u65f6\u95f4":"6 \u5206"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.wsisp.com\/helps\/91115.html","url":"https:\/\/www.wsisp.com\/helps\/91115.html","name":"\u667a\u6167\u57ce\u5e02\u6c99\u76d8\u6a21\u578b\u591a\u7cfb\u7edf\u534f\u540c\u63a7\u5236\u7cfb\u7edf\u8bbe\u8ba1\uff1a\u57fa\u4e8eSTM32\u4e0eModbus RTU\u7684\u56ed\u533a-\u57ce\u5e02-\u6570\u5b57\u5b6a\u751f\u8054\u52a8\u65b9\u6848 - \u7f51\u7855\u4e92\u8054\u5e2e\u52a9\u4e2d\u5fc3","isPartOf":{"@id":"https:\/\/www.wsisp.com\/helps\/#website"},"datePublished":"2026-08-06T15:08:32+00:00","dateModified":"2026-08-06T15:08:32+00:00","author":{"@id":"https:\/\/www.wsisp.com\/helps\/#\/schema\/person\/358e386c577a3ab51c4493330a20ad41"},"breadcrumb":{"@id":"https:\/\/www.wsisp.com\/helps\/91115.html#breadcrumb"},"inLanguage":"zh-Hans","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.wsisp.com\/helps\/91115.html"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.wsisp.com\/helps\/91115.html#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"\u9996\u9875","item":"https:\/\/www.wsisp.com\/helps"},{"@type":"ListItem","position":2,"name":"\u667a\u6167\u57ce\u5e02\u6c99\u76d8\u6a21\u578b\u591a\u7cfb\u7edf\u534f\u540c\u63a7\u5236\u7cfb\u7edf\u8bbe\u8ba1\uff1a\u57fa\u4e8eSTM32\u4e0eModbus RTU\u7684\u56ed\u533a-\u57ce\u5e02-\u6570\u5b57\u5b6a\u751f\u8054\u52a8\u65b9\u6848"}]},{"@type":"WebSite","@id":"https:\/\/www.wsisp.com\/helps\/#website","url":"https:\/\/www.wsisp.com\/helps\/","name":"\u7f51\u7855\u4e92\u8054\u5e2e\u52a9\u4e2d\u5fc3","description":"\u9999\u6e2f\u670d\u52a1\u5668_\u9999\u6e2f\u4e91\u670d\u52a1\u5668\u8d44\u8baf_\u670d\u52a1\u5668\u5e2e\u52a9\u6587\u6863_\u670d\u52a1\u5668\u6559\u7a0b","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.wsisp.com\/helps\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"zh-Hans"},{"@type":"Person","@id":"https:\/\/www.wsisp.com\/helps\/#\/schema\/person\/358e386c577a3ab51c4493330a20ad41","name":"admin","image":{"@type":"ImageObject","inLanguage":"zh-Hans","@id":"https:\/\/www.wsisp.com\/helps\/#\/schema\/person\/image\/","url":"https:\/\/gravatar.wp-china-yes.net\/avatar\/?s=96&d=mystery","contentUrl":"https:\/\/gravatar.wp-china-yes.net\/avatar\/?s=96&d=mystery","caption":"admin"},"sameAs":["http:\/\/wp.wsisp.com"],"url":"https:\/\/www.wsisp.com\/helps\/author\/admin"}]}},"_links":{"self":[{"href":"https:\/\/www.wsisp.com\/helps\/wp-json\/wp\/v2\/posts\/91115","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.wsisp.com\/helps\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.wsisp.com\/helps\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.wsisp.com\/helps\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.wsisp.com\/helps\/wp-json\/wp\/v2\/comments?post=91115"}],"version-history":[{"count":0,"href":"https:\/\/www.wsisp.com\/helps\/wp-json\/wp\/v2\/posts\/91115\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.wsisp.com\/helps\/wp-json\/wp\/v2\/media?parent=91115"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.wsisp.com\/helps\/wp-json\/wp\/v2\/categories?post=91115"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.wsisp.com\/helps\/wp-json\/wp\/v2\/tags?post=91115"},{"taxonomy":"topic","embeddable":true,"href":"https:\/\/www.wsisp.com\/helps\/wp-json\/wp\/v2\/topic?post=91115"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}