VisualHMI-Registeroperationen: get / set Vollständige API - und Cache-Mechanismen

kostenlosKostenloses technisches Material

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

Die Register-Operations - API ist das ganze Zuhause für LUA-Lesen und Schreiben von Daten: die set / get-Serie deckt alle Datentypen ab, set _ bit verarbeitet Bits, set _ array schreibt Massen. Der Kernmechanismus erinnert sich:get_xxx liest alles aus dem lokalen HMI-Cache (Speicherspiegel), ohne serielle Frames zu senden- Null Kommunikationskosten.

1. Lese-Mechanismus (wichtig)

Die get_xxx () - Serie von Funktionensendet keine seriellen Portanfragen。HMI Hintergrund-Aufgaben lesen automatisch Kommunikationsvariablen von der SPS (Modbus 3x / 4x usw.) und zwischen, Skript-Lese - nur-Cache - Zwischenspeicher nach dem Engineering-Konfiguration - Polling-Zyklus. Der Vorteil besteht darin, dass die Skriptlogik keine Kommunikationsstürme verursacht - Sie werden den Bus nicht zehntausendmal sprengen.

2. API Gesamtübersicht

FunktionBereich / BeschreibungAdressspann
set_bit(vtype,addr,value,count)Massenbits Schreiben, Wert Niedriges Count-Bits Entsprechen hintereinander folgenden Bits von addr (count1 ~ 16); get_bit gibt 0/11
set/get_uint160 ~ 65535, Überbereichsbeschneiden & 0xFFFF1
set/get_int160 ~ 42949672951
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 754 Single Precision+2
set/get_doubleIEEE 754 Double Precision+4
set_string(vtype,addr,str)Maximal 2 Kbytes, UTF - 8 / GBK; get_string Standard 128 Bytes Maximal 2048, abgeschnittenBatch-Schreiben nach Länge
set_uint16_ex(vtype,addr,v1,...,vN), bis zu 120 RegistersN
set_array(vtype,addr,buff)Lua table (Word-Array), bis zu 120 Wörter empfangenN

3. vtype-Wert (je nach Protokoll)

KonstanteBedeutung
VT_0xSpule
VT_1xEingang
VT_MFX3U internes Relais
VT_3xEingangsregister
VT_4xHaltenregister
VT_DFX3U D-Register
VT_LWInterne Variablen (Stromausfall nicht gespeichert)
VT_RWStromausfall-Speicherbereich

Data Replication Case (12 - Group-Mode - Common Routine)

Häufigste Anforderungen: externes Schreiben von Daten an LW, Verschiebung von Skripten an eine andere Adresse oder Umwandlung von Formaten. Die Routine ist in on _ update, um vtype == VT _ LW und die Quelladresse zu beurteilen, und das Ziel mit get zu lesen und zu schreiben:

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 复制
    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

-- 批量写:addr==0x1050 且值为偶数时写 10 个寄存器
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
Drei Gruben:132 - Bit-Datentyp hat eine Adressspannweite- - uint32 / float für 2 Register, uint64 / double für 4 Register, kontinuierlich zu lesen und zu schreiben, keine Überlappung der Adresse;2set Auto-Abschneiden(& 0xFFFF usw.), Keine Fehlermeldung und keine Übertragung, die falschen Werte, die Sie vielleicht nicht wissen;3get_string Standard lesen 128 Bytes, um länger explizit len (maximal 2048) zu übergeben, die Zeichenkette wird abgeschnitten.

Aus dem LUA-Tutorial "Register-Betrieb" von Guangzhou Dacai Technology VisualHMI-Entwicklungsdokument (hmi-doc.gz-dc.com) zusammengestellt, das Urheberrecht liegt bei Dacai Technology.

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.