Login
Newsletter
Werbung

Do, 24. März 2011, 15:00

Heimautomatisierung für Hardwarebastler (Teil 2)

Nachdem im ersten Teil dieser losen Artikelserie beschrieben wurde, wie ein kleines Projekt zur Ansteuerung einer externen Hardware aufgesetzt werden kann, soll im Teil zwei etwas tiefer in die OpenAPC-Software eingestiegen werden.

Ziel ist es hier, eine Softwarestruktur aufzusetzen, welche auch für größere und vor allem komplexere Steuerungsaufgaben geeignet ist. Des weiteren soll gezeigt werden, wie sich so ein System mittels der integrierten Skriptfähigkeiten des Softwarepaketes kontrollieren lässt.

Updates und ihre Folgen

Doch zuvor ist ein kleiner Rückblick auf den ersten Teil des Artikels notwendig. Hier wurde mit Hilfe der Version 1.2 der OpenAPC Visualisierungssoftware ein Projekt zur Rollladensteuerung erstellt. Mit der bis zum Erscheinen dieses neuen Artikels aktuell gewordenen Version 1.4 hat die Software einige Änderungen erfahren, welche im Rahmen von Fehlerbehebungen auch kleinere funktionale Abweichungen mit sich gebracht haben. Auf das hier beschriebene Projekt hatten diese Änderungen glücklicherweise keinen Einfluss, leider kann es aber immer wieder passieren, dass ein Projekt in seiner ursprünglichen Fassung einen solchen Softwarefehler benötigt, um korrekt zu funktionieren, um nach einem späteren Update dann eben Probleme zu verursachen.

So ärgerlich solche Inkompatibilitäten sind, so üblich sind sie leider auch im professionellen Umfeld: so ist es bei Softwareupdates in jedem Fall erforderlich, Regressionstests mit den bereits vorhandenen Projekten durchzuführen, um zu überprüfen, ob die Software noch so arbeitet, wie man es erwartet. Und nicht selten ist genau darin der Grund zu finden, warum die Industrie Uralt-Versionen einer bestimmten Software auf ihren Maschinen einsetzt: weil eben nur mit dieser Version sicher gestellt ist, dass die Anlagen noch wie gewünscht funktionieren.

So ist es gängige Praxis, dass Softwarehersteller echte Fehler beheben, auch wenn sich dabei das Verhalten ändern kann. Allerdings wird bei neuen Funktionen peinlich genau darauf geachtet, dass sich das Verhalten gegenüber den vorhergehenden Versionen nicht ändert. Und wer besonders große Stückzahlen einer Software einsetzt, kann beim Hersteller natürlich auch Sonderwünsche äußern. Das geht zum Teil sogar so weit, das Fehler für spezielle Kunden explizit nicht behoben werden, um das bisherige Verhalten beizubehalten.

Steuerung per Skript

Doch nach diesem Ausflug in die (Problem-) Welt der professionellen Automatisierung zurück zur Visualisierung der Rollladensteuerung. Im folgenden soll das bestehende Projekt ein wenig erweitert werden. So sollen an Stelle der Togglebuttons zum Schalten der Rollladen jetzt einfache Buttons für »hoch«, »runter« und »Stopp« zum Einsatz kommen, welche nicht mehr über ein im Floweditor erstelltes Blockdiagramm gesteuert werden, sondern über ein externes Skript.

Der Benutzer soll zukünftig nur noch einen der drei Buttons kurz drücken, um eine Aktion auszulösen. Das Skript überwacht dabei komplett den Zustand und steuert auch die Ausgänge der Parallelschnittstelle entsprechend der letzten Aktion des Benutzers an.

Die OpenAPC-Software bringt zwei Skriptinterpreter mit: einen für Lua, einer leicht zu erlernenden und schön strukturierten Sprache, und einen für Instruktionslisten (Instruction List, IL), einer einfach gehaltenen, assemblerähnlichen Sprache, welche aus der Welt der Automatisierung und speicherprogrammierbaren Steuerungen (SPS/PLC) bekannt ist und dort auch häufig verwendet wird.

Allerdings ist es – was zuerst ein wenig überrascht - nicht möglich, diese Skripte direkt in der Umgebung des OpenPlayer laufen zu lassen. Hierfür ist ein Umweg über ein zusätzliches Element notwendig, den sogenannten »Interlock Server«. Dieser dient als zentrale Kommunikationsinstanz und Schnittstelle zwischen allen Komponenten, mit denen der OpenPlayer in einem Projekt möglicherweise zusammenarbeitet. Das heißt also, man ist hier nicht auf eine einzelne Instanz eines Skriptinterpreters angewiesen, vielmehr ist es bei komplexeren Systemen tatsächlich auch möglich, Teilaspekte einer Steuerung in getrennten Skripten zu behandeln. Das erhöht die Übersichtlichkeit und Wartbarkeit eines Projektes enorm.

Doch nun zur praktischen Durchführung des Vorhabens. Da die bisherige Rollladensteuerung nicht all zu komplex ist und die vorzunehmenden Änderungen etwas umfangreicher, lohnt es sich an dieser Stelle durchaus, ein komplett neues Projekt aufzusetzen. Hier sind zuerst ein paar globale Einstellungen notwendig, welche im Projektdialog vorgenommen werden, der sich mittels des Menüs DateiProjekteinstellungen öffnen lässt. Dieser bietet einige Möglichkeiten, das Projekt anzupassen. So kann hier die Größe des Fensters gewählt werden, in dem sich später die Bedienelemente befinden, sowie dessen Hintergrundfarbe. Weitere Parameter wie Timeout für Kontrollfluss und Genauigkeit Timer sind nur für Projekte von Interesse, bei denen die Logiksteuerung von einem Floweditor-Blockschaltbild übernommen wird (was in diesem Beispiel hier ja erstmalig nicht mehr der Fall sein wird).

Interessant wird es allerdings wieder bei der Option Externe ApplikationenInterlock Server benutzen. Hierbei handelt es sich um die oben bereits erwähnte zentrale Kommunikationsinstanz, welche erforderlich ist, wenn externe Skripte zum Einsatz kommen sollen. Diese Option ist also zu aktivieren.

Desweiteren gibt es hier noch eine interessante Konfigurationsmöglichkeit für Touchscreens: wenn diese Option aktiviert wird, kümmert sich die Software automatisch darum, dass der Benutzer Text- und Zahlenwerte eingeben kann, auch wenn er keine Tastatur hat. So bald im OpenPlayer ein entsprechendes Eingabefeld selektiert wird, öffnet sich ein On-Screen-Keyboard, mit dem Texte und Zahlen per Bildschirm eingegeben werden können, die anschließend automatisch in das entsprechende Eingabefeld übernommen werden.

Pro-Linux
Pro-Linux @Facebook
Neue Nachrichten
Werbung