Navigation: CL-Studio Software > Die Programmierung des Systems >

Skripte

 

 

 

 

 

Skripte

 

Skripte sind Programme, die der Benutzer erstellen kann um die individuellen Anwendungsfunktionen seines Systems zu programmieren.

Jedes Objekt eines Moduls kann ein Script beinhalten. Es können auch Objekte ohne Hardwarebezug (virtuelle Objekte) erstellt werden, für die ein Script geschrieben wird.

Scripte können durch Empfang vom Sensor eines Objekts, durch eine Änderung des Objektwerts oder in bestimmten Zeitintervallen aktiviert werden.

Welche Option der Ausführungsaktivierung benutzt werden soll, wird auf der Seite zur Verwaltung von Objekten festgelegt.

 

Scripte können in bestimmten Zeitintervallen, durch den Empfang vom zugeordneten Hardwaresensor, durch Aufruf aus anderen Scripts oder durch Bedienung über eine Visualisierung aktiviert werden.

 

In Scripten können die Zustände bzw. Werte des eigenen und aller anderen Objekte abfragen und ändern. Zustände von Objekten und den diesen zugeordneten Hardwaremodulen werden automatisch abgeglichen, d.h. wenn ein zugeordneter Sensor eine Zustandsänderung meldet, ändert sich der Zustand des Objekts. Wenn das Programm einen Objektzustand ändert wird eine Meldung an den zugeordneten Aktor (Empfänger) geschickt.

 

In einem Script kann die Funktion SELBST verwendet werden, um das aktuelle Objekt, das das Script beinhaltet zu benutzen.

 

Beispiel um eine Beleuchtung immer nach maximal einer Stunde auszuschalten in einem Script, das im Zeitintervall von 1 Minute aktiviert wird:

 

wenn SELBST eingeschaltet und Schaltdauer(SELBST) > "01:00:00" dann

  SELBST ausschalten

endewenn

 

Es gibt zwei spezielle Scripttypen, die jeweils beim Start und bei der Beendigung der ExecEngine ausgeführt werden.

 

Scripts, deren Namen mit "INIT_" beginnen werden beim Start der ExecEngine vor allen anderen Scripts ausgeführt.

 

Scripts deren Namen mit "END_" beginnen werden beim Beenden der ExecEngine ausgeführt. Das geschieht allerdings nur wenn die ExecEngine "normal" beendet wird, d.h. durch Compilieren und Übertragen eines Projekts oder durch das Kontrollprogramm ExecEngineWin.

Da das Starten der END-Scripts erst nach Beendigung der Ausführungssteuerung beginnt, dürfen in END-Scripts keine WARTE-Anweisungnen verwendet werden. Bei Ausführung einer WARTE-Anweisung wird das End-Script endgültig beendet, da es nach Ablauf der Wartzezeit nicht mehr durch die Ausführungssteuerung aktiviert werden kann. Das gilt nicht wenn das End-Script im normalen Betrieb z.B. von einem anderen Script aufgerufen wird.

Weiterhin dürfen in einem END-Script keine Aktionen gestartet werden, die im Hintergrund ablaufen, wie das Versenden von Mails oder ein http-Request mit GETSITE.
Diese Hintergrundaktivitäten können dann eventuell nicht mehr komplett ausgeführt werden.

 

Die END-Scripts werden nicht ausgeführt wenn die ExecEngine nicht über ExecEngineWin oder die Übertragung einer Ausführungsdatei beendet wird, also z.B. durch einen Neustart der Zentrale, einen Betriebssystembefehl in der Konsole oder Webserverfunktionen.  

 

Kommentare und Bemerkungen in Scripts beginnen mit zwei Schrägstrichen //, diese können am Anfang einer Zeile oder auch hinter einer Anweisung benutzt werden.
Beispiel:

// jetzt folgt die Berechnung

DWert1:=(a + b) / 2   // Durchschnittswert

 

 

Üblicherweise sind  Skripte nicht länger als 0,1 bis 0,2 Sekunden aktiv. Bei sehr langen Skripten, die mehr machen als nur einige Aktoren zu schalten und mehrere hundert Zeilen haben kann die Ausführungszeit aber auch deutlich länger sein. Eine zu lange Ausführungszeit sollte aber möglichst vermieden werden, um die Reaktionszeiten zum Schalten von Aktoren bei der Bedienung nicht zu hoch werden zu lassen.

Daher wird während der Ausführung überprüft, ob ein Skript aussergewöhnlich lange läuft und in dem Fall ein Eintrag in das Systemlog geschrieben. Das passiert standardmässig wenn ein Skript länger als 2 Sekunden aktiv ist. Dann sollte das Skript ggfs. entsprechend verändert werden bzw. die Funktionen auf mehrere Skripte aufgeteilt werden. Falls das nicht gewünscht ist, kann die Standardzeit, ab der eine solche Warnung geschrieben wird verändert werden.

Dazu wird ein Objekt des Typs Zahl mit dem Namen SCRIPTTIMEOUT erstellt und mit einem Startwert versehen, der die maximale Zeit in Sekunden angibt, die ein Skript aktiv sein darf bevor eine Meldung in das Systemlog geschrieben wird.

 

 

 

 

 

 

 

 

 

 

Copyright © 2024 CL-control