Logo Online Hilfe www.powerio.com

Skripte

Für lokale Berechnungen oder einfache Automatisierungsaufgaben können Skripte hinterlegt werden. Diese Skripte werden in der Programmiersprache Lua programmiert und können auf alle Datenpunkte zugreifen.

Lua Schnelleinstieg

Lua ist eine leichtgewichtige, einfach zu erlernende Skriptsprache.

Die Sprache ist minimalistisch, aber sehr flexibel und eignet sich ideal für Automatisierungsaufgaben.

Weiterführende Dokumentation

-- Eine einfache Funktion, die zwei Zahlen addiert function addiere(a, b) return a + b end ergebnis = addiere(5, 7) print("Das Ergebnis ist: " .. ergebnis)

Zugriff auf Variablen

Mit tags kann auf alle Datenpunkte aller Verbindungen lesend und schreibend zugegriffen werden. Der Zugriff erfolgt unter Angabe des Verbindungsnamens gefolgt vom symbolischen Namen (z.B. tags["ModbusConnection"]["Temperature"]). Bei einigen Geräten kann auf lokale IOs zugegriffen werden. Diese stehen unter Device zur Verfügung.

-- Temperatur über Modbus auslesen temp = tags["ModbusConnection"]["Temperature"] -- Ventilator einschalten, wenn Temperatur 25°C überschreitet tags["Device"]["ioman.gpio.dio0"] = temp > 25

Eingangsvariablen

Wenn für die Skript-Logik Werte aus anderen Cloud Adaptern oder aus HVAC Automation benötigt werden, können diese über requirenumber(), requireboolean() und requirestring()-Funktionen angefordert werden. In HVAC Automation steht dann ein beschreibbares Symbol zur Verfügung. So kann beispielsweise ein Sollwert aus HVAC Automation vorgegeben werden. Alternativ kann über die Datenpunkt-Quelle der Wert eines anderes Datenpunktes als Eingangsvariable des Skriptes dienen.

level = requirenumber("Water level tank") -- Pegelstand über die Cloud beziehen pumpIsOn = tags["Modbus"]["Pump"] -- Aktuellen Pumpenstatus ermitteln if pumpIsOn then -- Pumpe ausschalten, wenn 400cm erreicht sind tags["Modbus"]["Pump"] = level < 400 else -- Pumpte einschalten, wenn 300cm unterschritten wurden tags["Modbus"]["Pump"] = level < 300 end

Rückgabewerte

Ein Skript kann einen Wert oder alternativ eine Tabelle zurückgeben. Alle Rückgabewerte stehen als Symbol in HVAC Automation zur Verfügung. So können beispielsweise lokale Berechnungen von ein oder mehren Datenpunkten vorgenommen werden.

-- Eingabewerte volumenstrom = tags["OPC-UA"]["volume flow"] -- m³/h temp_vl = tags["OPC-UA"]["temp 1"] -- Vorlauf in °C temp_rl = tags["OPC-UA"]["temp 2"] -- Rücklauf in °C -- Berechnung delta_T = temp_vl - temp_rl waerme_kW = volumenstrom * 1.16 * delta_T -- Rückgabe beider Werte als Table return { Temperaturdifferenz = delta_T, Leistung = waerme_kW }

nil Überprüfung

Es gibt mehrere Gründe, warum der Wert eines Datenpunktes nicht zur Verfügung steht:

In diesen Fällen wird nil zurück geliefert. Die Skript-Abarbeitung wird fortgesetzt. Es wird empfohlen, Werte von Datenpunkten immer auf nil zu überprüfen, bevor sie weiterverarbeitet werden. So können Fehler durch fehlende oder noch nicht verfügbare Werte vermieden werden.

temp = tags["ModbusConnection"]["Temperature"] if temp == nil then print("Wert steht noch nicht zur Verfügung --> keine weitere Abarbeitung") return end

Nutzung von Lua Funktionen

Lua bietet einige nützliche Funktionen, die über die IntelliSense-Funktion (STRG+Leerzeichen) des Editors einsehbar sind. Für komplexere Berechnungen stehen mathematische Funktionen über die math Tabelle zur Verfügung. Die os Tabelle bietet Funktionen zum Auslesen von Datum und Uhrzeit.

-- Aktuelle Stunde über die Funktion os.date() hour = tonumber(os.date("%H")) -- Stunde (00-23) -- Licht nach 19:00 Uhr bis 06:00 Uhr einschalten tags["Siemens TCP"]["Light"] = hour >= 19 or hour < 6

Aus Sicherheitsgründen sind nicht alle Lua-Funktionen verfügbar. Beispielsweise sind keine Dateioperationen erlaubt und Methoden, wie os.execute() oder os.exit() wurden entfernt.