Der Code erklärt: Wenn Sie diesen Lua-Code ausführen, führt er die folgenden Aktionen in einer zeitlichen Rückruffunktion alle 1 Sekunde durch: 1. Lesen Sie die Werte der einzelnen Aufbewahrungsregister neu, die Daten von verschiedenen Sensoren wie Luftfeuchtigkeit, Temperatur und Rauchsensoren speichern. 2. Erhalten Sie die Werte für das Textsteuerelement, die die Schwellenwerte sind, die Sie auf der Schnittstelle festlegen, um festzustellen, ob die Bedingungen erfüllt sind, um den Zustand der Spule zu steuern. 3. Entsprechend den Bedingungen wird der Zustand der Spule gemäß verschiedenen Bedingungen festgelegt, um die entsprechende Ausrüstung zu steuern. Wenn der Feuchtewert beispielsweise über dem Schwellenwert liegt, öffnet der Code die entsprechende Spule, um anzuzeigen, dass das Gerät läuft, und zeigt das Textsteuerelement als "In Betrieb" an. Wenn der Feuchtewert unter dem Schwellenwert minus 3 liegt, schließt der Code die Spule aus, zeigt an, dass das Gerät angehalten wurde, und zeigt das Textsteuerungssteuerelement als "Stoped" an. 4. Mit diesen Aktionen können Sie den Betriebszustand des Geräts basierend auf dem Datenstatus des Sensors in Echtzeit steuern und gleichzeitig die Zustandsinformationen des Geräts über Textsteuerelemente auf der Schnittstelle eindeutig anzeigen. Dadurch können Sie die automatische Steuerung und Statusanzeige des Geräts realisieren, um die Anforderungen unter verschiedenen Bedingungen zu erfüllen.
function on_systick()
-- 重新读取保持寄存器的值
local reg1 = get_variant("1#湿度")
local reg2 = get_variant("6#湿度")
local reg3 = get_variant("8#湿度")
local reg4 = get_variant("机箱温度")
local reg5 = get_variant("烟雾感应器")
-- 获取文本控件的数值
local txtValue1 = get_value(10, 1)
local txtValue2 = get_value(10, 2)
local txtValue3 = get_value(10, 3)
local txtValue4 = get_value(14, 2)
local txtValue5 = get_value(14, 4)
-- 根据条件设置线圈的值并更新文本控件
if reg1 >= txtValue1 then
mb_write_coil_05(16, 0, 1) -- 打开线圈1
print("打开线圈1")
set_text(10, 16, "运行中") -- 设置文本为 "运行中"
elseif reg1 <= (txtValue1-3) then
mb_write_coil_05(16, 0, 0) -- 关闭线圈1
print("关闭线圈1")
set_text(10, 16, "已停止") -- 设置文本为 "已停止"
end
if reg2 >= txtValue2 then
mb_write_coil_05(16, 1, 1) -- 打开线圈2
print("打开线圈2")
set_text(10, 17, "运行中") -- 设置文本为 "运行中"
elseif reg2 <= (txtValue2-3) then
mb_write_coil_05(16, 1, 0) -- 关闭线圈2
print("关闭线圈2")
set_text(10, 17, "已停止") -- 设置文本为 "已停止"
end
if reg3 >= txtValue3 then
mb_write_coil_05(16, 2, 1) -- 打开线圈3
print("打开线圈3")
set_text(10, 19, "运行中") -- 设置文本为 "运行中"
elseif reg3 <= (txtValue3-3) then
mb_write_coil_05(16, 2, 0) -- 关闭线圈3
print("关闭线圈3")
set_text(10, 19, "已停止") -- 设置文本为 "已停止"
end
if reg4 >= txtValue4 then
mb_write_coil_05(16, 3, 1) -- 打开线圈4
print("打开线圈4")
set_text(21, 1, "运行中") -- 设置文本为 "运行中"
elseif reg4 <= (txtValue4-3) then
mb_write_coil_05(16, 3, 0) -- 关闭线圈4
print("关闭线圈4")
set_text(21, 1, "已停止") -- 设置文本为 "已停止"
end
if reg5 <= txtValue5 then
mb_write_coil_05(16, 4, 1) -- 打开线圈5
print("打开线圈5")
set_text(20, 1, "运行中") -- 设置文本为 "运行中"
elseif reg5 <= (txtValue5-3) then
mb_write_coil_05(16, 4, 0) -- 关闭线圈5
print("关闭线圈5")
set_text(20, 1, "已停止") -- 设置文本为 "已停止"
end
end
Erweiterte Tipps für das Lua-Skript im Jahr 2026
Im praktischen Projekt können folgende Optimierungen die Stabilität und Wartbarkeit des Scripts erheblich verbessern:
- Hinzufügen von Dead Zone (Hyseres-Intervalle)Vermeiden Sie häufiges Schalten des Relais in der Nähe des Schwellenwertes. Zum Beispiel die Luftfeuchtigkeit über 70% für die Entfeuchtung eingeschaltet, unter 65% für das Schließen - 5% der Toten Zone kann effektiv verhindern, dass das Relais "Zittern".
- Überprüfung des Anfangszustands des StromsNach dem Einschalten des Touchscreen wird empfohlen, den aktuellen Zustand aller Spule beim ersten Timing-Return zu lesen, um sicherzustellen, dass die Bilddarstellung mit der tatsächlichen übereinstimmt.
- Kommunikation ungewöhnlich behandeltWenn Modbus-Lesen fehlschlägt, sollten Sie nicht sofort Aktion auslösen, sollte ein aufeinanderfolgender Fehler-Zähler eingestellt werden (wie 3 aufeinanderfolgende Lesfehler, um Alarm zu vermeiden, weil vorübergehende Interferenzen falsch positioniert werden.
- Mehr bedingte PrioritätenBei mehreren Verriegelungen (z. B. Überschreitung der Temperatur und Überschreitung der Luftfeuchtigkeit) müssen die Prioritäten und die Reihenfolge der Verarbeitung der Bedingungen klar definiert werden, um logische Konflikte zu vermeiden.
Voll stän dige Lua Program mi erung Refer en zd okument ation und Beispiel code , zug äng lichmodbus.cnEntwick lungs - D okument ation - Bereich erhalten Sie die neu este Version .
Antwort veröffentlichen