HSL 2.0-Framework  1.9
Beschreibung des Frameworks
Einrichtung und Erste Schritte

Eine kurze Zusammenfassung, wie man das HSL 2.0-Framework einrichtet und zu ersten Ergebnissen gelangt

Python-Version

Informationen und Download siehe folgenden Link.

Zu beachten
Beim Klicken auf den folgenden Link verlassen Sie die HSL 2.0-Framework-Dokumentation!
www.python.org - Version 2.6.6
www.python.org - Version 2.7.9
Achtung
Das Framework wurde mit den Python-Versionen 2.6.6 und 2.7.9 entwickelt und getestet und ist nur für die Verwendung mit diesen Versionen freigegeben!

Voraussetzungen

Grundsätzliches

Dieses Dokument erklärt die Einrichtung des HSL 2.0-Framework anhand der Erzeugung eines Bausteins am Beispiel des bereits aus dem HS/FS bekannten Binär-Auslösers.

Einrichtung

Sie haben ein ZIP-Archiv namens "HSL20_Framework" vorliegen.
Kopieren Sie es an einen Platz Ihrer Wahl und entpacken Sie es mit Rechtsklick -> "Hier entpacken"

Es wird ein Verzeichnis erstellt, das mehrere Dateien und 3 Unterverzeichnisse enthält:

generator.pyc
simulator.pyc
create_project.pyc
syslog.pyc
/projects
/hsl20
/python26

Das Verzeichnis projects ist leer, im Verzeichnis hsl20 befinden sich die Quell-Dateien des Frameworks.
Die 4 direkt im Verzeichnis liegenden Dateien (die Tools), liegen in einer mit Python 2.7.x kompatiblen Version vor.

Zu beachten
Falls Sie mit Experte/FW 4.5 oder 4.6 arbeiten, ersetzen Sie bitte diese Dateien mit den Versionen aus dem python26-Verzeichnis, bevor Sie fortfahren.

Rufen Sie nun das Einrichtungs-Script mit dem Parameter "-auto" auf.
python create_project.py -auto

Im Verzeichnis projects wurde ein neues Verzeichnis namens my project erzeugt.
In diesem Verzeichnis wurden wiederum einige Unterverzeichnisse angelegt und insgesamt zwei Dateien wurden neu erstellt:

Verzeichnisse:

debug
release
src
tests
tests/example project 01

Dateien:

config.xml
tests/example project 01/project.xml

Die Datei config.xml ist die Definitions-Datei für Ihren Baustein.
Die Beschreibungen der einzelnen Parameter und Werte der Datei config.xml finden Sie in der Doku im Kapitel Tools -> XML-Definitionsdatei.

Zu beachten
Die Test-Verzeichnisse werden später in diesem Dokument behandelt

Erstellung eines Binär-Auslöser Bausteins

Der fertige Baustein liegt den Beispielen bei.

Definition

Tragen Sie nun in der Datei config.xml folgende Daten zum Baustein ein:

Der Binär-Auslöser verfügt nur über einen Eingang.
Geben Sie folgende Attribute dafür an:

Gehen Sie analog dazu für die beiden Ausgänge vor:
Ausgang 1:

Ausgang 2:

Das Ergebnis sollte nun so aussehen:

1 <?xml version="1.0" encoding="UTF-8"?>
2 <config>
3  <modules>
4  <module category="hsl20_2\fw_examples" context="hsl20_2_fw_examples" id="10700" name="hsl20_2_Binary_Trigger" version="1.0">
5  <inputs>
6  <input type="number" const_name="input" init_value="0">I1</input>
7  </inputs>
8  <outputs>
9  <output type="number" const_name="not_equal_to_zero" init_value="0">O1 (I1&lt;&gt;0)</output>
10  <output type="number" const_name="equal_to_zero" init_value="0">O2 (I1=0)</output>
11  </outputs>
12  </module>
13  </modules>
14 </config>

Damit ist die Definition Ihres Bausteins vollständig.

Generierung

Speichern Sie nun die Datei config.xml und rufen Sie den Generator auf.

python generator.py "my project" UTF-8

Der Generator erzeugt beim ersten Aufruf für jeden in der Datei config.xml definierten Baustein einige Dateien im Testverzeichnis der Projektstruktur.

Für unseren Binär-Auslöser sind das:

Bei allen weiteren Aufrufen des Generators werden die Dateien in den Verzeichnissen debug und release komplett, die Datei(en) im src-Verzeichnis teilweise neu generiert.

Zu beachten
Bei Fehlern im Code kann es dazu kommen, dass generator.py eine leere Datei (0 bytes groß) im src-Verzeichnis erzeugt. In diesem Fall löschen Sie bitte diese Datei.

Da der Baustein weder remanent ist, noch bei Initialisierung der Logik feuert, besteht der gesamte selbst zu programmierende Python-Code aus folgenden Zeilen:

def on_input_value(self, index, value):
      if self._get_input_value(index) != 0:
          self._set_output_value(self.PIN_O_UNGLEICH_NULL, 1)
      else:
          self._set_output_value(self.PIN_O_GLEICH_NULL, 1)
Zu beachten
Nach Abschluß der Programmierarbeiten muss der Baustein ein letztes Mal neu generiert werden

Ein HSL 2.0-Baustein hat als Basis immer die Klasse BaseModule. Über die Methode _get_framework() erhält man Zugriff auf das restliche Framework.

Test des Bausteins

Erstellung eines Test-Projekts

In unserem Beispiel heißt das Projekt-Verzeichnis "my project" und das Test-Verzeichnis heißt "Testprojekt 01" (projects\my project\test\example project 01). Siehe Projekt-Verzeichnisstruktur.

In diesem Verzeichnis wurde bei der Einrichtung eine Datei namens project.xml erzeugt.
In dieser Datei können Sie mehrere Instanzen Ihres Bausteins definieren.
Für unser Beispiel benötigen wir nur eine Instanz, die folgendermaßen aussieht:
Im XML-Tag "instance" geben Sie folgende Attribute an:

Das Ergebnis sollte nun so aussehen:

1 <?xml version="1.0" encoding="UTF-8"?>
2 <project>
3  <instances>
4  <instance id="123" module_id="10700">
5  </instance>
6  </instances>
7 </project>

Weitere Angaben sind für unser Beisipiel nicht notwendig.

Durchführung eines Tests

Speichern Sie die Datei project.xml und rufen Sie nun den Simulator auf.

python simulator.py "my project" "example project 01"

Starten Sie jetzt eine weitere Python-Shell in der Windows-Eingabeaufforderung mit dem syslog-Script, das Ihnen die Ausgaben Ihres Bausteins anzeigt:

python syslog.py

Geben Sie zum Testen des Bausteins die folgenden Kommandos ein:

Der Befehl set setzt einen Eingang eines Bausteins auf einen bestimmten Wert und hat daher drei Parameter:

Zu beachten
Eine komplette Liste der möglichen Befehle des Simulators finden Sie in der Doku im Kapitel Tools -> Simulator

Sie können weitere Test-Projekte anlegen, indem Sie für jedes neue Test-Projekt ein Verzeichnis im Ordner projects\my project\tests\ anlegen und dort eine Datei namens project.xml erstellen.

Sind alle Tests zu Ihrer Zufriedenheit abgeschlossen, gehen Sie wie folgt vor:

Im GLE haben Sie nun im Zugriff auf den neuen Baustein unter "hsl20_2\fw_examples\hsl20_2_Binary_Trigger". Sie können Ihn auf dieselbe Art wie jeden anderen Baustein verwenden.

Änderungen V1.9:
Python-Versionen für die verschiedenen Experte/FW-Versionen dokumentiert
Namespace 'hsl20_1' umbenannt in 'hsl20_2'
Baustein den Beispielen beigelegt. Neue Namens- und Verzeichnisstruktur