SICLIMAT X TECLA-Scripts

SICLIMAT X OS ist ein älteres Managementsystem, das zusammen mit Simatic S7 SPS-basierten Subsystemen eingesetzt wird. Das Managementsystem bietet eine Umgebung für gescriptete Ausführungen von Programmen, die in einer proprietären Sprachspezifikation namens TECLA (Abkürzung für Technical Language) geschrieben sind. Die Scripts bieten Funktionen wie das Lesen/Schreiben von Datenpunktattributen, das Drucken von Meldungen oder Datei-I/O. Solche Scripts werden dazu genutzt, systemweite Funktionen auszuführen. Die zugrundeliegende Script-Runtime interagiert mit den SICLIMAT X OS-Diensten, um Aktionen wie das Schreiben/Lesen von Datenpunkten auszuführen.

Überblick über TECLA-Scripting-Mechanismus in SICLIMAT X OS
Überblick über TECLA-Scripting-Mechanismus in SICLIMAT X OS

Übersicht über den Migrationsprozess

Desigo CC bietet eine gescriptete Ausführung von Aktionen mit JavaScript™ als Programmiersprache. Neben den Standardfunktionen und -operatoren der Sprache wurden zusätzliche Funktionen wie das Lesen/Schreiben von Datenpunkten in der Standardbibliothek hinzugefügt. So können Techniker Steuerungsprogramme in JavaScript™ verfassen und dabei Funktionen aus der Bibliothek nutzen. Folgender Code-Auszug zeigt ein Beispielscript:

var sp = BrowserObject("System1.ManagementView:..TemperatureSetpoint");

var value = read(sp,"PresentValue");

console.log(value);

if(value < 22)

var result= executePropertyCommand(sp,"PresentValue", "Write","26");

 

if (result.error)

{

console.Log("Command failed);

}

Jedes derartige Script-Dokument wird im Desigo CC-Projekt gespeichert und als Instanz eines Datenpunkts dargestellt. Sie bilden die Schnittstelle zum Starten, Stoppen und Überwachen des Status der Script-Ausführung. Daher können diese repräsentativen Datenpunkte in Applikationen wie Makros und Reaktionen dazu genutzt werden, eine Script-Ausführung zu starten.

Weil eine direkte Beziehung zwischen einem TECLA Script-Dokument und einer Instanz eines JavaScript™-Objekts in Desigo CC besteht, konvertieren wir jedes TECLA-Script-Dokument in eine entsprechende JavaScript Der Konvertierungsprozess wird von einem sprachübergreifenden Compiler ausgeführt, der die Sprachkonstrukte (wie Bedingungen, Loops oder Operatoren) konvertiert und Systemdienstfunktionen in TECLA (wie das Lesen/Schreiben von Datenpunkten) durch Entsprechungen aus der Desigo CC-Standardbibliothek ersetzt. Da viele Systemdienstfunktionen in TECLA über eine Entsprechung in der Standardbibliothek verfügen, enthält die Siclimat-Erweiterung eine zusätzliche JavaScript Nicht alle Funktionen aus TECLA sind in der Desigo CC-Runtime möglich. Im Fall einer fehlenden entsprechenden Funktion wird dem Benutzer während des Migrationsprozesses eine Meldung angezeigt. Daher kann es nötig sein, das migrierte TECLA-Script manuell zu ändern oder zu erweitern, sodass Workarounds für fehlende Teile erstellt werden können. Die folgende Abbildung zeigt eine Übersicht über die Beziehung zwischen den TECLA-Scripts und den JavaScript™ Objekten in Desigo CC.

Entsprechungen für Script-Objekte im System
Entsprechungen für Script-Objekte im System

Wichtige Punkte bei der Migration von TECLA-Scripten

Fehlerbehandlung

Die Konstrukte FWHILE und FWHEN, die als Codeteile für den Umgang mit Fehlerbedingungen entworfen wurden, werden durch Try-/Catch-Blöcke ersetzt. Die ursprünglichen TECLA-Fehlercodes werden auf Desigo CC-spezifische Codes abgebildet, die im Anhang aufgeführt sind.

Mehrsprachige Scripte

TECLA-Scripte können mit englischer oder deutscher Syntax und englischen/deutschen Funktionsnamen geschrieben werden. Nach der Migration basieren das JavaScript™ und seine Funktionsaufrufe jedoch nur auf englischen Texten. Die in der Standardbibliothek definierten Funktionen basieren ebenfalls auf englischen Namen.

Projekte auf mehreren Systemen

In einem verteilten System befinden sich Datenpunkte in den Containern der jeweiligen Systeme. Das Migrationstool muss Datenpunkte, die in den TECLA-Scripten referenziert werden, finden. Hierzu geht das Migrationstool bei einem Projekt mit mehreren Systemen durch alle verfügbaren Systeme und durchsucht in jedem System die Technische Sicht und dann die Betreibersicht.
Hinweis: Diese virtuellen Objekte (Rechenwert genannt) werden nur in der Applikationssicht gesucht. Wenn das Migrationstool den Datenpunkt in keinem dieser Systeme finden kann, wird ein Fehler in der Migrationsübersicht protokolliert.

JavaScript™-Funktionen in der Siclimat EM-Bibliothek

Die Bibliothek für SICLIMAT X enthält eine Reihe von JavaScript™-Funktionen, mit denen Sie SICLIMAT X-spezifische Aktionen wie SetOperatingMode (Betriebsart) ausführen können. Solche Funktionsaufrufe können in Erweiterungen und neuem, von Ihnen erstelltem JavaScript™-Code verwendet werden.

Datenpunkt-Eigenschaftswerte überschreiben

Wenn sich ein Objekt im manuellen Modus befindet, schlägt das Schreiben der Standardeigenschaft fehl, und die Meldung wird im Konsolen- und Trace-Kanal protokolliert.

Kalender ist in JavaScript™ nicht verfügbar

Der Zugriff auf Kalendereinträge wie spezielle Tage, Feiertage oder Wochenenden, ist in JavaScript nicht unterstützt.

Erstellung virtueller Objekte

Vor der Script-Migration muss der Benutzer manuell ein virtuelles Objekt unter Applikationssicht > Logik > Virtuelle Objekte erstellen. Wenn das virtuelle Objekt jedoch nicht erstellt wurde und der Verweis im migrierten JavaScript™ nicht aufgelöst wird, kann der Benutzer das Objekt nach der Migration erstellen und den Verweis in das migrierte JavaScript™ ziehen. Der Name des virtuellen Objekts sollte mit einer Zahl beginnen. Virtuelle Objekte müssen mit einem von vier Typen erstellt werden: Analog(A), Multistate(M), Binär(B) und Unsigniert(Z). Wenn das virtuelle Objekt einen benutzerdefinierten Namen hat (zum Beispiel BenutzerdefiniertesVirtuellesObjekt1), der nicht den Namenskonventionen entspricht, sollte das Objekt erstellt werden und der Verweis im Script sollte manuell geändert werden.

Beispiele von Objektmodellen und Namen virtueller Objekte (von SICLIMAT)

GMS_Virtual_Analog

1RWA0

1RWA100

GMS_Virtual_Multistate

1RWM0

1RWM100

GMS_Virtual_Binary

1RWB0

1RWB100

GMS_Virtual_Unsigned

1RWZ0

1RWZ100

 

Beispiele für SET/SOLL, SETOP/SOLLBA, SWITCH/SCHALTE, und SWITCHOP/SCHALTEBA

SET / SOLL:

 

SETOP / SOLLBA:

 

SWITCH / SCHALTE:

 

SWITCHOP / SCHALTEBA:

 

Matrix für mögliche Eigenschaften von Objekten für SET/SOLL, SETOP/SOLLBA, SWITCH/SCHALTE und SWITCHOP/SCHALTEBA

Eigenschaften von Objekten

Command

Objekttyp

Eigenschaft

SETZEN

Sollwert, Stellbefehl

Sollwert

Regler

Grundsollwert

OptStell

AktualSollwert

SOLLBA

Sollwert, Stellbefehl

Sollwert

Regler

Grundsollwert

SCHALTEN

Schaltbefehl

Sollstufe

Opt Schalt

AktualSollstufe

SCHALTEBA

Schaltbefehl

Sollstufe

 

Auflösung des Fehlers Ziel nicht gefunden für SET/SOLL, SETOP/SOLLBA, SWITCH/SCHALTE und SWITCHOP/SCHALTEBA

In der TeclaJavascript™-Bibliothek werden für SET, SETOP, SWITCH, SWITCHOP feste Eigenschaften verwendet.

Während der Ausführung des Tecla-Scripts können jedoch diese festgelegten Eigenschaften in Objekten fehlen, wenn andere Objekttypen verwendet werden, was zur Fehlermeldung Ziel nicht gefunden führt. Der Benutzer kann die erforderliche Eigenschaft explizit mit „Objekt/EigenschaftsName“ definieren, wie im folgenden Beispiel gezeigt.

 

Beispiel 1:

_script.SetProperty("System1.LogicalView:LogicalView.SomeObject", 3);

Ausgabe auf der Konsole: Ziel nicht gefunden

Grund:

Das Objekt EinObjekt verfügt nicht über die Eigenschaft Sollwert, sondern über die Eigenschaft Grundsollwert.

Neue Implementierung:

_script.SetProperty("System1.LogicalView:LogicalView.SomeObject/Grundsollwert", 3);

 

Beispiel 2:

_script.ExecuteSwitch ("System1.LogicalView:LogicalView.SomeObject", 3);

Ausgabe auf der Konsole: Ziel nicht gefunden

Grund:

Das Objekt EinObjekt verfügt nicht über die Eigenschaft Sollstufe, sondern über die Eigenschaft AktualSollstufe.

Neue Implementierung:

_script. ExecuteSwitch("System1.LogicalView:LogicalView.SomeObject/AktualSollstufe", 3);

 

Beispiel 3:

_script.SetProperty("System2.Logical2:Logical2Root.GiWi.DI_CC.CC_SEMINAR.KLIMA2.RF1_DRUCKREG.DRUCK_REGL", 180);

Ausgabe auf der Konsole: Ziel nicht gefunden

Grund:

Das Objekt DRUCK_REGL verfügt nicht über die Eigenschaft Sollwert, sondern über die Eigenschaft Grundsollwert.

Neue Implementierung:

_script.SetProperty("System2.Logical2:Logical2Root.GiWi.DI_CC.CC_SEMINAR.KLIMA2.RF1_DRUCKREG.DRUCK_REGL/Grundsollwert", 180);

Anhang SICLIMAT X

Abbildung von TECLA-Fehlercodes auf Desigo CC-spezifische Codes

JavaScript-Funktionen in der SICLIMAT-Bibliothek

Das folgende Statement enthält die Datei der JavaScript-Bibliothek.

var _script = include("TeclaScriptLibrary.js" ,"BA_Software_Siclimat_Script_Migration_1");

Funktion Name EN Siclimat

Funktionsname

Zweck

Verwendungsbeispiel der Funktion

 

ReadProperty

Objekteigenschaften lesen und Wert ausgeben

_script.ReadProperty("System1.LogicalView:LogicalView.SomeObject");

OPERATING_MODE

SetOperatingMode

Betriebsart des Objekts festlegen.

0 - Extern

1 –Manuell

2 - Automatisch

3 - BS

_script.SetOperatingMode("System1.LogicalView:LogicalView. SomeObject", 3);

SETZEN

SetProperty

Bestimmten Eigenschaftswert eines Objekts auf einen Wert festlegen.

_script.SetProperty("System1.LogicalView:LogicalView.SomeObject", 3);

SOLLBA

SetPropertyWithOperationalMode

Betriebsart eines Objekts festlegen und

Bestimmten Eigenschaftswert eines Objekts auf einen Wert festlegen.

_script.SetPropertyWithOperationalMode("System1.LogicalView:LogicalView. SomeObject", 3, 3);

SCHALTEN

ExecuteSwitch

Schaltet die festgelegte Stufe eines Objekts auf einen anderen Wert.

_script.ExecuteSwitch("System1.LogicalView:LogicalView. SomeObject", 3);

SCHALTEBA

ExecuteSwitchWithOperationalMode

Betriebsart eines Objekts festlegen und gesetzte Stufe des Objekts auf einen anderen Wert festlegen.

_script.ExecuteSwitchWithOperationalMode ("System1.LogicalView:LogicalView.SomeObject", 3 , 3);

WAIT

Warten

Ausführung eines Scripts während „hh:mm:ss“ stoppen.

_script.Wait("00:00:01");

WAIT_S

WaitForSeconds

Ausführung eines Scripts während der angegebenen Anzahl Sekunden stoppen.

var variable1 = 10; _script.WaitForSeconds(variable1);

WAIT_M

WaitForMinutes

Ausführung eines Scripts während der angegebenen Anzahl Minuten stoppen.

var variable1 = 10; _script.WaitForMinutes(variable1);

Wait_V

Wait_V

Ausführung eines Scripts für Zeitspanne stoppen; Zeitwerte werden von lokalen Variablen für Stunden, Minuten und Sekunden übernommen

var variable1 = 01; _script.Wait_V(variable1, variable1, variable1);

LIMIT

SetLimitPropertyValue

Ändert einen bestimmten Grenzwert eines Objekts

_script.SetLimitPropertyValue("System1.LogicalView:LogicalView.SomeObject/Limit Property ", 3);

WRITE

WritePropertyValue

Direkte Änderung von Objekteigenschaften.

_script. WritePropertyValue("System1.LogicalView:LogicalView.SomeObject/Limit Property ", 3);

COUNTER

SetCounter

Wert des Zählerobjekts ändern.

_script.SetCounter("System1.LogicalView:LogicalView. SomeObject", 3);

CALCULATION_VALUE

SetCalculationValue

Ändert den aktuellen Wert eines Berechnungsobjekts

_script.SetCalculationValue("System1.LogicalView:LogicalView.006XTGA.E0.AS30.LICHT_LINIEN.09.SB/Iststufe", 10);

LOG

GetLog

Logarithmischen Wert abrufen.

_script.GetLog(10);

ROOT

GetRoot

Root-Wert abrufen.

_script.GetRoot(10);

DEGSIN

GetDegSIN

SIN-Wert in Grad abrufen

_script.GetDegSIN(10);

DEGCOS

GetDegCOS

COS-Wert in Grad abrufen

_script.GetDegCOS(10);

DEGTAN

GetDegTAN

TAN-Wert in Grad abrufen

_script.GetDegTAN(10);

RADSIN

GetRadSIN

SIN-Wert in Bogenmass abrufen

_script.GetRadSIN(10);

RADCOS

GetRadCOS

COS-Wert in Bogenmass abrufen

_script.GetRadCOS(10);

RADTAN

GetRadTAN

TAN-Wert in Bogenmass abrufen

_script.GetRadTAN(10);

TRUNC

Trunkieren

Zahlen nach Dezimalstelle trunkieren. Auch negative Floating-Zahl aufrunden.

_script. Truncate (10.33);

DAY

GetCurrentDay

Wert eines Wochentags 1 bis 7 abrufen.

_script.GetCurrentDay()

TIME

GetCurrentTime

Prüfen, ob Zeit im 24-Stunden-Format vorliegt, sonst Druckerfehler.

_script.GetCurrentTime("6:00:00");

 

GetTime

Aktuelle Zeit im 24-Stunden-Format „hh:mm:ss“ abrufen

_script.GetTime( );

 

GetDay

Verschiedene Datumsfunktionen bereitstellen, z. B. Tag: 1 – 31 Monat: 1 – 12 Jahr: 1997 – 2025 Stunde: 0 – 23 Minute: 0 – 59 Wochentag: 1(Montag) - 7(Sonntag)

Tag_im_Jahr: 1 - 366

Kalenderwoche: 1 - 52

Minute_am_Tag: 0 - 1440

Sommerzeit: 0 oder 1

Schaltjahr: 0 oder 1

_script.GetDay() _script.GetDay( "SATURDAY"); _script.GetDay( "day"); _script.GetDay( "month"); _script.GetDay( "year"); _script.GetDay( "hour"); _script.GetDay( "minute"); _script.GetDay( "weekday"); _script.GetDay( "day_of_year"); _script.GetDay( "week_of_year"); _script.GetDay( "minute_of_day"); _script.GetDay( " daylight_savings_time "); _script.GetDay( " leap_year"); _script.GetDay( " leap_year");

Starten

StartScript

Startet die Ausführung des Scripts auf demselben System.

_script.StartScript("SomeScriptName");

CANCEL

CancelScript

Stoppt die Ausführung des Scripts auf demselben System.

_script.CancelScript("SomeScriptName ");

FUNCTION

CallFunction

Startet die Ausführung des Subroutinen-Scripts auf demselben System.

var result =_script.CallFunction("SomeScriptName ", a, b);

var result1 = result[0]; var result2 = result[1];

_ERROR

GetErrorCode

Fehlercode abrufen, im Fall eines Lese-/Schreibfehlers eines Objekts ist der Fehlercode auf die Variable gesetzt. (Aktuell Ausgabe von 0 oder 1, 0 im Fall keines Fehlers und 1 im Fall eines Fehlers)

_script.GetErrorCode();

Umgang mit fehlenden Funktionen im System in SICLIMAT X

Einige Funktionen, die nicht in Desigo CC migriert werden, werden durch Dummy-Funktions-Calls im migrierten JavaScript ersetzt. Folgend die Liste dieser Funktionen und mögliche Behebungsideen.

Funktion Name EN Siclimat

Funktionsname als Dummy

Zweck

Workaround (gegebenenfalls)

TEXT

SET_TEXT

Ausgabe von einfachem Text über die Meldungsroute.

 

PROTOCOL

SET_PROTOCOL

Ausgabe eines bestehenden Protokolls auf Druckern

 

PRINTER_SHIFT

SET_PRINTER_SHIFT

Umschalten der Ausgabe eines offenen Protokolls von Drucker1 auf Drucker2.

 

RPRINTER_SHIFT

SET_RPRINTER_SHIFT

Zurücknahme der Umschaltung der Ausgabe eines offenen Protokolls von

 

PRINTER_ADD_ON

SET_PRINTER_ADD_ON

Schaltet die Ausgabe eines offenen Protokolls von Drucker1 zusätzlich

 

RPRINTER_ADD_ON

SET_RPRINTER_ADD_ON

Zieht die Ausgabe eines offenen Protokolls auf Drucker1 und auf Drucker2 zurück.

 

PRINTER_LOCK

SET_PRINTER_LOCK

Sperrt die Ausgabe eines offenen Protokolls.

 

RPRINTER_LOCK

SET_RPRINTER_LOCK

Zieht die Druckersperre für die Ausgabe eines offenen Protokolls zurück.

 

MACRO_SYSTEM

SET_MACRO_SYSTEM

Löst ein beliebiger UNIX Systembefehl aus.

 

MAKROSYSTEM

SET_MAKROSYSTEM

Löst ein beliebiger UNIX Systembefehl aus.

 

MACRO_SYSTEM_W

SET_MACRO_SYSTEM_W

Löst ein beliebiger UNIX Systembefehl aus.

 

SET_SCHREIBE_VAR

SET_SCHREIBE_VAR

Schreibe Datenpunktwerte an die Datei.

 

SET_LESE_VAR

SET_LESE_VAR

Lese Datenpunktwerte von der Datei.

 

SETHEATING

SET_HEATING

Legt den Modus der Heizungssteuerung fest

Mit gleichwertigen Schreibvorgängen auf Datenpunkten ersetzen.

SETCHILLING

SET_CHILLING

Legt den Modus der Kältesteuerung fest

Mit gleichwertigen Schreibvorgängen auf Datenpunkten ersetzen.

OPMODE

SET_OPMODE

Ändert den Betriebmodus des Objekts.

Durch gleichwertige Schreibvorgänge auf Datenpunkten ersetzen oder Funktion „SetOperatingMode“ aus der Tecla-JavaScript-Bibliothek verwenden.

OSWITCH

SET_OSWITCH

Ähnlich des Befehls SWITCH/SCHALTEN. Zusätzlich wird die Überwachung des Verbrauchers über das Energiemanagementprogramm begonnen.

Mit gleichwertigen Schreibvorgängen auf Datenpunkten ersetzen.

PHASE

SET_PHASE

Setzt die Phasenmarkierung eines Objekts

 

DCOS

SET_DCOS

Ändert die DCOS-Markierung eines Objekts.

 

SWITCH_OFF

SET_SWITCH_OFF

Ändert die Ausschalt-Markierung eines Objekts.

 

BUFFER

SET_BUFFER

n/a

 

RECOVER

SET_RECOVER

Koordiniert die „Wiederherstellung“ eines TECLA-Befehls.

 

GLOBAL

SET_GLOBAL

n/a

 

PRINTER

SET_PRINTER

n/a

 

EVENT

SET_EVENT

n/a

 

AWAIT

SET_AWAIT

n/a

 

TCC

SET_TCC

n/a

 

MACRO_T

SET_MACRO_T

n/a

 

CLASS

SET_CLASS

n/a

 

TOWARD

SET_TOWARD

n/a

 

TO

SET_TO

n/a

 

ZLOG

GetZLOG

n/a

Vom Scripting bereitgestellte logarithmische Funktionen verwenden

ZSIN

GetZSIN

n/a

Vom Scripting bereitgestellte logarithmische Funktionen verwenden

ZCOS

GetZCOS

n/a

Vom Scripting bereitgestellte logarithmische Funktionen verwenden

ZTAN

GetZTAN

n/a

Vom Scripting bereitgestellte logarithmische Funktionen verwenden

TECLA-Calls

  1. Servicepack 501 wurde erfolgreich installiert.
  1. Melden Sie sich bei der Konsole als Benutzer sicx an.
  2. Starten Sie das teclaCalls-Script.
    Dies wird eine Liste der aufgerufenen TECLA-Scripts erstellen, inklusive der Information, wo sie aufgerufen werden. Dies beinhaltet Scripts, die ausgerufen werden von:
    a. Zeitpläne
    b. Alarme
    c. Bilder
    d. Scripts
    Hinweis: Eine Liste aller Optionen kann mit teclaCalls –h angezeigt werden.
  1. Die Liste der TECLA-Aufrufe in Siclimat-X wird im aktuellen Arbeitsverzeichnis erstellt oder optional in einem angewählten Verzeichnis unter dem Dateinamen scriptCalls.csv ausgegeben.
  2. Die Liste enthält kommagetrennte Werte und kann in Microsoft Excel importiert werden.