Modbus-Master - Multi-Slaven: HMI als Modbus-Master abfragt die Register mehrerer Slaves über den Hintergrund start _ read. Die Kernfunktion start _ read erstellt Aufgaben, get _ xxx liest Cache, on _ cmd _ response erhält Ergebnisse - kein Skript blockiert.
1. Start _ read Parameter
start_read(index, vtype, addr, quantity, cycle, cycle_run, mode)
| Parameter | Beschreibung |
|---|---|
| index | Task-Index 0 ~ 127, stop _ read (index) Registertyp mit |
| vtype | (VT_0x / VT_3x / VT_4x usw.) |
| addr | Startadresse |
| quantity | Lesezahlen 1 ~ 120 Registers |
| cycle | Optional, Multiple Polling-Zyklen (Standard 0 = Jeder Zyklus gelesen) |
| Cycle _ Run | Optional, Ausführung im Zyklus (0 - basiert, muss < cycle) |
| mode | Optional, 0 = dauerhaftes Lesen (Standard) / 1 = nur einmal gelesen (vor create_resp_que()) |
2. Grundlegende Verwendung
function on_init() -- 每周期都读从机0的 4x1000~1009(10个寄存器) start_read(0, VT_4x, 0x1000, 10) -- 每 3 个周期读一次从机1的 4x2000~2009,且在周期内第3次执行 start_read(1, VT_4x, 0x2000, 10, 3, 2) end function on_run(screen) -- 读数据直接拿缓存,零通信开销 local v = get_uint16(VT_4x, 0x1000) local f = get_float(VT_4x, 0x2000) end
Start _ read erstellt nur Aufgaben, die tatsächlichen Daten werden von get _ xxx aus dem lokalen Cache gelesen - der gleiche Mechanismus wie die Registeroperationen. Um die Lesen-Abschluss - Benachrichtigung zu erhalten, rufen Sie mit on_cmd_resp zurück (mit create_resp_que).
3. Mehr von den Flugzeugen übertragen
-- 8 台从机,每台读 20 个寄存器,错开周期避免总线拥堵
function on_init()
for i = 0, 7 do
start_read(i, VT_4x, 0x0000, 20, 8, i) -- 8周期轮一遍,每周期读一台
end
end
function on_cmd_resp(slave, vtype, addr, count, ret, wr)
if ret == 0 then
-- 第 slave 台从机读取成功,处理数据
else
-- 通信异常,标记从机离线
end
endDer Slave hat eine begrenzte Busbandbreite, verwendet cycle / cycle _ run, um die Peak-Auslagerung zu lesen; Ausnahme in on_cmd_resp wird ret nicht 0 beurteilt, um Offline-Markup zu machen.
Aus dem VisualHMI-Entwicklungsdokument von Guangzhou Dacai Technology (hmi-doc.gz-dc.com) LUA-Tutorial "Modbus-One - Master-Multiple - Servants", das Urheberrecht liegt bei Dacai Technology.
Antwort veröffentlichen