VisualHMI-Datenprotokollsteuerung: record _ * API-Tabellen - Operationen für Zahlen / Zeichenfolgen

kostenlosKostenloses technisches Material

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

Datenerfassungsteuerelement + record_* API: Verwalten vonhistorischen Datentabellenauf dem HMI - sowohl numerische (wie Spannungskurvendaten) als auch Zeichenfolgen (wie Operationslogs) können gespeichert werden, mit Tabellensteuerelementen, Seitenblättern und Zeitstempel-Positionierung. sn istDatensampelkanal-IndexDer Bereich von 0 bis 19 insgesamt 20 Kanäle, die Steuerungsdatenquelle wählen "Datenerfassung", welche Kanal, die API zu betreiben.

1. record _ * API-Zusammenfassung

FunktionBeschreibung
record_get_count(sn)Gesamtanzahl der aufgenommenen Kanäle
record_write_data(sn, data)Hinzufügen eines Datensatzes, data ist ein Wortarray (Index beginnt bei 1)
record_read_data(sn, index)Lesen Sie einen Text und gibt data (Index beginnt bei 1) und timestamp zurück (32 - Bit-Unix - Sekunden)
record_modify_data(sn, index, data)Ändern Sie einen Artikel, Index beginnt mit 0, muss < record_get_count(sn)
record_write_string(sn, strings)Zeichenfolgen-Einträge hinzufügen, Felder mit Semikolon; Trennung
record_read_string(sn, index)Lesen von Zeichenfolgen-Einträgen, Rückgabe von Strings und Timestamp
record_modify_string(sn, index, strings)Ändern von Zeichenfolgen-Einträgen
record_clear(sn)Leeren von Kanälen alle Datensätze (Werte / Zeichenfolgen)

und️ Wenn die Proben aktiviert sindden Blockadress-Speichermodusaktiviert hat, wird der Datensatznicht manipuliert- - modify ist gescheitert.

2. Zahlen-Tabellen - Fälle (zufügen / ändern / lesen / löschen / nachprüfen von Einträgen)

Konfiguration der Datenerfassung: Trigger-Sampling, Aufzeichnungsnummer 100, Datenadresse LW2000, UINT16, Datennummer 10, Steueradresse LW1001, Sampling-Steuerungsadresse LW1002, Startmodus OFF → ON. Datensatzsteuerung: Datenquelle „[0] Array", umgekehrte Zeitreihenfolge, Kanalzahl 10, 5 Zeilen pro Seite, Seite umschalten Steuerung LW1004, Seite umschalten zulässig LW1005 (nur Lesen), Zeitstempel-Positionierung LW1006 (UINT32), ausgewählte Zeilen-Benachrichtigung LW1008 (UINT32). 5 Tasten Schreiben LW1000, Konstante 1 = Hinzufügen / 2 = Ändern / 3 = Lesen / 4 = Löschen / 5 = Anzahl der Leseteilen.

addByteRatio = 0     -- 累加器,让每次添加的数据不同

function on_update(slave, vtype, addr)
  if vtype == VT_LW then
    if addr == 0x1100 then              -- 操作按钮
      local key = get_uint16(VT_LW, 0x1100)
      local dataTb = {}
      if key == 1 then                  -- 添加
        addByteRatio = addByteRatio + 1
        for i = 1, 10 do
          dataTb[i] = i * addByteRatio  -- 第一次 1..10,第二次 2..20
        end
        record_write_data(0, dataTb)
      elseif key == 2 then              -- 修改选中行
        local cnt = record_get_count(0)
        local line = cnt - get_uint32(VT_LW, 0x1105) - 1  -- 逆序表格行映射
        for i = 1, 10 do dataTb[i] = 12345 end
        record_modify_data(0, line, dataTb)
      elseif key == 3 then              -- 读取选中行
        local cnt = record_get_count(0)
        local line = cnt - get_uint32(VT_LW, 0x1105) - 1
        local data, timeUnix = record_read_data(0, line)
        local msg = "时间:"..timeUnix.." 数据:"
        for i = 1, 10 do msg = msg..data[i].." " end
        set_string(VT_LW, 0x1160, msg)
      elseif key == 4 then
        record_clear(0)                 -- 清除
      elseif key == 5 then
        set_string(VT_LW, 0x1160, "条数:"..record_get_count(0))
      end
    end
  end
end

Umgekehrte Tabellen: Zeile 0 ist der neueste Datensatz. Die ausgewählte Zeile zeigt den Anzeigeort, die Umrechnungline = cnt - select - 1

3.

Datenerfassung: Trigger Sampling, Aufzeichnungsnummer 100, Datenadresse LW3000, STRING, Datennummer 50, Steueradresse LW1501, Sampling-Steuerungsadresse LW1502, Startmodus OFF → ON. Steuerelemente: Datenquelle "[1] Zeichenfolge", Zeichenfolge-Tabelle √, GB-Code,Zeitreihenfolge(Hinweis und Zahlen Fall umgekehrt), Kanalzahl 10, 5 Zeilen pro Seite, Seite umdrehen LW1201, Seite umdrehen zulässig LW1202, Zeitstempel-Positionierung LW1203, ausgewählte Zeilen-Benachrichtigung LW1205. 5 Tasten schreiben LW1200.

addStr = 0
function on_update(slave, vtype, addr)
  if vtype == VT_LW and addr == 0x1200 then
    local key = get_uint16(VT_LW, 0x1200)
    if key == 1 then                    -- 添加
      local cnt = record_get_count(1)
      local line = get_uint32(VT_LW, 0x1205)   -- 顺序表格不反转
      if cnt < line - 1 then return end
      addStr = addStr + 10
      local dataStr = ""
      for i = 1, 10 do
        dataStr = dataStr.."第"..(addStr - 10 + i).."个;"
      end
      record_write_string(1, dataStr)   -- "第1个;...第10个;"
    elseif key == 2 then                -- 修改
      local line = get_uint32(VT_LW, 0x1205)
      record_modify_string(1, line, "change;change;change;change;change;change;change;change;change;change;")
    elseif key == 3 then                -- 读取
      local line = get_uint32(VT_LW, 0x1205)
      local dataStr, timeUnix = record_read_string(1, line)
      set_string(VT_LW, 0x1260, timeUnix..dataStr)
    elseif key == 4 then
      record_clear(1)
    elseif key == 5 then
      set_string(VT_LW, 0x1260, "条数:"..record_get_count(1))
    end
  end
end

Zeichenfolgen-Einträge mit Semikolon; trennen Felder, in Übereinstimmung mit den Regeln der Auflösung von Tabellensteuerelementen. Die Zeilewird nicht umgekehrtund wird direkt LW1205 genommen.

Vier Gruben:1sn Kanal-Nummer muss und die steuernde Datenquelle wählen Datenerfassung-Index auf2 numerische Datensatz ist ein Indiz von 1 in einem Arraynicht nach C-Gewohnheit von 0 beginnen;3 umgekehrte Tabelle Zeilen Zuordnung umgekehrt(line = cnt - select - 1), Reihenfolge Tabelle nicht verwendet;4 - Block-Adressen - Speichermodus Datensatz kann nicht modifiziert werden, um die Daten zu ändern, schalten Sie die Speicher nicht aus.

Aus dem VisualHMI-Entwicklungsdokument von Guangzhou Dacai Technology (hmi-doc.gz-dc.com) LUA-Tutorial "Datenprotokolle" 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.