4インチタッチスクリーンLuスクリプトで数値判定出力制御Modbusリレーを実現

無料無料技术资料

这篇内容可直接阅读,适合用于基础学习和検索引流。

4インチタッチスクリーンLuスクリプトで数値判定出力制御Modbusリレーを実現
コード説明: このLuaコードを実行すると、1秒ごとにタイムコールバック関数で以下のことが実行されます。 1.湿度、温度、煙センサーなどのさまざまなセンサーからのデータを格納する個々の保持レジスタの値を再読み込みします。 2.テキストコントロールの数値を取得します。これは、コイルの状態を制御する条件が満たされているかどうかを判断するためにインターフェイスで設定したしきい値です。 3.条件判断に応じて、コイルの状態は異なる条件に応じて設定され、対応する機器を制御します。たとえば、湿度の値がしきい値よりも高い場合、コードは対応するコイルをオンにし、デバイスが実行中であることを示し、テキストコントロールを“実行中”と表示します。湿度の値がしきい値マイナス3を下回ると、コードはコイルをオフにし、デバイスが停止したことを示し、テキストコントロールに“停止しました”と表示します。 4.これらの操作により、センサのデータ状態に応じてデバイスの動作状態をリアルタイムで制御するとともに、デバイスの状態情報をテキストコントロールでインターフェースに明確に表示することができます。これにより、さまざまな条件下でのニーズに合わせて、機器の自動制御とステータス表示を実現できます。  
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の詳細

実際のプロジェクトでは、以下の最適化により、スクリプトの安定性と保守性が大幅に向上します。

  1. デッドゾーン(ラグ区間)を追加するしきい値付近でリレーを頻繁に開閉しないでください。例えば、湿度が70%を超えると除湿がオンになり、65%未満でオフになります。デッドゾーンの5%はリレーの“ジッタ”を効果的に防ぐことができます。
  2. 電源投入時の初期状態チェックタッチスクリーンの電源が入った後、最初のタイミングコールバックですべてのコイルの現在の状態を読み取り、画面表示が実際と一致するようにすることをお勧めします。
  3. 通信例外処理Modbusの読み取りに失敗した場合、すぐにアクションをトリガせず、瞬時干渉による誤検出を避けるために、連続障害カウンタ(3回連続した読み取り失敗など)を設定する必要があります。
  4. 複数条件の優先順位複数のインターロック(温度超過や湿度超過など)がある場合は、論理的競合を避けるために、条件の優先順位と処理順序を明確に定義する必要があります。

完全なLuaプログラミングリファレンスドキュメントとサンプルコードは、modbus.cnの開発ドキュメントセクションで入手できます。

この資料を実際のプロジェクトに活用しませんか?

ツールセンターで電文解析、CRCチェック、デバイスデバッグを行うか、要件を送信して選定と接続のアドバイスを受けましょう。

エンジニア会員

この記事を実行可能なデバッグ資料に

登録すると、高度な電文解析、資料パックのダウンロード、コード例、エンジニアリングケース、優先技術サポートが利用可能に。実際のプロジェクト納品に最適です。

高度なツール無制限
資料パックとコードパック
完全なエンジニアリングケースライブラリ
優先技術サポート窓口

发表回复

あなたのメールアドレスアドレス不会被公开。 必須項目已用 * 标注