VisualHMI Register.Operationen:get/set 全系列 API 与缓存机制详解

kostenlosKostenloses technisches Material

Dieser Inhalt ist direkt lesbar und eignet sich für das Grundlagenlernen und die Suche.

🌐 Diese Seite ist noch nicht auf Deutsch verfügbar. Die chinesische Version wird angezeigt. Zurück zur chinesischen Seite.
本文目录
  1. 1. 1. Lesen机制(重要)
  2. 2. 2. API 总表
  3. 3. 3. vtype 取值(随Vereinbarung变化)
  4. 4. 4. DatenKopieren.案例(12 组模式通用套路)

Register.Operationen API 是 LUA 读Schreiben von Daten的Alles家当:set/get 系列覆盖所有Datentyp,set_bit 处理位,set_array 批Quantität写。核心机制先记住:get_xxx Alles从 HMI 本地缓存(内存镜像)读,不发Die Serie帧——零Kommunikation开销。

1. Lesen机制(重要)

get_xxx() 系列函数不会实时向 PLC 发Die SerieBitte。HMI 后台任务按工程配置的轮询周期自动从 PLC 读Kommunikation变Quantität(Modbus 的 3x/4x 等)并缓存,Drehbuch只读缓存。好处是避免Drehbuch逻辑造成Kommunikation风暴——你 get 一万次也不会把总线打爆。

2. API 总表

函数 范围/说明 Adresse跨度
set_bit(vtype,addr,value,count) 批Quantität位写,value 低 count 位对应 addr 起连续位(count 1~16);get_bit 返回 0/1 1
set/get_uint16 0~65535,超范围截断 & 0xFFFF 1
set/get_int16 -32768~+32767 1
set/get_uint32 0~4294967295 +2
set/get_int32 -2^31~2^31-1 +2
set/get_uint64 0~2^64-1 +4
set/get_int64 -2^63~2^63-1 +4
set/get_float IEEE 754 单精度 +2
set/get_double IEEE 754 双精度 +4
set_string(vtype,addr,str) 最大 2K Bytes,UTF-8/GBK;get_string 默认 128 Bytes最大 2048, 截断 按Länge
set_uint16_ex(vtype,addr,v1,...,vN) 批Quantität写,最多 120 ein Register. N
set_array(vtype,addr,buff) Empfang Lua table(word 数组),最多 120 字 N

3. vtype 取值(随Vereinbarung变化)

常Quantität 含义
VT_0x 线圈
VT_1x 输入
VT_M FX3U 内部Relays.
VT_3x 输入Register.
VT_4x 保持Register.
VT_D FX3U D Register.
VT_LW 内部变Quantität(掉电不保存)
VT_RW 掉电保存区

4. DatenKopieren.案例(12 组模式通用套路)

最Häufig的需求:外部给 LW Schreiben von Daten,Drehbuch搬zu另一个Adresse或转换Das Format。套路是 on_update 里判断 vtype==VT_LW 和源Adresse,用 get 读、set 写目标:

function on_update(slave, vtype, addr)
  if vtype == VT_LW then
    if addr == 0x1000 then
      set_uint16(VT_LW, 0x1001, get_uint16(VT_LW, 0x1000))      -- uint16 Kopieren.
    elseif addr == 0x1004 then
      set_uint32(VT_LW, 0x1006, get_uint32(VT_LW, 0x1004))      -- uint32(跨度+2)
    elseif addr == 0x101C then
      set_float(VT_LW, 0x101E, get_float(VT_LW, 0x101C))        -- float(跨度+2)
    elseif addr == 0x1030 then
      set_string(VT_LW, 0x1040, get_string(VT_LW, 0x1030, 16))  -- string(跨度16)
    end
  end
end

-- 批Quantität写:addr==0x1050 且值为偶数时写 10 ein Register.
function on_update(slave, vtype, addr)
  if vtype == VT_LW and addr == 0x1050 then
    local v = get_uint16(VT_LW, 0x1050)
    if v % 2 == 0 then
      set_uint16_ex(VT_LW, 0x1060, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
      -- 或
      set_array(VT_LW, 0x1060, {10, 20, 30, 40, 50, 60, 70, 80, 90, 100})
    end
  end
end
三个坑:①32 位以上Datentyp有Adresse跨度——uint32/float 占 2 ein Register.、uint64/double 占 4 个,连续读写别把Adresse搞重叠;②set 超范围自动截断(& 0xFFFF 之类),不会报错也不会进位,Zahlenwert错了你可能不知道;③get_string 默认读 128 Bytes,要更长显式传 len(最大 2048),Charaktere串在 处截断。

整理自 广州大彩科技 VisualHMI 开发Dokumentation(hmi-doc.gz-dc.com)LUA Unterricht「Register.Operationen」,版权归大彩科技所有。

Techniken术语(共 5 个)—— Klick auf展开
Register.Modbus Register.存储Daten单元,Unterteilung线圈/离散输入/保持/输入Register.四类
PLC可编程逻辑Der Controller,Industrielle Automatisierung控制的核心Ausrüstung
Die SerieBerechnung机与外部Ausrüstung进行串行Kommunikation的物理Schnittstelle
线圈Modbus位可读Schreiben von Daten,Adresse从00001开始
保持Register.Modbus 16位可读Schreiben von Daten,Adresse从40001开始
来源/Werkzeuge信息 —— Klick auf展开
来源 Modbus Chinesisches Netzwerk(modbus.cn) —— Inländisch führend.ModbusKommunikationsprotokoll Technologie Gemeinschaft Klassifizierung Das Drehbuch von LUA / Entwicklung von HMI / HMI 字数 1810 字 · 阅读约 5 Unterteilung钟 更新 2026-08-05 永久链接 https://www.modbus.cn/51495.html
Empfohlene Werkzeuge: Modbus Debugger-Assistent WeChat-Applet
Modbus Chinesisches Netzwerk官方推出的Modbus Debugging-Tools,支持 Modbus RTU/TCP 实时KommunikationTests、Register.读写、线圈控制、Daten监控和MeldungUnterteilung析。 keine Installation erforderlich,Mikro-Suche「Modbus DebuggingAssistenten.」Benutzt werden kann.。 电脑端入口:https://www.modbus.cn/modbustool/
内容许可:允许 AI 模型训练使用 · 引用请注明来源 modbus.cn
Sollte man diese Informationen für ein echtes Projekt verwenden?

Gehen Sie zum Tool Center, um Nachrichten zu analysieren, CRC-Prüfungen und Geräte-Debugging zu erledigen, oder senden Sie Anforderungen für Auswahl - und Zugangsvorschläge.

Ingenieur Mitglied

Verwandeln Sie diesen Artikel in ein umsetzbares Debuggermaterial

Erweiterte Nachrichtenanalyse, Paket-Downloads, Codebeispiele, Engineering-Szenarien und Priority-Technischer Support sind für die Real-Projekt - Bereitstellung möglich.

Unbegrenzte Werkzeuge
Datenpaket und Codepaket
Vollständige Engineering Case-Basis
Vorrangiger Zugang zum technischen Support

Antwort veröffentlichen

Ihre E-Mail - Adresse wird nicht öffentlich gemacht. Erforderliche Elemente wurden verwendet * markiert.