function on_systick
--保持レジスタの値を再読み込みする
local reg1 = get_ant "1 #湿度"
local reg2 = get_variant "6 #湿度"
local reg3 = get_ant "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
--条件に基づいてコイルの値を設定し、テキストコントロールを更新する
reg 1 = txtValue 1 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 "コイルを闭じる"
set_text 10 16“停止”--テキストを“停止”に設定します。
End of Endシングル
reg 2 = txtValue 2 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 of Endシングル
reg 3 = txtvalue 3の場合
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 of Endシングル
reg 4 = txtValue 4 thenの場合
mb_write_coil_05 16 3 1--コイル4を開く
print“コイルを开く”
set_text 21 1“実行中”--テキストを“実行中”に設定します。
elseif reg4 = txtValue4-3 then
mb_write_coil_05 16,3,0--コイル4をオフにする
print“コイルを閉じる4”
set_text 21 1“停止”--テキストを“停止”にする
End of Endシングル
reg 5 = txtValue 5 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 of Endシングル
End of Endシングル2026年のLua Scriptの詳細
実際のプロジェクトでは、以下の最適化により、スクリプトの安定性と保守性が大幅に向上します。
- デッドゾーン(ラグ区間)を追加するしきい値付近でリレーを頻繁に開閉しないでください。例えば、湿度が70%を超えると除湿がオンになり、65%未満でオフになります。デッドゾーンの5%はリレーの“ジッタ”を効果的に防ぐことができます。
- 電源投入時の初期状態チェックタッチスクリーンの電源が入った後、最初のタイミングコールバックですべてのコイルの現在の状態を読み取り、画面表示が実際と一致するようにすることをお勧めします。
- 通信例外処理Modbusの読み取りに失敗した場合、すぐにアクションをトリガせず、瞬時干渉による誤検出を避けるために、連続障害カウンタ(3回連続した読み取り失敗など)を設定する必要があります。
- 複数条件の優先順位複数のインターロック(温度超過や湿度超過など)がある場合は、論理的競合を避けるために、条件の優先順位と処理順序を明確に定義する必要があります。
完全なLuaプログラミングリファレンスドキュメントとサンプルコードは、modbus.cnの開発ドキュメントセクションで入手できます。
发表回复