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

freeFree Technical Resource

This content is free to read, suitable for basic learning and search traffic.

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

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

get_xxxファミリ関数PLCへのリアルタイム要求なし。HMIバックグラウンドタスクは、PLCから通信変数(Modbusの3 x/4 xなど)を自動的に読み取り、エンジニアリング設定のポーリングサイクルに応じてキャッシュします。利点は、スクリプトロジックがCommunicationの嵐を避けることです。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チュートリアル“レジスタOperation”、著作権は大彩科技に帰属します。

Put this resource to use in a real project?

Go to the Tool Center for message parsing, CRC verification and device debugging, or submit your requirements for selection and integration advice.

Engineer Membership

Turn this article into actionable debugging resources

After activation, you can use advanced message parsing, resource pack downloads, code examples, engineering cases and priority technical support, suitable for real project delivery.

Unlimited Advanced Tools
Resource & Code Packs
Complete Engineering Case Library
Priority Technical Support

Leave a Reply

Your email address will not be published. Required fields are marked *.