Visual HMIレジスタ操作:APIとキャッシュメカニズムの完全な範囲を取得/セットする

無料無料技术资料

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

レジスタ操作 APIは、LUAが読み書きするデータの完全なプロパティです。set/getシリーズはすべてのデータ型をカバーし、set_bitはビットを処理し、set_arrayはバッチ書き込みを行います。主なメカニズムを覚えなさい。get_xxxはすべてHMIローカルキャッシュ(メモリイメージ)から読み取り、シリアルフレームを送信しません。通信コストゼロ。

1.読み取りメカニズム(重要)

get_xxxファミリ関数PLCへのリアルタイム要求なし。HMIバックグラウンドタスクは、PLCから通信変数(Modbusの3 x/4 xなど)を自動的に読み取り、エンジニアリング設定のポーリングサイクルに応じてキャッシュします。利点は、スクリプトロジックが通信の嵐を避けることです。1万回取得してもバスを吹き飛ばすことはありません。

2. APIの概要

関数の機能スコープ/説明アドレススパン
set_bit(vtype,addr,value,count)低 countビットはaddrから連続ビット(count 1~16)に対応します。get_bitは0/1を返します。1
set/get_uint160~65535、オーバーレンジカットオフ0xFFFF1
set/get_int16-32768~+327671
set/get_uint320~4294967295+2
set/get_int32-2^31~2^31-1+2
set/get_uint640~2^64-1+4
set/get_int64-2^63~2^63-1+4
set/get_floatIEEE 75 4単精度+2
set/get_doubleIEEE 75 4倍精度+4
set_string(vtype,addr,str)最大 2Kバイト、UTF-8/GBK;get_stringデフォルト128バイト最大 2048、切り舍て長さで。
set_uint16_ex(vtype,addr,v1,...,vN)最大120個のレジスタを一括書き込みき込みN
set_array(vtype,addr,buff)最大120ワードのLuaテーブル(ワードの配列)を受け取ります。N

3. vtype値プロトコルによって変更

定数は意味の意味
VT_0xコイルコイルコイル
VT_1x入力する。
VT_MFX3U 内部リレー
VT_3x入力レジスタ。
VT_4xレジスタを保持する。
VT_DFX3U Dレジスタ
VT_LW内部変数パワーダウンは保存されない
VT_RWパワーダウン保存エリア

4.データレプリケーションのケース(12の共通パターン)

最も一般的な要件:外部からLWにデータを書き込む、スクリプトを別のアドレスに移動する、フォーマットを変換する。ルーチンはon_updateでvtype== VT_LWとソースアドレスを判断し、get readとset to writeターゲットを使用します:

function on_update slave vtype
  if vtype ==_LW then
    addr === 0 x 1000の場合
      set_uint16_LW、0x1001、get_uint16_LW、0x1000      Uint16コピー。
    elseif addr == 0 x 1004 then
      set_uint32_LW、0x1006、get_uint32_LW、0x1004      --uint 32(スパン+2)
    elseif addr === 0 x 101 C
      set_float_LW、0x101E、get_float_LW、0x101C        --floatスパン+2
    elseif addr === 0 x 1030 then
      set_string VT_LW 0x1040 get_string VT_LW 0x1030 16--stringスパン16
    End of Endシングル
  End of Endシングル
End of Endシングル

バッチ書き込み:addr== 0 x 1050で値が偶数の場合に10個のレジスタを書き込む
function on_update slave vtype
  もしvtype == VT_LWとaddr == 0 x 1050の場合
    local v = get_uint16 VT_LW、0x1050
    V % 2 == 0の場合
      set_uint16_ex VT_LW 0x1060 1 2 3 4 5 6 7 8 9 10
      - または-
      set_array VT_LW 0 x 10 60 {10 20 30 40 50 60 70 80 90 100}
    End of Endシングル
  End of Endシングル
End of Endシングル
3つの穴アドレススパンを持つ32ビット以上のデータ型-uint 32/floatは2つのレジスタ、uint64/doubleは4つのレジスタ、連続読み書きはアドレスをオーバーラップしないでください。②setオーバーレンジ自動カットオフ(0 x FFFFなど)、エラーやキャリーがない、値が間違っている場合はわからないかもしれません。get_stringは128バイトを読み込みます。lenをより長く明示的に渡すには(最大20 4 8)、文字列はここで切り捨てられます。

広州大彩科技Visual HMI開発ドキュメント(hmi-doc.gz-dc.com)LUAチュートリアル“レジスタ操作”、著作権は大彩科技に帰属します。

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

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

エンジニア会員

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

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

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

发表回复

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