Visual HMIシステムコールバック関数:on_init/on_run/on_press/on_update

無料無料技术资料

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

システムコールバックはLUAとHMIカーネル間で行われるイベント·インタフェースカーネルは特定のタイミングで関数を自動的にチューニングします。ポーリングやトリガーは必要ありません。各コールバックのトリガータイミングと制限を理解することは、安定したスクリプトを書くための前提条件です。

1.コールバックの概要

コールバックトリガー·タイミング目的は
on_init()電源投入後に1回実行dofileロードモジュール、初期化パラメータ/PLC/ドライブボード
on_run(screen)サイクル実行set_run_cycle設定サイクルコアスケジューリングエントリ、定期的なタスク
on_press(state,x,y)タッチイベント、最大100ms 1回キーストローク処理、アイドルスタンバイ
on_update(slave,vtype,addr)変数の値の変化データ駆動型ロジック(推奨)
on_screen_change(screen)画面切り替え後画面初期化、同期

2. on_run:定期的なスケジュール(注意)

on_runはサイクルコールバックであり、サイクルよりもはるかに短く動作します。3つの禁止:

  • Modbus RTU Master高周波書き込み簡単なバスブロッキング--on_runで毎秒フレームを書き込まないでください。
  • 使用不可delay_ms、長いループ、ネットワーク同期- メインループをブロックし、画面全体のカード
  • set_run_cycleデッドロックの禁止コールバックのサイクル変更は決してトリガーされない。
function on_init
  set_run_c1000     1 秒周期を設定する。
End of Endシングル
function on_run screen
  毎秒1回行うこと:ステータスポーリング、タイムアウト判定
End of Endシングル

3. on_press:タッチコールバックとアイドルスタンバイ

on_press state x y、state 0=持ち上げ、1=押し、2=長押し。最大100msごとにトリガーされます。典型的な利用は、アイドルスタンバイ省電力:しばらくの間、自動消去/ジャンプ画面に触れていません。

_IDLE_TIME OUT = 300000   5分間の無操作。
_idle_tick = 0
function on_press state x y
  _idle_tick = 0          タッチでタイムをリセットする
End of Endシングル
function on_run screen
  _idle_tick = _idle_tick + 1000   サイクル1sの仮定
  if _idle_tick = _IDLE_TIMEOUT then
    set_screen 0         メイン画面に戻ります。
    _idle_tick = 0
  End of Endシングル
End of Endシングル

4. on_update:データ駆動型(これを優先)

on_update slave vtype addr変数の値が変化したときにトリガーされます。データ駆動型モード--on_runよりも省資源をポーリングします。知っておくべき3つの特徴:

  • 外部シリアルポート/Modbusマスタ書き込みがトリガーされない-HMI内部変数の変更にのみ有効
  • on_updateイントロset_xxxがマスクされた無限再帰を防ぐため、変更は再起動しません。
  • グローバル変数_EN_ON_UPDATA_API_制御スイッチ--0を設定して一時的に無効にし、一括初期化時に使用
_EN_ON_UPDATA_API_ = 0    --初期化中にオフになったコールバック
-- ...バッチ書き込みレジスタ。。。。
_EN_ON_UPDATA_API_ = 1    --コールバック

function on_update slave vtype
  if vtype ==_LW then
    addr === 0 x 1000の場合
      --LW 1000が変更され、ビジネスを処理
    End of Endシングル
  End of Endシングル
End of Endシングル

5. on_screen_change:画面切り替え後の初期化

画面切り替えが完了すると、画面の初期化、状態同期、リソースのロードを行います。画面を切断する前よりも安定して処理します。

4つの穴on_runでdelay_ms/ロングループを禁止する主な循環を破壊する。Modbusマスターはon_runで高周波書き込みをしないバスの渋滞は不明。set_xxxはon_updateでコールバックを再起動しません。連鎖を期待しないでください。レジスタを一括初期化する前に_EN_ON_UPDATA_API_を0に設定する嵐を防ぐ。

Guangzhou Dai Technology Visual HMI開発ドキュメント(hmi-doc.gz-dc.com)LUAチュートリアル“システムコールバック”、著作権すべてのDai Dai Technology。

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

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

エンジニア会員

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

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

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

发表回复

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