{"id":51503,"date":"2026-08-04T20:20:33","date_gmt":"2026-08-04T12:20:33","guid":{"rendered":"https:\/\/www.modbus.cn\/51503.html"},"modified":"2026-08-05T08:25:36","modified_gmt":"2026-08-05T00:25:36","slug":"visualhmi-lua-%e5%91%8a%e8%ad%a6%e9%9b%86%e4%b8%ad%e7%ae%a1%e7%90%86%ef%bc%9awarning_set-%e6%89%b9%e9%87%8f%e8%a7%a6%e5%8f%91%e4%b8%8e-8-%e4%bb%8e%e6%9c%ba%e8%a7%a3%e6%9e%90","status":"publish","type":"post","link":"http:\/\/www.modbus.cn\/en\/51503.html","title":{"rendered":"VisualHMI LUA \u544a\u8b66\u96c6\u4e2d\u7ba1\u7406\uff1awarning_set \u6279\u91cf\u89e6\u53d1\u4e0e 8 \u4ece\u673a\u89e3\u6790"},"content":{"rendered":"<p>\u544a\u8b66\u96c6\u4e2d\u7ba1\u7406\uff1a<code>warning_set(warning_id, value, count)<\/code> \u6279\u91cf\u89e6\u53d1\u544a\u8b66 + <code>on_parse_warning<\/code> \u81ea\u5b9a\u4e49\u544a\u8b66\u6587\u672c\u3002\u5178\u578b\u573a\u666f\uff1aHMI \u4ece Modbus \u8bfb\u56de\u4ece\u673a\u7684\u6545\u969c\u4f4d\uff0c\u9010\u4f4d\u6620\u5c04\u6210\u544a\u8b66\u2014\u20148 \u53f0\u4ece\u673a\u3001\u6bcf\u53f0 96 \u4e2a\u544a\u8b66\uff0c\u4e00\u6761\u547d\u4ee4\u5168\u89e6\u53d1\u3002<\/p>\n<h2>1. API \u603b\u8868<\/h2>\n<table border=\"1\" cellpadding=\"6\" style=\"border-collapse:collapse;font-size:14px\">\n<tr>\n<th>\u51fd\u6570<\/th>\n<th>\u8bf4\u660e<\/th>\n<\/tr>\n<tr>\n<td><code>warning_set_mode(en)<\/code><\/td>\n<td>\u5168\u5c40\u4f7f\u80fd\uff1a1=\u5f00\/0=\u5173<\/td>\n<\/tr>\n<tr>\n<td><code>warning_set(warning_id, value, count)<\/code><\/td>\n<td>\u4f4d\u63a9\u7801\u6279\u91cf\u89e6\u53d1\uff1avalue \u7684\u4f4e count \u4f4d\u5bf9\u5e94\u4ece warning_id \u8d77\u7684\u544a\u8b66\uff08bit0\u2192warning_id\uff0ccount 1~16\uff09<\/td>\n<\/tr>\n<tr>\n<td><code>on_parse_warning(id, text, screen_id, control_id, p0, p1, p2, p3)<\/code><\/td>\n<td>\u81ea\u5b9a\u4e49\u544a\u8b66\u6587\u672c\u56de\u8c03\uff0c\u8fd4\u56de (\u5b57\u7b26\u4e32, encode)\uff0cencode 1=UTF-8\/0=GBK<\/td>\n<\/tr>\n<\/table>\n<h2>2. 8 \u4ece\u673a \u00d7 96 \u544a\u8b66\u6848\u4f8b<\/h2>\n<p>\u67b6\u6784\uff1a8 \u53f0\u4ece\u673a\uff0c\u6bcf\u53f0\u8bfb Modbus 4&#215;1000 \u8d77\u8fde\u7eed 6 \u4e2a\u5bc4\u5b58\u5668\uff0816bit\u00d76=96 \u4f4d\u544a\u8b66\uff09\u3002on_init \u91cc create_resp_que\uff0con_cmd_resp \u4e2d\u9010\u4ece\u673a\u9010\u5bc4\u5b58\u5668\u9010\u4f4d\u8c03\u7528 warning_set\u3002<\/p>\n<pre style=\"background:#f5f5f5;padding:10px;border-radius:4px\">_warningTb = {}   -- 0x1000~0x1005 \u5404 bit \u7684\u544a\u8b66\u540d\n\nfunction on_init()\n  set_auto_read(0)\n  create_resp_que()\n  -- \u544a\u8b66\u8bbe\u7f6e\u91cc\u9884\u914d 768 \u6761\uff088 \u53f0 \u00d7 96\uff09\nend\n\nfunction on_cmd_resp(slave, vtype, addr, count, ret, wr)\n  if ret == 0 and wr == 0 then\n    -- slave \u4ece\u673a\uff0caddr \u8d77\u59cb\uff0c\u8bfb\u56de count \u4e2a\u5bc4\u5b58\u5668\n    for i = 0, 5 do\n      local val = get_uint16(vtype, addr + i)\n      for j = 0, 15 do\n        local bitv = (val &gt;&gt; j) &amp; 0x01\n        local wid = (addr - 0x1000) * 16 + j + slave * 100\n        warning_set(wid, bitv, 1)     -- \u5355 bit \u89e6\u53d1\n      end\n    end\n  end\nend\n\nfunction on_parse_warning(id, text, screen_id, control_id, p0, p1, p2, p3)\n  local slave_no = math.floor(id \/ 96) + 1   -- \u4ece\u673a\u53f7\n  local msg_id = id % 96                      -- \u6d88\u606f ID\n  local name = _warningTb[0x1000 + math.floor(msg_id \/ 16)] or \"\u672a\u77e5\u544a\u8b66\"\n  local msg = \"\u4ece\u673a\"..slave_no..\" : \"..name\n  return msg, 1      -- 1=UTF-8\nend<\/pre>\n<p>\u544a\u8b66 ID \u7f16\u7801\u7ea6\u5b9a\uff1a\u4ece\u673a\u53f7\u00d7100 + \u4f4d\u5e8f\u53f7\uff0c\u89e3\u6790\u65f6\u53cd\u63a8\u3002\u544a\u8b66\u8bbe\u7f6e\u9700\u9884\u914d\u5168\u90e8 768 \u6761\uff0c\u6587\u672c\u7528 on_parse_warning \u52a8\u6001\u751f\u6210\uff08\u6309\u4ece\u673a\u53f7\u524d\u7f00\uff09\uff0c\u6bd4\u9759\u6001\u914d 768 \u6761\u6587\u672c\u7701\u4e8b\u5f97\u591a\u3002<\/p>\n<div class=\"tip\" style=\"border-left:4px solid #f7941e;padding:10px 14px;background:#fff8ef;margin:14px 0\">\u4e09\u4e2a\u5751\uff1a<strong>\u2460warning_set \u7684 value \u4f4e count \u4f4d\u5bf9\u5e94\u4ece warning_id \u8d77\u7684\u544a\u8b66<\/strong>\uff0cbit0\u2192warning_id\u3001bit1\u2192warning_id+1\uff0c\u6279\u91cf\u89e6\u53d1\u4e00\u6761\u547d\u4ee4\u641e\u5b9a\uff1b<strong>\u2461count \u8303\u56f4 1~16<\/strong>\uff0c\u8d85\u8fc7\u62c6\u591a\u6b21\uff1b<strong>\u2462on_parse_warning \u7684\u8fd4\u56de\u503c\u7b2c\u4e00\u4e2a\u662f\u6587\u672c\u3001\u7b2c\u4e8c\u4e2a\u662f\u7f16\u7801<\/strong>\uff081=UTF-8\/0=GBK\uff09\uff0c\u4e2d\u6587\u5c4f\u522b\u7528\u9519\u7f16\u7801\u3002<\/div>\n<p style=\"color:#888;font-size:13px\">\u6574\u7406\u81ea \u5e7f\u5dde\u5927\u5f69\u79d1\u6280 VisualHMI \u5f00\u53d1\u6587\u6863\uff08hmi-doc.gz-dc.com\uff09LUA \u6559\u7a0b\u300c\u544a\u8b66\u96c6\u4e2d\u7ba1\u7406\u300d\uff0c\u7248\u6743\u5f52\u5927\u5f69\u79d1\u6280\u6240\u6709\u3002<\/p>\n<span id=\"magicpostMarker\"><\/span>","protected":false},"excerpt":{"rendered":"<p>\u544a\u8b66\u96c6\u4e2d\u7ba1\u7406\uff1awarning_set(warning_id,&#8230;<\/p>","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_members_access_role":[],"_members_access_error":""},"categories":[3131,3126],"tags":[3339,3134,3338,3340,3337,3341],"class_list":["post-51503","post","type-post","status-publish","format-standard","hentry","category-hmi-lua","category-hmi-dev","tag-on_parse_warning","tag-visualhmi","tag-warning_set","tag-warning_set_mode","tag-3337","tag-3341"],"_links":{"self":[{"href":"http:\/\/www.modbus.cn\/en\/wp-json\/wp\/v2\/posts\/51503","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/www.modbus.cn\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/www.modbus.cn\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/www.modbus.cn\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/www.modbus.cn\/en\/wp-json\/wp\/v2\/comments?post=51503"}],"version-history":[{"count":1,"href":"http:\/\/www.modbus.cn\/en\/wp-json\/wp\/v2\/posts\/51503\/revisions"}],"predecessor-version":[{"id":51651,"href":"http:\/\/www.modbus.cn\/en\/wp-json\/wp\/v2\/posts\/51503\/revisions\/51651"}],"wp:attachment":[{"href":"http:\/\/www.modbus.cn\/en\/wp-json\/wp\/v2\/media?parent=51503"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/www.modbus.cn\/en\/wp-json\/wp\/v2\/categories?post=51503"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/www.modbus.cn\/en\/wp-json\/wp\/v2\/tags?post=51503"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}