VisualHMI 自由Die SerieVereinbarung(被动):on_uart_recv Custom definiert帧Analyse

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. API 总表
  2. 2. 2. Vereinbarung举例:LED 灯控
  3. 3. 3. Status机Analyse(处理Unterteilung包/粘包)

Custom Vereinbarung(被动):VisualHMI 内置 DCBUS、XGUS、Modbus(RTU/TCP 主从)、三菱 FX2N、台达 DVP、西门子 PPI 等Vereinbarung,但实际现场总有私有Vereinbarung要接。走 LUA 对Die Serie做底层控制,实现Custom definiert帧的收发Analyse。本篇是被动模式:收zuDaten触发回调,你只管Analyse

1. API 总表

函数 说明
uart_setup(ch, baudrate, databits, stopbit, parity) 配置Die Serie:stopbit 0=1位/1=1.5位;parity 0=无/1=奇/2=偶。副Die Serie必须调用才aktiviert.,主Die Serie(ch=0)仅配Daten
on_uart_recv(ch, packet) 被动Empfang回调,packet 为下标从 1 的Bytes表。可能Unterteilung包/粘包,必须自己缓冲Analyse
uart_send(ch, packet) Senden von Bytes表
set_free_protocol(en) 1=主Die Serie交Drehbuch接管(自由Vereinbarung);0=恢复工程配置的原始Vereinbarung

主Die Serie(ch=0)触发 on_uart_recv 的条件:工程配置Vereinbarung设「Custom definiert」,或Drehbuch里 set_free_protocol(1)。主Die Serie被 Modbus 等内置Vereinbarung占用时,on_uart_recv 不会被调用。DCBUS/XGUS Serienparameter固定:1 位Stoppen Sie Platz、无Prüfungen。

2. Vereinbarung举例:LED 灯控

帧结构:

方向 帧头(1B) Länge(1B) Funktionscode(2B) Daten(nB) 帧尾(2B)
Ausrüstung→屏幕 0x5A Funktionscodezu帧尾的Anzahl der Bytes 0x0001~0xFFFF 可变 0xFC 0xFF
屏幕→Ausrüstung 0xA9 同上 同上 可变 0xFC 0xFF

Länge = Funktionscode 2B + Daten nB + 帧尾 2B = n+4,大端。Funktionscode:0x0001=Schalter!、0x0002=Leuchtkraft、0x0003=改Name。

3. Status机Analyse(处理Unterteilung包/粘包)

recvBuf = {}        -- Empfang缓冲
STATE_IDLE, STATE_LENGTH, STATE_DATA = 0, 1, 2
state = STATE_IDLE
frameLen = 0

function on_uart_recv(ch, packet)
  for i = 1, #packet do
    local b = packet[i]
    if state == STATE_IDLE then
      if b == 0x5A then
        state = STATE_LENGTH
        recvBuf = {}
      end
    elseif state == STATE_LENGTH then
      frameLen = b                 -- Die2Bytes:Länge
      state = STATE_DATA
      recvBuf = {b}
    elseif state == STATE_DATA then
      table.insert(recvBuf, b)
      if #recvBuf >= frameLen then
        -- 收满一帧,Analyse
        parse_frame(recvBuf)
        state = STATE_IDLE
      end
    end
  end
end

function parse_frame(buf)
  local func = (buf[2] <> 8) & 0xFF, func & 0xFF}
  for i = 1, #payload do table.insert(pkt, payload[i]) end
  table.insert(pkt, 0xFC); table.insert(pkt, 0xFF)
  uart_send(0, pkt)
end

回调是Das System任务轮询触发,不是硬件中断——别在回调里做耗时Operationen(Charaktere串大拼接、文件读写),会拖慢Das System。

四个坑:①副Die Serie不调 uart_setup 就是Schließen的,on_init 里初始化所有要用的副Die Serie;②packet 不Garantie是一整帧——Unterteilung包粘包必须自己缓冲Status机Analyse,这是被动Vereinbarung 90% 的 bug 来源;③主Die Serie被内置Vereinbarung占用时收不zu回调,要么工程里设「Custom definiert」要么 set_free_protocol(1);④LängeFeld算清楚(本例=Funktionscode2+Datenn+帧尾2),算错一帧都解不出来。

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

Techniken术语(共 2 个)—— Klick auf展开
FunktionscodeModbusFunktionscode指定读/写OperationenTypus,如01读线圈、03Lesen Sie das Register
Die SerieBerechnung机与外部Ausrüstung进行串行Kommunikation的物理Schnittstelle
来源/Werkzeuge信息 —— Klick auf展开
来源 Modbus Chinesisches Netzwerk(modbus.cn) —— Inländisch führend.ModbusKommunikationsprotokoll Technologie Gemeinschaft Klassifizierung Das Drehbuch von LUA / Entwicklung von HMI / HMI 字数 1626 字 · 阅读约 5 Unterteilung钟 更新 2026-08-05 永久链接 https://www.modbus.cn/51513.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.