Beschreibung der XML-Definitionsdatei
Die XML-Definitionsdatei legt die grundlegenden Eigenschaften von HSL-2.0 Logikbausteinen fest:
- Name, ID, Kategorie (zur Verwaltung im Experten und zur Anzeige im GLE)
- Kontext
- Anzahl, Bezeichnungen und Typen von Ein- und Ausgängen
- Anzahl und Bezeichnungen von remanenten Variablen
- Framework- und Standardmodule, die importiert werden müssen
- Art des Logging
Aus dieser XML-Definitionsdatei erzeugt der HSL 2.0-Generator im ersten Schritt eine Python-Datei. Diese enthält eine Python-Klasse, die vom Entwickler ergänzt und ausprogrammiert werden muss. Mit Hilfe der Python-Datei und der XML-Definitionsdatei kann der HSL 2.0-Generator dann den fertigen Logikbaustein (.hsl-Datei) erzeugen.
Aufbau der XML-Definitionsdatei:
<?xml version="1.0" encoding="UTF-8"?>
<config>
<modules>
<module category="" context="" id="" name="" version="">
<inputs>
<input type="" init_value="" const_name="">E_BEZ</input>
</inputs>
<outputs>
<output type="" init_value="" const_name="">A_BEZ</output>
</outputs>
<remanent_variables>
<remanent_variable const_name="">V_BEZ</remanent_variable>
</remanent_variables>
<imports>
<import>M_NAME</import>
</imports>
</module>
</modules>
<logging type="" ip="" port="" />
</config>
- <config>
Container
- <modules>
Enthält alle Logik-Baustein-Definitionen des Projekts, 1-n Bausteine können hier definiert werden.
- <module>
Definition eines einzelnen Logik-Bausteins.
- category
Baustein-Kategorie für den GLE (Grafischer Logikeditor) im HS/FS Experte
- context
Kontext, in dem der Baustein definiert ist. Siehe auch: Threading
- id
ID des Bausteins
- name
Name des Bausteins. Der Name sollte keine Umlaute (wie z.B. 'ö', 'ä', etc.) enthalten.
- version
Versionsbezeichnung des Bausteins
- <inputs>
Enthält alle Eingänge eines Logikbausteins
- <input>
Definiert einen einzelnen Eingang eines Logikbausteins
- type
Eingangstyp: number, string, destination_port oder base_path
number: Numerischer Wert
string: Alphanumerischer Wert / Zeichenkette
destination_port: Port an dem der Baustein lauschen muss, wenn er von aussen über den Basis-Pfad erreicht werden soll. Nähere Erläuterungen siehe hier.
base_path: Basis-Pfad über den alle Aufrufe an den Baustein weitergeleitet werden. Wird der HomeServer URL angehangen. Nähere Erläuterungen siehe hier.
- Zu beachten
- Die Eingangstypen destination_port und base_path dürfen pro Baustein nur in jeweils einem Eingang verwendet werden. Besitzt ein Eingang den Typ destination_port muss auch ein Eingang mit dem Typ base_path existieren und umgekehrt.
- init_value
Wert, mit dem der Eingang initialisiert wird
- const_name
(optional) Bezeichnung der Konstanten für diesen Eingang im Python-Skript. Ist const_name nicht angegeben, wird stattdessen E_BEZ verwendet.
- E_BEZ
Bezeichnung des Eingangs. Wird im GLE angezeigt.
- <outputs>
Enthält alle Ausgänge eines Logikbausteins - Zu beachten
- Mindestens ein Ausgang muss angelegt werden!
- <output>
Definiert einen einzelnen Ausgang eines Logikbausteins
- type
Ausgangstyp: number oder string
- init_value
Wert, mit dem der Ausgang initialisiert wird
- const_name
(optional) Bezeichnung der Konstanten für diesen Ausgang im Python-Skript. Ist const_name nicht angegeben, wird stattdessen A_BEZ verwendet.
- A_BEZ
Bezeichnung des Ausgangs. Wird im GLE angezeigt.
- <remanent_variables>
Enthält alle remanenten Variablen eines Logikbausteins
- <remanent_variable>
Definiert eine einzelne remanente Variable
- const_name
(optional) Bezeichnung der Remanenten Variablen im Python-Skript. Ist const_name nicht angegeben, wird stattdessen V_BEZ verwendet.
- V_BEZ
Bezeichnung der Variablen.
- <imports>
Enthält alle Import-Anweisungen für Framework- oder Standard Python-Module, die vom Baustein genutzt werden.
- <import>
Definiert einen einzelnen Modul-Import - Zu beachten
- Es handelt sich bei hierbei nicht um Logikbausteine, sondern um Module, die dem Framework beiliegen (z.B. Intervall-Timer) oder um Standardmodule von Python (z.B. math)
- M_NAME
Name des zu importierenden Moduls, wie in der Liste Verfügbare Bibliotheken angegeben oder Name des Framework Moduls (z.B. hsl20_2_timer).
- Zu beachten
- Bei mehrteiligen Modulnamen ist beim Aufruf nur der letzte Teil zu verwenden!
Beispiel:
- Modul "math"
- Import
<import>math</import>
- Aufruf
math.abc
- Modul "xml.etree.ElementTree"
- Import
<import>xml.etree.ElementTree</import>
- Aufruf
ElementTree.xyz
- <logging>
Optional. Definiert den Logging-Server und die Art des Loggings
- typ
Logging-Typ. Ist entweder Syslog oder None (Kein Logging)
- ip
Nur bei Logging-Typ Syslog. IP-Adresse des Syslog-Servers
- port
Nur bei Logging-Typ Syslog. Port des Syslog-Servers. Standard ist 514.
Beispiel einer XML-Definitionsdatei:
1 <?
xml version=
"1.0" encoding=
"UTF-8"?>
4 <
module category=
"Blind-Shutter-Partition Wall" context=
"JALOUSIE" id=
"19015" name=
"Storm shutter control " version=
"v1.0">
6 <
input type=
"number">
Long-term (1
bit; 1=
close, 0=
open)</
input>
7 <
input type=
"number">
Short-term (1
bit)</
input>
8 <
input type=
"number">
Measured movement time for Leaf 1
in seconds</
input>
9 <
input type=
"number">
Measured movement time for Leaf 2
in seconds</
input>
12 <
output type=
"number">
Long-term object (1
bit)
Leaf 1</
output>
13 <
output type=
"number">
Short-term object (1
bit)
Leaf 1</
output>
14 <
output type=
"number">
Long-term object (1
bit)
Leaf 2</
output>
15 <
output type=
"number">
Short-term object (1
bit)
Leaf 2</
output>
18 <
remanent_variable>
Movement time for Leaf 1</
remanent_variable>
19 <
remanent_variable>
Movement time for Leaf 1</
remanent_variable>
20 <
remanent_variable>
Condition of Leaf</
remanent_variable>
23 <
import>
hsl20_2_timer</
import>
27 <
logging type=
"Syslog" ip=
"192.168.123.45" port=
"514" />
- Änderungen V1.9:
- Namespace 'hsl20_1' umbenannt in 'hsl20_2'
Beispiel ist jetzt englisch
context neutral
Link zum neuen Kapitel Netzwerk: TCP und HTTP hinzugefügt