VisualHMI freie serielle Portsprotokoll (passiv): on_uart_recv benutzerdefinierte Frame-Anschlüsse

kostenlosKostenloses technisches Material

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

benutzerdefiniertes Protokoll (passiv): VisualHMI integriert DCBUS, XGUS, Modbus (RTU / TCP Master / Slave), Mitsubishi FX2N, Delta DVP, Siemens PPI und andere Protokolle, aber es gibt immerprivate Protokollauf dem tatsächlichen Standort. LUA übernimmt die untersteuerung des seriellen anschlusses und realisiert die Übertragung und Annahme von benutzerdefinierten frames. Dieser Artikel ist in Passivmodus:Erhält einen Datentrigger-Rückruf, du analysierst einfach

API-Zusammenfassung

FunktionBeschreibung
uart_setup(ch, baudrate, databits, stopbit, parity)Konfiguration des seriellen Portes: stopbit 0 = 1 Bit / 1 = 1,5 Bit; Parity 0 = None / 1 = Odd / 2 = G偶el.Der sekundäre serielle Anschluss muss aufgerufen werden, umzu aktivieren, der primäre serielle Anschluss (ch=0) ist nur für Daten
on_uart_recv(ch, packet)Passiv empfangen Rückrufe, ein Paket als Unterzeichnis von 1 in der Byte-Tabelle.Möglicherweise Unterverpackung / Verpackung, muss selbst buffered
uart_send(ch, packet)Master-Serial - Port (ch=0) Auslöser für die Bedingung on_uart_recv: Das Konfigurationsprotokoll ist „Benutzerdefiniert" gesetzt oder das Skript set_free_protocol(1).
set_free_protocol(en)1 = Master-Serial - Port Script Übernahme (freies Protokoll); 0 = Wiederherstellung des ursprünglichen Protokolls für die Konfiguration

Der primäre serielle Anschluss (ch = 0) löst die Bedingung für on_uart_recv aus: Das Projektkonfigurationsprotokoll ist "Benutzerdefiniert" oder das Skript set_free_protocol(1).On_uart_recv wird nicht aufgerufen, wenn der primäre serielle Anschluss von integrierten Protokollen wie Modbus besetzt wird。DCBUS / XGUS-Serialanschluss - Parameter Fix: 1 Stop-Bit, ohne Verifikation.

2. Beispiel: LED-Licht - Steuerung

Rahmenstruktur:

RichtungFrame-Header (1B)Länge (1B)Funktion-Code (2B)Daten (nB)Frame-End (2B)
Gerät → Bildschirm0x5AFunktionscode bis Frame-End0x0001 ~ 0xFFFFVariable0xFC 0xFF
Bildschirm → Geräte0xA9Ähnlich obenÄhnlich obenVariable0xFC 0xFF

Länge = Funktionscode 2B + Daten nB + Frame End 2B = n + 4, Großes Ende. Funktionscode: 0x0001 = Schalter, 0x0002 = Helligkeit, 0x0003 = Name ändern.

3. Zustandmaschinenanalyse (Verarbeitung von Subverträgen / Klebenspaket)

recvBuf = {}        -- 接收缓冲
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                 -- 第2字节:长度
      state = STATE_DATA
      recvBuf = {b}
    elseif state == STATE_DATA then
      table.insert(recvBuf, b)
      if #recvBuf >= frameLen then
        -- 收满一帧,解析
        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

Zurückweisung istSystem-Aufgabe - Auslöser, kein Hardware-Interrupt- - Verwenden Sie keine zeitaufwändigen Operationen in Rückrufen (große Zeichenfolgen, Dateien lesen und schreiben), die das System verlangsamen.

Vier Gruben:1 Neben-Serial - Port ist nicht angepasst uart_setup ist geschlossenalle Neben-Serial - Ports werden in on_init initialisiert;2Packet ist nicht garantiert, dass ein ganzer Frame ist- Pakete müssen die Status-Maschine - Analyse selbst puffer, das ist die Quelle von 90% der Fehler des passiven Protokolls;3 Der primäre serielle Anschluss empfängt keine Rückrufe, wenn das eingebaute Protokoll besetzt istSetzen Sie entweder „Benutzerdefiniert" oder set _ free _ protocol (1);4 Längen sind klar.(Dieses Beispiel = Funktionscode 2 + Daten n + Frame End 2) kann nicht gelöst werden.

Aus dem LUA-Tutorial "Benutzerdefiniertes Protokoll - Passiver Empfang", VisualHMI-Entwicklungsdokument (hmi-doc.gz-dc.com) von Guangzhou Dacai Technology, das Urheberrecht im Besitz von 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.