システムコールバックは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:画面切り替え後の初期化
画面切り替えが完了すると、画面の初期化、状態同期、リソースのロードを行います。画面を切断する前よりも安定して処理します。
Guangzhou Dai Technology Visual HMI開発ドキュメント(hmi-doc.gz-dc.com)LUAチュートリアル“システムコールバック”、著作権所有Dai Dai Technology。
Leave a Reply