VisualHMI Über LUA: main.lua Strukturen, Datentypdeklarationen, Fehlersuche und Submodule

kostenlosKostenloses technisches Material

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

LUA ist die Skriptsprache für VisualHMI, die das HMI von einem „Display-Terminal" in einen „funktiven Host" verwandelt: Protokolllösung, logische Urteile, Datenoperationen und Datei-Manipulation sind alles in einem Skript. Zuerst verstehen Sie die Programmstruktur und Systemrufebacks von main.lua, und danach haben Sie Platz für alle APIs.

1. Mainlua. Grundstruktur

_ENCRYPT_ = 0            -- LUA 脚本加密开关(量产加密置1)
-- 数据类型定义(随协议变化,Modbus 常用这些)
VT_LW = 1               -- 内部变量(掉电不保存)
VT_RW = 2               -- Flash 掉电保存区
VT_0x = 10              -- 线圈
VT_1x = 11              -- 输入
VT_3x = 12              -- 输入寄存器
VT_4x = 13              -- 保持寄存器

-- 系统回调函数(自动被调用,不用自己调)
function on_init() end              -- 上电加载后执行一次
function on_run(screen) end         -- 周期执行
function on_update(slave,vtype,addr) end  -- 变量变化
function on_draw(screen,control) end      -- 自绘

mainlua.lua ist eine Importdatei, die beim Kompilieren des Projekts verpackt wird. Das große Projekt empfiehlt, das Modul zu unterteilen: in on _ init dofile ("xxx.lua") kann man es öffnen, um es zu pflegen.

2. Bearbeitungswerkzeuge und Code

Offiziell empfohlen NotePad + +, Lua editor, VS Code Bearbeitungs-Skripte.Kodierung muss beachtenDatei-Codierung und HMI-Projekt - Einstellungen müssen übereinstimmen (UTF - 8 oder GB2312), die Kodierung wird nicht auf Chinesisch verwirrt, die Zeichenkettenvergleich ist auch falsch.

3. Fehlersuche (LUA ohne Ausfallpunkt Debugger)

LUA ist eine interpretierende Sprache und kann nicht in einem Schritt unterbrochen werden. Bei virtuellen Bildschirmen gibt es übliche drei Typen von Ausnahmen:

  • nil-Wertfehler: Zugriff auf undefinierte Variable / Tabellelement - - Initialisierung der Variablen zuerst überprüfen
  • Typfehler: nummerierung bei table, string splicing nil - - print-Type bestätigt
  • : Globale kumulative Daten werden nicht freigegeben - prüfen Sie, ob die Schleife stets table.insert: Globale kumulative Daten nicht freigegeben - prüfen Sie, ob die Schleife immer table. insert ist

physische Bildschirmdebugger mit TTL Debugger serieller Anschluss J2, Baudrate 115200 8N1, print Ausgabe gehen diesen Anschluss.

VisualHMI Über LUA: main.lua Strukturen, Datentypdeklarationen, Fehlersuche und SubmoduleAbbildung

4. Dofile Modulverwaltung

function on_init()
  dofile("config.lua")     -- 参数配置
  dofile("protocol.lua")   -- 协议解析
  dofile("ui.lua")         -- 界面逻辑
end

Globale Variablen werden zwischen den Modulen geteilt, beachten Sie Konflikte bei Namensspezifiken (gewohnheitsmäßige Präfixe wie g _, m _).

Drei Gruben:1_ENCRYPT_Set 1 Das Skript wird verschlüsseltnach dem Setzen des Skript, das Skript muss neu kompiliert werden und heruntergeladen werden, die Debugging-Phase bleibt 0;2 Die Datei-Codierung muss mit dem Projekt übereinstimmen, UTF - 8 / GB2312 mit chinesisch gemischt werden;3print Ausgabe über den Debugging-Serial - Port J2 (115200 8N1)Das physische Bildschirm sieht das Protokoll an USB-TTL.

Aus dem LUA-Tutorial "Was ist LUA" von Guangzhou Dacai Technology VisualHMI Development Document (hmi-doc.gz-dc.com) zusammengestellt, das Urheberrecht liegt bei Dacai Technology.

Relevante Etiketten
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.