Übersicht Scriptprogrammierung

Mit diesem Funktionsbaustein können eigene Scripte in Hochsprache programmiert werden. Als Interpreter wird Lua (www.lua.org) eingesetzt. In dieser Beschreibung wird nur auf die Spracherweiterungen eingegangen.


Eingänge

E1-x
Eingang 1-x
Eingänge. Diese können im Script über die globalen Variablen E1, E2 usw. angesprochen werden. Zur besseren Übersicht können diesen auch Alias Namen zugeordnet werden.



Ausgänge

A1-Ax
Ausgang 1-x
Ausgänge. Diese können im Script über die globalen Variablen A1, A2 usw. angesprochen werden. Zur besseren Übersicht können diesen auch Alias Namen zugeordnet werden.



Parameter

Anzahl Eingänge
Anzahl der Eingänge
Anzahl Ausgänge
Anzahl der Ausgänge
Eventfilter
Standardmäßig werden Events bzw. Telegramme nur an den Funktionsbaustein weiter geleitet wenn die entsprechenden Variablen an den Ein- oder Ausgängen verknüpft sind, durch Ausschalten dieses Filters werden alle Events an den Funktionsbaustein weitergeleitet. Bitte beachten Sie, dass die Bearbeitung aller Events deutlich mehr Bearbeitungszeit in Anspruch nimmt, der Filter sollte daher nur deaktiviert werden wenn dies unbedingt nötig ist.
Bearbeiten
Klicken Sie auf diesen Button um das Script zu bearbeiten, alternativ kann auch mit der rechten Maustaste auf den Funktionsbaustein geklickt werden.


Bearbeitungsfenster

Mit Klick auf den Parameter Bearbeiten oder mit Klick mit der rechten Maustaste auf den Funktionsbaustein wird der Dialog zur Bearbeitung des Scriptes angezeigt:



Dieser Dialog gliedert sich in folgende drei Bereiche:

  1. Script: Hier wird das Script bearbeitet.
  2. Konsole: In diesem Fenster werden alle Ausgaben des Interpreters angezeigt, beispielsweise Info- und Fehlermeldungen oder Meldungen die über den Funktionsaufruf "sys_debug_print" ausgegeben werden.
  3. Variablen: In diesem Fenster wird der Wert von internen Variablen ausgegeben. Anders als im Fenster Konsole ist die Ausgabe nicht fortlaufend sondern in einer Tabelle. Welche Variablen hier angezeigt werden, wird mit dem Funktionsaufruf "sys_debug_watch" definiert.
Wichtig: Damit Meldungen oder Variablen ausgegeben werden, muss die Play Taste gedrückt sein. Mit Klick auf speichern wird das Script an die Steuerung übertragen und sofort ausgeführt, jedoch nur wenn sich die Play Taste gedrückt ist:




Standardmäßig gibt es nur die Funktion "onInputChanged()" im Script. Diese wird aufgerufen wenn sich etwas an den Eingängen geändert hat. Für die meisten Anwendungen ist das auch ausreichend. Über den Menü Button können noch weitere Systemfunktionen hinzugefügt werden. Diese sogenannten Callback Funktionen werden im folgenden beschrieben:

Wichtig: Callback Funktionen dürfen nicht blockieren. Werden hier beispielsweise Endlosschleifen programmiert spricht der interne Watchdog Timer an und die Runtime wird zurückgesetzt. Generell sollten die Funktionsaufrufe so schnell wie möglich bearbeitet werden (z.B. keine sleep Funktionen bzw. Schleifen die lange zur bearbeitung benötigen).

onCreate()
Diese Funktion wird einmalig aufgerufen wenn der Funktionsbaustein initialisiert wird. Hier können beispielsweise Initialisierungen von globalen Variablen definiert werden.
onInputChanged()
Diese Funktion wird aufgerufen wenn sich etwas an den Eingängen verändert hat.
onEvent(Value,Phys_Address,Group_Address,Command)
Diese Funktion wird aufgerufen wenn ein Telegramm empfangen wurde, beispielsweise eine KNX Variable welche am Eingang verknüpft wurde. Standardmäßig werden nur Telegramme an das Script weitergeben welche an den Eingängen verknüpft wurden, dies kann mit dem Parameter "Eventfilter" deaktiviert werden.

Folgende Argumente werden der Funktion übergeben:

  • Value: Wert
  • Phys_Address: Quelladresse im Format "0.0.1"
  • Group_Address: Zieladresse im Format "0/0/1"
  • Command: Befehle, WRITE, RESPONSE, READ
Wichtig: Diese Funktion sollte nur verwendet werden wenn auch wirklich auf Telegramme reagiert werden muss, beispielsweise KNX Telegramme. Wenn möglich sollte die Funktion onInputChanged verwendet werden. Bei Aktivierung von onEvent werden die Telegramme zum Interpreter weiter geleitet was eine höhere Auslastung der Steuerung zur Folge hat.

onTimerEvent100ms() Diese Funktion wird alle 100 ms aufgerufen
onTimerEvent1s()
Diese Funktion wird 1x pro Sekunde aufgerufen.
onTimerEvent1m()
Diese Funktion wird 1x pro Minute aufgerufen. Der Aufruf erfolgt immer am Beginn jeder Minute.
onTimerEvent1h()
Diese Funktion wird 1x pro Stunde aufgerufen. Der Aufruf erfolgt immer am Beginn jeder Stunde.


Systemaufrufe


Folgende Systemaufrufe sind zurzeit integriert.



sys_write_value("0/0/0",value,force)
Schreiben einer beliebigen Variable:

Die Variable wird nu gesendet wenn sich der Wert geändert hat. Dadurch kann die Funktion auch zyklisch aufgerufen werden.

  • value: Wert
  • force: Wenn 1 wird die Variable immer gesendet, auch wenn sich der Wert nicht geändert hat.
sys_get_value("0/0/0")
Abfrage des Wertes einer Variable

  • Als Argument wird die Adresse in der Form "0/0/0" übergeben.

sys_debug_print("Text: ",value)
Ausgabe eines Textes in der Konsole. Bei jedem Aufruf wird eine neue Zeile in der Debug Konsole ausgegeben, dies kann beispielsweise verwendet werden um zu prüfen ob eine Funktion aufgerufen wurde. Der Funktion werden zwei Argumente über geben:

  • Text: Beliebiger Text
  • value: Beliebige Wert (Texte müssen in Anführungszeichen gesetzt werden)

sys_debug_watch("Text: ",value)
Ausgeben des Wertes einer Variable.

Der Funktion werden zwei Argumente über geben:

  • Text: Eindeutige Bezeichnung
  • value: Beliebige Wert (Texte müssen in Anführungszeichen gesetzt werden)
Alle Aufrufe von z.B. "sys_debug_watch("V1",value)" werden in einer separaten Zeile im Variablen Fenster ausgegeben. Dies kann dazu verwendet werden um den Wert einer Variable zu überwachen. Bitte beachten Sie, dass die Variable im Variablen Fenster nur aktualisiert wird wenn diese Funktion aufgerufen wird.

sys_alias("E1","Wert_xy")
Mit dieser Funktion kann einem Ein- oder Ausgang ein symbolischer Name zugewiesen werden. Diese werden dann auch im Fenster für die Verknüpfungen angezeigt.

Wichtig: Alias müssen in der Funktion "onCreate()" definiert werden. Die Alias Namen dürfen keine Leer , Umlaute oder Sonderzeichen enthalten.

  • sys_alias("E1","Aussentemperatur"): Weist dem ersten Eingang den Namen "Aussentemperatur" zu, dieser kann im folgenden Script dann als "Aussentemperatur" angesprochen werden. Beispielweise if ( Aussentemperatur > 10 ).
  • sys_alias("A1","Sollwert"): Weist dem Ausgang A1 den Namen "Sollwert" zu, dieser kann im folgenden Script dann am "Sollwert" angesprochen werden. Beispielsweise "Sollwert = 10".

sys_get_addr_in(1)
Liefert die Adresse der verknüpften Variable eines Einganges im Format "1/2/3" zurück, 1 ist hierbei E1 usw.
sys_get_addr_out(1) Liefert die Adresse der verknüpften Variable eines Ausganges im Format "1/2/3" zurück, 1 ist hierbei A1 usw.


sys_set_persistent_value("Name","Value")
Mit dieser Funktion können beliebige Daten in den persistenten Bereich der Steuerung gespeichert werden.

Wichtig: Die Steuerung ist mit einem Flash Speicher ausgestattet der nicht beliebig oft beschrieben werden darf. Diese Funktion darf daher nicht zu oft aufgrufen werden. Ständiges speichern persistenter Werte verkürzt die Lebendauer des Flash Speichers und führt zum Defekt bzw. Datenverlust.
sys_get_persistent_value("Name","DefaultValue") Mit dieser Funktion können die persistenten Werte wieder ausgelesen werden.






Siehe auch allgemeine Parameter aller Funktionbausteine.