1.Haftungsausschluss
Auch wenn die Unterlagen mit großer Sorgfalt erstellt und geprüft sind, können Fehler nicht vollkommen ausgeschlossen werden. Deshalb übernimmt der Inverkehrbringer bezüglich des Inhalts weder eine juristische Verantwortung, noch irgendeine Gewähr.
Technische Änderungen bleiben vorbehalten!
Technische Änderungen bleiben vorbehalten!
2.Einführung
Seit der Firmware 2.1 besitzt der HS/FS die Möglichkeit, durch eigene Logikmodule die Logik-Funktionalität des HS/FS zu erweitern.
2.1.Nummernkreise
Damit keine Überschneidungen bei der ID der Logikmodule verschiedener Entwickler auftreten, bieten wir eine zentrale Verwaltung der Nummernkreise an.
Um sich einen Nummerkreis reservieren zu lassen, senden Sie uns eine entsprechende Bitte per Email an logik [at] dacom-ha.de.
Um sich einen Nummerkreis reservieren zu lassen, senden Sie uns eine entsprechende Bitte per Email an logik [at] dacom-ha.de.
3.Eigenes Logikmodul erstellen
Jedes Logikmodul kann genau einen Baustein enthalten. Die Module werden als einzelne Dateien mit der Dateiendung HSL im HS/FS-Experte Unterverzeichnis \logic abgelegt. Wie die Definitionsdatei eines Logikmoduls auszusehen hat, wird in diesem Kapitel näher erläutert.
3.1.Zuweisen eines Dateinamens
Der Dateiname eines Logikmoduls besteht aus der Baustein-ID und einer Kurzbeschreibung und besitzt die Dateiendung ".hsl". ID und Kurzbeschreibung werden durch einen Unterstrich getrennt.
Achtung: Baustein-ID
Die Baustein-ID muss eine fünfstellige Nummer aus dem Nummernkreis 10.000-19.999 sein.
Hinweis: Entwicklungs-ID
Die Nummern 10.000 bis 10.999 werden nicht "öffentlich" verwendet, d.h. jeder Entwickler kann während der Entwicklungszeit (oder für Bausteine, die er nicht veröffentlichen will) diesen Nummernkreis beliebig verwenden, da diese Nummern niemals von anderen veröffentlichten Bausteinen verwendet werden.
Um möglichst doppelte Baustein-IDs zu vermeiden, gibt es die Möglichkeit, sich einen bestimmten Nummernkreis reservieren zu lassen. So kann verhindert werden, dass mehrere Benutzer die gleichen Nummern verwenden.
Hinweis: IDs für veröffentlichte Bausteine
Ein Nummernkreis, den Sie von uns erhalten, liegt immer im Bereich von 11.000 bis 19.999.
Damit ist sichergestellt, dass veröffentlichte Baustein-IDs sich nicht mit privaten (Nummernkreise von 10.000 bis 10.999) überschneiden.
Damit ist sichergestellt, dass veröffentlichte Baustein-IDs sich nicht mit privaten (Nummernkreise von 10.000 bis 10.999) überschneiden.
Beispiel für einen Dateinamen: 11001_Sinus.hsl.
Achtung: Eindeutige Baustein-ID
Die Baustein-ID muss eindeutig sein. Dass heißt, die Baustein-ID darf im Verzeichnis \logic nicht doppelt verwendet werden. Sobald ein Baustein verwendet wird, darf die Baustein-ID nicht mehr geändert werden. Die Baustein-ID kann also nur vor einer Verwendung im Projekt beliebig geändert werden!
3.2.Logikmodule in Projekt einbinden
Wurde ein Logikmodul in das HS/FS-Experte Unterverzeichnis \logic kopiert, muss der HS/FS-Experte neu gestartet werden. Erst nach einem Neustart erkennt er neue Bausteine. Ab dem Neustart stehen die neuen Module im grafischen Logikeditor zur Verfügung.
3.2.1.System-Pfade
Der vollständige Pfad zum \logic-Verzeichnis lautet in der Regel:
Experte Version | Pfad zum '\logic'-Verzeichnis |
---|---|
Ab Experte v2.4 | - [Öffentliche Dokumente]\HS+FS Experte\logic oder - [Öffentliche Dokumente]\HS-FS Experte\logic |
Ab Experte v2.5 | - [Öffentliche Dokumente]\HS+FS Experte [version]\logic oder - [Öffentliche Dokumente]\HS-FS Experte [version]\logic |
Ab Experte v2.10 | [Öffentliche Dokumente]\[Firma]\HS+FS Experte [version]\logic |
Die [Öffentlichen Dokumente] finden Sie standarmäßig hier:
Windows Version | Pfad |
---|---|
Windows XP | C:\Dokumente und Einstellungen\All Users\Dokumente |
Windows Vista / 7 / 8 / 10 | C:\Users\Public\Documents |
Das [Programme]-Verzeichnis liegt üblicherweise hier:
Windows Version | Pfad (32-bit Windows) | Pfad (64-bit Windows) |
---|---|---|
Windows XP | C:\Programme | C:\Programme x(86) |
Windows Vista / 7 / 8 / 10 | C:\Program files | C:\Program files x(86) |
4.Aufbau der Definitionsdatei
Für jedes Logikmodul wird eine eigene Definitionsdatei benötigt.
Eine Definitionsdatei ist zeilenweise aufgebaut und jede Zeile besteht aus einer Satzart und mehreren Eigenschaftsfeldern, welche durch das Zeichen "|" getrennt sind.
Eine Definitionsdatei ist zeilenweise aufgebaut und jede Zeile besteht aus einer Satzart und mehreren Eigenschaftsfeldern, welche durch das Zeichen "|" getrennt sind.
Satzart | Beschreibung | Siehe Kapitel |
---|---|---|
5000 | Informationen für den HS/FS-Experte | siehe hier |
4999 | Definition der Fremdsprachen für den HS/FS-Experte | siehe hier |
5001 | Definition des Logikbausteins | siehe hier |
5002 | Definition eines Eingangs | siehe hier |
5003 | Definition einer internen Speichervariable | siehe hier |
5004 | Definition eines Ausgangs | siehe hier |
5012 | Definition einer Formel | siehe hier |
Hinweis: Kommentare
Kommentare werden innerhalb der Definitionsdatei mit einem "#" eingeleitet.
4.1.Satzart 5000 – Definition für HS/FS-Experte
Die folgenden Einstellungen haben noch keinen Einfluss auf die Funktionalität des Logikmoduls. Die Zeile mit der Satzart 5000 definiert lediglich Informationen, die vom HS/FS-Experte benötigt werden.
Diese Zeile darf nur einmal im Logikmodul vorkommen und muss als erstes innerhalb der Datei definiert werden. Alle Felder vom Typ Text werden in Hochkommata angegeben.
Feld | Typ | Beschreibung |
---|---|---|
5000 | Zahl | Satzart |
Bezeichnung | Text | Bezeichnung des Bausteins im HS/FS-Experte. Die Struktur im HS/FS-Experte ermöglicht eine Kategorisierung der Bausteine. Bis HS/FS-Experte Version 2.3: Es darf maximal eine Kategorie verwendet werden! (Bsp: Kategorie a\Kategorie b\Baustein wäre ungültig) Ab HS/FS-Experte Version 2.4: Es darf eine beliebige Kategorietiefe verwendet werden! (Bsp: Kat1\Kat2\Kat3\Kat4\Baustein wäre gültig) Beispiel ohne Kategorie: UND-Gatter (2 Eingänge) Beispiel mit einer Kategorie: Weitere Bausteine\Telegrammgenerator |
Remanent | Zahl | Ist dieser Baustein als remanent definiert: 1 = ja 0 = nein Achtung: Remanent-Kennzeichnung Ist der Baustein hier nicht als remanent gekennzeichnet, so sind als remanent gekennzeichnete Variablen trotzdem flüchtig! (vgl. Satzart 5003). |
Anzahl Eingänge | Zahl | Anzahl der definierten Eingänge. (mindestens 1 Eingang muss definiert sein!) |
Bezeichnung Eingang n | Text | Alle Bezeichnungen der Eingänge. Enthält ein Baustein 4 Eingänge, werden vier Bezeichnungen benötigt. Die einzelnen Eingangs-Bezeichnungen werden wiederum durch ein "|"-Zeichen voneinander getrennt. |
Anzahl Ausgänge | Zahl | Anzahl der definierten Ausgänge. (mindestens 1 Ausgang muss definiert sein!) |
Bezeichnung Ausgang n | Text | Alle Bezeichnungen der Ausgänge. Enthält ein Baustein 4 Ausgänge, werden vier Bezeichnungen benötigt. Die einzelnen Ausgangs-Bezeichnungen werden wiederum durch ein "|"-Zeichen voneinander getrennt. |
Versions-Nr. (ab Experte-Version 2.7) | Text | Der hier angegebene Text wird im GLE als Versions-Nr. angezeigt |
Nr. eines Eingangs oder 0 (ab Experte-Version 4.7) | Zahl | Verwendung nur für HSL 2.0 Bausteine! HSL 2.0: Eingang, mit dem der Ziel-Port bei einer Port-Weiterleitung festgelegt wird. Sonst: 0 |
Nr. eines Eingangs oder 0 (ab Experte-Version 4.7) | Zahl | Verwendung nur für HSL 2.0 Bausteine! HSL 2.0: Eingang, mit dem der Basis-Pfad bei einer Port-Weiterleitung festgelegt wird. Sonst: 0 |
Beispiel anhand eines UND-Gatters:
#5000|Bezeichnung+Pfad im GLE|Remanent(1/0)|Anzahl Eingänge|(Namen der Eingnge)|Anzahl Ausgänge|(Namen der Ausgänge)
5000|"UND-Gatter\2 Eingänge"|0|2|"E1"|"E2"|4|"A1"|"A2 neg"|"A3 (sbc)"|"A4 neg (sbc)"|"v1.23"|0|0
Beispiel anhand der Ein-/Ausschaltverzögerung:
#5000|Bezeichnung+Pfad im GLE|Remanent(1/0)|Anzahl Eingänge|(Namen der Eingnge)|Anzahl Ausgänge|(Namen der Ausgänge)
5000|"Verzögerung\Ein/Ausschaltverzögerung"|0|3|"E1 EIN (Sek.)"|"E2 AUS
(Sek.)"|"E3 Signal"|2|"A1"|"A1 neg"|"v2.7.110721"|0|0
4.1.1.Satzart 4999 – Definition mehrerer Sprachen
Hinweis: Optionale Angabe
Diese Satzart ist optional und wird nur bei Verwendung mehrerer Sprachen im HS/FS-Experte benötigt.
Es brauchen nur die Fremdsprachen definiert zu werden! Für die Sprache, die in der Satzart 5000 verwendet wurde (üblicherweise Deutsch ("de")), muss keine 4999er Zeile angelegt werden!
Es brauchen nur die Fremdsprachen definiert zu werden! Für die Sprache, die in der Satzart 5000 verwendet wurde (üblicherweise Deutsch ("de")), muss keine 4999er Zeile angelegt werden!
Sollte der HS/FS-Experte eine Sprache verwenden, die nicht im Logikbaustein mittels der Satzart 4999 definiert ist, werden die Texte aus Satzart 5000 angezeigt.
Der Logikbaustein kann nur in Sprachen, die im Experte eingestellt werden können, angezeigt werden. Daher können Sprachdefinitions-Zeilen anderer Sprachen nicht vom Baustein verwendet werden!
Für jede Fremdsprache muss genau eine 4999er-Zeile angelegt werden!
Der Logikbaustein kann nur in Sprachen, die im Experte eingestellt werden können, angezeigt werden. Daher können Sprachdefinitions-Zeilen anderer Sprachen nicht vom Baustein verwendet werden!
Für jede Fremdsprache muss genau eine 4999er-Zeile angelegt werden!
Achtung: Position der Definitionszeile!
Falls diese Satzart verwendet wird, muss die Definitionszeile immer nach der Definitionszeile von Satzart 5000 angelegt werden!
Feld | Typ | Beschreibung |
---|---|---|
4999 | Zahl | Satzart |
Sprachkürzel | Text | 2-stelliges Sprachkürzel der jeweiligen Sprache. Allgemein gilt: Für jede Sprache wird das TLD (Top-Level-Domain) Kürzel des Landes verwendet, in dem die Sprache beheimatet ist. Ausnahme: Englisch, da an vielen Stellen im HS/FS Experte historisch bereits das Kürzel "en" für Englisch verwendet wurde. |
Bezeichnung | Text | Bezeichnung des Bausteins in der o.g. Sprache im HS/FS-Experte. Die Struktur im HS/FS-Experte ermöglicht eine Kategorisierung der Bausteine. (siehe Satzart 5000) |
Bezeichnung Eingang n | Text | Alle Bezeichnungen der Eingänge. Enthält ein Baustein 4 Eingänge, werden vier Bezeichnungen benötigt. Die einzelnen Eingangs-Bezeichnungen werden wiederum durch ein "|"-Zeichen voneinander getrennt. |
Bezeichnung Ausgang n | Text | Alle Bezeichnungen der Ausgänge. Enthält ein Baustein 4 Ausgänge, werden vier Bezeichnungen benötigt. Die einzelnen Ausgangs-Bezeichnungen werden wiederum durch ein "|"-Zeichen voneinander getrennt. |
Beispiel anhand eines UND-Gatters (Sprache "Englisch" = "en"):
#4999|Sprach-Kürzel|Bezeichnung+Pfad im GLE|(Namen der Eingänge)|(Namen der Ausgänge)
4999|"en"|"AND gate\2 inputs"|"i1"|"i2"|"o1"|"o2 neg"|"o3 (sbc)"|"o4 neg (sbc)"
Beispiel anhand der Ein-/Ausschaltverzögerung (Sprache "Englisch" = "en"):
#4999|Sprach-Kürzel|Bezeichnung+Pfad im GLE|(Namen der Eingänge)|(Namen der Ausgänge)
4999|"en"|"Delay\Switch on/off delay"|"i1 ON (sec.)"|"i2 OFF (sec.)"|"i3 Signal"|"o1"|"o1 neg"
Beispiel anhand eines UND-Gatters (Sprache "Französisch" = "fr"):
#4999|Sprach-Kürzel|Bezeichnung+Pfad im GLE|(Namen der Eingänge)|(Namen der Ausgänge)
4999|"fr"|"Porte\ET, 2 entrées"|"e1"|"e2"|"s1"|"s2 neg"|"s3 (sbc)"|"s4 neg (sbc)"
Beispiel anhand der Ein-/Ausschaltverzögerung (Sprache "Italienisch" = "it"):
#4999|Sprach-Kürzel|Bezeichnung+Pfad im GLE|(Namen der Eingänge)|(Namen der Ausgänge)
4999|"it"|"Ritardo\Ritardo di accensione/spegnimento"|"i1 ON (sec.)"|"i2 OFF (sec.)"|"i3 segnale"|"u1"|"u1 neg"
4.2.Satzart 5001 – Definition des Bausteins
Definiert die Eigenschaften des Bausteins.
Folgende Eigenschaften sind notwendig um einen Baustein zu definieren:
Folgende Eigenschaften sind notwendig um einen Baustein zu definieren:
Feld | Typ | Beschreibung |
---|---|---|
5001 | Zahl | Satzart |
Anzahl Eingänge | Zahl | Mindestens ein Eingang muss vorhanden sein. Siehe hierzu auch Satzart 5002. |
Anzahl Ausgänge | Zahl | Mindestens ein Ausgang muss vorhanden sein. Siehe hierzu auch Satzart 5004. |
Anzahl Zeitspeicher | Zahl | Anzahl der vom Baustein verwendeten Zeitspeicher. Zeitspeicher sind dazu gedacht, die Berechnung eines Bausteins nach einer bestimmten Zeit erneut zu starten. Die Ausführungszeit eines Zeitspeichers kann während einer Berechnung überschrieben werden. Hier ist der Wert 0 möglich. Die Verwendung von Zeitspeichern ist optional. |
Anzahl Speichervariablen | Zahl | Anzahl der vom Baustein verwendeten internen (lokalen) Speichervariablen. Eine Speichervariable kann remanent sein. Siehe hierzu auch Satzart 5003. Hier ist der Wert 0 möglich. Die Verwendung von Speichervariablen ist optional. |
Berechnung bei Initialisierung | Boolean (Zahl) | Gibt an, ob der Baustein bei der Initialisierung berechnet wird. Siehe hierzu auch Berechnung eines Bausteins. Erlaubte Werte:
|
Kodierter Formel-Block (optional) | Boolean (Zahl) | Gibt an, ob der Baustein kodierte Zeilen vom Typ 5012 enthält. Erlaubte Werte:
Hinweis Dieser Parameter wird im Zusammenhang mit dem Programm "Logikbaustein_AES256.exe" (Doku) verwendet. Hinweis Dieser Parameter wird vom HS/FS Experte benötigt, damit bei kodierten Bausteinen der kodierte Teil auf den HS/FS übertragen wird! |
Beispiel ohne Angabe zum KFB anhand eines UND-Gatters:
#5001|Anzahl Eingänge|Anzahl Ausgänge|Anzahl Zeitspeicher|Anzahl Speichervariable|Berechnung bei Init.(j/n)|KFB(j/n)
5001|2|4|0|0|1|0
Beispiel mit Angabe zum KFB anhand der Ein-/Ausschaltverzögerung:
#5001|Anzahl Eingänge|Anzahl Ausgänge|Anzahl Zeitspeicher|Anzahl Speichervariable|Berechnung bei Init.(j/n)|KFB(j/n)
5001|3|2|2|2|0|0|0
4.3.Satzart 5002 – Definition eines Eingangs
Satzart 5002 definiert die Eigenschaften eines Eingangs. Für jeden in Satzart 5000 definierten Eingang muss eine Zeile der Satzart 5002 definiert sein.
Feld | Typ | Beschreibung |
---|---|---|
5002 | Zahl | Satzart |
Eingang | Zahl | Der Index des Eingangs. (Beginnend mit 1, fortlaufend) |
Init.-Wert | Zahl / Text | Wert, mit dem der Eingang bei der Initialisierung belegt wird. Ist der Eingang vom Typ "Text", muss der Init.-Wert in Hochkommata gesetzt werden. Achtung Der Typ des Init.-Wertes muss mit der Angabe im Feld "Datenformat" übereinstimmen! |
Datenformat | Zahl | Definiert das Format des Eingangs. Erlaubte Werte:
Numerisch bedeutet Integer- oder Floatwert. Eingänge, die als Text-Eingang definiert werden, können im HS/FS-Experte nur mit K.-Objekten bzw. Ausgängen belegt werden, die ebenfalls vom Typ Text (z.B. 14-Byte) sind. Achtung Der Typ des Init.-Wertes muss mit der Angabe im Feld "Datenformat" übereinstimmen! Die Angabe des Datenformats ist nur für den HS/FS-Experte von Bedeutung. Der HS/FS erkennt das Datenformat anhand des Init.-Wertes. Die beiden Angaben müssen also übereinstimmen! |
Beispiel anhand eines UND-Gatters:
#5002|Eingang|Init.Wert|Datenformat
5002|1|1|0
5002|2|1|0
Beispiel anhand der Textlängen-Berechnung:
#5002|Eingang|Init.Wert|Datenformat
5002|1|""|1
4.4.Satzart 5003 - Definition einer Speichervariable
Die Verwendung von Speichervariablen ist optional. Speichervariablen dienen zur Zwischenspeicherung von Werten. Speichervariablen können auch remanent sein, das heißt, sie behalten ihren Wert auch nach einem Neustart.
Feld | Typ | Beschreibung |
---|---|---|
5003 | Zahl | Satzart |
Speicher | Zahl | Der Index der Variable. (Beginnend mit 1, fortlaufend) |
Init.-Wert | Zahl / Text | Wert, mit dem die Variable initialisiert wird. Bei einem leeren Text muss "" angegeben werden. |
Remanent (j/n) | Boolean (Zahl) | Gibt an, ob der Wert der Variable remanent gespeichert wird. Bei remanenter Speicherung bleibt der Wert der Variable auch nach dem Neustart erhalten. Erlaubte Werte:
Werden remanente Speichervariablen verwendet, muss dies in Satzart 5000 ebenfalls definiert werden! Achtung: Remanent-Kennzeichnung Ist in Satzart 5000 der Baustein nicht als remanent gekennzeichnet, so ist die Variable auch bei in diesem Feld gesetzter 1 nicht remanent! Hinweis: Anzahl der remanenten Speichervariablen ändern Wird die Anzahl an Remanentspeichern in der Definition eines Logikbausteins verändert und das Projekt mit dem geänderten Baustein auf den HS übertragen, werden sämtliche remanente Daten der projektierten Logikbausteininstanzen dieses Bausteins verworfen! |
Hinweis
Speichervariablen sind lokal. Globale Variablen können wie folgt realisiert werden:
- Ausgänge mit Eingängen im grafischen Logikeditor verbinden.
- Interne oder externe K.-Objekte mit Ein- und Ausgängen verbinden.
Beispiel anhand eines UND-Gatters:
Ein UND-Gatter benötigt keine Speichervariablen.
Beispiel anhand der Ein-/Ausschaltverzögerung:
#5003|Speicher|Init.Wert|Remanent
5003|1|0|0
5003|2|1|0
4.5.Satzart 5004 - Definition eines Ausgangs
Satzart 5004 definiert das Verhalten eines bestimmten Ausgangs. Für jeden in Satzart 5000 definierten Ausgang muss eine Zeile der Satzart 5004 definiert sein.
Feld | Typ | Beschreibung |
---|---|---|
5004 | Zahl | Satzart |
Ausgang | Zahl | Der Index des Ausgangs. (Beginnend mit 1, fortlaufend) |
Init.-Wert | Zahl/Text | Wert, mit dem der Ausgang initialisiert wird. Ist der Ausgang vom Typ "Text", muss der Init.-Wert in Hochkommata gesetzt werden. Achtung Der Typ des Init.-Wertes muss mit der Angabe im Feld "Datenformat" übereinstimmen! |
Runden auf binär | Boolean | Wandelt einen Wert in die Binärform (0 oder 1) um. Bei jedem Wert <> 0 wird der Ausgang mit 1 belegt. Erlaubte Werte:
|
Ausgang-Typ | Zahl | Send / Send by Change Erlaubte Werte:
|
Datenformat | Zahl | Definiert das Format des Ausgangs. Erlaubte Werte:
Numerisch bedeutet Integer- oder Floatwert. Ausgänge, die als Text-Ausgang definiert werden, können im HS/FS-Experte nur mit K.-Objekten bzw. Eingängen belegt werden, die ebenfalls vom Typ Text (z.B. 14 Byte) sind. Achtung Der Typ des Init.-Wertes muss mit der Angabe im Feld "Datenformat" übereinstimmen! Die Angabe des Datenformats ist nur für den HS/FS-Experte von Bedeutung. Der HS/FS erkennt das Datenformat anhand des Init.-Wertes. Die beiden Angaben müssen also übereinstimmen! |
Beispiel anhand eines UND-Gatters:
#5004|Ausgang|Init.-Wert|Binär|Typ|Datenformat
5004|1|0|1|1|0
5004|2|0|1|1|0
5004|3|0|1|2|0
5004|4|0|1|2|0
Beispiel anhand der "Integer zu Text"-Umwandlung:
#5004|Ausgang|Init.-Wert|Binär|Typ|Datenformat
5004|1|""|0|1|1
4.6.Satzart 5012 - Definition einer Formelzeile
Innerhalb der Formelzeile wird die eigentliche Funktionalität eines Bausteins definiert.
Die Formelzeilen werden in der Reihenfolge der Definition ausgeführt. Ein Ändern der Zeilenreihenfolge kann also zu anderen Ergebnissen führen. Eine Formelzeile wird pro Berechnung des Bausteins einmal ausgeführt. Weitere Informationen dazu unter Berechnung eines Bausteins.
Die Formelzeilen werden in der Reihenfolge der Definition ausgeführt. Ein Ändern der Zeilenreihenfolge kann also zu anderen Ergebnissen führen. Eine Formelzeile wird pro Berechnung des Bausteins einmal ausgeführt. Weitere Informationen dazu unter Berechnung eines Bausteins.
Eine Formelzeile besteht aus folgenden Feldern:
Feld | Typ | Beschreibung |
---|---|---|
5012 | Zahl | Satzart |
Ende nach Ausführen | Boolean | Beendet die Berechnung des Bausteins nach der Abarbeitung der Formel, falls das Ergebnis der Bedingung ungleich Null ergibt. Weitere Informationen dazu unter Berechnung eines Bausteins. Erlaubte Werte:
|
Bedingung | Formel | Ist das Ergebnis der Bedingung ungleich Null, wird die Berechnung der "Formel" ausgeführt. Soll das Ergebnis der Bedingung immer True/Wahr sein, so wird das Feld durch zwei Hochkommata gefüllt. Beispiel: "" |
Formel | Formel | Wird ausgeführt, wenn "Bedingung" ungleich Null ergibt. Das Ergebnis der Berechnung kann auf die Pins weitergeleitet werden. |
Zeitformel | Formel | Wird ausgeführt, wenn "Bedingung" ungleich Null ergibt und mindestens ein Zeitspeicher im Baustein definiert wurde. Diese Angabe ist optional. Falls sie nicht benötigt wird, sind Hochkommata zu setzen. Beispiel: "" Das Ergebnis dieser Berechnung dient dem im "Pin Zeitspeicher" zugewiesenen Zeitspeicher als Ausführungszeitpunkt. Der Ausführungszeitpunkt eines Zeitspeichers kann während einer Berechnung verändert werden. Mehr dazu unter Berechnung eines Bausteins. |
Pin - Ausgang | Zahl / Index | In diesen Ausgang wird das Ergebnis der Berechnung im Feld "Formel" geschrieben. Die Angabe ist optional. Wenn dieser Wert gleich Null ist, findet keine Weiterleitung an einen Ausgang statt. |
Pin – Zeitspeicher | Zahl / Index | In diesen Zeitspeicher wird das Ergebnis der Berechnung im Feld "Zeitformel" geschrieben. Das Ergebnis der Zeitformel löst die erneute Berechnung des Bausteins durch den hier zugewiesenen Zeitspeicher aus. Ist das Ergebnis gleich Null, wird der Zeitspeicher angehalten. Bei Werten ungleich Null wird ein Wert in Sekunden erwartet. Das Ergebnis aus "Formel" wird bei einer durch den Zeitspeicher ausgelösten Berechnung in die Variable ON[Index] geschrieben. Die Variable OC[Index] hat während der ausgelösten Berechnung den Wert 1. Mehr zum Thema "Variable" in diesem Kapitel. Die Angabe ist optional. Wenn dieser Wert gleich Null ist, findet keine Weiterleitung an einen Zeitspeicher statt. |
Pin – Speichervariable | Zahl / Index | In diese Speichervariable wird das Ergebnis der Berechnung im Feld "Formel" geschrieben. Die Angabe ist optional. Wenn dieser Wert gleich Null ist, findet keine Weiterleitung an eine Speichervariable statt. |
Pin – Negierter Ausgang | Zahl / Index | In diesen Ausgang wird das negierte Ergebnis der Berechnung im Feld "Formel" geschrieben. Achtung Das "negierte Ergebnis der Berechnung" ist nicht immer identisch mit dem "negierten Wert des Pin - Ausgangs"! Die Angabe ist optional. Wenn dieser Wert gleich Null ist, findet keine Weiterleitung an einen Ausgang statt. |
Im Kapitel Beispiele sind 6 Bausteine exemplarisch beschrieben, von denen z.B. der Telegramm-Generator Zeitspeicher nutzt.
5.Variable
Die in der folgenden Tabelle aufgelisteten Variablen stehen innerhalb der Formeln/Bedingungen zur Verfügung:
Hinweis
Diese Variablen können nur ausgelesen, aber nicht beschrieben werden!
Feld | Typ | Beschreibung |
---|---|---|
EI | Zahl | Mögliche Werte:
Achtung Dies bezieht sich nur auf die Initialisierung des Bausteins selbst! Sollte während der Initialisierungsphase des HS/FS der Baustein mehrfach durch in der Logik vorgelagerte andere Bausteine und deren Initialisierung(en) berechnet werden, ist EI nur bei der ersten, d.h. bei der eigenen Initialisierung, gleich '1'! |
EA | Array | Der Wert des Eingangs vor der Berechnung. |
EN | Array | Der aktuelle Wert des Eingangs. |
EC | Array of Boolean | Mögliche Werte:
|
AA | Array | Der Wert des Ausgangs vor der Berechnung. |
AN | Array | Der aktuelle Wert des Ausgangs. |
AC | Array of Boolean | Mögliche Werte:
|
ON | Array | Enthält den in den Zeitspeicher geschriebenen Wert, sobald der Zeitspeicher abgelaufen ist. |
OC | Array of Boolean | Mögliche Werte:
|
SA | Array | Der Wert einer Speichervariablen vor der Berechnung. |
SN | Array | Der aktuelle Wert einer Speichervariablen. |
SC | Array of Boolean | Mögliche Werte:
|
Hinweise:
- Die Größe der jeweiligen Arrays ist davon abhängig, wie viele Eingänge, Ausgänge, Zeitspeicher oder Speichervariablen im Logikbaustein definiert sind (Satzart 5001).
- Alle Arrays beginnen mit dem Index 1.
Um auf einen Index zuzugreifen, muss man den Index in eckigen Klammern hinter die Variable hängen. Die Syntax EN[2] liefert also den zweiten Wert innerhalb des Arrays EN. Dies entspricht dem aktuellen Wert des zweiten Eingangs. - Bei Verwendung eines ungültigen Index löst der HS/FS eine Ausnahme-Behandlung (Exception) aus. Diese "Ausnahme" führt zu einer Fehlberechnung des Bausteins. Alle aufgetretenen "Ausnahmen" können auf der Debug-Seite im Abschnitt "Exceptions" eingesehen werden.
Siehe hierzu auch einige dokumentierte Beispiele.
6.Berechnung eines Bausteins
6.1.Wann wird berechnet?
Die Berechnung eines Bausteins wird immer dann gestartet, wenn...:
- ...das System startet und die Eigenschaft "Berechnung bei Initialisierung" (Satzart 5001) gesetzt ist.
- ...ein Eingangssignal auf einem belegten Eingang eintrifft.
- ...ein Zeitspeicher abgelaufen ist.
Ein Zeitspeicher kann in einer Zeile der Satzart 5001 definiert werden, und in einer Zeitformel (Satzart 5012) ausgelöst werden. Ist ein Zeitspeicher noch nicht abgelaufen, kann der Ausführungszeitpunkt verändert werden.
Hinweis
Trifft am Eingang ein Telegramm ein und wird an einem der Ausgänge ein Wert gesendet, werden alle anhängenden Bausteine, falls vorhanden, ebenfalls berechnet.
6.2.Wie wird berechnet?
Jede definierte Formelzeile (Satzart 5012) wird in der angegebenen Reihenfolge berechnet (d.h. die ".hsl" Datei wird von oben nach unten abgearbeitet)
Beispiel:
Beispiel:
5012|0|"EC[1] and EN[1] and EN[4]"|"SN[1]+1"|""|0|0|1|0
5012|0|"EC[2] and EN[2] and EN[4] and (SN[1]>0)"|"SN[1]-1"|""|0|0|1|0
5012|0|"EC[3] and EN[3]"|"0"|""|0|0|1|0
5012|0|"SC[1] or EI"|"SN[1]"|""|1|0|0|0
6.3.Berechnung abbrechen
Um eine Berechnung abzubrechen, muss die Eigenschaft "Ende nach Ausführen" gesetzt sein.
Die Berechnung wird dann abgebrochen, wenn die Bedingung als Ergebnis True/Wahr ergibt. Vor dem Beenden der Berechnung wird die aktuelle Zeile zu Ende berechnet. Alle weiteren Formelzeilen werden ignoriert.
Die Berechnung wird dann abgebrochen, wenn die Bedingung als Ergebnis True/Wahr ergibt. Vor dem Beenden der Berechnung wird die aktuelle Zeile zu Ende berechnet. Alle weiteren Formelzeilen werden ignoriert.
7.Startverhalten der Logik
Siehe Datei
"logikstart.html"
, die Teil der Online Dokumentation des HS/FS Experte ist.8.Hinweise zur Sprachsyntax
Die Logik verwendet innerhalb der Bedingungen, Formeln und Zeit-Formeln die Syntax der Skript-Sprache '''Python'''. Hinweise und die Dokumentation zu Python finden Sie im Internet unter der Adresse https://www.python.org/ (in englischer Sprache).
8.1.Zulässige Ausdrücke und Funktionen
Es sind nur Ausdrücke und Funktionen mit Rückgabewert erlaubt, d.h., Schleifen, If-Else Konstrukte, etc. werden '''nicht''' unterstützt!
8.2.Operatoren
Die Variablen können mit den folgenden Operatoren manipuliert und verglichen werden:
Operator | Beschreibung |
---|---|
+ | Addition |
- | Subtraktion |
* | Multiplikation |
/ | Division |
& | binäres UND |
| | binäres ODER |
== | Gleich (als Vergleicher) |
< | Kleiner |
<= | Kleiner gleich |
> | Größer |
>= | Größer gleich |
!= | Ungleich (identisch "<>") |
<> | Ungleich (identisch "!=") |
Beispiele:
Erklärung: Addiert Eingang 1 und Speichervariable 1
Erklärung: Prüft, ob die Summe aus Eingang 1 und der Speichervariable 1 größer als der Wert an Eingang 2 ist. Ergibt im Erfolgsfall TRUE / WAHR.
Weitere Operatoren findet man in der Python-Dokumentation unter:
EN[1]+SN[1]
Erklärung: Addiert Eingang 1 und Speichervariable 1
((EN[1]+SN[1])>EN[2])
Erklärung: Prüft, ob die Summe aus Eingang 1 und der Speichervariable 1 größer als der Wert an Eingang 2 ist. Ergibt im Erfolgsfall TRUE / WAHR.
Weitere Operatoren findet man in der Python-Dokumentation unter:
- https://docs.python.org/2/reference/lexical_analysis.html#operators
- https://docs.python.org/2.7/library/stdtypes.html
Hinweis: Rechnen mit Gleitkomma-Werten
Um mit Gleitkomma-Werten zu arbeiten, muss jede Variable mit der Funktion float() umschlossen werden.
Zum Beispiel bei der Division von zwei Eingangswerten:
Zum Beispiel bei der Division von zwei Eingangswerten:
float(EN[1])/float(EN[2])
. Eine einfache Berechnung liefert nur das Ergebnis als Ganzzahl, also: 2/3 ergibt 0 und 4/3 ergibt 1. Die Berechnung float(2)/float(3)
ergibt jedoch den korrekten Gleitkomma-Wert.8.3.Boolsche Operatoren
Es werden die folgenden boolschen Operatoren unterstützt:
and: Logisches "UND". Verknüpft mehrere Werte mit einem logischen "UND":
- 1 and 1 ergibt 1
- 1 and 0 ergibt 0
- 0 and 1 ergibt 0
- 0 and 0 ergibt 0
or: "ODER". Verknüpft mehrere Werte mit einem logischen "ODER":
- 1 or 1 ergibt 1
- 1 or 0 ergibt 1
- 0 or 1 ergibt 1
- 0 or 0 ergibt 0
8.4.Hinweise zur Verwendung externer Bibliotheken
Innerhalb einer Formel besteht die Möglichkeit, (externe) Python-Bibliotheken einzubinden. Momentan ist der Zugriff auf folgende Bibliotheken beschränkt:
Bibliothek | Beschreibung |
---|---|
math | Das Modul math stellt mathematische Funktionen zur Verfügung. Genaue Beschreibung: math. |
whrandom | (bis inkl. Experte 2.8) Das Modul whrandom dient der Generierung von Zufallszahlen. Weitere Info: whrandom. |
random | (ab Experte v2.10, ersetzt die in früheren Experte-Versionen verwendete Bibliothek whrandom) Das Modul random dient der Generierung von Zufallszahlen. Genaue Beschreibung: random. |
time | Das Modul time dient der Zeitbehandlung. Hinweis Um die aktuelle Uhrzeit/Datum zu ermitteln, sollte die Funktion localtime() verwendet werden. Dies ist vor allem beim Wechseln zwischen Sommer- und Winterzeit von Bedeutung. Genaue Beschreibung: time. |
string | Das Modul string liefert Funktionen zur Textbehandlung. Genaue Beschreibung: string. |
Externe Funktionen werden nach folgendem Schema aufgerufen:
Hinweis: Vor und nach "import" stehen jeweils 2 Unterstriche.
Beispiele zur Nutzung:
__import__
('BIBLIOTHEK').NAME_DER_FUNKTION(EVENTUELLE_PARAMETER)Hinweis: Vor und nach "import" stehen jeweils 2 Unterstriche.
Beispiele zur Nutzung:
__import__('whrandom').randint(1,100)
oder
__import__('random').randint(1,100)
Erklärung: Dieser Ausdruck ruft die Funktion randint() aus der Bibliothek "whrandom" bzw. "random" auf. Als Antwort liefert der Aufruf eine zufällige Ganzzahl im Bereich 1-100 (beide Zahlen inklusive), die bspw. auf einen Ausgang gelegt werden kann.__import__('time').time()
Erklärung: Dieser Aufruf liefert die aktuelle Uhrzeit als Ganzzahl. Der Aufruf hat keine Parameter.__import__('time').localtime()[1]
Erklärung: Die Funktion localtime() liefert als Antwort ein Array. In diesem Array steht an Position 1 der aktuelle Monat.
9.Fehlersuche
9.1.Nutzen der Debugliste des Homeservers
Der HS/FS führt eine interne Liste zur Protokollierung der beim Interpretieren der Logikmodule aufgetretenen Fehler. Um diese Liste aufzurufen, muss im Browser die Debug-Seite aufgerufen werden:
Dort finden sich unter "Exceptions" die vom Interpreter ausgegebenen Fehlermeldungen.
Je nach Projektierung können Sie auch per
https://HS_IP/hslist?lst=debug&user=USER&pw=PWD
Dort finden sich unter "Exceptions" die vom Interpreter ausgegebenen Fehlermeldungen.
Je nach Projektierung können Sie auch per
"http:\\..."
anstatt per "https:\\..."
auf die Debug-Seite zugreifen.9.2.Erkennen von Strukturfehlern
Der HS/FS-Experte erkennt Fehler in der Struktur von Bausteinen beim Überprüfen des Projekts. Sollten in einem Baustein Fehler bezüglich der Struktur vorhanden sein, signalisiert dies der HS/FS-Experte durch eine Fehlermeldung.
9.3.Externe Hilfsmittel
9.3.1.Test
Ein sehr nützliches Hilfsmittel stellt die "Python IDLE Shell" dar, die standardmäßig ein Bestandteil der Pythonumgebung unter Windows ist.
Sie ermöglicht es, zeilenweise Statements zu testen. Hierfür ist es am einfachsten, die benötigten Arrays (SN[],EN[],....) zu definieren und darauf die Formelzeilen anzuwenden. Logik- oder Syntaxfehler fallen hierbei schon vor dem Aufspielen des Projektes auf den HS/FS auf. Somit ist eine schnelle Entwicklung von Logikmodulen möglich, ohne bei jeder Änderung des Logikmoduls das Projekt neu auf den HS/FS aufspielen zu müssen.
Weitere Informationen zur "Python IDLE Shell" und die Installationspakete finden sich auf www.python.de.
Sie ermöglicht es, zeilenweise Statements zu testen. Hierfür ist es am einfachsten, die benötigten Arrays (SN[],EN[],....) zu definieren und darauf die Formelzeilen anzuwenden. Logik- oder Syntaxfehler fallen hierbei schon vor dem Aufspielen des Projektes auf den HS/FS auf. Somit ist eine schnelle Entwicklung von Logikmodulen möglich, ohne bei jeder Änderung des Logikmoduls das Projekt neu auf den HS/FS aufspielen zu müssen.
Weitere Informationen zur "Python IDLE Shell" und die Installationspakete finden sich auf www.python.de.
9.3.2.Hilfe-Datei
Es gibt eine Mustervorlage für die Erstellung einer HTML-Hilfe-Datei für Logikbausteine. Diese finden Sie unter dem Namen "
log55555.html
", zusammen mit einem Style-Sheet, im Unterordner "/HSL SDK/Help Template/
" der ZIP-Datei, in der auch diese Dokumentation enthalten ist (Schnittstelleninormationen.zip).9.3.3.Container Datei
Um die Veröffentlichung und/oder Weitergabe zu vereinfachen, gibt es die Möglichkeit, den Baustein zusammen mit Hilfe-Dateien in einen Container zu verpacken, der im HS/FS-Experte importiert werden kann.
Näheres dazu siehe "
Näheres dazu siehe "
hslz_structure.html
" im Unterordner "/HSL SDK/HSLZ/
" der ZIP-Datei, in der auch diese Dokumentation enthalten ist (Schnittstelleninormationen.zip).10.Beispiele
In diesem Kapitel werden einige bereits vorhandene Bausteine in der korrekten HSL-Dateidefinition erläutert und definiert. Es handelt sich um folgende Bausteine:
- Binärauslöser
- UND-Gatter
Verwenden nur Ein- und Ausgänge. - Telegramm-Generator
Verwendet Eingänge, Ausgänge und Zeitspeicher. - Zählerbaustein
- Ein-/Ausschaltverzögerung
Verwendet Eingänge, Ausgänge und Speichervariablen. - Textauslöser
Äquivalent zum Binärauslöser, arbeitet mit Werten vom Typ Text.
10.1.Binärauslöser als Logikmodul
5000|"Binärauslöser"|0|1|"E1"|2|"A1 (Wert = 1)"|"A2 (Wert <> 1)"
Der Baustein wird im HS/FS-Experte auf oberster Ebene angezeigt. Der Baustein ist als nicht remanent gekennzeichnet und hat einen Eingang und zwei Ausgänge.
Der Binärauslöser hat einen Eingang und zwei Ausgänge. Er besitzt keine Speichervariablen und keine Zeitspeicher. Weiterhin wird der Baustein nur bei eintreffenden Telegrammen berechnet.
Der Baustein wird nicht bei der Initialisierung berechnet.
Hier wird Eingang 1 definiert. Als Init.-Wert erhält der Eingang den Wert 0.
Ausgang 1 besitzt den Init.-Wert 0, wird binär gerundet und bei jeder Berechnung gesendet.
Ausgang 2 hat dieselben Eigenschaften wie Ausgang 1.
Bei jedem eintreffenden Telegramm wird das Ergebnis des Ausdrucks Eingang 1<>0 auf Ausgang 1 gesendet. Trifft die Bedingung zu, ist das Ergebnis des Vergleichs 1 (WAHR).
Somit wird auf Ausgang 1 eine Eins gesendet und auf Ausgang 2 eine Null.
Der Baustein wird im HS/FS-Experte auf oberster Ebene angezeigt. Der Baustein ist als nicht remanent gekennzeichnet und hat einen Eingang und zwei Ausgänge.
5001|1|2|0|0|0
Der Binärauslöser hat einen Eingang und zwei Ausgänge. Er besitzt keine Speichervariablen und keine Zeitspeicher. Weiterhin wird der Baustein nur bei eintreffenden Telegrammen berechnet.
Der Baustein wird nicht bei der Initialisierung berechnet.
5002|1|0|0
Hier wird Eingang 1 definiert. Als Init.-Wert erhält der Eingang den Wert 0.
5004|1|0|1|1|0
Ausgang 1 besitzt den Init.-Wert 0, wird binär gerundet und bei jeder Berechnung gesendet.
5004|2|0|1|1|0
Ausgang 2 hat dieselben Eigenschaften wie Ausgang 1.
5012|0|""|"EN[1]<>0"|""|1|0|0|2
Bei jedem eintreffenden Telegramm wird das Ergebnis des Ausdrucks Eingang 1<>0 auf Ausgang 1 gesendet. Trifft die Bedingung zu, ist das Ergebnis des Vergleichs 1 (WAHR).
Somit wird auf Ausgang 1 eine Eins gesendet und auf Ausgang 2 eine Null.
10.2.UND-Gatter als Logikmodul
5000|"UND-Gatter\2-fach"|0|2|"E1"|"E2"|4|"A1"|"A2 neg"|"A3 (SBC)"|"A4 neg (SBC)"
Der Baustein wird im HS/FS-Experte in der Kategorie UND-Gatter mit der Bezeichnung 2-fach angezeigt.
Der Baustein ist als nicht remanent gekennzeichnet und hat zwei Eingänge und vier Ausgänge.
Das UND-Gatter hat zwei Eingänge und vier Ausgänge. Es besitzt keine Speichervariablen und keine Zeitspeicher. Der Baustein wird bei der Initialisierung berechnet.
Eingang 1 und Eingang 2 werden mit dem UND-Operator verknüpft. Das Ergebnis wird auf Ausgang 1 gesendet. Die Negierung wird auf Ausgang 2 gesendet.
Die Formel ist mit der aus der vorhergehenden 5012er-Zeile identisch. Jedoch hat die Formel aus dieser Zeile eine zusätzliche Bedingung. Die Berechnung wird daher nur dann ausgeführt, wenn die Variable EI den Wert 0 hat. Nur wenn dieser Vergleich 1 (WAHR) ist, wird der UND-Vergleich ausgeführt und das Ergebnis auf die Ausgänge gesendet.
Der Baustein wird im HS/FS-Experte in der Kategorie UND-Gatter mit der Bezeichnung 2-fach angezeigt.
Der Baustein ist als nicht remanent gekennzeichnet und hat zwei Eingänge und vier Ausgänge.
5001|2|4|0|0|1
Das UND-Gatter hat zwei Eingänge und vier Ausgänge. Es besitzt keine Speichervariablen und keine Zeitspeicher. Der Baustein wird bei der Initialisierung berechnet.
5002|1|1|0
5002|2|1|0
Die beiden Eingänge haben den Init-Wert Eins. 5004|1|0|1|1|0
5004|2|0|1|1|0
Die Ausgänge 1 und 2 haben jeweils den Init-Wert Null. Das Ergebnis wird immer binär gerundet und bei jeder Berechnung gesendet. 5004|3|0|1|2|0
5004|4|0|1|2|0
Die Ausgänge 3 und 4 haben jeweils den Init-Wert Null. Auch hier wird das Ergebnis binär gerundet. Gesendet werden die Werte jeweils nur bei einer Wertänderung.5012|0|""|"EN[1] and EN[2]"|""|1|0|0|2
Eingang 1 und Eingang 2 werden mit dem UND-Operator verknüpft. Das Ergebnis wird auf Ausgang 1 gesendet. Die Negierung wird auf Ausgang 2 gesendet.
5012|0|"(EI==0)"|"EN[1] and EN[2]"|""|3|0|0|4
Die Formel ist mit der aus der vorhergehenden 5012er-Zeile identisch. Jedoch hat die Formel aus dieser Zeile eine zusätzliche Bedingung. Die Berechnung wird daher nur dann ausgeführt, wenn die Variable EI den Wert 0 hat. Nur wenn dieser Vergleich 1 (WAHR) ist, wird der UND-Vergleich ausgeführt und das Ergebnis auf die Ausgänge gesendet.
10.3.Telegramm-Generator als Logikmodul
5000|"Weitere Bausteine\Telegrammgenerator"|0|2|"E1"|"E2"|2|"A1"|"A2"
Der Baustein wird in der Kategorie Weitere Bausteine unter der Bezeichnung Telegrammgenerator angezeigt. Er hat zwei Eingänge und zwei Ausgänge. Weiterhin ist er als nicht remanent gekennzeichnet.
Der Baustein besitzt zwei Eingänge, zwei Ausgänge, einen Zeitspeicher und keine Speichervariable. Er wird bei der Initialisierung berechnet.
Der erste Bedingungsblock wird erfüllt, wenn die Berechnung des Bausteins innerhalb der Initialisierung stattfindet (EI==1), ein Zeitspeicher abgelaufen ist (OC[1]), oder sich einer der Eingänge geändert hat (EC[1], EC[2]).
Ist der erste Block WAHR, Eingang 2 gleich Eins (True/Wahr), und Eingang 1 größer als Null, ist die gesamte Bedingung erfüllt.
Ist dies der Fall, wird auf Ausgang 1 und Zeitspeicher 1 eine Eins gesendet und die Negierung auf Ausgang 2.
Im Feld Formel/Zeit wird der Wert von Eingang 1 als neuer Zeitgeber verwendet. Nach Ablauf dieser Zeit wird der Baustein erneut berechnet.
Der Baustein wird in der Kategorie Weitere Bausteine unter der Bezeichnung Telegrammgenerator angezeigt. Er hat zwei Eingänge und zwei Ausgänge. Weiterhin ist er als nicht remanent gekennzeichnet.
5001|2|2|1|0|1
Der Baustein besitzt zwei Eingänge, zwei Ausgänge, einen Zeitspeicher und keine Speichervariable. Er wird bei der Initialisierung berechnet.
5002|1|0|0
5002|2|0|0
Beide Eingänge werden mit dem Wert Null initialisiert. 5004|1|0|1|1|0
5004|2|0|1|1|0
Beide Ausgänge werden mit dem Wert Null initialisiert, binär gerundet und bei jeder Berechnung gesendet.5012|1|"(EI or OC[1] or EC[1] or EC[2]) and EN[2] and (EN[1]>0)"|"1"|"EN[1]"|1|1|0|2
Der erste Bedingungsblock wird erfüllt, wenn die Berechnung des Bausteins innerhalb der Initialisierung stattfindet (EI==1), ein Zeitspeicher abgelaufen ist (OC[1]), oder sich einer der Eingänge geändert hat (EC[1], EC[2]).
Ist der erste Block WAHR, Eingang 2 gleich Eins (True/Wahr), und Eingang 1 größer als Null, ist die gesamte Bedingung erfüllt.
Ist dies der Fall, wird auf Ausgang 1 und Zeitspeicher 1 eine Eins gesendet und die Negierung auf Ausgang 2.
Im Feld Formel/Zeit wird der Wert von Eingang 1 als neuer Zeitgeber verwendet. Nach Ablauf dieser Zeit wird der Baustein erneut berechnet.
Hinweis
Trifft vor Ablauf dieser Zeit ein Telegramm auf Eingang 1 oder 2 ein, wird der aktuelle Zeitspeicher abgebrochen und neu gestartet, da er mit einem neuem Wert und einer neuen Zeit beschrieben wird.
10.4.Zählerbaustein als Logikmodul
5000|"Weitere Bausteine\Zählerbaustein"|1|4|"E1 (+Zähler)"|"E2 (-Zähler)"|"E3
Reset"|"E4 Ein/Aus"|1|"A1 Takte (sbc)"
Der Baustein wird in der Kategorie Weitere Bausteine unter der Bezeichnung Zählerbaustein angezeigt. Er hat vier Eingänge und einen Ausgang und ist als remanent gekennzeichnet.
Der Baustein besitzt vier Eingänge, einen Ausgang und eine Speichervariable.
Der Baustein wird bei der Initialisierung berechnet.
Der einzige Ausgang wird mit dem Wert 0 initialisiert, und nur bei einer Änderung gesendet.
Die einzige Speichervariable ist remanent.
Wenn sich Eingang 1 geändert hat, der Wert von Eingang 1 ungleich Null ist, und der Wert von Eingang 4 ebenfalls ungleich Null ist, wird der Wert der Speichervariable 1 um eins erhöht.
Wenn sich Eingang 2 geändert hat, der Wert von Eingang 2 ungleich Null ist, und der Wert von Eingang 4 ebenfalls ungleich Null ist, wird der Wert der Speichervariable 1 um eins gemindert.
Hat sich Eingang 3 geändert und der Wert von Eingang 3 ungleich Null ist, wird die Speichervariable 1 auf Null gesetzt.
Bei Initialisierung oder Wertänderung der ersten Speichervariable wird der Wert der Speichervariable 1 auf Ausgang 1 gesendet.
Reset"|"E4 Ein/Aus"|1|"A1 Takte (sbc)"
Der Baustein wird in der Kategorie Weitere Bausteine unter der Bezeichnung Zählerbaustein angezeigt. Er hat vier Eingänge und einen Ausgang und ist als remanent gekennzeichnet.
5001|4|1|0|1|1
Der Baustein besitzt vier Eingänge, einen Ausgang und eine Speichervariable.
Der Baustein wird bei der Initialisierung berechnet.
5002|1|0|0
5002|2|0|0
5002|3|0|0
5002|4|0|0
Alle vier Eingänge werden mit dem Wert 0 initialisiert.5004|1|0|0|2|0
Der einzige Ausgang wird mit dem Wert 0 initialisiert, und nur bei einer Änderung gesendet.
5003|1|0|1
Die einzige Speichervariable ist remanent.
5012|0|"EC[1] and EN[1] and EN[4]"|"SN[1]+1"|""|0|0|1|0
Wenn sich Eingang 1 geändert hat, der Wert von Eingang 1 ungleich Null ist, und der Wert von Eingang 4 ebenfalls ungleich Null ist, wird der Wert der Speichervariable 1 um eins erhöht.
5012|0|"EC[2] and EN[2] and EN[4] and (SN[1]>0)"|"SN[1]-1"|""|0|0|1|0
Wenn sich Eingang 2 geändert hat, der Wert von Eingang 2 ungleich Null ist, und der Wert von Eingang 4 ebenfalls ungleich Null ist, wird der Wert der Speichervariable 1 um eins gemindert.
5012|0|"EC[3] and EN[3]"|"0"|""|0|0|1|0
Hat sich Eingang 3 geändert und der Wert von Eingang 3 ungleich Null ist, wird die Speichervariable 1 auf Null gesetzt.
5012|0|"SC[1] or EI"|"SN[1]"|""|1|0|0|0
Bei Initialisierung oder Wertänderung der ersten Speichervariable wird der Wert der Speichervariable 1 auf Ausgang 1 gesendet.
10.5.Ein/Ausschaltverzögerung
5000|"Verzögerung\Ein/Ausschaltverzögerung"|0|3|"E1"|"E2"|"E3"|2|"A1"|"A2"
Der Baustein wird in der Kategorie Verzögerung unter der Bezeichnung Ein/Ausschaltverzögerung angezeigt. Er hat drei Eingänge und zwei Ausgänge und ist als nicht remanent gekennzeichnet.
Der Baustein hat drei Eingänge, zwei Ausgänge, verwendet zwei Zeitspeicher und zwei Speichervariablen.
Die Speichervariable 1 wird mit dem Wert Null initialisiert.
Die Speichervariable 2 wird mit dem Wert Eins initialisiert.
Wird bei abgelaufenem Zeitspeicher 1 berechnet. Sendet den Wert des Zeitspeichers auf Ausgang 1 und den negierten Wert auf Ausgang 2.
Ist der Zeitspeicher 1 abgelaufen, wird der Wert Null in die Speichervariable 1 geschrieben und die Berechnung wird danach beendet, es werden keine weiteren Zeilen ausgeführt.
Wird bei abgelaufenem Zeitspeicher 2 berechnet. Sendet den Wert des Zeitspeichers auf Ausgang 1 und den negierten Wert auf Ausgang 2.
Ist der Zeitspeicher 2 abgelaufen, wird der Wert Null in die Speichervariable 2 geschrieben und die Berechnung wird danach beendet, es werden keine weiteren Zeilen ausgeführt.
Trifft ein Wert ungleich 0 auf Eingang 3 ein, wird eine Eins in die Speichervariable 2 und in den Zeitspeicher 2 geschrieben, der Zeitgeber 2 wird angehalten. Somit wird die Ausschaltverzögerung gestoppt.
Trifft ein Wert ungleich 0 auf Eingang 3 ein und Eingang 1 ist mit einer Null belegt, wird eine Eins auf den Ausgang 1 und eine Null auf Ausgang 2 gesendet.
Danach wird die Berechnung beendet.
Trifft ein Wert ungleich 0 auf Eingang 3 ein und Speichervariable 1 ist gleich Null, wird eine Eins in die Speichervariable 1 und den Zeitspeicher 1 geschrieben. Zeitspeicher 1 wird mit dem Wert von Eingang 1 gestartet.
Der Baustein wird in der Kategorie Verzögerung unter der Bezeichnung Ein/Ausschaltverzögerung angezeigt. Er hat drei Eingänge und zwei Ausgänge und ist als nicht remanent gekennzeichnet.
5001|3|2|2|2|0
Der Baustein hat drei Eingänge, zwei Ausgänge, verwendet zwei Zeitspeicher und zwei Speichervariablen.
5002|1|0|0
5002|2|0|0
5002|3|0|0
Alle Eingänge haben den Init.-Wert 05003|1|0|0
Die Speichervariable 1 wird mit dem Wert Null initialisiert.
5003|2|1|0
Die Speichervariable 2 wird mit dem Wert Eins initialisiert.
5004|1|0|1|1|0
5004|2|0|1|1|0
Alle Ausgänge werden bei Berechnung in Binärform gesendet.5012|0|"OC[1]"|"ON[1]"|""|1|0|0|2
Wird bei abgelaufenem Zeitspeicher 1 berechnet. Sendet den Wert des Zeitspeichers auf Ausgang 1 und den negierten Wert auf Ausgang 2.
5012|1|"OC[1]"|"0"|""|0|0|1|0
Ist der Zeitspeicher 1 abgelaufen, wird der Wert Null in die Speichervariable 1 geschrieben und die Berechnung wird danach beendet, es werden keine weiteren Zeilen ausgeführt.
5012|0|"OC[2]"|"ON[2]"|""|1|0|0|2
Wird bei abgelaufenem Zeitspeicher 2 berechnet. Sendet den Wert des Zeitspeichers auf Ausgang 1 und den negierten Wert auf Ausgang 2.
5012|1|"OC[2]"|"1"|""|0|0|2|0
Ist der Zeitspeicher 2 abgelaufen, wird der Wert Null in die Speichervariable 2 geschrieben und die Berechnung wird danach beendet, es werden keine weiteren Zeilen ausgeführt.
5012|0|"EC[3] and (EN[3]<>0)"|"1"|"0"|0|2|2|0
Trifft ein Wert ungleich 0 auf Eingang 3 ein, wird eine Eins in die Speichervariable 2 und in den Zeitspeicher 2 geschrieben, der Zeitgeber 2 wird angehalten. Somit wird die Ausschaltverzögerung gestoppt.
5012|1|"EC[3] and (EN[3]<>0) and (EN[1]==0)"|"1"|""|1|0|0|2
Trifft ein Wert ungleich 0 auf Eingang 3 ein und Eingang 1 ist mit einer Null belegt, wird eine Eins auf den Ausgang 1 und eine Null auf Ausgang 2 gesendet.
Danach wird die Berechnung beendet.
5012|1|"EC[3] and (EN[3]<>0) and (SN[1]==0)"|"1"|"EN[1]"|0|1|1|0
Trifft ein Wert ungleich 0 auf Eingang 3 ein und Speichervariable 1 ist gleich Null, wird eine Eins in die Speichervariable 1 und den Zeitspeicher 1 geschrieben. Zeitspeicher 1 wird mit dem Wert von Eingang 1 gestartet.
Achtung
Der Zeitspeicher 1 hat den Wert Eins, löst aber nach n-Sekunden (je nach Wert von Eingang 1) eine Neuberechnung aus.
5012|0|"EC[3] and (EN[3]==0)"|"0"|"0"|0|1|1|0
Trifft ein Wert gleich 0 auf Eingang 3 ein, wird eine Null in die Speichervariable 1 und in den Zeitspeicher 1 geschrieben, der Zeitgeber 1 wird angehalten. Somit wird die Einschaltverzögerung gestoppt.
5012|1|"EC[3] and (EN[3]==0) and (EN[2]==0)"|"0"|""|1|0|0|2
Trifft ein Wert gleich 0 auf Eingang 3 ein und Eingang 2 ist mit einer Null belegt, wird eine Null auf den Ausgang 1 und eine Eins auf Ausgang 2 gesendet.
Danach wird die Berechnung beendet.
5012|1|"EC[3] and (EN[3]==0) and (SN[2]==1)"|"0"|"EN[2]"|0|2|2|0
Trifft ein Wert gleich 0 auf Eingang 3 ein und Speichervariable 2 ist gleich Eins, wird eine Null in die Speichervariable 2 und den Zeitspeicher 2 geschrieben. Zeitspeicher 2 wird mit dem Wert von Eingang 2 gestartet.
Achtung
Der Zeitspeicher 2 hat den Wert Null, löst aber nach n-Sekunden (je nach Wert von Eingang 2) eine Neuberechnung aus.
10.6.Textauslöser
5000|"Textfunktionen\Textauslöser"|0|1|"E1"|2|"A1 (Textlänge > 0)"|"A2 (Textlänge = 0)"
Der Baustein wird in der Kategorie Textfunktionen unter der Bezeichnung Textauslöser angezeigt. Der Baustein ist als nicht remanent gekennzeichnet und hat einen Eingang und zwei Ausgänge.
Der Baustein hat einen Eingang und zwei Ausgänge. Er besitzt keine Speichervariablen und keine Zeitspeicher. Weiterhin wird der Baustein nur bei eintreffenden Telegrammen berechnet. Der Baustein wird nicht bei der Initialisierung berechnet.
Hier wird Eingang 1 als Texteingang definiert. Als Init.-Wert erhält der Eingang einen Leertext.
Ausgang 1 besitzt den Init.-Wert Null. Der Ausgang wird binär gerundet und bei jeder Berechnung gesendet.
Ausgang 2 hat dieselben Eigenschaften wie Ausgang 1.
Bei jedem eintreffenden Telegramm wird das Ergebnis des Ausdrucks 'Textlänge von Eingang 1' > 0 auf Ausgang 1 gesendet. Trifft die Bedingung zu, ist das Ergebnis des Vergleichs Eins (WAHR).
Somit wird auf Ausgang 1 eine Eins gesendet und auf Ausgang 2 eine Null.
Der Baustein wird in der Kategorie Textfunktionen unter der Bezeichnung Textauslöser angezeigt. Der Baustein ist als nicht remanent gekennzeichnet und hat einen Eingang und zwei Ausgänge.
5001|1|2|0|0|0
Der Baustein hat einen Eingang und zwei Ausgänge. Er besitzt keine Speichervariablen und keine Zeitspeicher. Weiterhin wird der Baustein nur bei eintreffenden Telegrammen berechnet. Der Baustein wird nicht bei der Initialisierung berechnet.
5002|1|""|1
Hier wird Eingang 1 als Texteingang definiert. Als Init.-Wert erhält der Eingang einen Leertext.
5004|1|0|1|1|0
Ausgang 1 besitzt den Init.-Wert Null. Der Ausgang wird binär gerundet und bei jeder Berechnung gesendet.
5004|2|0|1|1|0
Ausgang 2 hat dieselben Eigenschaften wie Ausgang 1.
5012|0|""|"len(str(EN[1]))>0"|""|1|0|0|2
Bei jedem eintreffenden Telegramm wird das Ergebnis des Ausdrucks 'Textlänge von Eingang 1' > 0 auf Ausgang 1 gesendet. Trifft die Bedingung zu, ist das Ergebnis des Vergleichs Eins (WAHR).
Somit wird auf Ausgang 1 eine Eins gesendet und auf Ausgang 2 eine Null.
11.Veröffentlichung
- 18.09.2018 Version 4.8 - Änderungen
- Satzart 5003 - Texte sind jetzt erlaubt.
- Hilfe-Datei - Hinweis auf HTML-Hilfe Mustervorlage hinzugefügt.
- Container-Datei - Hinweis auf HSLZ-Datei hinzugefügt.
- Hinweis auf HTTP-Zugriffsmöglichkeit bei Aufruf der Debug-Seite hinzugefügt
- Hinweis auf die Änderung bei der Nummernkreisvergabe und DSGVO hinzugefügt
- System-Pfade aktualisiert
- 25.04.2017 Version 4.7 - Änderungen
- Satzart 5000 - Neue optionale Felder
- Front- und Back-Page entfernt
- Angaben von HS/FS-Endpunkten sind jetzt in der Form "https://..."
- 23.02.2016 Version 4.5 - Umstrukturierung
- Format der Dokumentation von PDF auf HTML umgestellt
- Alle Kapitel überarbeitet und ggf. aktualisiert
- 14.01.2014 Version 4.2 - Änderungen
- Satzart 5004 - Ausgangs-Typ: Erklärung zu "sbc" präzisiert
- Satzart 5012 - negierter Ausgang: Hinweis hinzugefügt
- Variable - Erklärung zu EI präzisiert
- Startverhalten der Logik - Kapitel Gestrichen. Inhalt ist in der Online-Hilfe verfügbar
- 22.01.2013 Version 4.0 - Änderungen
- Versions-Nr der Doku an die Versions-Nummer des Experten angepasst
- System-Pfade - Format für Experte ab v4.0 hinzugefügt
- 12.10.2012 Version 2.2 - Änderungen
- Deckblatt - HomeServer 4 & FacilityServer 4 hinzugefügt
- Zuweisen eines Dateinamens - Korrektur der URL zur Nummernkreis-Seite
- Logikmodule in Projekt einbinden - Überarbeitet
- Operatoren - Ergänzt
- Externe Bibliotheken - Überarbeitet / Ergänzt
- 20.08.2012 Version 2.1 - Änderungen
- Nummernkreise - Durch neue Inhalte ersetzt
- Weitere Quellen - Überarbeitet
- 16.12.2011 Version 2.0 - Änderungen
- Satzart 49999 - Spezifizierung der Beschreibung des Sprachkürzels
- 17.11.2011 Version 1.9 - Änderungen
- Aufbau der Definitionsdatei - Tabellenzeile mit Satzart 4999 neu hinzugefügt
- Satzart 49999 - Kapitel neu hinzugefügt
- 21.07.2011 Version 1.8 - Änderungen
- Satzart 5000 - Neue Funktion: Anzeige der Versions-Nr.
- 25.02.2011 Version 1.7 - Änderungen
- Kapitel 3.1 - Korrektur der Internet-Adresse
- Kapitel 3.2 - Ergänzung/Aktualisierung der Angaben zum Logik-Ordner-Pfad
- Kapitel 4.6 - Korrektur der in der letzten Zeile angegebenen Kapitel-Nr.
- Kapitel 5 - Korrektur der in der letzten Zeile angegebenen Kapitel-Nr.
- Neues Kapitel 7 - "Startverhalten der Logik"
- Kapitel von 7 bis 10 neu nummeriert - Sind jetzt Kapitel 8 bis 11
- Titelzeile - geändert
- 01.10.2010 Version 1.5 - Änderungen
- Kapitel 4.2 - Anmerkung 2 im Feld "Kodierter Formel-Block" hinzugefügt.
- 29.09.2010 Version 1.4 - Änderungen
- Kapitel 4.2 - Neues Feld "Kodierter Formel-Block". Beispiele angepasst.
- 22.09.2009 Version 1.3 - Änderungen
- Kapitel 4.1 - Es darf ab Experte Version 2.4 eine beliebige Kategorietiefe verwendet werden.
- 18.06.2008 Version 1.2 - Korrekturen
- Kapitel 2.1 - Internet-Adresse(n) korrigiert
- Kapitel 2.4 - Text-Korrekturen
- Kapitel 2.5 - (wurde gestrichen)
- Kapitel 3.1 - Internet-Adresse korrigiert
- 02.02.2007 Version 1.1 - Ergänzungen und Fehlerbereinigung
- Kapitel 4.6 - Fehlerkorrektur
- Kapitel 8 - Kapitel "Fehlersuche" eingefügt
- 19.01.2007 Version 1.0 - Ergänzungen und Fehlerbereinigung
- Kapitel 4.1 - Ergänzungen
- Kapitel 4.4 - Ergänzungen
- Kapitel 4.6 - Formulierung präzisiert
- Kapitel 5 - Hinweise berichtigt
- Kapitel 6.2 - Ergänzungen und Beispiel hinzugefügt
- Kapitel 7 - Ergänzungen
- Kapitel 8.2 - Ergänzungen und Präzisierung
- Kapitel 8.3 - Ergänzungen
- Kapitel 8.4 - Vervollständigung der Satzart 5000
- Kapitel 8.6 - Berichtigung
- 08.12.2006 Version 0.8 - Ergänzungen und Fehlerbereinigung
- Kapitel 4.3 - Ergänzungen
- Kapitel 4.6 - Ergänzungen
- Kapitel 5 - URL der Debugseite ergänzt
- Kapitel 7.2 - Kapitel umbenannt und präzisiert, Ergänzungen
- Kapitel 7.3 - Restriktionen bei der Verwendung von Boolschen Operatoren präzisiert
- Kapitel 7.4 - Links korrigiert
- 28.08.2006 Version 0.7 - Fehlerbereinigung
- Kapitel 5 - Textänderung bei der Variable EC
- Kapitel 6.1 - Ergänzung
- 27.06.2006 Version 0.6 - Ergänzungen
- Kapitel 7.x - Kapitel 7.3 wurde nach 7.4 verschoben. 7.3 wurde ergänzt.
- 26.06.2006 Version 0.5 - Ergänzungen und Fehlerbereinigung
- Kapitel 4.2 - Textergänzung
- Kapitel 4.3 - Korrektur der Beispiele
- Kapitel 4.4 - Anmerkung
- Kapitel 4.6 - Ergänzung
- Kapitel 7.2 - Kapitel wurde ergänzt
- 25.04.2005 Version 0.4 - Fehlerbereinigung
- 05.03.2005 Version 0.3 - Erstveröffentlichung