Script |
|
Mit dieser Logik können einfache Scripte erstellt werden. Als Syntax wird Lua (www.lua.org)
verwendet. Diese Programmiersprache ähnelt in der Syntax Basic und
wurde mit einigen zusätzlichen Befehlen erweitert. Es stehen ein
einfacher Editor mit syntax highlighting und ein Debugger, in welchem
Werte von Variablen und Debug Meldungen ausgegeben werden, zur Verfügung. Wichtig: In einem Programm das vom Anwender programmiert wird, kann die Bearbeitungszeit nicht mehr garantiert werden. Wird beispielsweise die Funktion OnTimer verwendet und dauert die Bearbeitung im Script sehr lange, betrifft das auch alle anderen Logiken die Timer verwenden. An diesen Logiken wird der Timer dann auch entsprechend später aufgerufen. Dies kann insbesondere bei Zählern oder Timern zu Fehlfunktionen führen. |
|
Eingänge |
|
E1 Eingang 1-x |
Diese sind im Script über die symbolischen Namen "E1","E2" usw. auslesbar. |
Ausgänge |
|
A1 Ausgang 1-x |
Diese sind im Script über die symbolischen Namen "A1","A2" usw. beschreibbar. |
Parameter |
|
Anzahl Eingänge |
Anzahl der Eingänge für die Logik. Diese sind im Script über die symbolischen Namen E1,E2 usw. auslesbar. |
Anzahl Ausgänge |
Anzahl der Ausgänge für die Logik. Diese sind im Script über die symbolischen Namen A1,A2 usw. beschreibbar. |
Timer 1s verwenden |
Mit dieser Option wir die Timerfunktion "onTimer1s"
zyklisch jede Sekunde aufgerufen. Diese Funktion ist optional um die
Zykluszeit nicht unnötig zu belasten. Sie sollten diese Option nur
verwenden, wenn dieses tatsächlich benötigt wird, normalerweise können
die meisten Aufgaben in "onVKE" erledigt werden, diese wird automatisch aufgerufen sobald sich ein Eingang ändert. |
onTgm aufrufen |
Mit dieser Option wird die Funktion "onTgm" aufgerufen sobald ein Telegramm empfangen wurde in welchem die Zieladresse an einem Ein- oder Ausgang verknüpft wurde.Diese Option ist nur für Sonderfälle gedacht in der Telegramme ausgewertet werden müssen, bei großen Projekten kann dies die Logiken extrem verlangsamen. |
onTgm Filter deaktivieren |
Normalerweise wird "onTgm" nur
aufgerufen, wenn im Telegramm die Zieladresse an einem Ein- oder
Ausgang der Logik verknüpft wurde. Mit dieser Option kann dieser Filter
deaktiviert werden, die Funktion wird dann bei jedem Telegramm
aufgerufen das von einem angeschlossenem Gerät kommt. Diese Option ist
nur für Sonderfälle gedacht in der Telegramme ausgewertet werden
müssen, bei großen Projekten kann dies die Logiken extrem verlangsamen. |
if E1 ~= 0 then
A1 = 0
else
A1 = 1
end
end
onPostCreate() | Diese Funktion wird nach jeder
Initialisierung einmal aufgerufen. Hier sollten alle Initialisierungen
aufgerufen werden, beispielsweise Parameter initialisieren oder Aliase
vergeben. |
onVKE () |
Diese Funktion wird bei jeder
Änderung an den Eingängen aufgerufen und immer wenn ein Telegramm
empfangen wird. Alle Logikfunktionen sollten von dieser Funktion aus
aufgerufen werden. |
onTgm() | Diese Funktion wird aufgerufen, wenn ein Telegramm empfangen wird, siehe "onTgm aufrufen". Folgende Parameter werden hierbei übergeben:
|
onTimer1s() | Timerfunktion wird jede Sekunde aufgerufen, diese Parameter Timer1sverwenden |
hmi_get_var |
Auslesen einer Adresse. Beispiel: v = hmi_get_var("1/1/2") Weist der lokalen Variable "v" den Wert der Variable mit der Adresse "1/1/1" zu. |
hmi_write_var |
Variable über die Adresse ausgeben. Beispiel: hmi_write_var("1/1/2",1,0) Setzt die Variable mit der Adresse 1/1/2 auf den Wert 1. Parameter 1=Adresse Parameter 2=Wert Parameter 3=Wert immer senden. Bei Parameter 3 = 1 wird die Variable bei jedem Aufruf des Befehls gesendet, ansonsten nur wenn sich der Wert geändert hat. |
hmi_print |
Debug Ausgabe in das Tracefenster Beispiel: hmi_print("Text", var) Variable 1: Beliebiger Text Variable 2: Interne Variable deren Wert ausgegeben wird. |
hmi_watch |
Variable überwachen Beispiel: hmi_watch("Name",v) Der Wert der Variable "v" wird im Watchfenster mit dem Titel "Name" ausgegeben. Im Unterschied zu "hmi_print" wird der Wert immer in derselben Zeile ausgegeben. Dieser Befehl dient also um Variablen zu überwachen. Wichtig: Die Variable im Watchfenster wird nur aktualisiert, wenn dieser Befehl auch durchlaufen wird. |
hmi_get_wdir |
Rückgabe des aktuellen Arbeitsordners Beispiel: var wdir = hmi_get_wdir() Der Pfad zum aktuellen Arbeitsordner wird von dieser Funktion zurück gegeben. Im Beispiel wird dieser in eine Variable gespeichert. |
hmi_alias |
Alias Namen vergeben Beispiel: hmi_alias("E1","Aussentemperatur") Mit dieser Funktion wird der Systemvariable E1 (erster Eingang der Logik) ein symbolischer Name zugewiesen. Statt beispielsweise "if E1 > 10" zu schreiben, kann man "if Aussentemperatur > 10" verwenden. Das macht das Script wesentlich besser lesbar. Dieser Befehl muss in der Funktion "onPostCreate" aufgerufen werden. |
hmi_update_output |
Erneutes updaten eines Ausgangs Beispiel: hmi_update_output(1) Hiermit wird ein Ausgang erneut aus der Logik geschrieben. Dies kann verwendet werden, wenn man bei einer nachfolgenden Logik den Wert bei jeder ausführung des Skripts erhalte möchte. In diesem Beispiel wird der Ausgang 1 neu ausgesendet. |