Bericht aus der Entwicklung: Stenokodieren
Asperg, 1. Juli 2009 |
|||||
Die Fähigkeit Abläufe zu programmieren, um flexibel auf die gestellten Aufgaben zu reagieren, war ein herausragendes Ziel bei der Entwicklung von Bator, dem Programmgerüst für SCADA-Applikationen. |
![]() |
||||
Anforderungen an die Programmierung:
|
|||||
Anweisung kodierenBei einem transparentem System mit einer visualisierten Ausrüstung kann das Programm mit geringem Schreibaufwand erstellt und verständlich dokumentiert werden. Die Sensoren und Aktoren stellen zusammen mit Merkern und Registern die Variablen in diesem Programm dar. Die Operationen werden aus kontextsensitiven Menüs ausgewählt. Die Bezeichnung der Variablen wird in den Kontextmenüs verwendet. Wenn die Variable treffend bezeichnet wurde, dann hilft dies dem Benutzer beim Kodieren und das Programm wird mit diesen Informationen kommentiert. |
![]() |
||||
Im Programmfenster „Stenokode“ erscheint danach die Anweisung „1 ---> Prüfung“ und dazu der Kommentar „setze Prüfung auf 1“, der aus dem Kontextmenü stammt. |
|
||||
Auch das Symbol zu dieser Operation wird der Anweisung mitgegeben. Der Text für die Anweisung selbst, wird fest vorgegeben, damit der Effekt der Wiedererkennung gewahrt bleibt. |
|
||||
Bei Bedarf kann der Kommentar im Fenster „Programm-Details“ noch ausführlicher gestaltet werden. Der Schreibaufwand beschränkt sich auf die Bezeichnung der Variablen und auf einen ausführlichen Kommentar für diese Anweisung. |
|
||||
|
Der geänderte Kommentar wird in das Programm-Fenster übernommen. |
||||
Kontextsensitive MenüsFür die Prüfung der Sanftanlauf-Elektronik von Elektromotoren wird ein schematisiertes Prozessabbild als Hintergrund gewählt. Alle benötigten Sensoren und Aktoren wurden darauf angeordnet. |
|
||||
|
|
||||
Elemente des Gradienten-DetektorsDie meisten Anweisungen für ein Prüfprogramm werden den Kontextmenüs entnommen. Die Auswahl des ersten Befehls (einschalten der LED „Prüfung läuft“) wurde bereits im vorherigen Kapitel beschrieben. Alle anderen Sensoren und Aktoren gehören zum Gradienten-Detektor und bieten im Kontextmenü den Befehl „aktiviere Gradienten-Detektor“ an, der als nächster Befehl kodiert wird. |
|
||||
|
|
||||
|
Anweisungen wie diese, sowie für die Schleifenbildung, Verzweigungen, Barcode usw. können dem Kontextmenü des Fensters „Programm“, dem Menü „kodieren“ entnommen oder mit einem Klick auf einen Knopf aus der Werkzeugleiste gewählt werden. |
||||
Das Programm als StenokodeZuletzt wird die LED „Prüfung läuft“ ebenfalls ausgeschaltet. Das Prüfprogramm, das mit diesen Aktionen kodiert wurde, wird nun im Fenster „Stenokode“ als Baumstruktur mit Einrückungen aufgelistet. Dieses Prüfprogramm bildet zusammen mit der registrierten Ausrüstung das Dokument (*.bator) für Batch Monitor. Beide Teile dieses Dokuments können jeweils für sich als XML-Datei (*.xml) ex- und importiert werden. Das Programm wird später in der Betriebsart „Agieren“ abgearbeitet. Es muss hierfür nicht compiliert werden. Es ist nicht mal ein Interpreter notwendig. Bei diesen Anweisungen handelt es sich um einen autarken Code, der sich selbst interpretiert. Die Art der Programmierung hat viel mit einer Skriptsprache gemein. Bei der Entwicklung von Applikationen für Prüfautomaten, Sondermaschinen usw. hat diese Art von Skript den Vorteil flexibel an neue Anforderungen angepasst zu werden. Anweisungen können geändert werden, entfallen oder neu hinzukommen ohne die Ausführungseinheit zu überarbeiten. Neue Anweisungen zu kreieren gestaltet sich dabei für den Applikationsprogrammierer relativ einfach, da die grundlegende Funktionalität von einer Basisklasse vererbt wird. In Anbetracht des geringen Schreib- und Zeitaufwandes beim Programmieren, nennen wir dieses Verfahren Stenokodieren und die Sequenz aus diesen autarken Anweisungen: Stenokode. |
|
||||
Digitale SensorenSchalter, Tasten, Lichtschranken usw. geben ein binäres Signal ab: Ein oder Aus. Die Flanke, die sich bei einem Signalwechsel ergibt, kann als Ereignis ausgewertet werden. Wenn der Befehl „warte auf steigende Flanke“ im Programm steht, dann wird mit der Ausführung so lange gewartet, bis dieses Ereignis eintritt. Der Status eines digitalen Signals kann mit zuvor angelegten Merkern verknüpft oder als Bedingung für Programmschleifen oder Verzweigungen genutzt werden. Er kann auch in das Protokoll aufgenommen werden. |
|
||||
Analoge SensorenAnaloge Sensoren liefern den aktuellen Wert in der Maßeinheit der gegebenen Dimension. Dieser Wert kann protokolliert, für eine Berechnung oder einen Vergleich herangezogen werden. Beim Protokollieren eines Analogsensor wird ausgewertet, ob der aktuelle Wert toleriert wird. Die Toleranz für jeden Analogsensor wird in den Ausrüstungs-Details definiert. Wenn mit dem selben Sensor mehrfach unter abweichenden Bedingungen gemessen wird, dann kann die Toleranz für jede Messung individuell angepasst werden (s. Stenokode-Details dieser Anweisung). |
|
||||
Mehrfachauswertung analoger SensorenWenn ein Analogsensor mehrfach ausgewertet wird, kann jeder Messung eine individuelle Toleranz zugeordnet werden. Im Fenster der Stenokode-Details kann für die Anweisung „notiere <Name der Variablen>“ neben dem Text für Protokoll-Eintrag und Kommentar auch der minimal und maximal tolerierte Wert eingegeben werden. |
|
||||
Analoge AktorenAnaloge Aktoren geben einen numerischen Wert in der Maßeinheit der gegebenen Dimension an die angeschlossene Ausrüstung aus. Dies kann ein berechneter oder ein konstanter Wert sein. In den Stenokode-Details zu dieser Anweisung können konstante Werte definiert werden. Ausgegebene Werte lassen sich zurück lesen und protokollieren. Daraus kann bei nachfolgenden Messungen auf Bedingungen geschlossen werden. |
|
||||
Numerische AchsenNumerische Achsen lassen sich auf dem verfügbaren Weg positionieren. Mit der Anweisung „referenziere z-Achse“ kann das Messsystem synchronisiert werden. Wenn für die x-/y-Achse ein maßstabsgetreues Anlagenabbild existiert, dann lassen sich die Achsen auch mit Hilfe einer Positionsmarke programmieren. |
|
||||
Koordinaten eichenÜber Eichmarken, deren Abstand bekannt ist, kann der Maßstab ermittelt und über die Nullmarke synchronisiert werden. In diesem Beispiel die Position 0 und 125mm. Die Eichmarken bestehen aus einem weißen Kreuz auf einem schwarzen Kreis. Die Positionsmarke hat vier schwarze Markierungen auf einem halb transparentem Kreis aus je zwei hellen und dunklen Segmenten. |
|
||||
Zum Eichen wird die Positionsmarke von der Achse gelöst, damit man sie frei verschieben kann. |
|
||||
Mit der Maus wird die Positionsmarke nahe an die Eichmarke geschoben. Mit den Pfeiltasten der Tastatur lässt sich die Positionsmarke dann pixelgenau über die Eichmarke legen. |
|
||||
Die Einträge im Kontextmenü der Positionsmarke zu Synchronisieren der x-/y-Achse als auch in der z-Achse sind nur in der Betriebsart „Assoziieren“ aktiviert. Nachdem die Positionsmarke auf die Eichmarke am Ende der Referenzstrecke gelegt wurde, kann der Befehl „Endpunkt Referenzstrecke setzen“ aus dem Kontextmenü aufgerufen werden. |
|
||||
Danach wird die Positionsmarke auf den Anfang der Referenzstrecke gesetzt. Wenn Anfang und Nullpunkt der Referenzstrecke zusammenfallen, dann können nacheinander die Befehle „Startpunkt Referenzstrecke setzen“ und „Nullpunkt setzen und skalieren“ aus dem Kontextmenü der Positionsmarke aufgerufen werden. Andernfalls muss die Positionsmarke noch auf den Nullpunkt gelegt werden. |
|
||||
Mit Positionsmarke programmierenBei diesem Prüfprogramm werden die Tasten des Prüflings in der x-/y-Achse angefahren und danach mittels der z-Achse gedrückt. Um die entsprechenden Fahrbefehle für die NC zu generieren muss man nur die Positionsmarke mit der Maus auf die Taste ziehen und danach die Anweisung aus dem Kontextmenü wählen. Die Werte für die x-/y-Achse werden aus den Koordinaten des Anlagenabbildes entnommen. Danach wird die z-Achse programmiert. Hierzu wird entsprechende Eintrag aus dem Kontextmenü des Symbols für die z-Achse gewählt (wie oben beschrieben). |
|
||||
BerechnungenRegelmäßige angeordnete Raster aus Zeilen und Reihen lassen sich durch die Berechnung der jeweiligen Position leichter und schneller programmieren. Häufig müssen Stellgrößen vor der Ausgabe, in Abhängigkeit von aktuellen Werten (Istwert), berechnet werden. Für logische Entscheidungen müssen unter Umständen zuvor abgefragte Zustände einfließen. Um solche Berechnungen zu ermöglichen, stellt Bator die benötigte Infrastruktur zu Verfügung. |
|
||||
Merker und Register für ZwischenergebnisseMerker können den binären Status (0/1 bzw. false/true) speichern. Register können jeweils eine Zahl speichern. Man kann sie auch boolesche oder numerische Variable nennen. |
|
||||
Es können nahezu beliebig viele Variablen angelegt werden. Die Anzahl wird nur durch den verfügbaren Arbeitsspeicher (RAM) des verwendeten Rechners begrenzt. Die Merker erlauben eine Programmierung, ähnlich wie bei einer SPS. Anweisungen für Merker kann in drei Kathegorien eingeteilt werden:
|
|
||||
|
|
||||
Der AkkumulatorDer Operator wird im Kontextmenü als Anweisung angeboten. Der Akkumulator zeigt das Ergebnis der letzten Berechnung an. Im Feld „Bool“ steht das Ergebnis der booleschen, im Feld „Real“ das der numerischen Operation. Numerische Größen werden normalerweise als Gleitpunktzahl verarbeitet. |
|
||||
Die vier Felder des Akkumulators sind nicht editierbar, besitzen aber jeweils ein Kontextmenü mit den verfügbaren Anweisungen. Bei Berechnungen und Verknüpfungen stellt der Akkumulator jeweils einen Operanden dar. Der andere Operand kann ein Sensor, Aktor, Merker oder Register sein. Pro Operation wird maximal eine Adresse benötigt. Um das Ergebnis einer Ganzzahl-Division aus Quotient und Rest darstellen zu können wird der Akkumulator durch die Felder „Rest“ und „Integer“ komplettiert. |
|
||||
|
|
||||
|
|
||||
Verfasst am 1.07.2009 von Anton Kling |
|
Impressum | Disclaimer |
|
aktualisiert: 29.07.2009 | (c) Alle Rechte vorbehalten Catix GmbH Asperg |