Software-Projektierung automatischer Steuerungen - Overview
Software-Projektierung automatischer Steuerungen

Units


SPaS - Units
Units


String Handling Routines

Various utility routines/method/classes for string handling


File/Directory Name Manipulation Routines

Various utility routines/method/classes


Components


Buttons


Labels


Legend

 - Marks that the item has an associated example. (this bitmap is a hyperlink.)

 - Marks that the item has documented bugs.


Stern-Dreieck-Anlaufschaltung (Einführung)

Sie können von hier aus zu allen Teilen dieses Themas springen:
PRAP Stern-Dreieck-Steuerung (Teil 1)
PRAP Stern-Dreieck-Steuerung (Teil 2)
PRAP Stern-Dreieck-Steuerung (Teil 3)
Projektieren des Zeitgliedes "Wartezeit"
Motorstrom-Verarbeitung (Projektierung der Vergleicherfunktion)

Aus der Schaltung sind das Hauptschütz, das Sternschütz und das Dreieckschütz zu erkennen. Für Anwender des PRAP-Editors, denen Sinn und Zweck dieser Schaltung fremd sind, ist eine kurze Erklärung beigefügt. Ebenso wie bei dem Thema Lampenschaltung beginnt die binäre Prozeßanalyse damit, die Variablen zu bestimmen.

Formulierung der Operationsvariablen......Kurzzeichen

•	Hauptschütz einschalten/ausschalten..........S1

•	Sternschütz einschalten/ausschalten............S2

•	Dreieckschütz ein-/ausschalten.......................S3

Bemerkung: Aus dem Schaltbild sind nur diese drei zu entnehmen. Sollten noch z.B. Signalisierungen an die Warte gewünscht werden, so sind entsprechende Ergänzungen erforderlich. Das Beispiel soll aber einfach bleiben.

Formulierung der Prozeßvariablen.........Kurzzeichen

•	Ferngesteuert schalten.......................FgS

•	Motor einschalten..................................Mot_ein

•	Motor von Hand einschalten.............VHd_Mot_ein

•	Strom hat Weiterschaltwert erreicht..I_schalt

•	NOT-Aus.................................................NOTAUS

Bemerkungen:
Die ersten beiden Variablen "liefern" andere Teilprozesse (oder auch nur einer), sie stellen damit eine Verbindung zu diesen "Informationsquellen" her. Solche Variable werden Koppelvariable genannt.
Wenn nicht ferngesteuert geschaltet wird, dann vor Ort von Hand z.B. mit einem Taster. Zu diesem Taster und seiner Dynamik ist später noch zu sprechen.

Note
Die Weiterschaltbedingung vom Stern- in den Dreieckbetrieb liefert ein Strommesser, der allerdings nicht im Schaltbild eingetragen ist. Sie müssen als Entwerfer des PRAP mit Ihrem Auftraggeber daher verhandeln! (siehe Verhandlungs-Themen )

Vielleicht will der Auftraggeber eine Zeitsteuerung haben, also nach z.B. 5 Sekunden Anlauf einfach weiterschalten wollen. Dann muß er aber dafür die Verantwortung übernehmen, falls die Weiterschaltung zu Störungen führt.
Die NOT-Aus-Variable ist mit eingefügt, weil es Notsituationen geben kann, die zum sofortigen Abschalten zwingen. Auch sie kann eine Koppelvariable sein aber auch ein Taster.

Eine dem Stern-Dreieck-Anlauf übergeordnete Steuerung (siehe Vorbemerkungen zum Beispielprojekt) soll bewirken, daß das Hallentor zwei Motore steuern: Antrieb "Tor_AUF" (Torbewegung z.B. von links nach rechts) und der Antrieb "Tor_ZU" (Torbewegung z.B. von rechts nach links). Natürlich müssen dort verschiedene Probleme bedacht werden wie z.B. das gleichzeitige Einschalten beider Motore zu verhindern. Das soll hier nicht behandelt werden, vielmehr sind die Variablen zu den
Instanzen "Tor_AUF" und "Tor_ZU"
zu benennen:

 ...St_Dr_Anlauf..|..Tor_AUF...|...Tor_ZU
================================================

•	...Mot_ein....|..Tor_oeffn..|..Tor_schli

•	.....FgS......|.ferngest_AUF|.ferngest_ZU

•	.VHd_Mot_ein..|..VHd_oeffn..|..VHd_schli

•	...I_Schalt...|..I_AUF......|...I_ZU

•	...NOTAUS.....|.NOT_Tast_AUF|.NOT_Tast_ZU

•	......S1......|.Oeffn_Haupt.|.Schli_Haupt

•	......S2......|.Oeffn_Stern.|.Schli_Stern

•	......S3......|.Oeffn_Drei..|.Schli_Drei

•	..Motor_aus...|..Oeffn_Aus..|..Schli_Aus

Die Weiterschaltbedingungen beim Öffnen (I_AUF) und beim Schließen (I_ZU) des Tores sollen von der Stromerfassung der Motore stammen. Dieses Problem wird nochmals gegen Ende des Themas PRAP Stern-Dreieck-Steuerung (Teil 3) aufgegriffen.

Weiter mit PRAP Stern-Dreieck-Steuerung (Teil 1)


PRAP Stern-Dreieck-Steuerung (Teil 1)

Die Handhabung des PRAP-Editors zum Herstellen der drei Operationen entnehmen Sie bitte aus der Lampenschaltung (Teil 1/2).
Im folgenden Bild sehen Sie die Wertebelegung, den Binärvektor, der Operation "Motor in Betrieb".
 Die Handhabung der Datenbank, um zu den Eintragungen der Operationsvariablen zu gelangen, finden Sie in dem Beispiel Lampenschaltung.
Der Datenbankeintrag für alle bisher im Projekt Lampen- und Stern-Dreieck-Schaltung eingetragenen Variablen finden Sie im nächsten Bild. Allerdings ist die Operationsvariable "Hauptschütz einschalten" ausgewählt, zu der das Kurzzeichen (=Name) S1 gehört.

Note
Es ist streng darauf zu achten, daß die richtigen Kurzzeichen den Statements zugeordnet werden.

Sie sehen einen Eintrag EU xxxx in "Point of Automation" (=EMSR-Stellen nach DIN 19227). EU bedeutet E=Elektrisch, U=Antrieb von mehreren Varieblen beeinflußt. Weil der Typ-PRAP keinen Bezug zur konkreten Anlage hat, sind xxxx anstelle einer konkreten EMSR-Stelle geschrieben. Instanzen müssen dann echte Bezeichner haben.

Weiter mit PRAP Stern-Dreieck-Steuerung (Teil 2)


PRAP Stern-Dreieck-Steuerung (Teil 2)

Die schrittweise Weiterentwicklung des PRAP erfolgt genau so wie
inLampenschaltung (Teil 2)
und Lampenschaltung (Teil 3)
beschrieben wurde, nur daß jetzt fünf P-Variable den Steuerungsablauf bestimmen, sie wurden im Einführungsteil beschrieben. Das Bild des PRAP ist so gezeichnet, daß jede Kante in ihrem Verlauf einzeln betrachtet bzw. verfolgt werden kann. In der Endausführung kann man parallele Kanten übereinanderlegen, wie das Bild im Teil 3 zeigt.
Zunächst aber zur Steuerungs-Funktion des PRAP im oberen Teil. Der Motor bleibt ausgeschaltet, solange weder von Hand noch ferngesteuert der Motor eingeschaltet werden soll. Der Motor-Anlauf wird erreicht, sobald entweder bei Fernsteuerung der Motor eingeschaltet werden soll oder von Hand (Taster, wie oben erwähnt).
Aber hier tritt die erste Besonderheit auf:
Beide Yes-Ausgänge der P-Variablen führen zu "NOT-Aus", und falls dort Y gilt, bleibt der Motor ebenfalls ausgeschaltet.

Note
Würden die beiden Kanten nicht zu NOT-Aus führen sondern zur Operation "Motor-Anlauf (Sternschaltung)", dann würde zwar der Motor auch nicht anlaufen, aber dieser Endeffekt führte stets erst über die Operation "Motor-Anlauf", die dann doch nicht stabil erreicht wird!

Natürlich kann die P-Variable "NOT-Aus" auch VOR der Operation "Motor-Anlauf" eingetragen werden und mit ihrer No-Kante den Anlauf erwirken. Dann sollte man aber dennoch diese P-Variable nochmal - wie sie schon jetzt steht - einsetzen, weil während des Anlaufes das "NOT-Aus" auch funktionieren muß. Es handelt sich also bei der vorgelegten Lösung um eine Vereinfachung des PRAP, aber strukurstabil ist die zweite Situation {Op. Motor-Anlauf mit Stabilitätspfad: (NOT_Aus = N) & (Strom hat Weiterschaltwert erreicht = N)} nicht, weil die Erfüllung des Stabilitätspfades von der No-Aussage des Stromgrenzwertes abhängt. Im Teil 3 wird das Problem weiterbehandelt! Lesen Sie eventuell nochmal über die Prüfungen des PRAP nach.
Die zu den drei O-Variablen S1, S2 und S3 hinzugekommenen fünf P_Variablen (vergl. click here ) sehen Sie im nachfolgenden Bild, allerdings fehlt S1, da der Darstellungsausschnitt dies verdeckt.

Es sind drei EMSR-Stellenbezeichnungen dazugekommen, HZ xxxx und HS xxxx für NOT-AUS und Handsteuerung. EF xxxx bedeutet gemäß DIN 19227 Elektrische Größe E und Durchfluß F erfassen, so daß F hier nicht z.B. als Gasströmung sondern als elektrischer Strom aufgefaßt wird. Die xxxx stehen anstelle der konkreten EMSR-Stellen in den Instanzen. Es sei hier an das Informationsfluß-Modell erinnert, in dem die Informations-Eingabe-Einheit genau das meint, was hier bezüglich Strommessung zu erfüllen ist. Sie können sich auch im Einführungsabschnitt die Überlegungen hierzu ansehen.

Weiter zu PRAP Stern-Dreieck-Steuerung (Teil 3)


PRAP Stern-Dreieck-Steuerung (Teil 3)

In diesem Teil soll zuerst die Umzeichnung des PRAP gegenüber dem Bild in Teil 2 besprochen werden. Danach folgt eine Betrachtung zur Dynamik der P-Variablen, wie im Einführungsteil angekündigt, und damit auch die Sinnfälligkeit der Einführung einer weiteren P-Variablen.

Es gibt zwei beachtliche Unterschiede in der Gestaltung des PRAP gegenüber dem im Teil 2. Zuerst fällt natürlich auf, daß alle Kanten rechteckig und so angeordnet sind, daß sich alle überdecken, die das gleiche Ziel erreichen.

Tip
Wenn Sie Schwierigkeiten mit dem Geradezeichnen haben, dann halten Sie sich an das Raster-Gitter, und eventuell schalten Sie mit Zoom auf 200% (rechte Maustaste im freien Feld).

Schwerwiegender ist die Veränderung bei der Operation "Motor-Anlauf". Die Stabilitätsbetrachtungen im Teil 2 können zum Umzeichnen des PRAP genutzt werden. Nun ist deutlich zu sehen, daß die P-Variable "NOT-Aus" mit zur ersten Situation gehört. Die Durchlaufgefahr zur Operation "Motor in Betrieb" im Fall einer falschen Aussage zum Stromwert ist nun noch deutlicher zu erkennen.

Dynamik der Variablen "Strom hat Weiterschaltwert erreicht:"
Immerhin ist darüber nachzudenken, daß mit dem Einschalten des Haupt- und des Sternschützes der Stromanstieg erst mit Zeitverzögerung durch die Motorwicklung und die Meßeinrichtung übertragen wird. Jede Steuereinrichtung (SPS) ist schneller und damit ist die Fehlfunktion bereits abzusehen. Erst dann, wenn der Stromwert die Größe des Weiterschaltwertes überschritten hat, und das kann je nach Motorgröße einige zig Millisekunden dauern, beginnt die Aussage der P-Variablen wichtig zu werden.

Lösungsmöglichkeiten des Durchlaufproblems

 1.	Sie vereinbaren mit Ihrem Auftraggeber die Bereitstellung des Analogwertes und projektieren eine Eingangsbaugruppe zur Analog-Digital-Wandlung. Diese Möglichkeit wurde bereits im Einführungteil erwähnt. Sie programmieren im PRAP nicht nur den Weiterschaltwert sondern zusätzlich einen Maximalwert als Vergleicherfunktion und führen eine neue P-Variable "Maximalstrom erreicht" (Kurzzeichen: I_max) ein.

 2.	Sie schätzen die Anlaufdauer bis zur Überschreitung des Weiterschaltwertes auf z.B. 250ms und programmieren ein Zeitglied so, daß erst nach Ablauf dieser Zeit nach dem Unterschreiten des Weiterschaltstromwertes "gefragt" wird. (Diese Lösungsvariante wird weiterverfolgt!)

 3.	Sie verzichten darauf, den relativ unsicheren Wert des Maximalstromes einzuführen. Dafür verfolgen Sie den Stromverlauf einfach mit einem PRAP-Programm, das dann an sich zur Informations-Eingabe-Einheit gehört. Aber es muß natürlich hier im Projektbaum erscheinen.

 4.	Sie sind sich mit Ihrem Auftraggeber einig, daß überhaupt keine Erfassung des Anlaufstromverhaltens erforderlich ist und schalten nach z.B. 2s weiter auf Dreieck-Betrieb.

Der Lösungsvorschlag 2. hat zum Vorteil gegenüber Vorschlag 1., daß Sie für die Erfassung des Weiterschaltwertes auf ein Binärsignal zugreifen können (siehe auch in der Einführung), falls Sie das so mit dem Auftraggeber vereinbart haben.

Sie sehen im PRAP die einfache Veränderung durch Einschieben der P_Variablen "Wartezeit beendet". Solange dies nicht der Fall ist, bleibt der Stromwert unberücksichtigt. Nach der Wartezeit wird angenommen, daß der Weiterschaltwert überschritten ist und auf das Erreichen "von oben her" gewartet wird. Es ist dazu eine Vergleicherfunktion zu projektieren. Im Thema Motorstrom-Verarbeitung finden Sie eine Lösung ganz anderer Art. Dann kann auch auf das Zeitglied verzichtet werden. "Strom hat Weiterschaltwert erreicht" wird dort ebenfalls durch Vergleich des Motorstromes mit dem Weiterschaltwert als Sollgröße ermittelt, bitte sehen Sie sich das selbst dort an.
Die dritte Situation "Motor in Betrieb (Dreieckschaltung)" ist nur dann stabil, wenn "Motor einschalten" = Yes oder "Motor von Hand einschalten" = Yes gilt. Bei der Einführung dieser Variablen wurde schon auf die Dynamik dieser Signale verwiesen. Sind beide P_Variablen statisch, dann sollten sie auch während des Motor-Anlaufes ihre Wertung Yes behalten, andererseits erfolgt mit dem Übergang vom Anlauf in den Betrieb das Abschalten statt! Das will aber niemand. Für das Signal "Motor von Hand einschalten" bedeutet das, es MUSS ein rastender Taster verwendet werden (oder ein Ein-Aus-Schalter)! Falls Sie das nicht wollen, müssen Sie eine weitere Variable "Motor von Hand ausschalten" einführen und in der dritten Situation anstelle "... einschalten" verwenden. Dann dürfen beide Hand-Taster als dynamisch gelten.

Zu Ihrer eigenen Sicherheit und zur Information Dritter hat sich sehr bewährt, die PRAP-Funktion zu beschreiben. Stellen Sie den Cursor auf ein freies Feld außerhalb der PRAP-Symbole und klicken auf die rechte Maustaste; danach Klick auf "Descriptions". Nun können Sie Ihren Beschreibungstext eintragen. Als Beispiel sehen Sie den Text des PRAP-Autors:

Weiter mit Projektieren des Zeitgliedes "Wartezeit"


Projektieren des Zeitgliedes "Wartezeit"

Lesen Sie hierzu die Ausführungen zu Zeitgliedern/Timern.
Die Zuordnung der P-Variablen "Wartezeit beendet" zum Timer - Klick auf "nothing" - hat natürlich nur Sinn, wenn ein dazugehöriges Zeitglied existiert. Deshalb sollten Sie zuerst die O-Variable "Wartezeit ein" im PRAP einführen und das Zeitglied konfigurieren. Im nachfolgenden Bild sehen Sie die Wertebelegung in der Operation "Motor-Anlauf (Sternschaltung)".

 Natürlich beginnt man mit einem Klick auf "Insert New Variable" und erhält die Möglichkeiten der Eingaben, wie Sie es schon kennen (eventuell in der Lampensteuerung nachlesen).
Nach dem Doppelklick auf "New_Operation_Variable" oder Klick auf "Edit Selected Variable" öffnet sich das Fenster "Operation Variables" zur Eingabe der notwendigen Daten. Hier handelt es sich um die Operationsvariable "Wartezeit ein", die im statischen Merkerbereich liegen soll, also "Local Static" bei Variable Usage wählen. Schaffen Sie sich Zugang zur Datenbank mit Klick auf [image]. Tragen Sie bei Name z.B. "T_W" ein als Kurzzeichen zu "Wartezeit ein". Der Datentyp muß Boole sein. Danach wieder [image] anklicken.
Im unteren Teil sehen Sie den Bereich "Choose a Function" ( eine Funktion wählen), das erste Feld bietet Ihnen alle möglichen an. Wählen Sie "Create Timer". Danach ein Klick auf das Feld "nothing" oder "none" (soviel wie Formel oder Formelausdruck nicht vorhanden).

 Es öffnet sich ein Fenster "Timer Configuration": Im oberen Bereich "Timer" wird "Name" - der Bezeichner - erwartet, darunter (Statement) die Beschreibung.
Im unteren Bereich "Timer Value" soll bei "Name" der Bezeichner des Zeitwertes stehen. Im Statement soll wieder ein technologisch sinnvoller Text eingetragen werden. Die beiden Felder "Variable Usage" dienen der Eindeutigkeit der Nutzung, oben "Input" wegen der Step-7-Spezialität, unten "Constant", weil eine feste Zeit vorgegeben werden soll. Die entsprechenden Hilfetexte geben ebenfalls Auskunft.

 Klicken Sie nun auf [image] im oberen Teil. Im Editierfeld der Datenbank tragen Sie bei Name "T_Anl" ein. Danach müssen Sie den Datentyp "TON" wählen. Anschließend auf [image] klicken. Betrachten Sie sich das Ergebnis: T_Anl steht bei "Timer/Name" eingetragen. Vielleicht haben Sie es schon erfolgreich probiert: Das Feld "Statement" ist zum Editieren vorgesehen, also "Anlauf-Timer" eintragen!

Tragen Sie im unteren Teil als Statement "Wartezeit" ein und wählen Sie "Constant" bei Variable Usage. Den Zeitwert tragen Sie in das vorgesehene Raster ein, z.B. 250ms. Klicken Sie nun auf [image] im unteren Teil. Die Zeit erhält noch einen Namen, hier z.B. "WZ". Sie ist vom Datentyp "Time". Am Ende der Eingaben wieder [image] anklicken. Damit findet das Eintragen in den linken unteren Teil statt.
Klicken Sie auf "Return" und gelangen zum nächsten Bild:

Hier müssen Sie mit "OK" abschließen, um den konfigurierten Timer endgültig in der Datenbank abzuspeichern. Mit "Cancel" ist jedenfalls bis auf die Variablen alles verloren. Die Variablen müssen Sie getrennt löschen, weil es bei einer Mehrfachnutzung ansonsten zu unliebsamen Überraschungen kommen könnte, wenn eine Variable fehlt, wo sie genutzt wird.

Damit ist das Zeitglied funktionell konfiguriert aber noch nicht fertig projektiert, weil es noch die P-Variable "Wartezeit beendet" einzubinden gilt. Also den Cursor im PRAP auf diese Variable stellen und mit Rechte-Maus-Klick und anschließend mit Klick auf "Data Access" in das Menue "Process Variables" gelangen(auch Doppelklick möglich). Falls beim Entwickeln des PRAP schon "T_W_End" als Variablen-Identifikator, kurz: NAME, eingetragen wurde, sehen Sie das nachstehende Fenster:

Anderenfalls fügen Sie den Namen nach KLick auf [image] und [image] neu ein. Beachten Sie dabei die Hilfeangebote!
Nun bei Formula Klick auf "nothing" oder "none" und bei "Name" den betreffenden Timer eintragen, indem Sie den Filter nur für Member ST_DR_Anlauf einschalten - Klick auf "A Filter ON" - und in diesem Fall 'T_Anl' auswählen, weil dies für den Anlauf-Timer steht.

Mit Klick auf [image] übertragen Sie die Timer-Zuordnung in die P-Variable, und erhalten

Nach einem Klick auf [image] öffnet sich die Variablentabelle (Access Table, Zugriff auf die Datenbank) und zeigt Ihnen die ausgewählte Variable:

Mit Klick auf "OK" schließen Sie das Zeitglied-Projektieren ab.
Zurück zu Stern-Dreieck-Anlaufschaltung (Einführung)


Ein Drehstrom-Motor enthält drei Spulen-Systeme, drei Wicklungen, drei Phasen. Die Anschlüsse der Wicklungen am Motor sind in der Schaltung mit U - u, V - v und W - w gekennzeichnet, die Wicklungen selbst durch drei Rechtecke. Da Drehstrom aus drei um 120 Grad versetzten, gleich hohen Wechselspannungen besteht, entsteht in einem ebenso um 120 Grad versetzt gewickelten Motorengehäuse durch die drei Wicklungen ein Dreh-Magnetfeld. Die Stärke des Magnetfeldes hängt von der Höhe (Größe) des Stromes ab, der durch jede Wicklung fließt.
Die Drehstrom-Netzanschlüsse R, S und T werden mit den Motoranschlüssen U, V und W verbunden.

Im Sternbetrieb sind die Anschlüsse u, v und w miteinander verbunden, wodurch die Wechselspannung zwischen R und S einen Strom durch die Wicklungen U-u und V-v treibt, die zwischen S und T einen Strom durch V-v und W-w, die zwischen T und R durch W-w und U-u.
Im Dreieckbetrieb sind u mit S, v mit T und w mit R verbunden, die Wechselspannung zwischen R und S treibt jetzt einen Strom nur durch U-u, der deshalb ca. 73% höher ist.
Um das Netz beim Einschalten nicht mit einem zu hohen Anlaufstrom zu belasten, wird zunächst mit Sternbetrieb eingeschaltet und nach Abklingen des Einschaltstromstoßes auf Dreieckbetrieb umgeschaltet.


Die Strom-Meßeinrichtung muß Ihnen entweder einen Analogwert (Einheits-Strom oder Einheitsspannung) liefern, den Sie dann über einen Analog-Digitalwandler weiterverarbeiten oder Sie erhalten schon das Vergleichsergebnis mit dem Soll-Stromwert als Binärgröße. Im ersten Fall müssen Sie eine Vergleicherfunktion mit im PRAP projektieren, im zweiten Fall genügt ein Binär-Eingang.
Aber damit ist es nicht getan! Beachten Sie diese Diskussion in allen Teilen zu diesem Beispiel.


Neue P-Variable "Maximalstrom erreicht" in der Situation Motor-Anlauf


Das Einführen der P-Variablen "Wartezeit beendet" beginnt damit, zunächst "Statement"='Wartezeit beendet' einzutragen. "Variable Usage"='Local Static' ist hier sinnvoll zu wählen. Die Zuordnung zum Timer - Klick auf "nothing" - hat natürlich nur Sinn, wenn ein dazugehöriges Zeitglied existiert, aber "Choose a Function"='Timer Output Q' kann schon erfolgen.
Mit Klick auf [image] können Sie "Name"='T_W_End' als Boolesche Variable eintragen. Das Ergebnis sehen Sie im folgenden Bild:

Zum erfolgreichen Abschluß der Tätigkeit unbedingt [image] anklicken!


Einleitung

In den folgenden Themen finden Sie Empfehlungen und Vorschläge zu Problemlösungen. Es ist daran gedacht, eine Art Sammlung anzulegen.
Das Ganze steht völlig am Anfang, also bitte nicht ausrasten, wenn Sie enttäuscht das Kapitel wieder verlassen. Aber vielleicht haben Sie einen Vorschlag dafür, eine häufig benötigte "Standard-Funktion" oder einen "Standard-PRAP" hier aufzunehmen. Dann lassen Sie uns das wissen, wir werden für die "Verewigung" sorgen.
Für Step 7 finden Sie hier aufgenommene FC und SFC.


Task-gesteuerter Timer

Neben den Standard-Funktionsbausteinen für TIMER, wie in SPAS der Typ TON verwendet wird, kann auch ein zyklischer Aufruf einer Addierfunktion für Zeitwerte bis zu 596,5 Stunden bzw. reichlich 24 Tagen genutzt werden.
Die Addierfunktion,
z.B. Zeitwert:= Zeitwert + Taktzeit;
kann entweder als FUNCTION oder eingebettet in einem PRAP geschrieben werden. Der Datentyp für beide Größen ist TIME, USAGE für "Zeitwert" ist Input/Output und für "Taktzeit" Constant. Die Taktzeit muß gleich der zyklischen TASK sein, die speziell für die Zeitwert-Funktion einzurichten ist.
Natürlich muß ein PROGRAM angelegt werden, das die Zeitfunktion im Rahmen einer FUNCTION oder des PRAP aufruft, wobei auch dem formalen Parameter "Zeitwert" ein direkt addressierter oder lokaler Speicherplatz zugewiesen wird, den Sie am besten in der Ressource deklarieren, weil Sie dann von allen Programmen darauf zugreifen können.

Zwei weitere Hinweise sind noch wichtig:

 1.	Sie können in einem beliebigen PRAP oder einer FUNCTION auf die Variable des Zeitwertes zugreifen. Projektieren Sie dazu die Vergleicher-Funktion COMPARISON in einer von Ihnen einzurichtenden Bedingung / Prozeßvariable.

 2.	Nutzen Sie irgendwo im Projekt eine Möglichkeit aus, um der Variablen "Zeitwert" wieder den Wert Null zuzuweisen. Dies kann z.B. nach dem Ende eines Programmdurchlaufes sein, wenn dieser kürzer als 24,85 Tage = 596,4 Stunden ist.

BEISPIEL:
Sie arbeiten mit STEP 7 und benötigen Zeiten zwischen 4 und 240 Stunden. Die Genauigkeit ist unkritisch, so nehmen Sie den OB 30 mit 5s Taktzeit und Priorität 10, weil es einen OB mit einer größeren Taktzeit nicht gibt. Also projektieren Sie in der Zeitwert-Funktion die Taktzeit = 5s.


Integrieren mit getaktetem Aufsummieren

kommt demnächst


Precompiler

GRUNDSÄTZLICHES:
Jeder PRAP ist seiner Struktur nach ein Automat. Jede Situation entspricht einem Automatenzustand, oder es gibt durch Zustandsvereinigung mehrere zusammengehörige Situationen, die zu einem gemeinsamen Automatenzustand gehören. Im Kompilat sind die Kürzel EfZ = Einfachzustand und MfZ=Mehrfachzustand zu finden. Die so entstehende, zustandsorientierte Verarbeitung sichert eine hohe Verarbeitungsgeschwindigkeit, weil nur der aktuelle Automatenzustand bearbeitet wird.

EINZELHEITEN:
Der Precompiler erzeugt NACH KLICK AUF BUILD in der angegebenen Zielsprache

•	bei MARKIERTER RESOURCE

•	den Quellcode aus jedem graphisch entwickelten PRAP

•	den Quellcode des Steuerungsprogramms exakt gemäß Projektbaum

•	sofern erforderlich: Die Symbolliste aller Variablen.

•	bei MARKIERTEM PROGRAM

•	den Quellcode aus zum Programm gehörigen PRAP

•	den Quellcode des zum Programm gehörigen Teils der untergeordneten Instanzen, bzw. Teilprozesse

•	sofern erforderlich: Die Symbol-Teilliste der zum Programm gehörenden Variablen.

•	bei MARKIERTEM PRAP oder MARKIERTER FUNCTION

•	den Quellcode dieses PRAP oder dieser FUNCTION

•	sofern erforderlich: Die Symbolliste dieses PRAP oder dieser FUNCTION.

Der Precompiler erzeugt NACH KLICK AUF SAVE TO FILE in der angegebenen Zielsprache

•	eine oder mehrere Dateien für die Symbolverwaltung;

•	eine oder mehrere Dateien für die Steuerprogramm-Implementierung,
speziell bei ST PhoenixContact (strukturierter Text lt. IEC 61131-3) ein XML-File nach PLCopen, Version 1.01

•	eine Datei für die Darstellung der Instanzen als PRAP für

 1.	statisches Debugging jeder Instanz

 2.	dynamische Darstellung der Instanzen als PRAP mit den aktuellen Signalen aus der Ressource (Bus zwischen PC und Ressource)

Das Softwareprodukt ist syntaktisch fehlerfrei. Das bedeutet, z.B. STEP7 importiert ohne Fehlermeldung sowohl die AWL als auch die Symbolliste.
Sollten im Projekt Mängel enthalten sein, die nicht zu einem fehlerfreien Ergebnis führen, gibt es ausführliche Meldungen. In der Version 1 sind diese häufig nicht kommentiert, daher oft nicht leicht zu verstehen.

Der Aufbau eines Kompilates zu einem PRAP ist generell wie folgt:

•	Am Anfang stehen die Variablendeklarationen, geordnet nach Input, Output, InputOutput, Local, Temporary.
Hier finden Sie auch automatisch im Precompiler erzeugte, die zum Automaten gehören.

•	Darauf folgend ist die Anlaufroutine zu sehen, sie garantiert den Start im Initialzustand des Automaten (markierte Anfangsoperation im PRAP gehört zum Initialzustand).

•	Bevor der Automat mit seinem ersten Zustand im Kompilat steht, sind erst alle Vergleiche, Zeit- und Zählgliedabfragen und Flanken-Funktionen von Eingangs-Variablen eingetragen.

•	Der Automat, in seine Zustände aufgegliedert, schließt sich nun an. Anfangs sind es die Zustandsübergangs-Bedingungen, danach erforderlichenfalls die Stabilitäts-Bedingungen.

•	Am Ende des Automaten steht die Ausgabe aller Booleschen Variablen, die in den Operationen markiert waren, mit dem logischen Wert 1. Die nicht markierten erhalten den logischen Wert 0.

•	Nach dem Automaten folgen alle Zeitbausteine, Zähler, Kopierfunktionen (reine Zuweisungen) und arithmetische Funktionen, auch Schiebe- und Rotier-Vorgänge.

•	Hieran schließen sich für die ONLINE-Darstellung des PRAP notwendige Programmzeilen an, sofern nicht im Projektmenü bei "Back Presentation" die Option "Prevent" gewählt wurde.

Der Aufbau des Kompilates zu einem PROGRAM:

•	Genau in der von Ihnen angegebenen Reihenfolge im Projekt erfolgen die Aufrufe der Instanzen. Diese sind am Schlüsselwort "CALL" (manchmal auch nur CAL) oder "RUN" zu erkennen.

•	Zu jedem Aufruf gehört zwingend die Übergabe der Aktual-Parameter an die formalen im aufgerufenen Typ.

Bemerkungen zu den Sprachen:
Kompilat strukurierter Text
STEP 7 - Anweisungsliste
Quelltext zu C
Quelltext zu C++


Kompilat strukurierter Text

Das Kompilat ist wie im Thema Softwareprodukt aufgebaut. Zur Kennung der Automaten-Zustände dient eine fortlaufende Zählgröße "STATE", die in CASE-Konstrukten zur Zustandsfindung eingesetzt ist. Daneben werden Boolesche Variable geführt, um die Zustandsübergänge und die Ausgaben der Ausgangsvariablen einfach zu gestalten.


STEP-7-AWL

Das Ergebnis des Precompilers ist davon abhängig, ob eine Ressource oder das Programm oder ein Typ-PRAP im Projektbaum markiert wurde.
Die Automatenzustände des PRAP werden in Sprungmarken eingeteilt, und die Kodierung der Zustände durch Boolesche Variable nach dem sog. 1-aus-n-Prinzip. Enthält der Automat n Zustände, dann gibt es ebenso viele Boolesche Variable, von denen jedoch nur eine den Wert 1 hat, die einen bestimmten Zustand kennzeichnet.
Die Vorübersetzung einer Ressource liefert nach dem Klick auf "Save To File" drei Dateien, eine NAME.AWL, eine NAME.SDF (Symboltabelle) und eine NAME.ONL - dies ist eine Online-Datei, die die Rückdarstellung der PRAP während des Betriebes der Steuerung bzw. der SPS gewährleistet, Sie erleben den sog. "lebendigen PRAP". NAME ist der Eintrag bei "Identification" der Ressource.
Sie können für die FB-Instanzen auch Instanz-DB bei "DB Settings" erzeugen. Tragen Sie hier nichts ein, dann entsteht ein Multi-Instanz-DB bei "PROGRAM INSTANCE", ansonsten ist er ein Instant-DB für die Programm-Instanz allein.
Mehr zu STEP 7 click here


C-Programm

Zur Zeit keine Erklärung


Programm in C++

Zur Zeit keine Erklärung


Welcome to SPaS!

We sincerely hope (and think) that you will like this quality product! It is a Software Tool for Making a Project of Process Control, in other words: Software Projection of automatic Control
German:
Software-Projektierung automatischer Steuerungen
The following topics are written in German. A version in English will appear later ...


Introduction

This tool called SPaS is excellent issued for a project in automation with several processors like PLC and embedded ones or micro processors. The development for all the processors is the same.
The result to get consists of the correct source code for each processor type and it can be imported directly into the special editor of each.
Please change to the MANUAL.


Installation instructions

You will find installation instructions within the download instructions on the following address:
http://www.pretschner.com
Properties of the computer:
Processor >= 750 MHz
RAM >= 256MB


Bemerkungen zum Handbuch zu SPAS

Die sogenannte kontextsensitive Hilfe erhalten Sie, wenn Sie in einem Formblatt, bzw. einem Fenster, den Cursor in ein veränderbares Eintragsfeld (Editierfeld) plazieren und die Taste "F1" drücken, falls kein [image] vorhanden. Benutzen Sie auch den "Hilfe"-Button, um eine Hilfe-Übersicht zu erhalten. Von dort aus erreichen Sie auch die kontextsensitiven Texte. Genaueres finden Sie hier.

Am unteren Rand des SPAS-Manager-Bildes die Hinweis-Texte beachten.


Getting started

Later: Instructions on getting started.
Have a look for the help, but there is German knowledge necessary.


Licence, copyright and disclaimer

Copyright notice
This product is freeware, and the original spas.Zip may be distributed freely. You may however use the source to make your own improved version, and a such improved version may be distributed by you or others if you include credits to the original version, and do not charge anything for your improved product.

Liability disclaimer
This product and/or license is provided by PSA Controls GmbH Leipzig on an as is basis, without any representation or warranty of any kind, neither expressly nor implied, including without limitation of any representations or endorsements regarding the use of, the results of, or performance of the product, its appropriatness, accuracy, reliability, or correctness. The entire risk as to the use of this product is assumed by the user and/or licensee. In no event will PSA Controls GmbH Leipzig be liable for additional direct or indirect damages including any lost profits, lost savings, or other incidental or consequential damages arising from any defects, or the use or inability to use this product, even if PSA Controls GmbH Leipzig have been advised of the possibility of such damages. In no case will PSA Controls GmbH Leipzig's liability exceed the amount of the licence fee.


How to Order

 Related Topics

Now the download is free. Look for http://www.pretschner.com!


Technical Support and Upgrades

 Related Topics

All information you need:
http://www.pretschner.com


Projekt-Editor

Der Projekteditor dient dem Entwickeln und Aufbauen eines neuen Projektes ebenso wie der Pflege eines vorhandenen. Das Projekt ist in einer Datenbank vollständig enthalten. Wir empfehlen den kostenfreien "Firebird Server", der wie die Intebase-Datenbank arbeitet.
Der entstehende oder vorhandene Projektbaum gliedert sich in Knoten, auch Member genannt, die je nach Zuordnung in verschiedene Ebenen eingetragen werden. Viele Begriffe sind aus der Norm IEC 61131-3 entnommen und werden in diesem Sinne auch verwendet.

Es stehen folgende Buttons zur Verfügung:

Beachten Sie die Hinweise des SPaS-Managers zu jedem Button in den Anzeige-Fächern der unteren Zeile!

In der ersten Reihe finden Sie die Menüs
File | Edit | Project | View | Run | Help.

Ferner erhalten Sie auch mit der rechten Maustaste entsprechende Angebote zur weiteren Bearbeitung des Projektes, auch den Übergang zum PRAP-Entwurf oder dessen Bearbeitung.

Weitere Themen des Projekteditors:

Neues Projekt anlegen

Angelegtes Projekt weiterbearbeiten

Konfiguration einfügen

Resource einfügen

Strukurierte Datentypen einfügen (DDT)

Task einfügen/bearbeiten

PRAP-Typen einfügen/bearbeiten

Funktion einfügen

PROGRAM einfügen/bearbeiten

INSTANCE einfügen/bearbeiten

Funktions-Aufruf

Variable eines DDT

PRAP aus einer Bibliothek in die Ressource einfügen

PRAP aus dem Projekt in eine Bibliothek einfügen

Beispielprojekt Lampen- und Stern-Dreieck-Schaltung


Neues Projekt anlegen

Beachten Sie den Abschnitt Wichtige Empfehlungen.

Bevor Sie ein neues Projekt beginnen, legen Sie sich ein Verzeichnis (Directory, Ordner) dafür an. Sobald Sie das Icon [image] oder "File | New..." anklicken, erscheint das Formblatt
.

Verwenden Sie zum Ausfüllen die Hilfe über [image] oder den Help-Button.
Siehe auch Database Options.
Nach dem Ausfüllen den OK-Button anklicken oder Enter-Taste betätigen.
Jetzt haben Sie ein Projekt angelegt, nun müssen Sie es öffnen, um damit arbeiten zu können. Haben Sie alles erfolgreich getan, können Sie den Text "Database unlocked" lesen und erkennen im Fenster des Projekteditors den ersten Knoten des Projektes:

Tip
Im Meldungsfenster (rechts vom Projektbaum oder unten) können Sie mit Klick auf die rechte Maustaste verschiedene Handlungen ausführen, also z.B. die Meldungen löschen.

Projekt weiter bearbeiten

Zurück zu Projekt-Editor


Öffnen, Schließen und Löschen eines Projektes

Das Öffnen eines Projektes ist auf mehreren Wegen möglich:

•	Beachten Sie das Icon [image]. Entweder Sie klicken es aus der Button-Leiste an oder nach Klick auf "File". Sie erhalten ein "ALIAS"-Fenster zur Auswahl und müssen das gewünschte, also auch ein neu angelegtes Projekt markieren (Cursor hinführen und Klick).
Angezeigt werden nur registrierte Projekte!

•	Es gibt noch die Möglichkeit bei "File | Reopen", also die Wieder-Eröffnung schon einmal geöffneter und registrierter Projekte. Nach Betätigen der Enter-Taste oder Klick auf "OK" öffnet sich das Login-Fenster, in das Sie das beim Anlegen des Projektes vereinbarte Passwort eingeben müssen.

•	Ist ein Projekt nicht registriert, dann müssen Sie [image] anklicken, dort gibt es die Möglichkeit der Neu-Registrierung oder des Neu-Ladens. Folgen Sie dem dortigen Hilfetext.

Zum Schließen eines Projektes markieren Sie den Projektknoten. Der Projektbaum beginnt mit dem Symbol [image], genannt Projektknoten. Danach Klick auf "File" in

und Klick auf [image] / Close.

Das Löschen eines Projektes bedeutet zum einen, das Datenbankfile (GDB-File) konventionell, also mittels Explorer, zu löschen. In der Registratur für SPaS ist es noch eingetragen, was durch Klick auf [image] (Projekt Alias) oder auch "File" + "Reopen" sichtbar wird. Im Fenster "Projekt Alias" markieren Sie das Projekt, betätigen die rechte Maustaste und "Unregister Database" können Sie auf einem Button lesen, den Sie anklicken müssen.
Sie brauchen das GDB-File auch nicht zu löschen, aber Sie können es aus Ihrer Registratur auf diese Weise entfernen.

Tip
Falls Sie das Projekt in komprimierter Form speichern wollen, dann Klicken Sie "File | Back Up", es öffnet das Formblatt "Database Options". Nutzen Sie dort die [image] -Hilfe!


Projekt weiter bearbeiten

Konfiguration einfügen
Wenn sie ein neu angelegtes Projekt weiter bearbeiten wollen, gibt es noch keine Konfiguration [image]. Oder Sie wollen eine weitere Konfiguration in das vorhandene, geöffnete Projekt aufnehmen:
Markieren Sie den ersten Knoten, den Projektknoten, falls er noch nicht blau hinterlegt ist, und klicken auf [image]. Oder Sie betätigen die rechte Maustaste und gehen weiter zu "INSERT" | "CONFIGURATION". Es öffnet sich das Fenster:

Tragen Sie hier einen technologisch relevanten Text ein. Denken Sie dabei daran, daß eine Konfiguration wenigstens eine Steuereinrichtung (SPS) als Ressource enthält und das Automatisierungssystem zu einer technologischen Anlage darstellt! Deshalb ist es dringend erforderlich, spätestens jetzt eine Prozeßzerlegung durchzuführen. Nach dem OK sehen Sie im Projektbaum
.
Ressource einfügen
Fügen Sie nach dem Markieren der Konfiguration eine Ressource [image] durch Klick auf [image] ein, indem Sie wiederum einen technologisch passenden Text [image] eintragen.
Nach dem Eintrag dieses Knotens in den Projektbaum können Sie die erste Ressource erkennen.

Nach dem Markieren klicken Sie nun auf [image], und es öffnet sich ein Fenster [image]. Sie müssen unbedingt die Sprache angeben. Lesen Sie das Kapitel über wählbare Sprachen und danach die Software-Produkt-Beschreibung von PreCOM. Dort wird Ihnen etwas zum Aufbau des Compilates und der Merker gesagt, die die Zustände und andere Eigenschaften kennzeichnen.
Ausführlichen Beschreibungstext bzw. Erläuterungstext zum Projekt schreiben Sie bitte in das vorgesehene Feld unter "Explanation".

Im Sinn von IEC 1131-3 entspricht jedes Teilprojekt dem Inhalt einer Ressource (engl. RESOURCE), ein Projekt entspricht im allgemeinen einer CONFIGURATION.
Weiter mit dem Einfügen von Prap-Typen


Konfiguration einfügen

In ein Projekt eine Konfiguration einfügen (Insert Configuration) bedeutet, Sie benötigen innerhalb Ihres Projektes einen vollkommen eigenen, in sich abgeschlossenen Bereich eines Automatisierungssystems. Die Konfiguration enthält wenigstens eine Ressource.
Wie eine Konfiguration einzufügen ist.
Zurück zu Projekt-Editor


Ressource einfügen

In eine Konfiguration ist wenigstens eine Ressource, d.h. eine Steuereinrichtung (z.B. SPS, Microcontroller) aufzunehmen. Daher ist mit dem Einfügen auch deren Eigenschaft bezüglich Sprache zu markieren. Jede Ressource ist für einen bestimmten technologischen Abschnitt der zu automatisierenden Anlage "zuständig". Deshalb ist wenigstens ein Programm zuzuordnen, das die TP in Form von Instanzen verwaltet.
Innerhalb der Ressource sind die Tasks zu deklarieren:
Task - Eigenschaften und einfügen

Variablendeklarationen
Wie eine Ressource einzufügen ist.
Zurück zum Projekt-Editor


TASK einfügen/bearbeiten

Die Norm IEC 61131-3 formuliert unter "Begriffe (Definitions)", Abschnitt 1.3,für den Begriff TASK:
"Element der Ausführungssteuerung, das für eine periodische oder getriggerte Ausführung einer Gruppe von zugehörigen Programm-Organisationseinheiten sorgt."

Tasks sind

•	"SINGLE", das sind einmalige Aufrufe, Interrupts, bei steigender Flanke einer Booleschen Variablen (keine Intervall-Angabe!)

•	zyklisch: "INTERVAL", wenn eine Zeitangabe erfolgt (z.B. Aufruf alle 200ms), kein Eintrag bei "SINGLE"!

•	ohne Angaben (weder bei "SINGLE" noch bei "INTERVAL"):
Aufruf SPS-zyklisch, d.h. immer von vorn beginnend, wenn das Programm abgearbeitet ist. Die Priorität ist die niedrigste.

•	Tasks werden unter einer Priorität ( priority) vom Beriebssystem behandelt. Höchste Priorität= 0.

•	Tasks, die zyklisch deklariert sind, sollten eine niedrige Priorität erhalten (abhängig von den Eigenschaften der Hardware, also der Ressource)als Interrupts.

Tasks können in jede Ressource mehrere eingefügt werden, aber wenigstens eine ist erforderlich!
So wird eine TASK eingefügt:

 1.	Ressource, in die die TASK eingefügt werden soll, markieren

 2.	ENTWEDER Klick auf
ODER Cursor zur Ressourse führen, rechte Maustaste: Inerst | Task anklicken

 3.	Felder für IDENTIFICATION und DESCRIPTION ausfüllen, dabei Bemerkungen beachten, die nach Klick auf "Help" erscheinen.

 4.	Felder der "RELATIONS" ausfüllen. Dabei sollten die Eigenschaften der Zielmaschine (Ressource) beachtet werden, sofern nicht schon SPaS nur ausgewählte Möglichkeiten in der HILFE anbietet.

Näheres zu Task-Eigenschaften: click here
Zurück zum Projekt-Editor


PRAP-Typen einfügen/bearbeiten, Fremd-Typen einfügen

Voraussetzungen für das Einfügen von PRAP-Typen: und andere.

 1.	Studieren Sie aufmerksam das Problem der Prozeßzerlegung, den Sinn des Prozeß-Zerlegungs-Graphen (PZG) und dessen endgültige Form, die Funktions-Block-Darstellung (FBD).

 2.	Markieren Sie im FBD die Teilprozesse, die unter einer Ressource aufzuführen sind. Das sind alle diejenigen, die in einer Steuereinrichtung (z.B. SPS) "laufen".

 3.	Behalten Sie im Auge, daß Prozeßzerlegungsgraph und Funktions-Block-Darstellung keine starren Schemata sind, sondern mit den Erkenntnissen der Projektentwicklung verändert werden müssen.

 4.	Falls Sie für Teilprozesse auf vorhandene PRAP zurückgreifen, prüfen Sie sorgfältig, ob sie wirklich die notwendige Funktion erfüllen. Eventuelle Modifikationen einarbeiten.

 5.	Machen Sie sich mit dem PRAP-Editor vertraut.

 6.	Es gibt die Möglichkeit, auch PRAP mit direkten Adressen hier einzufügen. Verschiedene konventionelle Sprachen, also nicht die nach IEC 61131-3, machen dies erforderlich, weil die Anzahl der Formal-Parameter begrenzt ist. PRAP als Unikate sind auch in SPaS zugelassen.

Die Ressource ist zu markieren und danach z.B. auf [image] zu klicken. Oder die rechte Maustaste gibt den Einfügebefehl vor. Es öffnet sich ein Fenster

Benutzen Sie die zur Verfügung stehende Hilfe zum Ausfüllen dieses Formulars. Im Ergebnis haben Sie einen Knoten eingefügt, aber ohne funktionellen Hintergrund. Im Beispiel sehen Sie zwei solcher Typen:

Zunächst sei festgestellt, daß jeder PRAP als typische funktionelle Darstellung in Form eines Graphen betrachtet wird. Die Folge davon ist, daß der vom PreCompiler erzeugte Quellcode einen Funktionsbaustein-Typ (= Function Block Type) ergibt.
Häufig tritt in der Anlagenautomatisierung das Unikat auf. Das bedeutet, es gibt im ganzen Automatisierungssystem genau einmal diesen Funktionsablauf bzw. Funktionsbaustein. SPaS kann dieses Problem des Unikates auf zwei Wegen verarbeiten:

•	Sie stellen die einzige Instanz zu dem Typ einfach in das aufrufende Programm

•	Voraussetzung: Gewählte Sprache Step 7
Sie geben dem "Typen" bereits in der Ressource direkte Adressen für alle Variablen und fügen im Programm nur noch den Bezeichner (= Identification) ein als FB Instance ohne Aktualparameter-Übergabe.

Falls Sie in der Bibliothek bereits einen passenden PRAP vorrätig haben, importieren Sie ihn mit Klick auf [image]} in die Datenbank bzw. in das Projekt. Öffnen Sie ihn und auch den Memberdialog, um genau zu pfüfen, ob alle Einzelheiten Ihren Wünschen entsprechen. Außerdem wird beim Schließen des Memberdialog eine "Anmeldung" im Projekt vollzogen.

Soll der PRAP neu entworfen werden, gehen Sie weiter zum PRAP-Editor.

Zurück zum Projekt-Editor


Funktion einfügen

Eine Funktion ist gemäß IEC 61131-3 als eine Programm-Organisationseinheit definiert, die keine Speicherfunktionen in sich enthält.
Markieren der Ressource, danach Klick auf [image] oder nach dem Markieren rechte Maustaste und Insert | Function.
Es öffnet der Memberdialog. Hier Müssen Sie in "IDENTIFICATION" den Namen der Funktion eingeben. Die Zeile "DESCRIPTION" soll eine Beschreibung der Funktion ihrer Aufgabe entsprechend erhalten, in möglichst wenigen Worten.
Weiter mit: Editieren einer Funktion


PROGRAM einfügen/bearbeiten

Der Begriff PROGRAM = Programm ist in IEC 61131-3 definiert als "eine logische Anordnung von allen Programm-Sprachelementen und -Konstrukten, die für die beabsichtigte Signalverarbeitung ... erforderlich sind."
In SPaS bedeutet PROGRAM zunächst die Einordnung aller Instanz-Funktionsbausteine/Teilprozesse (TP) und Funktionen-Aufrufe in der Reihenfolge ihres Aufrufes. Die Einordnung erfolgt in der nächsten Ebene nach "PROGRAM".

Note
Damit wird ein Programm-Typ definiert.
Die zugehörige Programm-Instanz erhält zusätzlich die Zuweisung über die zeitliche Aufrufordnung durch eine Task.

In einem Typ-Programm können

•	globale Variablen deklariert werden, die direkten Adressen zugeordnet sind. Es handelt sich um Variable, die innerhalb des Programms gelten, wozu alle zu den TP/Instanzen und Funktion-Aufrufen gehörenden Aktualparameter zählen.

•	Es können auch Koppelvariable (click here)aufgeführt werden, solange sie innerhalb des Programms für den Datenaustausch zwischen den TP, also den Instanzen des Programms, zuständig sind. Direkte Boolesche RAM-Adressen sind mit "Address Memory" als USAGE deklariert. Koppelvariable, die mit USAGE = "Local Static" gekennzeichnet wurden, erhalten durch den Maschinencompiler die Adressen automatisch zugewiesen und deshalb KEINE DIREKTEN ADRESSEN.

Zurück zum Projekt-Editor


Teil-Prozeß / PRAP INSTANCE in PROGRAM einfügen/bearbeiten

Jedem PRAP-Typ und jedem Fremd-Typen (Foreign Type) ist wenigstens ein Teilprozeß, TP, eine Instanz zuzuordnen. Unikate werden bezüglich Verwendung der Variablen / Variable Usage als Instanz behandelt. Markieren Sie das Typ-Programm, in das ein TP eingefügt werden soll. Ein Klick auf die rechte Maustaste zeigt Ihnen eine Befehlsauswahl

in der Sie "Insert" anklicken und der TP zum Einfügen angeboten wird. Natürlich können Sie auch gleich das Symbol [image] anklicken.
Es öffnet sich ein Fenster [image].
Nutzen Sie die Hilfeangebote zum Ausfüllen des Formblattes.
Zurück zum Projekt-Editor


PROGRAM INSTANCE einfügen/bearbeiten

Jede Programm-Instanz basiert auf einem Typ-PROGRAM und bedarf einer Ausführungs-"Bestimmung" durch eine Task, die bei der Ressource deklariert wurde.

Programm-Instanz zum Beispielprojekt
Zurück zu Projekt-Editor


Funktions- und Systemfunktions-Aufruf

 Related Topics

Der Aufruf einer Funktion, die in der Ressource deklariert wurde, erfordert die Zuordnung der Aktualparameter zu den formalen. Die aufzurufende Funktion oder System-Funktion muß im Projektbaum vor dem Aufruf eingefügt worden sein.
Manche Systemfunktionen werden im (sprachabhängig) Programmcode automatisch aufgerufen und dürfen daher nicht wiederholt zu diesem Zweck eingefügt werden.

•	Aufruf im PROGRAM
Program markieren, danach Klick auf [image] oder rechte Maustaste: "Insert" markieren und dann Klick auf "Call to Function". Eingefügt wird ein Member, in dem Sie den TYPEN heraussuchen müssen. Im Fall einer Funktion eben diese richtige, die hier aufgerufen werden soll. Weiter mit: click here
Jeder Funktionsaufruf erfolgt gemäß der Task, die in der Programm-Instanz festgelegt ist.

•	Aufruf im PRAP oder in einer Funktion
Grundsätzlich gilt hier, daß jeder Aufruf als Formel erfolgt. Jede Funktion liefert mindestens einen Wert, den Funktionswert. Darüber hinaus können zusätzlich Ausgaben enthalten sein.
Das manuelle Einfügen als Member, wie es oben beim PROGRAM beschrieben wurde, entfällt! Es wird jeder Aufruf, der als Formel notiert wird, automatisch eingefügt und auch gelöscht. (unbedingt beachten: Kopier- und arithmetische Funktionen)


Variablenliste importieren

Markieren Sie im Projektbaum das PROGRAM(Type) bzw. die RESOURCE, in das Sie eine Variablenliste (nur Excel) importieren wollen, betätigen Sie die rechte Maustaste und dann Klick auf "Import Variable List".
Weitere Hinweise: click here


INITIALISIERUNG der Teilprozesse

Allgemeines
Da alle PRAP Automaten sind, müssen sie mit Beginn der Abarbeitung zuallererst in ihren Startzustand bzw. ihre Start-Situation gesetzt werden. Der Startzustand ist durch die doppelt gerahmte Operation gekennzeichnet, die Initial-Operation (launch operation) kennzeichnet die Start-Situation.

•	Interne Initialisierung durch die lokale Variable "FirstRun":
Mit dem Einfügen und Editieren eines PRAP folgt automatisch das Regime für die Initialisierung und in diesem Zusammenhang das Erzeugen einer lokalen Booleschen Variablen "FirstRun" mit dem Anfangswert = 1 bzw. True. Dies ist ein Schlüsselwort und darf sonst nicht verwendet werden. Angelegte Initialisierungsvariable z.B. in Subsystem-Typen (Composite Types) dürfen nach dem Schlüsseltext "FirstRun" weitere Buchstaben oder Ziffern haben. Z.B. FirstRun_1

•	Note
IM FALL einer Zielsprache C oder C++ in z.B. embedded systems KEINE Initialisierungs-Variable mit INPUT oder INOUT deklarieren!
FirstRun mit Local Static nicht verändern!

Kriterium zum Verändern von einer lokalen in
eine Input-Output-Variable "FirstRun" oder
eine Input-Variable "FirstRun":
Bei einer Unterbrechung des Programms und einem Neustart/Warmstart beginnt der PRAP nicht automatisch in seiner Initialoperation. Dies geschieht mit lokal deklariertem FirstRun nur im sog. Kaltstart. Bei rein kombinatorischen PRAP ist eine Zustands-Initialisierung oft nicht erforderlich, zuweilen auch bei "normalen" nicht. Der Projektant hat also die Entscheidung in der Hand.

Die durchzuführenden Schritte im Projekt:

 1.	Initialisierungs-Funktion
Zum Gewährleisten der Initialisierung muß eine Funktion in das Projekt eingefügt werden, die mit dem Programm-Anlauf, d.h. vor jedem Aufruf eines PROGRAM der RESOURCE, aufgrufen wird, um alle FirstRun auf den Wert = 1 zu setzen.

•	FirstRun, Input/Output:
Die Start-Funktion steht zum Import bereit, heißt "Start_Zustand" und besteht aus Anweisungen:
Start_Zustand := true;
InitState_<nr> := true;
...
Dabei ist <nr> = 1 .. <Anzahl der Teilprozesse - 1>. Sind es 55, so müssen wenigstens
InitState_1 := true;
InitState_2 := true;
...
InitState_54 := true;
Anweisungen eingetragen sein. Sind es über 200 Teilprozesse, dann muß eine weitere FUNCTION, z.B. Start_Zustand_2, aufgenommen werden, die dann die InitState-Reihe fortsetzt.
Start_Zustand := true; muß grundsätzlich eingetragen sein, da jede Funktion ein Ergebnis liefert, hier eben "true".
NACHTEIL: Sie benötigen so viele Initvariablen wie Teilprozesse.
VORTEIL: Durch die "Output"-Eigenschaft von FirstRun wird jede Initvariable von jedem TP idividuell auf FALSE gestellt.

•	FirstRun Input:
Es kann zwischen zwei Empfehlungen entschieden werden:

 1.	Sowohl eine Start-Funktion, z.B. INIT_1 genannt, als auch eine Stop-Funktion, z.B. INIT_0 genannt, müssen angelegt werden:
INIT_1 enthält nur die Zuweisung "INIT_1:=true;" und
INIT_0 enthält nur "INIT_0:=false;"

 2.	Es wird eine Startfunktion, z.B. INIT := True_False;, angelegt. Der formalen Inputvariablen True_False muß beim Funktionsaufruf einmal true und zum anderen Mal false zugewiesen werden.
NACHTEIL: Sie müssen die Funktionsaufrufe exakt in Programmen eintragen (siehe "Der Unterschied") damit die Werte TRUE und FALSE zur richtigen Zeit am richtigen Ort stehen.
VORTEIL: Sie benötigen nur zwei bzw. eine Initialisierungsfunktion und haben nur eine Initvariable zu handhaben.

•	DER UNTERSCHIED zwischen einer Input/Output- und einer Input-Deklaration besteht darin, daß Sie in die Start-Funktion im Fall der Input-Deklaration für jede Task (außer Initialisierungstask!!) eine Aktualvariable True setzen müssen. Im Fall von zwei Tasks, z.B. einer azyklischen für das Hauptprogramm und einer zyklischen 100ms-Task muß noch eine, z.B. InitState_100ms := true;, in die Startfunktion INIT_1 eingebunden werden. Und Sie müssen für jede Aktualvariable eine eigene Stop-Funktion anlegen. Die Stop-Funktionen müssen am Ende der jeweiligen Aufrufe der Tasks eingetragen werden, damit auf jeden Fall nach dem ersten Durchlauf einer jeden Task die Aktualvariable der Initialisierung den Wert 0 hat. Falls Sie eine Initialisierungs-Funktion mit Inputvariable verwenden, muß am Ende jeder Task nun false zugewiesen werden.
Die Input/Output-Deklaration für "FirstRun" erfordert die Start-Funktion, wie oben beschrieben, für jede Instanz.

 2.	Aktuale Initialisierungs-Variablen
Ein noch unter die Ressource einzufügendes Startprogramm (siehe unter Punkt 4) muß die Initialisierungs-Funktion(en) mit Übergabe der Aktualvariablen aufrufen. Die Liste der Initial-Variablen enthält "InitVar_<nr>" ebenso viele wie in der(den) Funktion(en) formale vorhanden sind. Zwei Möglichkeiten stehen zur Verfügung, diese Variablen zur Verfügung zu stellen, entweder in die Ressuorce einfügen oder einen DDT (Derived Data Type gemäß IEC 61131-3), bei Siemens-SPS unter UDT bekannt, in das Projekt einfügen mit Bildung einer Variablen, die dann die Adressen enthält.
Beispiel:
Ein UDT 1 mit Namen "InitVarType" wird eingefügt und enthält InitVar_1, InitVar_2 .. als Boolesche local static Variable. Die zu "InitVarType" gehörige Variable "InitVars", mit z.B. DB1, adressiert dann (Address Memory) DB1.DBX0.0, DB1.DBX0.1 .. automatisch.
Das Einfügen in die Ressource geschieht am besten mit dem Import einer Excel-Tabelle, die zur Verfügung steht, aber keine Adressen enthält, weil diese Variablen "local static" vereinbart sind. Diese Datenhaltung ist natürlich am einfachsten.

 3.	Initialisierungs-Task
Bevor das Start-Programm und seine Instanz in das Projekt eingefügt werden, muß eine Task vorhanden sein. Diese ist so zu konzipieren, daß sie vor dem Beginn aller anderen Programme aktiv wird. Wie das im einzelnen zu bewerkstelligen ist, muß aus den Eigenschaften der Ressource hervorgehen.
Als Beispiel sei bei Siemens-SPS im Fall Step 7 der OB100 erwähnt. Um ihn als Task zu deklarieren, ist lediglich die Priorität 27 einzutragen.

 4.	Initialisierungs-Programm
Das Startprogramm kann einen beliebigen Namen erhalten, der natürlich auf seine spezielle Aufgabe aufmerksam machen sollte, er soll "Startprogramm" heißen. Hierzu gehört eine Programminstanz, die "Start_Instanz" heißen möge und die Initialisierungstask zugewiesen erhält.
Als Aufruf ist in das PROGRAM Startprogramm die FUNCTION aus Punkt 1 einzufügen. Eventuell sind es mehr als eine FUNCTION. In diesen Aufrufen sind den Formalvariablen die Aktualvariablen aus der RESOURCE oder DDT-Variablen zuzuweisen.

 5.	TP-Initialisierung
Die Teilprozesse, bzw. Instanzen der PRAP-Typen, enthalten alle ein "rotes Feld" für FirstRun, falls alle anderen schon bearbeitet wurden.

•	FirstRun, Input/Output
Wenn Sie die TP durchnummeriert haben, ist die Zuweisung der Aktualvariablen ganz einfach, weil sie ebenfalls durchnummeriert sind. Weisen Sie also z.B. im TP 1 dem FirstRun die InitVar_1, TP 2 dem FirstRun die InitVar_2 zu usw.

•	FirstRun, Input
Hierzu gibt es nur eine einzige Aktualvariable entweder aus der Ressource oder einem DDT (siehe Punkt 2.).
Zusätzlich zum Startprogramm müssen Sie im Hauptprogramm oder bei mehreren Programmen als letzte die Stop-Funktion einfügen - d.h. aufrufen, weil die Variable FirstRun unbedingt nach dem ersten Durchlauf des ersten Aufrufes den Wert false, also 0, erhalten muß, ansonsten mißlingt die Initialisierung! Haben Sie sich für eine Initialisierungs-Funktion mit Inputvariablen entschieden, müssen Sie also beim Funktionsaufruf den Wert false zuweisen.


Vorbemerkungen zum Beispielprojekt

Das Beispiel hat kein real existierendes Vorbild, es ist also ein Phantasie-Projekt mit den wichtigsten Entwurfs-Abläufen, wie sie in SPaS benötigt werden. Bitte stellen Sie sich vor, es handelt sich um ein Tor einer Halle, das horizontal bewegt wird. Es soll einen Antriebsmotor (Drehstrom) zum Öffnen und einen zum Schließen geben. Wenn es geschlossen ist, soll eine Lampe das geschlossene Tor beleuchten, wenn es geöffnet ist, soll die Halle beleuchtet werden. Soweit die Beschreibung einer gedachten Teilanlage, die natürlich Mängel hat. Darauf kommt es aber hier nicht an.
Das Beispiel enthält zwei grundsätzliche funktionelle Zusammenhänge, die Beleuchtungssteuerung und die Motorsteuerung der Antriebe. Natürlich muß es noch weitere Steuerungs-Teilprozesse geben, z.B. einen zur Koordinierung der beiden Antriebe. Hier sollen nur die Funktionen der Lampe und der Anlaufsteuerung - in Form einer Stern-Dreieck-Schaltung - betrachtet werden.
Von diesen beiden Typen ist je ein Prozeßablaufplan - Typen-PRAP - zu entwerfen. Und jeder dieser PRAP ist die Grundlage zu den insgesamt vier beschriebenen realen Funktionen der Beleuchtung und der Antriebe. Das sind die sogenannten Instanzen der Typen, wie sie in einem Prozeß-Zerlegungs-Graphen (PZG) im ersten Entwurf enthalten sein sollten.
Die Erarbeitung der Prozeßzerlegung für das Beispiel finden Sie in: Prozeß-Zerlegung und Funktionsblock-Darstellung
Es sei hier schon darauf hingewiesen: Ein weiterer Typen-PRAP für zwei Instanzen wird bzw. muß noch hinzugenommen werden, weil die Diskussion um den Stern-Dreieck-Anlauf dies ergibt.
Zur Vorbereitung des Steuerungsprojektes legen Sie bitte einen Ordner/ein Verzeichnis "LaSteDre" an.

Weiter mit dem Anlegen des Beispielprojektes.
Dort sehen Sie auch die Weiterentwicklung der PZG bis zum FBD.


Anlegen des Projektes, Configuration und Ressource

Vorbemerkung:
Es wird angenommen, daß ein Ordner, z.B. "LaSteDre" (=Lampe Stern-Dreieckschaltung), für das Beispielprojekt eingerichtet wurde.
Gemäß dem Vorgang beim Anlagen eines neuen Projektes sind die Database Options in den nachfolgenden Bildern zu erkennen:

Es wurde ein neues Login eingetragen. Das Password ist"spas".
Nach dem Klick auf OK bzw. Betätigen der Enter-Taste erhält man eine Information über das Anlegen der Datenbank. Die letzte Meldung besagt, die Datenbank ist fertig hergestellt. Nun ist anschließend das Projekt zu bearbeiten.
Die Ausschrift "Local Server" bedeutet nur, daß SPaS dies erkannt hat. Anderenfalls könnte es ein "Remote Server" sein.
Der Zugang zum neuen Projekt erfolgt mit Klick auf [image]. Das Beispiel-Projekt ist auszuwählen (Markieren) und OK zu klicken:

Nun benötigen Sie Login und Password, die beim Anlegen des Projektes verwendet wurden. Da das User-Login "Lehrbeispiel" ist und "spas" das Password, können Sie das Projekt öffnen.
Nun folgen Arbeitshinweise, bis am Ende mitgeteilt wird, die Datenbasis ist geöffnet, die Projektbearbeitung kann beginnen.
,

Das Ergebnis:

Tip
Löschen Sie ab und zu die Mitteilungen (Rechte Maustaste auf dem Mitteilungsfeld "Compiler Notes"), wenn sie Ihnen im Wege sind.

Nun ist die Konfiguration einzufügen. Das Lehrbeispiel beschränkt sich auf eine Konfiguration mit einer Ressource.
Mit Klick auf [image] können Sie die Bezeichnung eingeben, die möglichst technologie-orientiert sein soll, also den Bereich der technologischen Anlage benennen soll, für die das nachfolgende Automatisierungssystem gilt:

In ähnlicher Weise ist die Ressource mittels [image] einzufügen. Es öffnet ein Fenster,

in dem Sie entweder den Standard-Text stehen lassen und "OK" klicken, oder Sie tragen die Bezeichnung der Steuerungs-Einrichtung vorher ein. Die Ressource ist nun eingefügt. Markieren Sie diese und wählen mit Klick auf [image] die Sprache aus, die zur Ressource paßt.
Danach entweder mit Doppelklick auf den Standardtext oder rechte Maustaste und Klick auf [image], den "Member Dialog" starten. Auch hier gilt die Regel, die Ressource so zu bezeichnen, daß vollkommen klar ist, welche Steuereinheit eingesetzt wird. In das Feld "Processor" tragen Sie die Typbezeichnung ein.
Der hier passende Eintrag könnte so aussehen:

Da als Sprache Step 7 gewählt wurde, erscheint auch ein Registerblatt "DB Settings". Hier muß nur dann eine Datenbaustein-Nummer eingeschrieben werden, falls in die Ressource globale Variable einzutragen sind. Hier im Beispiel ist das nicht erforderlich.
Damit erhält man einen Projektbaum:

Die beiden PRAP-Typen sind hier im Beispiel die Lampensteuerung und die Stern-Dreieck-Schaltung. Gemäß der Beschreibung PRAP-Typen einfügen wurde der Projektbaum ergänzt:

Die Entwicklung der PRAP siehe:PRAP-Editor | Entwicklung eines PRAP, Beispiele

Wie schon in den Vorbemerkungen [image] steht, ist ein zusätzlicher Typen-PRAP hinzugekommen, der den Motorenstrom im Rahmen des Anlaufes erfaßt. Damit muß auch der PZG erweitert werden, wobei auch die Kopplungen mit eingetragen sind.

Note
Das Beispielprojekt ist für die Ziel-Sprache STEP 7 - 300 vorgesehen, weshalb es zu jedem PRAP auch eine FB-Nummer geben muß. Wählen Sie diese nach eigenem Ermessen.

Nachdem alle Typen-PRAP der Ressource eingefügt sind, ist mindestens eine TASK einzutragen. Hier im Beispiel soll es eine SPS-zyklische Task, keine zeitzyklische, geben. Sie hat die Priorität 1 und keine Angabe zu SINGLE/INTERVAL. Schließlich ergibt sich daraus für STEP 7 der OB1.

Im Thema Ressource einfügen stand der Hinweis, globale Variable im Rahmen der Ressource zu deklarieren. Dazu bedarf es der Entscheidung, ob es Variable gibt, die "oberhalb" der Programme gelten. Im Beispielprojekt ist nur ein Programm enthalten. Damit brauchen hier keine Globaldeklarationen zu erfolgen, und alle globalen Variablen können im PROGRAM "lokal" (Local Satic) deklariert werden.
Aus dem Verdrahtungs-Projekt, das hierzu natürlich nicht existiert, oder im Rahmen des Übergangs vom PZG zur Funktionsblock-Darstellung (FBD) kann eine Liste der Variablen und ihrer Adressen gewonnen werden. Tragen Sie jetzt oder nach dem Einfügen der Instanzen die Aktualparameter der Koppelvariablen ein. Bedienen Sie sich der im Formblatt angebotenen Hilfe!
Die Variablen sind auch im neuen PZG zu erkennen:
Das erstrebte Endergebnis FBD erhalten Sie schließlich durch Ergänzen des PZG mit den zu den Instanzen gehörigen Typen mit deren Variablen. Die soeben erwähnte Exceltabelle benötigt dann nur noch Eintragungen einschließlich der TP-Namen; wirklich importiert werden ohnehin nur die Daten ohne TP. In der Funktionsblock-Darstellung können Sie erkennen, wie der "Endstand" aussehen sollte.
Leider gibt es noch nicht die Möglichkeit, die FBD unmittelbar, d.h. automatisch, zur Instanziierung zu nutzen. Aber die beschriebene Vorarbeit ist trotz ihres Aufwandes sehr nützlich und gewährt eine höhere Entwurfssicherheit, und das ist allemal die Mühe wert!

Weiter mit der Instanziierung der PRAP-Typen.


Prozeß-Zerlegung und Funktionsblock-Darstellung zum Beispielprojekt

Am Anfang gibt es nur vier Teilprozesse für das Beispielprojekt, wie in nachfolgender Darstellung gezeigt:

Damit auch die Umschaltung von Sternbetrieb auf Dreieck zur richtigen Zeit erfolgt, wird der Strom des Motors gemessen und ausgewertet. Hierzu dienen zwei weitere Teilprozesse, die nachfolgend zu erkennen sind:

Die beiden Motore der Torsteuerung müssen bezüglich ihrer Funktion überwacht und koordiniert werden. Dieser Vorgang wird hier jedoch nicht weiter verfolgt, weshalb zwar ein Teilprozeß angelegt, aber nicht ausgeführt wird, also gibt es hierzu keinen PRAP:

Das vorhergehende Bild wird nun im Sinne der IEC 61499-1 umgearbeitet. Danach ist zunächst ein Feld für die Steuerungs-Ereignisse zu schaffen, das von den Prozeß-Variablen trennt. Dem Standard zufolge dienen die Ereignisse, auch Event Variable, der Steuerung es Aufrufes der Funktionalität der Instanz. Beginnend mit der Initialisierung bis hin zu Interrupts. SPaS bezieht sich auf ein vorhandenes Betriebssystem der Ressource und nutzt diesen Variablenbereich zur Koordinierung mit Hilfe der Koppelvariablen und natürlich auch zum Initialisieren.
Das nächste Bild zeigt das Ergebnis der Überarbeitung in der Form der Funktionsbaustein-Darstellung:
Der Koordinierungs-TP ist auf drei Signale reduziert, weil beim Einschalten nur klar sein muß, was gemeint ist, also öffen oder schließen.
Für Identifikatoren, die natürlich die Instanznamen sind, dürfen nur Buchstaben und Ziffern nach ISO 8856-1, Dialekt 3, verwendet werden. Das sind die Ziffern 0 bis 9, alle Groß- und Kleinbuchstaben, aber nur das Basisalphabet. Deshalb muß Außenbeleuchtung in Aussenbeleuchtung verändert werden.
Die Teilprozeß-Nummern sind an die Namen angehängt.


Typ-Programm mit Instanzen der Typ-PRAP

Nach den drei Typen-PRAP ist ein Member "PROGRAM" (click here)in das Projekt einzufügen, dem alle Instanzen der PRAP-Typen unterzuordnen sind. Und es müssen alle direkten Adressen der Aktualparameter eingetragen werden(click here). Dazu später mehr.
Markieren Sie die Ressource und klicken auf [image] oder nutzen das Menue mit Klick auf die rechte Maustaste: Insert|PROGRAM Type. Tragen Sie z.B. "Programm" als Identification ein und "FB-Instanzen" als Description.

Tip
Es kann sein, das PROGRAM ist nicht als letztes Member zu sehen. Dann markieren, rechte Maustaste und Klick auf [image] Build Later, bis die gewünschte Stelle erreicht ist.

Nun müssen die Instanzen in das Programm eingefügt werden:
Markieren Sie also das Member "Programm", klicken auf [image] und tragen die Texte für "Identification" und "Description" ein. Außerdem müssen Sie zu jeder Instanz den richtigen Typen-PRAP wählen. Das Ergebnis sehen Sie im folgenden Bild:
 Als Beispiel sehen Sie die Instanz "Tor_Auf", die zum Typ "St_Dr_Anlauf" gehört. Rot eingetragen sind alle Formalparameter des Typen, neben denen "none" steht, solange keine Aktualparameter zugewiesen sind. (siehe Teilprozesse fertigstellen, Instanzen komplettieren)
Nachdem alle Teilprozesse eingetragen sind, hat der Projektbaum das folgende Aussehen:

Damit haben Sie erst die Instanzen im Projekt angelegt. Es gibt noch zwei Probleme zu lösen:

 1.	Die Reihenfolge, in der die Teilprozesse im PROGRAM eingetragen sind, bestimmt die Aufruf-Folge. Also entsprechend ordnen mit Markieren, rechte Maustaste und Klick auf [image] oder

 2.	Die Variablen der Instanzen müssen noch ihre Aktualparameter den Formalparametern der zugehörigen Typen zuordnen.
Also sind spätestens jetzt durch Sie für jeden Teilprozeß (= jede Instanz) die Aktualparameter zu benennen mit den zugehörigen Adressen. (siehe Variablenliste der Instanzen oder
Variablen-Excel-Liste)

Weiterführung im Thema Variable in das Programm eintragen.


Variable in das Programm eintragen

Zu bedenken ist, ob diese Variablen und deren Adressen global in "RESOURCE" oder "PROGRAM" eingetragen werden.
Die Grundregel lautet: Variable, die in mehreren Programmen benötigt werden, sollten in der Ressouce als globale Variable deklariert werden. Ausschließlich im PROGRAM benötigte Variable sollten nur hier und damit lokal deklariert werden.
Im Beispielprojekt sind alle Variablen der Instanzen in das Programm eingetragen.
Externe Deklarationen sind erforderlich, wenn im PROGRAM Variable aus der Ressource benötigt und dort global deklariert wurden.
In der SPaS-Version 1 ist es zwar möglich, in der Ressource globale Variable zu deklarieren, aber es fehlen die External-Deklarationen. Dennoch kann zur Instanzierung auf diese Variablen zugegriffen werden.
Eintragen der Variablen in das Programm oder in die Ressource:

 1.	Doppelklick auf "Program-Type" bzw. "Resource" im Projektbaum.

 2.	Klick auf [image] öffnet die Datenbanktabelle / Access Table

 3.	Tragen Sie der Reihe nach die Daten aus der Variablenliste für alle Variablen ein. Benutzen Sie die angebotenen Hilfemöglichkeiten. Lesen Sie eventuell beim Projektmember PROGRAM nochmal nach.

Importieren der Excel-Liste:

 1.	"Program-Type" bzw. "Resource" markieren und Rechte-Maustaste-Klick. Es öffnet das Projektmenue.

 2.	Klick auf die letzte Zeile vor Help: "Import Variable List"

 3.	Folgen Sie den Hilfemöglichkeiten, die in diesem Formular angeboten werden

 4.	Sie finden das Beispiel hier.

Das Ergebnis des Listen-Importes zeigt das folgende Bild:

Die Variablen sind alphabetisch geordnet. Das Feld enthält drei Spalten: NAME, VARTYPE und USAGE. Damit ist der Programm-Typ bis auf "FB Settings" komplett. Dieses Sheet liegt nur bei, da bei STEP 7 eine Multiinstanz erzeugt werden kann. Bei C++ oder C ist das Sheet nicht dabei. Hier im Beispiel wurde die Zahl 10 eingetragen.
Weiterführung nach dem Ausfüllen einer Liste für alle Variablen: Die Zuweisung der Aktualparameter.


Excel-Variablenliste zum Beispielprojekt

Die nachstehend gezeigte Liste wird in das Programm importiert.

Es sind zwei Möglichkeiten bezüglich der Koppelvariablen, in der Spalte "Point of Automation" mit KOP [Sender-TP] nach [alle Empfänger-TP] gekennzeichnet, gangbar:

 1.	Koppelvariable mit direkten Adressen,
die alle mit USAGE = Address Memory deklariert wurden.

 2.	Koppelvariable mit symbolischen Adressen,
die alle in einem Programm gelten, können als "Local Static" deklariert werden. Damit entfallen die direkten Adressen aus der Variablenliste. Der Maschinen-Compiler ordnet den Symbolen interne Adressen zu. Diese Adressierung ist für den User die einfachste.

Achten Sie bei beiden Adressierungen darauf, daß Koppelungen nur funktionieren, wenn Sender und Empfänger den gleichen Namen haben. Direkte Adressen niemals verschiedenen Namen zuordnen, weil dies zu Konflikten führt!
Für das Beispielprojekt soll die folgende Liste importiert werden:


Variablenliste der Instanzen mit direkten Adressen

Koppelvariable sind mit "KopE" - Empfänger - und "KopS" - Sender - in der Adressenspalte gekennzeichnet. Die nachfolgende Liste betrachten Sie bitte nur als Anregung, sofort eine Excel-Liste anzufertigen ist empfehlenswert.

  ....Teilprozeß....|...Symbolname...|..Adresse..|..Formalparam..|..Typ-PRAP
============================================================================

 1.	....Innenbel....|Halltor_geoeffn.|...E1.0....|.La_einschalten|...Lampe

 2.	....Innenbel....|.Halle_beleucht.|...A1.0....|....La_EIN.....|...Lampe

 3.	....Aussenbel...|Halltor_geschl..|...E0.0....|.La_einschalten|...Lampe

 4.	....Aussenbel...|.Hallenzuf_bel..|...A0.0....|....La_EIN.....|...Lampe

 5.	....Tor_AUF.....|...Tor_oeffn....|KopE:.M10.0|....Mot_ein....|.St_Dr_Anl

 6.	....Tor_AUF.....|..ferngest_AUF..|KopE:.M1.0.|......FgS......|.St_Dr_Anl

 7.	....Tor_AUF.....|...VHd_oeffn....|...E1.2....|..VHd_Mot_ein..|.St_Dr_Anl

 8.	....Tor_AUF.....|..NOT_Tast_AUF..|...E10.0...|....NOTAUS.....|.St_Dr_Anl

 9.	....Tor_AUF.....|.....I_AUF......|KopE:.M0.0.|...I_Schalt....|.St_Dr_Anl

 10.	.Tor_AUF.....|..Oeffn_Haupt...|...A1.1....|......S1.......|.St_Dr_Anl

 11.	.Tor_AUF.....|..Oeffn_Stern...|...A1.2....|......S2.......|.St_Dr_Anl

 12.	.Tor_AUF.....|..Oeffn_Drei....|...A1.3....|......S3.......|.St_Dr_Anl

 13.	.Tor_AUF.....|...T_Anl_AUF....|....T1.....|.....T_Anl.....|.St_Dr_Anl

 14.	.Tor_AUF.....|...Oeffn_AUS....|KopS:.M0.2.|..Motor_aus....|.St_Dr_Anl

 15.	.Tor_ZU......|...Tor_Schli....|KopE:.M10.1|....Mot_ein....|.St_Dr_Anl

 16.	.Tor_ZU......|...ferngest_ZU..|KopE:.M1.1.|......FgS......|.St_Dr_Anl

 17.	.Tor_ZU......|...VHd_schli....|...E0.2....|..VHd_Mot_ein..|.St_Dr_Anl

 18.	.Tor_ZU......|..NOT_Tast_ZU...|...E10.0...|....NOTAUS.....|.St_Dr_Anl

 19.	.Tor_ZU......|.....I_ZU.......|KopE:.M0.1.|...I_Schalt....|.St_Dr_Anl

 20.	.Tor_ZU......|..Schli_Haupt...|...A0.1....|......S1.......|.St_Dr_Anl

 21.	.Tor_ZU......|..Schli_Stern...|...A0.2....|......S2.......|.St_Dr_Anl

 22.	.Tor_ZU......|..Schli_Drei....|...A0.3....|......S3.......|.St_Dr_Anl

 23.	.Tor_ZU......|...T_Anl_ZU.....|....T2.....|.....T_Anl.....|.St_Dr_Anl

 24.	.Tor_ZU......|...Schli_AUS....|KopS:.M0.3.|..Motor_aus....|.St_Dr_Anl

 25.	.I_MOT_AUF...|....I_AUF.......|KopS:.M0.0.|..I_Schalt.....|...I_MOT

 26.	.I_MOT_AUF...|...Oeffn_AUS....|KopE:.M0.2.|....Mot_aus....|...I_MOT

 27.	.I_MOT_AUF...|...I_Soll_AUF...|...12345...|....I_SOLL.....|...I_MOT

 28.	.I_MOT_AUF...|...I_IST_AUF....|...PEW.?...|.....I_IST.....|...I_MOT

 29.	.I_MOT_ZU....|.....I_ZU.......|KopS:.M0.1.|..I_Schalt.....|...I_MOT

 30.	.I_MOT_ZU....|...Schli_AUS....|KopE:.M0.3.|....Mot_aus....|...I_MOT

 31.	.I_MOT_ZU....|...I_Soll_Zu....|...12345...|....I_SOLL.....|...I_MOT

 32.	.I_MOT_ZU....|...I_IST_ZU.....|...PEW.?...|.....I_IST.....|...I_MOT


Die Instanzen - Realisierung der Teilprozesse

Eine Instanz ist angelegt, wenn sie einem Member "PROGRAM" zugeordnet ist, wie es im PROGRAM und Instanzen dargestellt wurde. Vorausgesetzt, die erforderlichen Aktualparameter sind im PROGRAM-Type, hier Programm(FB-Instanzen), eingetragen, dann öffnen Sie mit Klick auf [image] den "Vorrat" an Variablen.
Am Beispiel des TP "Tor_AUF", das bereits im Thema "Typ-Programm mit Instanzen ..." vorgestellt wurde, soll der Weg gezeigt werden. Im folgenden Bild sehen Sie die geöffnete ACCESS TABLE, Aktual-Variablentabelle, die zum Programm gehört (siehe Filter-Einstellung).

Handeln Sie bitte wie folgt: Die erste Formalvariable links oben heißt "FgS". Führen Sie den Cursor dahin und markieren mit Klick diese Zeile. Sehen Sie in Ihrer Excel-Variablentabelle nach, unter den Spalten "H" bei "Tor_AUF" und "J" bei "FgS" finden Sie in der Spalte "A" die Variable "ferngest_AUF".
Ebendiese Variable suchen Sie in der ACCESS TABLE.

Tip
ENTWEDER:
Den Cursor auf die ACCESS TABLE führen, rechte Maustaste und "Order By Name" klicken. Dann sind die Variablen alphabetisch geordnet, zuerst die Groß-, dann die Kleinbuchstaben. Das Suchen fällt dadurch leichter.
ODER:
Klick auf [image] neben "NAME" und "ferngest" eingeben, um schnellstens die Variable zu finden.
Sie können natürlich auch nach dem Ordnen die Such-Hilfe verwenden.

Nun geht es wie folgt weiter:
Nachdem Sie die Aktual-Variable "ferngest_AUF" gefunden haben, Klick auf [image]. Im folgenden Bild

sehen Sie den Erfolg der Handlung. Beachten Sie, es steht "Programm.ferngest_AUF" eingetragen. Die Zuordnung zum Member Programm(FB-Instanzen) ist hier wichtig. Sie können auch Variable der Ressource einfügen. Dann würde deren Identification vor dem Punkte stehen.
Führen Sie diese Zuordnungsprozedur für alle Formal-Größen aus, dann ergibt sich das nächste Bild:

Übrigens erfolgt beim Markieren einer fertigen Zuordnungszeile, jede ist jetzt weiß, automatisch das Suchen der Variablen und das Anzeigen mit grüner Hinterlegung.
Schließlich sehen Sie noch ein Sheet "DB Settings", dort müssen Sie nichts hineinschreiben, wenn ein Multiinstanzbaustein - wie hier im Beispiel - erzeugt werden soll.
Weiterführung mit Einfügen der Task in das Projekt.


Einfügen der Task in das Projekt

Allgemeines erfahren Sie unter Task einfügen, demnach ist die Ressource zu markieren, danach Klick auf [image] und es ist das Formblatt auszufüllen (Klick auf "Help" hilft dabei!).
Das fertige Bild sehen Sie nachstehend:

Da das Beispielprojekt für die Sprache STEP 7 konzipiert ist, finden Sie noch das Blatt "OB Settings", aber zunächst müssen Sie die Task-Daten "Single/Interval" und "Priority" ausfüllen.
Nehmen Sie die direkte Hilfe in Anspruch (Fragezeichen) und wählen Sie für den OB1 die Priorität 1. Die richtige OB-Nummer wird automatisch eingetragen mit Klick auf "OK", dies beendet auch den Vorgang.

Note
"OB Settings" dient auch zum Eintragen der Nummer, dennoch müssen die Task-Daten eingetragen werden. Aber bei OB mit gleicher Priorität muß noch die OB-Nummer angegeben werden.

Weiterführung mit der Programm-Instanz.


Die Programm-Instanz im Projekt

Allgemeines lesen Sie unter: Programm-Instanz einfügen
Hier für das Beispielprojekt ist alles sehr einfach.

 1.	Ressource markieren

 2.	Klick auf

 3.	In das Formblatt des Projekt Member "PROGRAM INSTANCE" tragen Sie Identification und Description ein. Beachten Sie bitte die zugelassenen Zeichen Hilfe mit [image] oder Klick auf

 4.	Wählen Sie den zugehörigen Programm-Typ und die Task. Hier kommen nur "Programm" und "Programm_1" in Frage

 5.	Klick auf "DB Settings" und Eintragen der Datenbaustein-Nummer, hier im Beispiel "10", weil FB10 für den Multi-Instanzbaustein eingesetzt wurde.

Das Ergebnis sehen Sie im folgenden Bild:

Auf der linken Seite erkennen Sie den kompletten Projektbaum, auf der rechten Seite das Formblatt für die Programm-Instanz.


In einer Ressource sind globale Variable mit

•	direkten Adressen oder auch

•	Adressen - allgemein

deklarierbar. Sie gelten innerhalb der Ressource, sind also keine "Access Variables" für Busverbindungen nach außerhalb. Zu den globalen Variablen zählen diejenigen, die zwischen Programmen und deren Instanzen für den Datenaustausch wichtig sind. Entnehmen Sie das Datenkonzept aus dem Prozeßzerlegungsgraphen oder ergänzen Sie ihn diesbezüglich.
In der Version 1 noch nicht:
In der Configuration deklarierte, globale Variablen, die in der Ressource benötigt werden, sind hier als externe Variablen aus der Configuration zu übernehmen.


Hinweis:
Die unter Spalte "A" Namen der aktualen Parameter dürfen nur einmal importiert werden, weshalb die Wiederholungen eingeklammert wurden! Genauer: Nur die "Empfänger" der Koppelsignale sind eingeklammert, soweit es "Sender" gibt.


Editor zur Entwicklung des Prozeßzerlegungsgraphen (PZG-Editor)

Diesen Editor gibt es noch nicht, Sie müssen also ein beliebiges Graphikprogramm benutzen, ein Beispiel dazu gibt es im Lehrbeispiel. Die Grundlagen der Prozeßzerlegung sind im Buch Entwurfsprozeß enthalten.
Ermitteln Sie zu jedem Teilprozeß die Eingangs- und Ausgangsvariablen und schreiben Sie diese z.B. in eine Excel-Tabelle, ein Beispiel finden Sie hier.


PZG und FBD zum Lehrbeispiel

Die Entwicklung vom Anfang bis zum Ende des Lehr-Beispiels ist an den folgenden PZG zu erkennen:
Anfangs-PZG
Zweiter Schritt der PZG-Entwicklung
Unvollendeter PZG
Im Laufe der Prozeßzerlegung gewinnt man z.B. nicht nur die Teilprozesse sondern auch die Zuordnungen der TP-Bezeichnungen, die Anschlußbezeichnungen für die Prozeßvariablen an die SPS und die Koppelvariablen, die nur im RAM konkret als Merker existieren. Ein Konzept der Zusammenstellung der Daten sehen Sie in der (Variablenliste).
Die Zusammenfügung der Variablen der Tabelle mit dem PZG führt zur Funktions-Block-Darstellung (FBD) Letzter Schritt der PZG-Entwicklung zur FBD


Variablenlisten nach der Prozeßzerlegung

Die erste Variablenliste
enthält zum Lehrbeispiel in einer nach Teilprozessen geordneteten Excel-Tabelle 1 Eingetragungen zu:

•	A: Namen (Identifikation) der Aktualparameter
(Sich wiederholende Namen sind eingeklammert, wobei bei Koppelvariablen vorzugsweise die "Empfänger" eingeklammert wurden)

•	B: Bezeichner der Aktualparameter - Actual Statement

•	C und D: direkte Adressen, getrennt nach Präfix gemäß STEP 7 und [Byte].[Bit] gemäß STEP 7, um auch die Übersetzung nach C oder C++ zu ermöglichen (bis auf PEW!!)

•	E: Datentyp der Aktualparameter

•	F: Speicherort bzw. Verwendung der Aktualparameter

•	G: EMSR-Stellenbezeichnung nach DIN 19227. Die EMSR-Stellen-Nummern wurden aus TP-Nummer gemäß PZG und einer laufenden gebildet.
Koppelungen sind mit "KOP" gekennzeichnet und benennen "Sender" mit nach und "Empfänger" mit von.

Das sind die sechs Daten, die auf eine Ressource oder ein Programm bezogen importiert werden können:
Markieren Sie das Member, Klick auf rechte Maustaste zeigt Ihnen im Menue den Text: Import Variable List
Alle weiteren Informationen, wie die Zugehörigkeit der Variablen zum Teilprozeß usw. (Spalten H bis Ende), müssen bei der Instanziierung berücksichtigt werden. Außerdem liegen sie am Beginn der Prozeßanalyse noch nicht vor und wurden nachträglich in die Tabelle ergänzend eingetragen.
In dieser Tabelle sind Variable eingetragen, die erst mit dem PRAP-Entwurf, d.h. der funktionellen Verarbeitung der Variablen erforderlich werden. Dazu gehören Variable des Timers (T1 und T2) und des Vergleichers (PEW250 und PEW252). Diese sind im Laufe der PRAP-Entwicklung einzuführen und beim Bilden der Instanzen in PROGRAM oder RESOURCE zu deklarieren.

Note
Koppelvariable sind im Beispiel sowohl mit direkten Adressen (Address Memory) als auch mit internen (Local Static) eingetragen, um den Unterschied zu zeigen.

Die zweite Variablenliste
enthält zum Lehrbeispiel in einer nach Adressen geordneteten Excel-Tabelle 2 Eingetragungen zu den Spalten sind mit der ersten Tabelle identisch. Aber jeder Name erscheint nur einmal und in der Spalte "H" sind alle TP aufgeführt, in denen "Name" vorkommt. In der Spalte "G" sind die Koppelungen von Teilprozeß nach Teilprozeß mit den im PZG enthaltenen Nummern eingetragen, aus Platzersparnis nicht die TP Names bzw. Identifications.
Die Komplettierung des PZG zur FBD (Funktionsblock-Darstellung) führt schließlich zum endgültigen Dokument des Automatisierungssystems.


Unvollendet bedeutet, die Koordinierung ist nicht als TP ausgeführt.
Die TP tragen einen als Identifikation geltenden Namen, wobei die PRAP-Typen mit ihrem Namen mitverwendet wurden. Außerdem sind Nummern in die TP eingetragen worden, um die EMSR-Stellen einfacher bezeichnen zu können. Die TP-Nummern stehen nach dem EMSR-Zeichen in der Variablenliste.


Der Übergang vom PZG zur FBD erfolgt durch die Hinzunahme aller Prozess-Signale bzw. -Variablen. Oberhalb des TP-Namens sind außen die Koppelungen, unterhalb die Prozess-Signale eingetragen. Innen sind alle Formalparameter zu finden, wodurch eine leichte Zuordnung gewährt ist.


PRAP-Editor

Zugang zum PRAP-Editor aus dem Projekt-Editor:
siehe Projekt-Menue

Graphischer Entwurf der Steuerungsfunktion eines Teilprozesses als Typ-PRAP oder als TP-PRAP.
Der Entwurf umfaßt die Graphik (theoretisch eine Automatenfunktion) einschließlich der sogenannten eingebetteten Funktionen:

•	Flankenerkennungen

•	Vergleiche

•	Zeit- und Zählglieder

•	Umspeicherung von Daten (Kopierfunktion)

•	Arithmetikfunktionen

Soweit die kurze Einführung.
Dem PRAP liegt die Automatentheorie zu Grunde, die Sie als Anwender nicht kennen müssen. Ein paar Bemerkungen sind im Thema
Allgemeine Theorie zusammengefaßt.
Der PRAP ist aber auch auf des Basis der Graphentheorie entwickelt, worüber Sie im Thema
Der PRAP als Graph etwas erfahren.

Damit Sie wissen, wie man einen PRAP aufbauen sollte, gibt es Hinweise im Thema Grundsätze zum Gestalten eines PRAP.
Am Ende eines Entwurfes oder auch mittendrin sollte man wissen, worauf zu achten ist. So entstand das Thema Prüfungen des PRAP.

Tip
Sie erfahren schnell, was zu jedem Element eingetragen ist:
Jedes PRAP-Element enthält Daten, z.B. Variablen-Name, Datentyp usw. Führen Sie den Cursor auf ein Element, werden solche Daten angezeigt.
Sobald ein Element (auch eine Linie!) markiert oder im "Graph Editor" ein Feld angeklickt ist, wird die Schnellanzeige unterdrückt.

Zum Entwickeln bzw. Zeichnen eines PRAP stehen die Menues

zur Verfügung. Das linke erhalten Sie durch Betätigen der rechten Maustaste im Feld "CHARTS", das rechte durch Klick auf "Graph Editor". Bitte nutzen Sie dort die angebotenen Hilfetexte.
Der Druck eines PRAP wird mit Klick auf 'Print' eingeleitet.

Tip
Sie können den ganzen PRAP oder Teile auf der Bildebene verschieben. Dazu die linke Maustaste festhalten und die Maus ziehen. Innerhalb des sich aufspannenden Rechtecks, rosa hinterlegt, werden die Objekte markiert. Dann linke Maustaste loslassen, ein markiertes Objekt anfassen und mit Maus verschieben.
Falls Sie alles rückgängig machen wollen, dann im linken Menue Klick auf "Reload Graph".

An Hand von Beispielen soll etwas über die Praxis berichtet werden. Dazu dient das Thema Entwicklung eines PRAP.


Allgemeine Theorie des PRAP

Als eine prozeßorientierte Sprache beschreibt der PRAP den funktionellen Zusammenhang zwischen Prozeßeingang und -ausgang (siehe: Informationsflußmodell). Dabei handelt es sich zumeist um einen Teil des zu steuernden technologischen Prozesses, also eines Teilprozesses.
Der Prozeßablaufplan ist das Steuerungs-Modell eines zu steuernden (Teil-)Prozesses.
Der PRAP ist ein gerichteter, stark zusammenhängender Graph, der auf automatentheoretischen Grundlagen (siehe Fußnote) beruht:

•	Das Automatenmodell ist grundsätzlich ungetaktet und mit einem Initialzustand behaftet.

•	Jeder Automatenzustand wird durch eine Prozeß-Situation definiert, und es gibt genau eine Initialsituation.

•	Jede Situation wird gemäß dem Modell des Moore-Automaten behandelt, wenn sie sich nicht in einer kombinatorischen Struktur befindet.

•	Jede kombinatorische Struktur enthält wenigstens zwei Situationen, und eine kombinatorische Struktur wird als ein Zustand gemäß dem Modell des Mealy-Automaten behandelt.

•	Ferner erfüllt der PRAP automatentheoretische Forderungen, wie
Widerspruchsfreiheit und
Vollständigkeit.

Die Eigenschaft der Vollständigkeit garantiert eine technologisch gesicherte Aussage über die steuerungstechnischen Ausgaben, d.h. Wirkungen jeder Operation auf den zu steuernden (Teil-)Prozeß.
Der starke Zusammenhang garantiert einen technologisch gesicherten Steuerungsablauf in allen Situationen des PRAP.
Voraussetzung für die Erstellung eines PRAP ist, daß der erste Schritt der Prozeßzerlegung stattgefunden hat.
Wie ein PRAP entwickelt bzw. entworfen wird, zeigt Ihnen das Thema Entwicklung eines PRAP.
Die eingebetteten Funktionen sind in die Ausgabe- bzw. Eingabefunktion des Automaten eingebettet. Die Flankenerkennungen und die Vergleichsfunktionen liefern ihr Funktionsergebnis an eine Boolesche Variable und sind damit Prozeßvariable (Bedingungen, Conditions). Das gilt auch für Zeit- und Zählgliedfunktionen bzw. deren Funktionsergebnis. Andererseits sind das Ein- und Ausschalten von Zeit- und Zählfunktionen sowie Durchführung arithmetischer Berechnungen oder Kopierfunktionen an Operationen bzw. Situationen im PRAP gebunden und daher durch Operationsvariable zu steuern.
---------------------------
Automatentheoretische Grundlagen unterscheiden sich grundsätzlich von Petri-Netzgrundlagen, die dem Prozeßablaufnetz zu Grunde liegen.


Der PRAP - Ein Graph

Jeder PRAP verfügt über zwei Grundmengen, Knoten des Graphen, die Menge der Operationen und
die Menge der Prozeßzustandsvariablen.
Die Menge der Operationen und die Menge der Prozeßzustandsvariablen sind die Knotenmengen des Graphen, der stark zusammenhängend ist.

Zur Darstellung dieser Knoten bedient man sich graphischer Elemente:

Die Kanten sind die gerichteten Verbindungen zwischen diesen Knoten. Sie werden durch Pfeile dargestellt.
Zu einem O-Element können viele Pfeile hinführen, es darf aber nur durch einen verlassen werden.
Zu einem P-Element können viele Pfeile hinführen, es muß aber nur von genau zwei Pfeilen verlassen werden. Diese dürfen zu einem O- oder P-Element führen und sind mit der Bewertung "ja" bzw. "nein" zu versehen (Yes / No).
Zwei Operationen heißen benachbart, wenn sie durch einen Pfad verbunden sind, dabei heißt die am Anfang des Pfades Start- oder Quell- oder Anfangsoperation (Start Operation), die am Ende Ziel- oder Folgeoperation (Succeeding Operation).
Ein Weg durch einen PRAP enthält mehrere Pfade und verbindet beliebig viele Elemente beider Art.


Grundsätze zum Gestalten eines PRAP

 1.	Da der PRAP ein Steuerungsmodell eines Teilprozesses (TP) ist, gehören zu ihm Prozeß- und Operations-Variable, die Sie möglichst schon benennen sollten. Die konkreten, technologisch relevanten Variablenbezeichner sind Instanzen oder Unikaten vorbehalten. Demnach kann ein PRAP nur ein Typ oder ein Unikat sein. Ist er ein Typ, dann gestalten Sie die Variablenbenennungen allgemeiner, aber immer technologisch sinnvoll und ohne Abkürzungen.

 2.	Anfangsoperation festlegen! Jede Operation wird durch ein liegendes Rechteck dargestellt. Die Bezeichnung der Operation (=Statement) sollte den technologischen Inhalt ausdrücken.

Folgeoperationen nach dieser Anfangsoperation überlegen.
Unter Folgeoperation ist stets der unmittelbare Nachfolger zu einer betrachteten (Anfangs-)Operation zu verstehen.
Die Anzahl der Folgeoperationen zu einer betrachteten ist theoretisch unbegrenzt.
Operationsvariable und deren Wertung eintragen.
 ist ein Beispiel dafür, daß in der betreffenden Operation die Beleuchtung eingeschaltet wird, die Wertung wird durch den "Haken" markiert. Soll in der darauf folgenden Operation die Beleuchtung ausgeschaltet werden, ist die Wertung zu ändern, also "kein Haken". Anderenfalls bleibt auch in der Folgeoperation die Beleuchtung eingeschaltet.

 3.	Welche Prozeßzustandsvariablen gehören zum Übergang Anfangsoperation => Folgeoperation?

 4.	Jede Prozeßzustands-Variable wird durch ein liegendes "Langrund" (kein Rechteck sondern rechts und links abgerundet) dargestellt, eine sog. Bedingung (=Condition). Den Übergang bilden alle Bedingungen zwischen den beiden Operationen mit einer der zugelassenen Aussagen Ja oder Nein und bilden damit einen Pfad.
Jeder Pfad Pjkp zwischen zwei Operationen Oj und Ok ist ein Teil p des Übergangs-Prozeßzustandes Pjk.
EMPFEHLUNG:
In jedem Pfad sollte möglichst jede Prozeßvariable nur einmal verwendet werden.

 5.	Ist eine Prozeßgröße nicht erfaßbar, kann sie durch einen Zeit- oder Zählbaustein ersetzt (simuliert) werden. In vielen Fällen kann auf das Ersetzen der Prozeßgröße durch Zeit- oder Zählbausteine verzichtet werden, wenn man einen physikalischen Zusammenhang geschaffen hat, der die erwartete Prozeßgröße zu berechnen gestattet bzw. eindeutig abbildet.

 6.	Beim Übergang von einer Operation Oj zur Folgeoperation Ok können sich beliebig viele der Operationsvariablen bezüglich ihrer Bewertung ändern. Zu beachten ist dabei, daß immer alle zum PRAP gehörenden Operationsvariablen in Betracht gezogen werden!

 7.	Außer den Übergangsprozeßzuständen Pjk (j <> k), gibt es auch solche, bei denen j=k ist, die sogenannten Stabilitäts-Prozeßzustände Pjj. Sie sind die Voraussetzung dafür, daß die in jeder Operation Oj eingetragenen Operationsvariablen an den Prozeß ausgegeben werden. Oj und Pjj gehören als Paar zeitlich zusammen, und es muß gelesen werden:
Solange Pjj erfüllt ist, wird Oj ausgeführt.

Tip
Der Grundsatz "Solange Pkk erfüllt ist, wird Ok ausgeführt" enthält eine Ausnahme. Im ersten Verarbeitungs-Zyklus während eines Übergangs von einer Operation der Situation Sj zu einer anderen der Situation Sk erfolgt die Ausgabe der zugehörigen Signale auch dann, wenn Pkk zu Ok nicht erfüllt ist. Im nächsten Verarbeitungszyklus wird die dann folgende Situation erreicht.
Damit wird gewährleistet, daß Koppelsignale ausgegeben werden, auch in einem solchen instabilen Fall der Sk. Andererseits können Sie sich diesen "Effekt" nutzbar machen.


Prüfungen des PRAP

Der PRAP zeichnet sich u.a. dadurch aus, daß er automatentheoretische, wie auch graphentheoretische Forderungen erfüllt. Die Widerspruchsfreiheit und Vollständigkeit, Eigenschaften des Automaten, sind zwangsläufig durch die Struktur des PRAP gegeben, deshalb sind folgende Prüfungen, die nach dem Editieren durchgeführt werden müssen, notwendig:

•	Halteprozeßzustand zu jeder Operation

•	starker Zusammenhang

•	Wertebelegung der Prozeßvariablen Y und N

•	Start- oder Initial-Operation (Launch Operation)

•	Anzahl der abgehenden Kanten jeder Operation = 1, es muß also ein "Folge"-Objekt - Condition - existieren, das aber keine Operation sein darf.

•	Anzahl der abgehenden Kanten jeder Bedingung = 2, es müssen also zwei "Folge"-Objekte existieren.

Alle diese Eigenschaften prüft Ihnen der PRAP-Editor, wenn Sie das Grapik-Menü (rechte Maustaste) aufrufen und dann "Check Graph" anklicken.

Außerdem ist der PRAP hinsichtlich seiner Stabilität, Sicherheit, Dynamik und Vereinfachbarkeit zu überprüfen; Die im Folgenden aufgeführten Fehler finden Sie im Sheet "Compiler Notes" kommentiert:

 1.	Ein Durchlauf einer Operation ist kritisch zu betrachten und zu vermeiden (engl.: run through). Beachten Sie die Eigenschaften
bedingungsstabil und strukturstabil
eines Übergangs von einer Operation zur Folgeoperation.

 2.	Es ist zu darauf zu achten, daß nicht alle Übergangszustände in einem Operationen-Zyklus gleichzeitig auftreten. Es bilden sich dadurch instabile Zyklen, die unbedingt vermieden werden müssen. Anderenfalls besteht Gefahr für den gesteuerten Prozeß! Die Funktionalität des PRAP ist so gestört, daß die gesamte Steuerung ausfallen kann.

 3.	Wenn Unsicherheiten bezüglich der Zuverlässigkeit bei Übergängen von einer Operation zur Folgeoperation bestehen, so sollten Sie strukturstabile Übergänge bevorzugen.

 4.	Bei der Simulation der Steuerfunktion des PRAP (siehe Statischer Test ) ist es wichtig, die Dynamik der Prozeßvariablen zu beachten. Sie kann statisch oder dynamisch sein.

 5.	Durch Einführung kombinatorischer Strukturen kann die Gestalt des PRAP mitunter deutlich vereinfacht werden. Der Vorteil der einfacheren Lesbarkeit hat auch den Vorteil eines kürzeren Programmcodes.

 6.	Kontrollieren Sie die richtige Folge der Wertungen der Operationsvariablen, weil davon die Steuerungsfunktion abhängt! Lesen Sie eventuell nochmals im ersten Punkt bei Gestalten des PRAP

 7.	Zu Ihrer Sicherheit führen Sie eine Übersetzung aus, indem Sie den Cursor auf die linke Seite des Managers ( Projektbaum ) stellen; Betätigen der rechten Maustaste öffnet das Projektmenü, dann ein Klick auf "Build".
Nur durch den Übersetzungslauf erhalten Sie Mitteilungen über z.B. Probleme mit allen eingebetteten Funktionen. Wenn Sie alles richtig gemacht haben, meldet das Fenster "Compiling" bei "Status" das erlösende Wort "Done". Ansonsten sind die Fehlermeldungen zu beachten.


Export und Import von PRAP

Export eines PRAP

 1.	Sie können sich ein Archiv für entworfene PRAP anlegen. Klicken Sie auf [image]. Zur Erläuterung dient: click here

 2.	Sie finden im Menue [image] die Zeile "Copy to Clipboard", womit Sie den PRAP im Format Bitmap zwischenspeichern können. Öffnen Sie mit einem geeigneten Programm diese Daten und speichern danach an beliebiger Stelle.
Import eines PRAP
Aus einer Bibliothek, die exportierte PRAP enthält, können Sie diese wieder verwenden. Klicken Sie auf [image].


Entwicklung eines PRAP (zum Projekt Lehrbeispiel)

Note
Es ist zu betonen, daß ein PRAP zwar eine Teilprozeßbeschreibung ist, aber nur im Fall eines Unikates trifft dies vollständig zu. Ansonsten ist ein PRAP ein Typ, dessen Konkretisierung durch Instanziierung erfolgt und dann erst als Teilprozeß gilt. Alle Variablen im PRAP sind daher im allgemeinen formale.

Zunächst muß festgestellt werden, welche Steuer-Größen am Teilprozeßeingang und welche Prozeßzustandsgrößen am Teilprozeßausgang auftreten (siehe: Informationsfluß-Modell).
Zu jedem Teilprozeß gehört eine bestimmte Anzahl Ausgangsvariable (jede Ausgangsvariable ist einer Operationsvariablen zugeordnet),die es in keinem anderen TP gibt. Eine Wertebelegung aller Operationsvariabler wird Operation genannt.
Die Eingangsvariablen jedes TP ergeben sich aus den Prozeßvariablen des Teilprozeßausgangs und dürfen zu mehreren TP gehören.
Die Entwicklung eines PRAP ist ein iterativer Vorgang, der zwischen Prozeßzerlegung und Teilprozeßbeschreibung (anderer Ausdruck für Prozeßablaufplan) verläuft.
Allgemeine Grundlagen:
Grundsätze zum Gestalten eines PRAP
Prüfungen und Optimieren eines PRAP

Bedienen des PRAP-Editors an Hand von Beispielen:
Beispiel Lampensteuerung
Beispiel Stern-Dreieck-Schaltung (mit Zeitglied-Projektierung)
Beispiel Motorstrom-Verarbeitung (mit Vergleicher-Projektierung)


Cursor auf ein markiertes Objekt führen, linke Maustaste gedrückt halten.


Es können empfohlen werden:

•	MS Word und "Bearbeiten | Einfügen" mit gutem Bild, aber als DOC-Datei speicherbar.

•	Corel Photo Paint und "Datei | Einfügen aus Zwischenablage" mit gutem, scharfen Bild als BMP-Datei speicherbar.

•	IrfanView und "Bearbeiten | Einfügen" mit gutem Bild, wobei noch die Bilddaten Auiflösung und Größe veränderbar sind.


Die Grundlagen

(Das Tool PAN-Editor ist noch nicht verfügbar!)
Das Prozeßablaufnetz (PAN) ist ein Bedingungs-Ereignis-Netz (BEN) und damit ein Beschreibungsmittel, bzw. ein Modell auf Grundlage des Petri-Netzes.
Das PAN ist bei großen oder schwer überschaubaren Prozessen als Vorläufer der Prozeßzerlegung zu empfehlen. Insbesondere Chargen- bzw. Batch-Prozesse mit mehreren parallelen (simultanen) technologischen Abläufen lassen sich gut modellieren. Sowohl Binär-Steuerungs- als auch Stabilisierungs-Anforderungen, also Regelungen, lassen sich im PAN darstellen.

Ziele des Prozeßablaufnetzes:

•	Modellierung des ungestörten Gesamtprozeßablaufes

•	Unterstützung bei der Zerlegung des Prozesses in Teilprozesse

•	Unterstützung bei der Überführung der Steuerungs-Teilprozesse in PRAP-Grundstrukturen, die die im Gesamtprozeßmodell vorhandenen Kopplungen beinhaltet

Es gilt beim PAN:

Ein Prozeßschritt ist mathematisch betrachtet eine Sequenz von Bedingung - Ereignis -Bedingung bzw. Platz - Transition - Platz .

Den Inhalt von Prozeßschritten bilden Abschnitte des Prozeßablaufes und erhalten eine dementsprechende Benennung. Ein Prozeßschritt beginnt, sobald der erste Platz (Eingangsplatz) markiert wird. Der Prozeßschritt benötigt Prozeßzeit, an deren Ende die Markierung dem zweiten Platz (Ausgangsplatz) zugewiesen wird. Dann gilt er als abgeschlossen.

Für die Transitionen zwischen den Prozeßschritten gilt die Schaltregel, daß alle Vorprozeßschritte ihren Ausgangsplatz markiert haben müssen, und bei allen Nachprozeßschritten kein Eingangsplatz markiert ist.

Die Transitionen können also erst schalten, wenn alle Vorprozeßschritte abgeschlossen sind, und Nachprozeßschritte dürfen entweder von einer anderen Transition keine Marke erhalten haben oder müssen ebenfalls abgeschlossen sein.
Muß ein Konflikt gelöst werden, oder sind andere technologische Zusatzbedingungen zu erfüllen, damit eine Transition schalten kann, gibt es die Bedingungsschritte, die ihre Markierung erhalten, sobald die beschriebene bzw. genannte Bedingung erfüllt ist.
Ferner ist die Inhibitorkante nutzbar, die zwar keine Marke transportiert, aber der Transition die Schalterlaubnis entzieht, solange der betreffende Ausgangsplatz eines Vor-Prozeßschrittes eine Marke trägt.
Die Anfangssituation des Prozeßablaufnetzes wird durch eine Anfangsmarkierung festgelegt.


Motorstrom-Verarbeitung (Projektierung der Vergleicherfunktion)

Blicken Sie zurück auf die Ausführungen im Thema PRAP Stern-Dreieck-Steuerung, um die hier gezeigte Problematik zu erkennen und zu akzeptieren.
Mit dem Einschalten des Stern-Schützes steigt der Motorstrom innerhalb von 50 bis 200ms auf sein Maximum und fällt dann mit Beginn der Drehbewegung langsam ab. Es wird vorausgesetzt, daß das Betriebssystem der Ressource, also einer SPS, so schnell arbeitet, daß es eine Zykluszeit von unter 25ms aufweist. Das bedeutet, das Strommaximum ist erfaßbar - die Verzögerung durch die Strommessung eingeschlossen - und damit auch auf der abfallenden Stromkurve über der Zeitachse der dort zu erwartende "Weiterschaltwert" des Stromes. Die konkrete Höhe dieses Wertes ist hier nicht von Interesse.

Der Weiterschaltwert I_Soll ist eine Konstante im Vergleich mit dem Motorstrom-Istwert.
Im zu entwickelnden PRAP gibt es fünf Variable:
........Statement................Identification..(Bemerkung)
===============================================================

•	Weiterschaltwert erreicht.......I_Schalt.(Kopplung zur Stern-Dreick-Schaltung)

•	Strom größer Weiterschaltwert...I_WSW....(Interne, lokale Boolesche Variable)

•	Motorstrom......................I_IST....(Vom Meßgeber oder AD-Wandler)

•	Weiterschaltwert................I_SOLL...(Konstante gemäß Code AD-Wandler)

•	Motor ausgeschaltet.............Mot_aus..(Kopplung von Stern-Dreieck-Schaltung)

 Typen-PRAP Motorstrom-Auswertung
Die zweite Situation ist strukurstabil,
die dritte Situation ist es nicht. Da "Motor ausgeschaltet" als Koppelvariable nicht "falsch" auftreten kann, ist kein Durchlauf zu erwarten.
Die dritte Operation im PRAP enthält die Koppelvariable gleich Operations-Variable "Weiterschaltwert erreicht" mit [image]), die "mitteilt", der Weiterschaltwert sei erreicht (ohne diese Markierung: ... NICHT erreicht).

Tip
Tragen Sie alle diese Variablen in die Access Table ein. Dadurch haben Sie es leichter, die Vergleicherfunktion zu formulieren.

Zu Ihrer eigenen Sicherheit und zur Information Dritter hat sich sehr bewährt, die PRAP-Funktion zu beschreiben. Stellen Sie den Cursor auf ein freies Feld außerhalb der PRAP-Symbole und klicken auf die rechte Maustaste; danach Klick auf "Descriptions". Nun können Sie Ihren Beschreibungstext eintragen. Als Beispiel sehen Sie den Text des PRAP-Autors:

Weiter mit: Projektierung der Vergleicherfunktion.


Projektierung der Vergleicherfunktion

Falls Sie den PRAP-Entwurf sehen wollen: PRAP Motorstrom

Sie erkennen im Bild zwei Felder, wobei das obere die Vergleicherfunktion enthält, das untere die Variablentabelle. Nutzen Sie bitte auch die Hilfeangebote zu den Formblättern!
Die grundlegenden Ausführungen finden Sie hier.
Die Handlungsschritte:
Es wird davon ausgegangen, daß Sie nur das obere Feld vor sich sehen, noch keine Vergleicherfunktion vorfinden und die Variablen I_IST und I_SOLL noch nicht eingetragen sind.

 1.	Geben Sie diese jetzt ein, indem Sie nach Klick auf [image] die Variablentabelle (Access Table) sehen. Klick auf [image] leitet den Vorgang ein. Die Variablen in das Feld "NAME" nacheinander eintragen. Beachten Sie bitte die Ausführung unter 2.

 2.	Gehen Sie davon aus, daß der Analog-Digital-Wandler die Stromwerte als INTEGER-Werte ausgibt. Deshalb ordnen Sie beiden den Datentyp INT zu. USAGE zu I_IST muß Input, zu I_Soll Constant sein. Den wirklichen Wert zu I_Soll übergeben Sie in den Instanzen, weil die Höhe des Stromwertes auch in jedem Teilprozeß (=Instanz) verschieden sein kann.

 3.	Setzen Sie nach der Eingabe der Variablen den Cursor in das Feld "Formula" und drücken Sie Strg+Leerzeichen (Ctrl+Space). Die beiden Variablen wählen Sie aus und fügen sie zur Formel ein, das Vergleicherzeichen können Sie mit der Tastatur eingeben oder Sie drücken Strg+J und wählen das Zeichen aus.

 4.	Am Ende das Semikolon als Formelabschluß setzen. Danach "Check" anklicken.

 5.	Wenn alles in Ordnung ist, dann Klick auf "Return", und die Vergleicherfunktion sehen Sie im Feld "Formula":

Nun den Vorgang mit Klick auf "OK" beenden.

Warning
Falls Sie die Formel mit der Tastatur eintragen, sind die Variablen aber der Datenbank nicht "bekannt". Daher werden Sie z.B. mit Klick auf "Check" die Fehler lesen können.
Falls Sie nicht "Return" anklicken, ist die Formel nicht in der Datenbank enthalten.


Delete Object...Löschen des markierten Graphik-Symbols
Connect to/ Disconnect from Connector...Betrifft die Kante vom Graphik-Symbol zum Konnektor

Data Access.....Zugriff auf den Datensatz des markierten Graphik-Symbols
Route Information ... (noch nicht programmiert)

Set Launch Operation....Die markierte Operation wird als Start- bzw. Initialoperation gekennzeichnet (Doppelrahmen)


Durch Klick auf eine Menü-Zeile ändert der Cursor seine Form. Es können folgende PRAP-Objekte eingefügt werden:

Condition = Bedingung, Prozeß-Variable

Operation = Operation, Wertebelegung aller Operationsvariablen
Edge = Kante, gerichtet (Pfeil-Linie), zwischen zwei Objekten

Connector = Konnektor dient zur Unterbrechung von Kanten und enthält Zählnummern mit Angabe des Partners
Complete Check
Vollständige Prüfung aller PRAP-Eigenschaften. Keine Prüfung von Formeln aller Art (eingebettete Funktionen wie TIMER, Vergleicher usw.)

Warning
Unterbrechung beim Kanten-Ziehen: Lesen Sie nach Klick bei 'Problemen...' nach

Ein Klick auf die markierte Menü-Zeile schaltet den Editor ab. Damit können Sie z.B. Kanten bearbeiten.
Löschen eines Objektes: Hinführen des Cursors, dann rechte Maustaste und Klick "Delete Object".

Weitere Hilfetexte:
Wie behandelt man Operationen (am Beispiel)
Wie behandelt man Prozeßvariable (am Beispiel)
Wie zeichnet man Kanten
Wie nutzt man Konnektoren


Kanten zeichnen und Probleme

Es gelten folgende Regeln für Kanten:

•	Die Verbindungen erfolgen stets von Objektmitte zu Objektmitte. Objekte sind Operationen (Operations), Bedingungen (Conditions) und Knoten einer bestehenden Verbindung.

•	Der Beginn einer Verbindung heißt auch wegführende Kante vom Objekt. Das Ende einer Verbindung wird auch hinführende Kante zum Objekt genannt.

•	Durch die Zieh-Richtung wird die Richtung der Verbindung bestimmt. Der Pfeil wird automatisch am Ende eingetragen.

•	Ein Klick am Anfang einer Verbindung setzt deren Beginn. Beim Ziehen einer Verbindung stets Maustaste loslassen.
Jeder Klick während des Ziehens erzeugt einen Knoten, der zugleich eine mögliche Knickstelle der Verbindung ist.

•	Das Ende eines Ziehvorgangs hat

 1.	in einem Objekt

 2.	in einem Knoten einer bestehenden Verbindung

 3.	exakt an einer anderen Verbindung, sobald ein Kreuz erscheint
(ein Knoten wird hier automatisch erzeugt)

durch einen Klick zu erfolgen.

•	Einen Knoten (Knickpunkt) verlagert man durch Hinführen des Cursors, im Knotenfeld linke Maus-Taste drücken und halten, bis durch Verschieben der Maus die gewünschte Lage erreicht ist. Dabei ist ein neuer Cursor zu erkennen und die Verbindung bis zur Mitte des Objektes zu sehen.

•	Veränderungen aller Art an Kanten sind mit dem Kanten-Menü durchführbar.

•	Jede wegführende Kante einer Condition muß bewertet sein. Führt man den Cursor an eine solche Kante, dann öffnet ein Klick auf die rechte Maustaste das Kanten-Menü , das unten "Change Exit Y <-> N" stehen hat. Das bedeutet, die Kanten-Bewertung zu ändern.

•	Wenn Sie das Ziehen einer Kante beenden wollen und daher unterbrechen:

 1.	Sofort die ESCAPE-Taste betätigen und anschließend die linke Maustaste

 2.	einfach die rechte Maustaste betätigen

Probleme beim Kanten zeichnen:click here


Probleme beim Kanten zeichnen

•	Ziehen Sie NUR eine Kante in einem NICHT MARKIERTEN OBJEKT. Also erst Klick auf das freie Feld, dann mit dem Zeichnen beginnen.

•	Haben Sie zu einem Objekt hinführende Kanten zunächst getrennt gezeichnet, dann haben sie auch keine gemeinsame Linie. Wollen Sie das ändern, d.h. alle Linien auf dem gemeinsamen Weg zu einer zusammenführen, dann legen Sie an den Kanten-Einmündungen immer zwei Kanten übereinander. Fügen Sie eventuell an der passenden Stelle einen Knoten ein und achten darauf, daß die beiden Knoten auch wirklich zusammentreffen, dann werden sie automatisch vereinigt und Pfeile erscheinen an der Einmündung.

•	Eine versehentlich gezogene Kante, die noch nicht in einem Zielobjekt angekommen ist, entfernen Sie durch loslassen der linken Maustaste und Klick auf RECHTE Maustaste.

•	Sie haben in einem PRAP schon Kanten zwischen die Graphikelemente gezogen und schreiben den Text in eine Operation oder eine Bedingung. Das Graphikelement vergrößert sich, und plötzlich entsteht ein wirres Kanten-Bild.
Markieren Sie das Element, das Ihr Kanten-Bild zerstört hat, ziehen Sie das Element so weit weg, bis das Kanten-Bild wieder vernünftig aussieht. Dann durch Markieren der Kanten die Knoten sichtbar machen und aus dem Bereich des Graphikelementes herausziehen.

Ein Beispiel soll zeigen, welcher Kanten-Fehler auftreten kann:


Konnektoren
Konnektoren dienen zum Verbinden von PRAP-Elementen an Stelle von gerichteten Linien und helfen, den PRAP von Linien-Netzen zu befreien.

 1.	Platzieren Sie mindestens zwei Konnektoren.

 2.	Einer von beiden wird genau eine Kante erhalten, die zu einem Objekt (Operation oder Condition) hinführt, also vom Konnektor wegführt. Das ist der "wegführende Konnektor".

 3.	Der andere Konnektor erhält wenigstens eine Kante, die von einem Objekt wegführt, also auf den Konnektor hinführt. Das ist der "hinführende Konnektor". Jedes weitere Objekt führt "seine Kante" hin zum Konnektor. Es dürfen beliebig viele Kanten zum Konnektor führen.

 4.	Der wegführende Konnektor kann mit vielen hinführenden verbunden werden, nicht umgekehrt!
Man kann auch die Vorstellung von Quelle und Ziel anwenden. Der wegführende ist das Ziel von wenigstens einer Quelle.

 5.	Konnektor und Kommentar können durch Markieren des Konnektors und festhalten der Maustaste verschoben werden. Der Kommentar ist allein verschiebbar.

Beispiel:

•
Im Bild sehen Sie sechs Konnektoren, die nicht miteinander verbunden sind, weshalb sie "No Opposit" (kein Gegenüber, keinen Partner) als Kommentar haben.

•
Der Konnektor 1 soll ein wegführender sein: Markieren und rechte Maustaste betätigen, danach: Klick auf "Connect To Connector" öffnet dieses Auswahl-Angebot. Markieren des Partners und OK zeigt die gewählte Verbindung an. Soll Konnektor 1 mit mehr Konnektoren verbunden werden, dann diese Prozedur wiederholen.

•
Das Bild zeigt das Ergebnis einer Verbindung von Konnektor 1 mit Konnektor 2, und Sie können zu Konnektor 1 weitere Verbindungen herstellen, falls er ein hinführender ist. Deshalb müssen Sie den hinführenden Konnektor zuerst mit einer Kante mit der PRAP-Graphik verbinden.

•
Aus dem Lehrbeispiel sehen Sie den Stern-Dreieck-Motor-Anlauf mit einem Konnektorpaar. Auf den hinführenden Konnektor 2 gehen drei Kanten. Sie kommen von den Conditions 2, 3 und 4.

Tip
Es ist oft einfacher oder leichter "lesbar", noch einen wegführenden Konnektor zum gleichen Ziel, z.B. zu einer Operation, dann einzuführen, wenn im PRAP "weiter entfernt liegende" Conditions ein Anbinden an nur einen Konnektor zur Unübersichtlichkeit beiträgt. Dies ersetzt das Verbinden mehrerer Konnektoren miteinander.


 New..........................Anlegen eines neuen Projektes, einer neuen Projekt-Datei

Open...........................Öffnen eines vorhandenen Projektes aus der Alias-Tabelle
Reopen..........................Liste der bisher bearbeiteten Projekte

Project Back Up....F2...Komprimierte Projektdatei als Rücklage mit .GBK-Erweiterung
Close....................Das Projekt wird geschlossen

Exit..........................SPAS wird geschlossen


Undo.............Zuletzt ausgeführte Text-Aktion wird rückgängig gemacht

Cut..............markierten Text ausschneiden und zwischenspeichern
Copy.............markierten Text zwischenspeichern
Paste.............Einfügen eines Textes aus dem Zwischenspeicher
Delete...........markierten Text löschen


Description
Check Project


Zeigt alle in der Datenbank eingetragenen Informationen zu:
 Configuration.........alle Konfigurationen des Projektes
Resources...............alle Ressourcen

Members................alle Bausteine
Variables..............(mehr zur internen Information)

All Variables.....Nach Klick auf [image] sind alle Variablen des Projektes angezeigt und editierbar.


 Compile Resource.......Die AWL / Das Compilat für die markierte Ressource wird hergestellt
Compile Configuration......Das Compilat für alle zur Konfiguration gehörenden Ressourcen wird hergestellt
Compile PRAP to FB....Der Function Block zum markierten PRAP wird compiliert


Sprung zum Anfang von SPAS-Hilfe


Das Projekt-Menue wird bei einem markierten Member des Projektbaumes und Betätigen der rechten Maustaste dargestellt. Dabei sind nur die Texte aktiv, die zum Member passen.

Tip
Ziehen Sie das Help-Fenster so weit auseinander, bis die Texte rechts vom Bild auch zum Bild passen.

(Edit)-Öffnen des PRAP-Editors in "Charts". PRAP-Member mit
(Close)-Schließen des PRAP-Editors mit Frage nach PRAP speichern

(Edit Function)-Öffnen des Funktions-Editors

(Back Presentation)-Alle PRAP einer Ressource online (menue siehe unten!) darstellen
(Build)-Compiliert den markierten Knoten vollständig
(Compile)-Compiliert nur geänderte Teile des markierten Knotens

(Show)-Anzeige des Compilates/Codes im Blatt "Code"
(Save)-Speichern des Compilates im "Repository"

(Project Tree)-Projektbaum-Menue siehe unten!
(Insert)-Einfügen-Menue öffnen (Hilfe zu jedem mit "F1")
(Refresh)-Neuaufbau des Projektbaumes aus der Datenbank
(sooner)-Reihenfolge des Members eher im Projektbaum (auch mit drag and drop)
(later)-Reihenfolge des Members später im Projektbaum (auch mit drag and drop)

(Open)-Öffnen des Member-Dialoges zu dem markierten Member
(Remove)-Member wird aus Datenbank entfernt (nicht rückgängig!)

(Delete)-Graphikfile wird aus Datenbank entfernt (nicht rückgängig!)

(Data base)-Der Datenbank-Inhalt aller Variablen des markierten Members (druckfähig). Hilfe sieheclick here
(Copy)-Globalvariablen kopieren: Fragen Sie bei AMIKO GMBH!!
(Import)-Import einer Excel-Variablen-Tabelle

Projektbaum-Menue
Änderung des +Projektnamens(noch nicht verfügbar)
+Projektbaum minimieren
+Projektbaum vollständig öffnen
+Suchen eines Members - Namen eingeben

Back Presentation mit dem "Online Viewer"  gilt für Build und Compile
+(Prevent)-Vehindert die Erzeugung des Codes für die Darstellung der "lebendigen PRAP"
+(Including)-Schließt die Code-Erzeugung ein


 Save Graph: Speichern des PRAP und aller Variablen in der Datenbank. Voraussetzung zur Compilierung( Build und Compile) nach Änderungen im PRAP
Check Graph: Vollständige Überprüfung der Graphik

Reload Graph: Neue Darstellung des PRAP aus dem Datenbank-Speicher
Graph Editor: Der Editor für eine PRAP-Entwicklung erscheint als Menü
Print: Ausdruck der Graphik über einen Drucker, mit Formatierungen
Copy to Clipboard: Die Graphik wird in die Zwischenablage als Bitmap kopiert

Zoom: Vergrößerung / Verkleinerung der graphischen Darstellung
Descriptions: Öffnet ein Fenster für die sog. Auftragsdaten und die Beschreibung oder Erläuterung der PRAP-Funktion.

Clear Graphic Panel: Das Entfernen der graphischen Darstellung bedeutet nicht deren Speicherung!

Tip
Die vollständige Prüfung eines PRAP geschieht während des Compilierens. "Build" für jeden PRAP ist daher sehr zu empfehlen!


Mit diesem Menue bearbeiten Sie eine ausgewählte gerichtete Verbindung (Edge), auch Kante genannt, zwischen zwei PRAP-Objekten.
Ein Knoten dient dazu, die Kante dort "anzupacken" (linke Maustaste festhalten) und einen Knick zu erzeugen.
Jede der zwei Edges einer Condition muß eine Bewertung/Aussage Yes oder No tragen. Änderungen der Aussage werden hier ermöglicht.

Insert Node ... Einfügen eines Knotens
Delete Node ... Löschen eines Knotens

Delete All Nodes ... alle Knoten der Kante werden gelöscht
Delete Edge ... die markierte Kante wird gelöscht

Change Y - N ... Wechsel der Kanten-Bewertung von Ja auf nein oder umgekehrt


Parameter-Behandlung

Die erste Abteilung enthält
"connected with..."
und ermittelt alle an die markierte Formalvariable gekoppelten Instanzen, Teilprozesse/TP, deren Eingangsvariable mit < Name der aktuellen Instanz/TP>.<Name der Formalvariablen> zugewiesen wurden.
"Disconnect actual parameter"
und löst eine zugewiesene Aktualvariable aus RESOURCE, PROGRAM oder Derivated Data Types/Structured Data Types. Es erscheint der Text "none" und die Zeile in rot. Falls es zusätzlich zugewiesene Eingangsvariable (siehe oben) gibt, erscheint der Text "Is connected", ohne Rotfärbung.

Die zweite Abteilung ermöglicht das Suchen eingetragener Aktualvariablen, also nicht Eingangsvariable gekoppelter Instanzen.

Die dritte Abteilung ist ausschließlich für Derivated Data Types/Structured Data Types bestimmt, um im Bedarfsfall die Adressen neu berechnen zu können.


Typ-Parameter-Behandlung

 1.	"Disconnect Variable": diese Variable wird aus dem aktuellen Member entfernt.

 2.	"Search Variable": Geben Sie den Namen oder den ersten Teil davon ein und lassen suchen. Danach die markierte Variable finden.

 3.	"Show I/O Parameter" filtert alle anderen aus und zeigt das Ergebnis an.

 4.	"Order By Variable Name" ordnet innerhalb der USAGE-Gruppen ( Input - Output - Input/Output usw. ) die Variablen nach dem Alphabet.
Die Ordnung der Variablen ist grundsätzlich an der Reihenfolge der Variablen-Eingabe orientiert. Mit Klick auf eine Variable öffnet die Variablentabelle, in der links oben im Feld NBR die Ordnungsnummer ablesbar ist.


Den Datenzugriff ("Data Access") erhalten Sie auch direkt, wenn Sie zwei Mal hintereinander die linke Maustaste klicken (Doppelklick).


Lampenschaltung

Sie können von hier aus zu allen Teilen dieses Themas springen:
Editieren von Operationen (Teil 1)
Editieren von Prozeß-Variablen (Teil 2)
Eintragen der Kanten (Teil 3)
PRAP Lampensteuerung, Prüfung (Teil 4)
PRAP Lampensteuerung - Strukturfragen  (Teil 5)

Das vorliegende Schaltbild zeigt ein gewöhnliches Lampensymbol und einen allgemeinen Schalter. Es ist sicherlich das denkbar einfachste Beispiel. In dieser Form ist es ein Typ für das Ein- und Ausschalten einer Lampe. Diesen Typ als PRAP zu entwerfen wird die erste Aufgabe sein. Die folgenden Aufgaben sind das Instanziieren dieses Typs, z.B. die Beleuchtung bei einem geschlossenem und die bei geöffnetem Hallen-Tor zu definieren. Bei geschlossenem Hallen-Tor soll die Lampe außen, bei geöffnetem innen, also hinter dem Tor angebracht sein. Diese beiden Teilprozesse "Außenbeleuchtung" und "Innenbeleuchtung" sind hier einfach erfunden, weil keine Prozeß-Zerlegung eines konkreten Prozesses stattgefunden hat.

Die folgende Beschreibung hält sich an die Texte bei
Entwicklung eines PRAPund
Grundsätze zum Gestalten eines PRAP.

Formulierung der Prozeß-Zustandsvariablen:

 1.	Für den Typ als PRAP gilt, dem Schaltzeichen S1 eine Benennung zu geben wie z.B. "Einschaltbedingung erfüllt"

 2.	Die erste "Anwendung" dieses Typs soll sein "Hallen-Tor geschlossen" im TP "Außenbeleuchtung".

 3.	Es soll eine weitere Einschaltmöglichkeit geben "Hallen-Tor geöffnet" im TP "Innenbeleuchtung".

S1 ist nur ein Schaltzeichen-Symbol, niemals geeignet zur Formulierung einer Prozeßvariablen.
Beide TP sind Instanzen vom Typ-PRAP "Lampe".
Formulierung der Operationsvariablen:

 1.	Das Symbol La1 soll die Bezeichnung "Beleuchtung einschalten" erhalten.

 2.	Im TP "Außenbeleuchtung" soll "Hallenzufahrt beleuchten" formuliert werden.

 3.	Im TP "Innenbeleuchtung" soll die Variable "Halle beleuchten" heißen.

Damit sind die Variablen zu diesen Teilprozessen benannt, die direkten Adressen könnten hier noch dazugeschrieben werden. Sie müssen spätestens beim Instanziieren bekannt sein. Der Entwurf des Typen-PRAP kann beginnen.

Falls Sie mit dem Projekt-Editor arbeiten und noch keinen PRAP-Knoten als Member in Ihr Projekt eingefügt haben, dann erledigen Sie das bitte jetzt, weil es sonst keinen Zugang zum PRAP-Editor gibt. Gehen Sie gemäß Projekt-Editor vor.
Dort ist das Beispiel soweit beschrieben, daß sowohl der PRAP für die Lampensteuerung als auch der für die Stern-Dreieck-Steuerung eingefügt sind.Im nachfolgenden Bild wurde der Lampentyp markiert, mit der rechten Maustaste das Menue geöffnet und "Edit Flow Chart (PRAP-FB)" angeklickt:

Weiter mit Aufbau des PRAP zur Lampensteuerung (Teil 1)


PRAP zur Lampensteuerung (Teil 1)

Editieren von Operationen
Die Registerkarte "CHARTS" muß aktiviert sein (siehe hier), dann führen Sie den Cursor auf dieses (noch leere) Feld und drücken auf die rechte Maustaste. Sie erkennen ein Menü,

in dem eine Zeile "Graphic Editor" lautet. Ein Klick mit der linken Maustaste gibt Ihnen das Menue frei, mit dem Sie einen PRAP aufbauen können:

Klicken Sie nun die Zeile "Operation" und führen anschließend den Cursor an die Stelle, wohin die erste Operation - sie trägt die Inschrift Op Nr 10000 - gelangen soll. So erhalten Sie ein Bild:

Führen Sie den Cursor auf das Operationssymbol und betätigen Sie die rechte Maustaste, dann klicken Sie in dem erscheinenden Menue [image] auf die Zeile "Data Access" und erhalten den Zugriff auf alle Daten der betreffenden Operation:

Dies ist das sogenannte Operations-Variablen-Fenster, in das die Operationsvariablen eingetragen werden. Zuvor ersetzen Sie den Text in "Statement" am besten durch "Keine Beleuchtung", weil das den Anfangs-Stand der Schaltung zum Ausdruck bringt. Das trifft auch den Satz 1 der Grundsätze zum Gestalten!
Klicken Sie nun auf "Insert New Variable", um eine neue Operationsvariable (es ist die erste!) in die Operation einzutragen. Es erscheint der Text "New_Operation_Variable", auf dem Sie mit Doppelklick ein Fenster der bearbeiteten Operation öffnen. ( Entfernen einer Operationsvariablen )
 "Statement" bedeutet den Variablennamen, hier "Lampe einschalten", weil diese Aussage dem entspricht, was eigentlich im "aktiven Fall" geschehen soll. Nach diesem Eintrag als "Comment" klicken Sie bitte auf [image] neben dem Text "Variable Name (Flag)1)". Damit erhalten Sie Zugang zur Variablen- Datenbank:

NUR HIER UND NUR IM OBEREN TEIL (also nicht in der Tabelle - unten - selbst) können Sie die weiteren Variableneinträge tätigen. In das Feld "Name" tragen Sie eine Kurzform ein. Hier steht kurz "La_ein". Wichtig ist nun, die Datenbank-Symbole richtig zu bedienen(automatische Hinweise beachten):

Von links nach rechts:
Neuen Datensatz einer Variablen hinzu
Datensatz zur markierten Variablen löschen
Datenbank-Inhalt editieren
alle Änderungen in Datenbank sichern
Editiervorgang ungeschehen beenden
Datenbankinhalt erneut sichern
 Daten übernehmen, zugleich in Datenbank sichern
 alle Variablen-Records anzeigen
 Hilfetext für die Variablen-Behandlung in dem großen, rechten Feld. Das Fragezeichen [image] des oberen Feldes bringt weiterhin Hilfetexte zu einzelnen Feldern.

Danach, und das ist bei mehreren eingetragenen Variablen wichtig, die richtige Variable in der Datenbankzeile markieren und [image] anklicken. Dadurch erfolgt der Eintrag in das Feld "Variable Name (Flag)". Klick auf [image] läßt die Datenbank verschwinden, Klick auf "RETURN" führt zurück zum Operations-Fenster mit dem Statement (der Erklärung) der Variablen:
Nach weiterem RETURN erhält man:
 Das Markierungsquadrat bleib LEER, weil "Lampe ausschalten" gilt! Weiter mit Aufbau des PRAP zur Lampensteuerung (Teil 2)
Zurück zum Anfang


PRAP zur Lampensteuerung (Teil 2)

Nachdem die erste Operation erstellt wurde, ist zu überlegen, welche Folgeoperation(en) es gibt, für dieses Beispiel natürlich nur eine: Beleuchtung in Betrieb.
Gehen Sie ebenso vor wie beim Herstellen der ersten Operation, nur eine neue Operationsvariable benötigen Sie nicht. Zunächst tragen Sie bei "Statement" den Text "Beleuchtung in Betrieb" ein, weil dies in der zweiten Operation geschehen soll. Danach markieren Sie durch Klick das Quadrat neben dem Variablennamen "Lampe einschalten", womit klar ist, daß hier die andere Wertung gilt gegenüber der Operation 0. Mit Klick auf RETURN verschwindet das Operationenfenster und die beiden Operationen

des PRAP sind vorhanden.

Editieren von Prozeßzustands-Variablen / Conditions
Nun ist zu überlegen, welche Ursache den Übergang von der Operation 0 zur Operation 1 (die Nummern finden Sie am unteren Bildrand der Registerkarte Charts in Klammern hinter dem Comment-Text) bestimmt. Hier im Beispiel ist das sehr einfach, weil es nur eine Prozeßvariable gibt - siehe oben.

Das Einfügen einer Prozeßvariablen zwischen die beiden Operationen geschieht wie folgt:
Mit Klick auf die rechte Maustaste öffnet sich das bekannte Menue, in dem Sie "Graphic Editor" anklicken. Jetzt klicken Sie auf Condition (=Bedingung, hier P-Variable), bewegen den Cursor zwischen die Operationen und klicken erneut. Es ergibt sich das Bild:

Sie können die Position des Symbols beliebig verschieben:
Bleiben Sie mit dem Cursor auf dem Symbol und betätigen die linke Maustaste und halten Sie fest.
Zur Spezifikation der Variablen:
Bleiben Sie mit dem Cursor auf dem Symbol und betätigen die rechte Maustaste; Sie werden nach der Feststellung (englisch), daß es noch keine P-Variable gibt, gebeten, eine neue zu erzeugen (Yes-Button), oder eine vorhandene wieder zu verwenden (RETRY-Button).
Für das Beispiel ist eine neue zu erzeugen: Ein Klick auf "Yes" führt zu einem bekannten Fenster, nur daß es eben für "Process Variables" geöffnet wurde. "New_PVar_Statement" ersetzen Sie durch "Schaltbedingung erfüllt" und klicken danach wieder auf [image], womit sich der Datenbank-Zugang öffnet.

Note
Wundern Sie sich nicht über den Eintrag der O-Variablen, hier werden alle Variablen gehalten!

Klicken Sie auf das [image].
Sie erhalten eine neue Zeile mit dem Eintrag "pVar", den Sie z.B. durch "La_einschalten" ersetzen. Damit erhalten Sie:

Durch Klick auf [image] wird der Variablen-Kurzbezeichner "La_einschalten" in das Feld "Variable Name (Flag)" übernommen, ABER achten Sie darauf, daß die zu übertragende Variable auch markiert ist:

Klicken Sie nun entweder auf [image] und/oder auf RETURN, um zum jetzigen PRAP-Bild

zu gelangen.
Zum Schluß dieses Abschnittes noch eine Bemerkung:

Note
Jedes PRAP-Element enthält seine Nummer automatisch. Es ist bei mehreren P-Variablen auch völlig unerheblich, ob aus irgend einem Grund die fortlaufende Zählreihe unterbrochen wird. Die Prüfergebnisse "Check Graphic" enthalten diese Nummern.
Wollen Sie eine fortlaufende Zählung, dann spezifizieren Sie jede neue Condition sofort nach dem Platzieren.

Zurück zu PRAP zur Lampensteuerung (Teil 1).
Weiter mit PRAP zur Lampensteuerung (Teil 3).
Zurück zum Anfang


PRAP zur Lampensteuerung (Teil 3)

Eintragen der Kanten / Edges
Nun müssen die drei PRAP-Elemente durch Edges (=Kanten, gerichtet) verbunden werden.
Der Zieh-Vorgang:
Zu diesem Zweck klicken Sie im Graph-"Editor" auf "Edge", führen den neuen Cursor in die obere Operation, klicken die linke Maustaste und führen den Cursor in die P-Variable, und klicken Sie wiederholt. Nun sehen Sie eine Verbindung zwischen der Operation und dem Condition-Symbol (ein sog. Langrund) mit Pfeil auf die Condition gerichtet. Man sagt auch, die wegführende Kante beginnt an einem Symbol, die hinführende Kante endet mit einem Pfeil am Symbol.

Es gelten folgende Regeln: Click here

Sie erkennen im Bild des nun fertigen PRAP das Ergebnis des Ziehens aller Verbindungen.

Die Kanten sollen jetzt erläutert werden:
Die mit "Y" bewertete Kante (Yes=Ja) führt ganz selbstverständlich zur Folgeoperation.
Die mit "N" bewertete Kante führt zurück zur Operation "Keine Beleuchtung", weil dies der Fall ist, solange "Schaltbedingung erfüllt" mit No=nein bewertet wird. Die dadurch entstehende "Schleife" garantiert, ganz praktisch gedeutet, daß die Beleuchtung nicht eingeschaltet wird: Diese Situation ist stabil, solange die Aussage "N" bleibt.
Die Operation "Beleuchtung in Betrieb" bleibt natürlich solange stabil, wie "Schaltbedingung erfüllt" mit "Y" gilt. Folglich muß die wegführende Kante dieser Operation an der P-Variablen enden, dort ist sie hinführende Kante. Damit ist die zweite Situation des PRAP definiert.

Lesen Sie auch Punkt 6 aus Grundsätze zum Gestalten eines PRAP.

Tip
Übrigens "Save Graphic" sollte immer mal wieder angeklickt werden, damit Ihnen der PRAP erhalten bleibt. Dazu gehören auch alle zum PRAP gehörigen Variablen!!

Zu Ihrer eigenen Sicherheit und zur Information Dritter hat sich sehr bewährt, die PRAP-Funktion zu beschreiben. Stellen Sie den Cursor auf ein freies Feld außerhalb der PRAP-Symbole und klicken auf die rechte Maustaste; danach Klick auf "Descriptions". Nun können Sie Ihren Beschreibungstext eintragen. Als Beispiel sehen Sie den Text des PRAP-Autors:

Zurück zu
PRAP zur Lampensteuerung (Teil 2)
Weiter mit PRAP zur Lampensteuerung (Teil 4)
Zurück zum Anfang


PRAP zur Lampensteuerung (Teil 4)

PRAP-Prüfungen
Im Kapitel über Prüfungen des PRAP sind alle notwendigen Erläuterungen enthalten. Hier soll gezeigt werden, wie am Beispiel die Prüfungspraxis aussieht.
Der PRAP im letzten Abschnitt (Teil 3) liegt fertig erstellt vor, den Cursor an irgend eine Stelle des freien Blatt-Teils positionieren und rechte Maustaste drücken führt zu einem Menu, in dem es die Zeile "Check Graphic" gibt. Gehen Sie nun in den unteren Teil des SPaS-Manager, dem sog Aktionsfeld, auch Meldungsfeld. Dort könnte der letzte Eintrag sinngemäß sagen, daß der rechte Mausklick zu nichts geführt hat. Drücken Sie in diesem Feld die rechte Maustaste, dann haben Sie die Möglichkeit, die Action List zu leeren. Falls Sie die Zeilen verfolgt und die Empfehlungen durchgeführt haben, ist das Menü verschwunden.
Öffnen Sie das Menü eventuell wiederholt und klicken auf "Check Graphic", dann erhalten Sie unter anderen eine Mitteilung, die besagt, daß keine Initialoperation vorhanden ist. Der PRAP zur Lampensteuerung hat wenig Auswahl, es gibt nur zwei Operationen, und man könnte z.B. "Keine Beleuchtung" wählen. Führen Sie den Cursor in dieses Operations-Symbol, drücken die rechte Maustaste und klicken auf "Set Launch Operation". Der nun ergänzte doppelte Rahmen kennzeichnet die Initialoperation.

Eine andere Mitteilung sagt, daß die Variablen geprüft wurden. Zum Test nehmen Sie bitte eine der Kanten heraus und lassen wieder "Check Graphic" arbeiten, dann erkennen Sie sehr schnell, wo der Fehler liegt und vor allem wie er angezeigt wird. Übrigens können Sie durch Klick auf "Reload Graph" immer wieder den alten Zustand der Graphik herstellen.

Zurück zu PRAP Lampensteuerung (Teil 3)
Weiter mit PRAP Lampensteuerung (Teil 5)
Zurück zum Anfang


PRAP zur Lampensteuerung (Teil 5)

Eigenschaften des PRAP Lampensteuerung

Wenn Sie sich diesen Prap betrachten, werden Sie sicher überrascht sein, daß er tatsächlich funktionell dasselbe beschreibt wie im vorangegangenen Abschnitt. Im Kapitel Prüfungen und Optimieren eines PRAP ist bereits im Punkt 5. auf die hier gezeigte Möglichkeit des Umzeichnens hingewiesen worden. Nur liegt hier ein sehr kleines Beispiel vor, so daß der Effekt auch gering ist.
Aber es geht um das Prinzip: Es handelt sich hier um eine sogenannte reine kombinatorische Struktur, weil die beiden Operationen keine gemeinsame Folgeoperation haben, die nicht zur kombinatorischen Struktur gehört.

Der PRAP ist ein Typen-Prozeßablaufplan, weil er keine direkt adressierten Variablen enthält.
Zurück zu PRAP Lampensteuerung (Teil 4)
Zurück zum Anfang


Markieren Sie die betreffende Operationsvariable und mit rechtem Mausklick wird Ihnen das Entfernen angeboten.


Tragen Sie dieselben Bezeichner (Zeichenketten) ein, wie sie beim Anlegen des Projektes verwendet wurden.


Es sind alle druckbaren Zeichen erlaubt. Die Anzahl ist mit 64 begrenzt.
Ein Zeilenumbruch mit "Enter" ist nicht zugelassen. Zu lange Zeilen werden automatisch bei einem Leerzeichen umgebrochen. Wollen Sie eine Text-Trennung vorher erreichen, dann mit "- " oder auch mehr Leerzeichen.
Eine Text-Trennung kürzerer Texte ist mit "\n " zu notieren; falls ein "-" erwünscht ist, muß dies vorher stehen. Das Leerzeichen nach \n nicht vergessen!


Als Zeichen sind nur "A ... Z", "a ... z", "0 ... 9" und "_" erlaubt. Die Anzahl ist mit 64 begrenzt und kann sprachabhängig kleiner sein. Eine Wort-Trennung (Leerzeichen) ist nicht zugelassen. Das erste Zeichen muß ein Buchstabe oder höchstens ein Unterstrich sein.
Da "NAME" ein Identifikator ist, sind gleiche NAME auch gleich geschrieben, also mit gleicher Zeichenfolge. Daher sind Groß- und Kleinbuchstaben zu beachten!


Informations-Bereich zum gefilterten Datenzugriff und zu Daten der Variablen
Bei geöffneter Access Table können Sie über jede Variable folgende Daten erhalten:

 1.	Zugehörigkeit zum Member.

 2.	USAGE zu jedem Member

 3.	Formula falls eine eingebettete Funktion mit der Variablen verbunden ist.

 4.	Falls diese Variable als Aktualvariable (z.B. PROGRAM, RESOURCE) dient, in welchen Instanzen sie und wie genutzt wird.

Sie gelangen zu diesen Informationen, indem Sie den Cursor auf die betreffende Variable in der Tabelle führen und die rechte Maustaste klicken. Es öffnet sich:

Order by Name bzw. Order by Data Type beziehen sich auf die Anordnung in der Tabelle. Ein Klick auf "Search Member of Variable Declaration" liefert Ihnen im Informationsfeld die Datenzu 1. bis 3.
Ein Klick auf "Search instances using the variable" zeigt Ihnen im Informationsfeld korrekte Angaben zu Punkt 4 des/der betreffenden Member/s.
HINWEIS:
Die Größe des Feldes ist sehr unterschiedlich, je nach der Variablentabelle darüber und dem zugehörigen Variablen-Dialogfeld. Sie können die Trennlinie nach oben schieben.


Die Tabelle der ungefilterten oder gefilterten Variablen mit Daten, die in die Datenbank eingetragen sind.
Umordnen in alphabetischer Reihenfolge oder nach Datentyp nach Klick auf RECHTE MAUSTASTE. Ebenso Informationen zur markierten Variablen.


SPaS Manager

Das Bild zeigt das Formblatt unmittelbar nach dem Start von SPaS. Direkthilfe erhalten Sie durch Setzen des Cursors auf das betreffende Feld und Betätigen von "F1" .
In der oberen Reihe stehen, beginnend mit File,, danach Edit usw. PopUp Menüs zur Verfügung, die entsprechende Aktionen bewirken.
In der zweiten Reihe bieten Buttons verschiedene Aktionen, wobei Sie deren Bedeutung als Hinweise in der unteren Leiste lesen können. Auch Direkthilfe wird dort angeboten!.
Unter den Buttons befinden sich die Arbeitsfelder, das linke zum Aufbau und Bearbeiten des Projektbaumes. Es dient als Arbeitsfeld für den Projekt-Editor. Das rechte ist in vier Nutzungsbereiche eingeteilt:

•	CODE:click here
Nach dem Compilieren mit dem Precompiler können Sie das Ergebnis, das sog. Compilat ansehen.

•	CHARTS:click here
Jeder PRAP wird auf diesem Panel entworfen oder korrigiert. Für diesen Zweck gibt es den PRAP-Editor.

•	COMPILER NOTES:
Sowohl die Datenbank-Maschine als auch der Precompiler schreiben hier ihre Meldungen, die Sie vom Erfolg oder Mißerfolg einer Aktion unterrichten. Mit der rechten Maustaste erhalten Sie ein paar Handlungsmöglichkeiten.

•	DATABASE ADMINISTRATION:
Die Zugriffe auf die Datenbank erscheinen bei verschiedenen Aktionen, um notwendige Eintragungen bezüglich der verwendeten Variablen vorzunehmen oder Änderungen durchzuführen.
Falls Sie in der oberen Leiste "VIEW" anklicken, erhalten Sie mehrere Angebote, sich Auszüge aus der Datenbank anzusehen. Nutzen Sie auch die Hilfeangebote.

Die beiden unteren Felder enthalten ein Informationsfeld, in dem die "Titel" der COMPILER NOTES eingetragen sind. Danach sehen Sie in der letzten Zeile vier Abteilungen. Von links nach rechts enthalten sie

•	The Database is connected or disconnected - Datenbank geöffnet oder nicht

•	The Hints of the buttons etc. - Bedeutung der Buttons usw.

•	The Database Name - Bezeichnung der Datenbank

•	The Login Name / The Database Login


Nach dem Compilieren können Sie das Ergebnis, das sog. Compilat hier ansehen.
Sie können Members wie Ressourcen, PRAP-Typen und Programme compilieren. Dazu Member markieren und Klick rechte Maustaste öffnet das Menü.

Dann wie folgt vorgehen:

1. Click Build or Compile
Bemerkungen zum Übersetzungslauf im unteren Anzeigefeld bzw. bei "Compiler Notes".

2. Click "Show Compilat" zeigt bei CODE den Quellcode.
3. If required: Click Save to File
Es werden alle erforderlichen Files erzeugt, die zum Generieren des Maschinen-Codes nötig sind. Außerdem wird immer ein File *.onl bereitgestellt, wodurch die Darstellung des "lebendigen PRAP" (online debugging) möglich ist.

Das Compilat ist nicht veränderbar, editierbar. Jede Änderung wird ausschließlich in den PRAP bzw. in der Datenbank, im Memberdialog oder im Projektbaum durchgeführt.


Neu entwerfen oder bearbeiten eines PRAP:

1. PRAP-Member markieren und
2. rechte Maustaste öffnet das Projekt-Menü:

Klick "Edit Flow Chart (PRAP-FB)" öffnet das Panel "CHARTS" genau für das markierte Member, mit oder ohne PRAP.
Für alle Entwurfs- und Veränderungszwecke gibt es den PRAP-Editor, den Sie erreichen, sobald Sie durch Betätigen der rechten Maustaste ein Menü öffnen, auf dem Sie "Graphic Editor" anklicken müssen.

Klick "Close Flow Chart" schließt den PRAP-Editor. Ob Sie den PRAP speichern wollen oder nicht, werden Sie gefragt, und entscheiden Sie richtig!
So erfahren Sie schnell, was zu jedem Element eingetragen ist:

•	Jedes PRAP-Element enthält Daten, z.B. Variablen-Name, Datentyp usw. Führen Sie den Cursor auf ein Element, werden solche Daten nach kurzer Verzögerung für einige Sekunden lang angezeigt.
Die Anzeige läßt sich verhindern/einschalten, indem die Ressource markiert wird und z.B. mit Klick auf [image] und anschließend auf "Debugger Options" der Text "show Hints" deaktiviert/aktiviert (kein Häkchen/mit Häkchen) wird.

•	OPERATIONEN enthalten eine oder mehrere Operationsvariable. Jede markierte wird einschließlich Nummer dargestellt. Geben Sie eine Nummer ein und danach ENTER, werden die Daten der Variablen und eventuell zugehörige Funktionen sichtbar.

•	PROZEßVARIABLE enthalten mindestens eine Flagvariable, deren Daten und eventuell zugehörige Funktionen angezeigt werden.


COMPILER NOTES
Sowohl die Datenbank-Maschine als auch der Precompiler und das Check-Programm für PRAP schreiben hier ihre Meldungen, die Sie vom Erfolg oder Mißerfolg einer Aktion unterrichten. Mit der rechten Maustaste erhalten Sie ein paar Handlungsmöglichkeiten.


DATA BASE ADMINISTRATION
Die Zugriffe auf die Datenbank erscheinen bei verschiedenen Aktionen, um notwendige Eintragungen bezüglich der verwendeten Variablen vorzunehmen oder Änderungen durchzuführen.
Falls Sie in der oberen Leiste "VIEW" anklicken, erhalten Sie mehrere Angebote, sich Auszüge aus der Datenbank anzusehen. Nutzen Sie bitte dort die Hilfe-Texte.


Alle Mitteilungen der Editoren, der Datenbank und des Precompilers
Beachten Sie vor allem Warnungen und Fehlermeldungen, die eine Fertigstellung eines Berechnungsschrittes nicht erlauben.
Zum Beispiel: Solange der PRAP-Editor noch Fehler meldet, startet der Precompiler ebenfalls mit Fehleranzeige.
Klick auf rechte Maustaste ermöglicht Löschen aller Mitteilungen oder eine Erläuterung zur Fehlermeldung zu erhalten.


Database Options

Das Formular "Database Options" bietet grundlegende Funktionen bezüglich des Zugriffs auf die Datenbank.

Im oberen Feld "Access Kind" gibt es fünf Wahlmöglichkeiten, es ist die Markierung im linken oberen Feld voreingestellt für Neuanlegen (Creates a new data base) einer Datenbank (*.gdb) in einem von Ihnen bereitgestellten Ordner/Verzeichnis.
Wenn Sie eine vorhandene Datenbank Registrieren wollen (Registers data base), ist die Markierung dort anzubringen.
Eine Datenbank in stark komprimierter Form als "Back Up"(Generates a back up ..) speichern bedeutet, rechts oben zu markieren.
Ein Back Up wieder verwenden wollen (Restores a back up...) , muß durch Markierung links unten erfolgen.
Execute SQL-Script kann eine Datenbank auf den neuesten Stand bringen, wenn es Veränderungen durch Weiterentwicklungen gibt. Dies wird Ihnen im Zusammenhang mit dem download einer neuen Version bekannt gegeben. Derzeit noch nicht funktionsfähig!!

Note
Auf der START-Seite ist geschrieben,
daß Sie unbedingt mit Klick auf die Pfeile [image] und [image] operieren sollten, um in der richtigen Reihenfolge die Eintragungen vornehmen zu können. Ein Klick auf die Blätter öffnet sie zwar, aber sie sind nicht aktiviert.
Nur in einem blau unterlegten Blatt-Titel sind auch Eintragungen oder Änderungen möglich.

•	Beim Anlegen eines neuen Projektes
müssen Sie der Reihe nach einige Formblätter ausfüllen. Der Datenbank-Name und der Projekt-Name sind später NICHT ÄNDERBAR. (derzeit noch nicht)
Beachten Sie, daß nach dem Download die Datenbank noch nicht registriert ist. Hinweise unter: Server properties

 1.	"Login" ist für ein neues Projekt nicht unbedingt neu zu wählen. Vorgegeben sind STANDARD mit spas als Password.
Mit einem neuen Login sollte auch ein zugehöriges Passwort einzutragen sein.
Falls Sie ein vorhandenes Login verwenden wollen, dann klicken Sie sich vorwärt bis zum Blatt "Server Properties" und erhalten mit Klick auf [image] alle Login-Bezeichner angezeigt.

Note
Zwischendurch den Request mit OK bestätigen. Falls dies nicht funktioniert, unbedingt Ihren Datenbank-Administrator konsultieren wegen offenbar fehlerbehafteter Eintragungen.

Durch Markieren, Kopieren und "zurück-klicken" bis "Login" ist durch Einfügen in "Database Login" die Übernahme erledigt. Allerdings müssen Sie das Passwort dafür wissen!

 2.	"New Login" ist nur wichtig, wenn Sie in "Login" einen neuen Text eingetragen haben. Dann sollten Sie sich mit Vor- und Zunamen eintragen. "First Name" und "Last Name" sind Ihrer freien Wahl überlassen und nicht signifikant für den Zugang zum Projekt, also zur Datenbank.
Aber ein neues Login, d.h. ein neuer USER muß registriert werden. Also, wie im Bild zu sehen, durch Klick auf das Markierungsquadrat einen "Haken" erzeugen und danach Klick auf "Register User".

 3.	"Location"
Mit Klick auf [image] suchen Sie das Verzeichnis, in das Ihr neues Projekt abgelegt werden soll.
"Database Name" ist durch Sie bei einem neuen Projekt einzutragen. Keine Umlaute oder ß verwenden!
"Projekt Name" ist die Projektbezeichnung. Wählen Sie hier einen technologisch relevanten Bezeichner.

 4.	"Server Properties"
bietet Ihnen die Wahl des lokalen Servers oder über das Netz erreichbare, abgesetzte (remote) zu nutzen.

 5.	 button click sorgt für das Anlegen einer Datenbank. Die entsprechenden Meldungen können Sie im Sheet "Compiler Notes" oder unterhalb der Arbeitsfläche in der "Message Box" nachlesen. Anschließend Öffnen des Projektes mit Klick auf [image]!

•	Das Registrieren eines vorhandenen Projektes
Bezeichnet wird ein Projekt als "vorhanden", wenn sich eine Projektdatei (<name>.gdb) in einem Ordner befindet, die Sie -öffnen wollen.

 1.	"Login"
Hier müssen Sie wissen, welche Worte bzw. Zeichenketten einzugeben sind.

 2.	"New Login" hat natürlicher Weise keinen Sinn beim Öffnen einer vorhandenen Datei.

 3.	"Location"
Öffnen Sie nach Klick auf [image] das Verzeichnis der Projektdatenbank. Danach [image] anklicken und die im Verzeichnis zutreffende Datei *.gdb / *.frb markieren.
Geben Sie einen "Project Name" ein. Sie dürfen mit jeder neuen Registrierung einen anderen Projektnamen eintragen.

 4.	"Server Properties"
Stellen Sie hier den zutreffenden Server ein.

 5.	 button click sorgt für das Registrieren der Datenbank auf der Festplatte.
Anschließend können Sie das Projekt nach Klick auf [image] öffnen.

•	Restore a packed data base - Aus einer gepackten Projektdatei *.gbk wieder eine verwendbare *.gdb herstellen.

 1.	"Server Properties"
Stellen Sie hier den zutreffenden Server ein.

 2.	"Services"
Nach Klick auf [image] öffnen. Tragen Sie die vollständigen Verzeichnisdaten und File-Name ein! Danach mit Klick auf [image] den Ablauf starten.
Anschließend können Sie das Projekt nach Klick auf [image] öffnen.

•	Generate a back up - Aus einer Projektdatei *.gdb eine gepackte *.gbk herstellen.

 1.	"Server Properties"
Stellen Sie hier den zutreffenden Server ein.

 2.	"Services"
Tragen Sie die vollständigen Daten des directory und file name ein! Danach mit Klick auf [image] den Ablauf starten.

Tip
Falls gewünscht, ändern Sie den Namen der gbk-Datei mit Hilfe des Explorers.

Im folgenden sind noch die Hinweis-Texte zu den Editierfeldern aufgelistet:

•	Login

•	New Login

•	Location

•	Server Properties

•	Services

Falls Sie das Einführungs-Beispiel suchen, dann hier klicken.


•	Directory
Falls für das neue Projekt noch kein Verzeichnis (Folder) vorhanden ist, legen Sie es bitte z.B. mit dem Explorer an.
Das Verzeichnis darf auch auf einem Server liegen, es beginnt dann mit \\[ServerName] usw.
Wenn ein Verzeichnis für das neue Projekt angelegt ist:
Suchen Sie nach Klick auf das Symbol [image] das Verzeichnis, in dem die Datenbank Ihres neuen Projektes gespeichert werden soll.

•	Database Name
Der hier einzutragende Name für ein neues Projekt erhält in Ihrem Directory die Erweiterung ".gdb" (Groton Data Base). In dieser Datei sind sämtliche Projektdaten enthalten! Überlegen Sie sich diesen Namen gut, da er nicht änderbar ist. Verwenden Sie keine Umlaute oder 'ß'.
Das Registrieren eines vorhandenen Projektes beginnt mit Klick auf

•	Project Name  = Project Alias
Der Eintrag steht im Projektbaum hinter dem Symbol [image].
Diese Bezeichnung ist später nicht mehr änderbar! (noch nicht)  Deshalb wählen Sie einen technologisch sinnvollen Bezeichner, nicht etwa "Projekt 1", sondern z.B. "Futtermischanlage" oder "Ersatzteil-Lager".

Alles zu Data Base Options


Der Bezeichner Database Login ist Ihre persönliche Festlegung beim Anlegen eines neuen Projektes. Sie können auch ein vorhandenes Login verwenden. Dazu Öffnen Sie das Blatt "Server Properties". Ein KLick auf [image] zeigt Ihnen alle bekannten Login-Bezeichner. Markieren und Kopieren nach "Database Login" (im Blatt "Login") erledigt die Übernahme. Natürlich müssen Sie sich das "Password" vom Administrator der Datenbank geben lassen! Für Login "STANDARD" gilt "spas" als Password, für "Test" gilt "test".
Registrieren eines vorhandenen Projektes setzt die Kenntnis von Login und Passwort voraus.

Alles zu Data Base Options


Falls Sie ein neues Login verwenden, müssen Sie das Feld "New Login" nutzen. Anderenfalls übergehen Sie einfach dieses Blatt. Im Zweifelsfall gehen Sie vor zu "Server properties", um zu erfahren, ob das login neu ist!
Legen Sie aber ein Projekt mit neuem Login an, dann empfiehlt es sich, den eigenen Namen (Vorname, Familienname) anzugeben, weil dann der Datenbank-Administrator erkennen kann, wer für das Login verantwortlich ist. Das Passwort vereinbaren Sie am besten mit ihm.
Das Erscheinen des "ADMINISTRATOR-REQUEST" beantworten Sie mit Klick auf OK. Im Fehlerfall müssen Sie den Datenbank-Administrator um Hilfe bitten.

Alles zu Data Base Options


Markieren Sie "Remote Server", müssen Sie noch den Protokolltyp wählen und den Servernamen. "Local Server" ist zugleich Schlüsselwort und Aussage, daß der lokale Server eingeschaltet sein soll. Sollte nichts Passendes bei "Server Name or IP" eingetragen sein, dann markieren Sie bei "Register Server" (Anmeldung beim Betriebssystem) und tragen dann das Schlüsselwort/Kennwort ein.
Ein KLick auf [image] zeigt Ihnen alle bekannten Login-Bezeichner.

Alles zu Data Base Options


Sie können von der Datenbank-Datei (*.gdb) eine "Rücklagedatei" (*.gbk) anfertigen lassen, ein back up, wodurch Ihnen eine gewisse Sicherheit gegeben wird. Diese Datei erhält denselben Namen wie die *.gdb.
Umgekehrt können Sie aus einem back up wieder eine ordentliche Projektdatei *.gdb herstellen.
Der Start zur Ausführung der markierten Aktion erfolgt mit Klick auf den "Restore"- bzw. "BackUp"-Button.
Das Feld "Information" enthält Eintragungen des Ablaufes der gewählten Aktion durch Interbase.
Der Abschluß mit Klick auf "OK" schließt das Formblatt.

Alles zu Data Base Options


Zugelassen sind maximal 8 Zeichen aus A .. Z und 0 .. 9, das erste muß ein Buchstabe sein.


Zugelassen sind mehr als 8 Zeichen aus A .. Z, a .. z und 0 ..9.
Die ersten acht Zeichen sind einschließlich der Groß- und Kleinschreibung signifikant.


Wahl der Sprache, Erläuterungen zur Projektgestaltung

Jede Ressource kann für eine Steuerungseinheit verschiedener Hersteller geplant werden. Wählen Sie daher aus dem Angebot der Sprachen die zutreffende aus.
Beachten Sie dabei einige Hinweise zu den wählbaren Sprachen

Explanations
Das linke Feld dient der Eintragung von Bemerkungen und Hinweisen zum Aufbau des Teilprojektes der betreffenden Ressource.

Debugger Options
Es sind eine oder zwei Markierungen (HINTs und WARNINGs)anzubringen oder zu entfernen. Insbesondere dann, wenn Sie eine große Datenbankprüfung veranlassen (Klick auf [image] bei markierter RESOURCE)und alle Meldungen auf dem Sheet "Compiler Notes" lesen möchten oder nicht.
"Case Sensitive Variables" bedeutet ohne Markierung, daß NICHT zwischen Groß- und Kleinschreibung unterschieden wird. Für die Sprachen C und C++ können Sie nicht wählen, die Markierung erfolgt automatisch.
Shared Repository:
Das ist ein Verzeichnis, in dem Sie sowohl das Compilat ablegen können als auch andere Export-Produkte wie Datenbank oder PRAP. Eventuell müssen Sie ein neues anlegen.

Note
Beachten Sie unbedingt, dieses Verzeichnis als Unterverzeichnis der aktuellen Datenbank anzulegen.
Mit Klick auf [image] finden Sie das Verzeichnis der Datenbank (File|Open ..).


Mehrfach-Verwendung von Prozeß-Variablen

Es gibt zwei Arten der Mehrfachverwendung bzw. Wiederverwendung

 1.	Prozeß-Variablewerden sehr häufig in einem PRAP merfach verwendet. Dort, wo ein VARIABLE NAME (FLAG)- kurz Name - mit STATEMENT, z.B. "Soll_T" mit "Solltemperatur erreicht?", erstmalig als P-Variable in einer Situation oder einem Übergangs-Prozeßzustand eingeführt wird, erhält der Name in der Datenbank auch einen Index, der für Sie als Nutzer keine Rolle spielt. Wollen Sie diese Variable in einer "neuen" Condition wieder verwenden, gleichgültig an welcher Stelle im PRAP, dann suchen Sie sich aus dem "Vorrat" bereits vergebener Namen einen aus. Zunächst erscheint nach dem Klick auf die rechte Maustaste:

Mit Klick auf "Data Access" erhalten Sie zur Entscheidung, ob eine neue Variable angelegt werden soll oder ob Sie eine vorhandene wieder verwenden wollen :
Ein Klick auf "Retry" gibt Ihnen alle bisher im PRAP existierenden zur Auswahl:
Ein neuer Index mit dem selben Namen wird in der Datenbank eingetragen. Sie können am unteren Bildrand nach "Name:" am Ende z.B. (7-1) lesen. Die "7" ist der neue Index, die "1" ist die laufende Nummer des "Statement", der Variablen-Benennung. So bedeutet (3-3) der dritte Bezeichner, zugleich mit Index 3, ist an dieser Stelle im PRAP erstmalig erschienen. Diese Nummer des Statements finden Sie im graphischen Symbol der P-Variablen eingerahmt wieder.

 2.	Die Wiederverwendung einer Prozeßvariablen aus einem anderen PRAP als dem in Bearbeitung befindlichen entspricht einer Teilprozeß-Kopplung, da jede Prozeßvariable dort zugeordnet ist oder sein sollte, wo durch die Steuerungseingriffe (Operationsvariablen) deren Wert verändert wird. Der in Bearbeitung befindliche PRAP "benötigt" aber diese Variable zur Formulierung oder Gestaltung eines Übergangs-Prozeßzustandes.
Es handelt sich zunächst um eine NEUE P-Variable, also "Yes" anklicken. Danach Klicken Sie auf [image] und nutzen den Hilfetext zu "NAME". Entweder mit [image] oder Klick auf den Help-Button.


Project Member PRAP-Type

•	Allgemeines
Es sind im Formblatt nur zwei Angaben einzutragen, die IDENTIFICATION, also ein Kurzbezeichner für den Code, den der Precompiler als Function_Block aufbaut und einen ausführlicheren Text, DESCRIPTION.

•	Identification
Prägen Sie hierfür eine wenige Zeichen erforderliche Bezeichnung.

•	Description
Schreiben Sie hier einen ausführlicheren Text, aber keine lange Beschreibung sondern einen technologisch relevanten Bezeichner.

•	PARAMETER
Die Variablen werden nur angezeigt. Zutreffend für den Typen-PRAP sind z.B. die FORMAL-Parameter. Einführen und bearbeiten können Sie diese i.a. in Zusammenhang mit dem PRAP, den Sie importieren, laden oder neu aufbauen müssen. Siehe PRAP-Editor.

•	Sprachabhängig sind zusätzliche Angaben nötig.

Es sind weitere Details beschrieben:
IDENTIFICATION
DESCRIPTION
PARAMETER und Hinweise


Prägen Sie hierfür eine wenige Zeichen erforderliche Bezeichnung.


Schreiben Sie hier einen ausführlicheren Text, aber keine lange Beschreibung sondern einen technologisch relevanten Bezeichner.


Hier werden alle zum PRAP-TYP zugeordneten Variablen und Konstanten angezeigt. Ein Klick mit der rechten Maustaste zeigt die Handlungsmöglichkeiten für die Tabelle.
Bearbeiten können Sie P- und O-Variable nur nach Öffnen des PRAP. Andere Variable, die in Formeln verwendet werden und "FirstRun", können Sie bearbeiten, ohne den PRAP zu öffnen.

Warning
Variable, die Sie mehrfach - in verschiedenen Funktionen - nutzen, erscheinen auch ebenso oft in der Parametertabelle, falls Sie bei jeder Anwendung dieselbe Variable erneut einführen.
WICHTIG: Tragen Sie niemals eine Variable erneut in ein Variablenfeld ein, wenn diese schon existiert. Weisen Sie wiederholt benutzte Variable aus der Variablentabelle mit Klick auf [image] zu!


STEP 7 (S7-300 und S7-400) wird mit Funktionsbausteinen erzeugt. Geben Sie hier nur die FB-Nummer ein!


Project Member PRAP-Instance

•	Allgemeines
Instanz bedeutet das Bestimmen einer Identifikation und das konkrete Zuweisen aller im zugehörigen Typen deklarierten Variablen durch direkte Adressen (ADDRESS)und zugehörige Namen (NAME).
Ist der zugehörige Typ ein PRAP, dann heißt die Instanz TEILPROZESS ( TP ).
Wichtiger Unterschied:
Instanzen müssen aufgerufen werden
A)....in einem PROGRAM (der Normalfall!)
B)....in einem PRAP bzw. einer FUNCTION.

•	IDENTIFICATION
A)
Teilen Sie der Instanz ein technologisch sinnvolles Kürzel zu, das natürlich innerhalb der Ressource nicht wiederholt werden darf.
Dringende Empfehlung:
Verwenden Sie die Bezeichnung aus dem Prozeßzerlegungsgraphen bzw. aus der Funktionsblock-Darstellung.
B)
Dieses Feld ist gesperrt, weil der NAME mit dem Aufruf im Formula-Feld vergeben wird.

•	DESCRIPTION
A)
Tragen Sie hier eine technologisch zutreffende Bezeichnung ein, die auch mehrere Worte haben darf, um deutlich zu beschreiben, was die Instanz im Projekt steuern soll.
B)
Dieses Feld ist gesperrt, wenn der NAME mit dem Aufruf vergeben wird. Der Text wir auf dem Member übernommen.

•	RELATIONS: TYPES
Die Beziehung einer Instanz zu einem PRAP-TYP ist zwingend. Aus dem Angebot ist der zugehörige Typ auszuwählen.
Im Fall B) gesperrt, weil mit der IDENTIFICATION auch der Typ festliegt.

•	RELATIONS: TASKS
Bei IEC 1131-3 vorgesehen: Neben der Task zur Programminstanz kann auch für eine FB-Instanz eine extra Aufruffolge erforderlich sein Dann ist eine bei der Ressource deklarierte Task auszuwählen.
Im Fall B) gesperrt.

•	RELATIONS: PARAMETER
A)
Die Tabelle enthält alle zum Typ gehörigen "FORMAL"-Parameter, denen Sie "ACTUAL"-Parameter zuweisen müssen, die zur Instanz gehören. Jede Instanz ist einem "PROGRAM" untergeordnet, dort sind die Aktualparameter eingetragen oder in einem DDT(Derivated DataType) oder auch in der Ressource. Die Zuweisung fehlt bei allen mit "none" bezeichneten Aktualparametern.
Klicken Sie auf [image] und erhalten alle im PROGRAM deklarierten Variablen und der Aktual-Parameter mit ihren direkten Adressen angezeigt.
B)WICHTIG:
Im Aufruf eines TP aus einem PRAP heraus sind alle Zuweisungen erfolgt und deshalb die Bearbeitung hier gesperrt mit Ausnahme der Variablen FirstRun. Diese müssen Sie aus dem aufrufenden Member zuweisen. Da der PRAP eventuell schon eine FirstRun_Variable hat, legen Sie eine neue FirstRun_1, FirstRun_2 usw. für jeden solchen Aufruf an. Zur Initialisierung siehe speziell click here.

Note
Es fehlen alle lokal deklarierten Variablen(Constant, Local Static, Local Temporary), da diese automatisch Speicherplätze im RAM zugewiesen erhalten.


Teilen Sie der Instanz ein technologisch sinnvolles Kürzel zu, das natürlich innerhalb der Ressource nicht wiederholt werden darf.
Empfehlung:
Verwenden Sie die Bezeichnung aus dem Prozeßzerlegungsgraphen bzw. der Funktionsblock-Darstellung.


Tragen Sie hier eine technologisch zutreffende Bezeichnung ein, die auch mehrere Worte haben darf, um deutlich zu beschreiben, was die Instanz im Projekt steuern soll.


Die Beziehung einer Instanz zu einem PRAP-TYP ist zwingend. Aus dem Angebot ist der zugehörige Typ auszuwählen.
Bei IEC 61131-3 vorgesehen: Neben der Task zur Programminstanz kann auch für eine FB-Instanz eine extra Aufrufordnung erforderlich sein. Dann ist eine bei der Ressource deklarierte Task auszuwählen.


Die Tabelle enthält alle zum Typ gehörigen "FORMAL"-Parameter, denen Sie "ACTUAL"-Parameter zuweisen müssen, die zur Instanz gehören. Die Zuweisung fehlt bei allen mit "none" bezeichneten Aktualparametern.
Klicken Sie auf [image] und erhalten alle in PROGRAM deklarierten Variablen und der Aktual-Parameter mit ihren direkten Adressen angezeigt:
Die Anzeige erfolgt in der Form PROGRAM.Variable.

"ACTUAL"-Parameter sind häufig auch in der Ressource oder in einem DDT (abgeleiteter Datentyp)enthalten. Dann müssen Sie am besten diese Member mit der Filterfunktion mit ihren Variablen auswählen und dann die betreffende Variable suchen.
Es fehlen alle lokal deklarierten (Local Static, Local Temporary), da diese automatisch Variable aus dem RAM zugewiesen erhalten.


Aktual-Parameter mit falscher Daten-Quelle oder er wird nicht gefunden
Dieser Tatbestand ergibt sich,

•	A wenn Sie aus Versehen eine Variable eines elementaren oder auch abgeleiteten Datentypes in der RESOURCE oder einem PROGRAM gelöscht haben.

•	B wenn Sie z.B. einen Teilprozeß, eine FB-Instanz, in ein anderes Programm verschieben. Dort ist dann diese Variable nicht deklariert, die in dem ursprünglichen PROGRAM vorhanden war.

Gehen Sie wie folgt vor:

 1.	FALL B: Entfernen Sie aus der betreffenden Instanz die "falsche" Variable.
(Variable markieren, rechte Maustaste betätigen und "disconnect" anklicken)

 2.	FALL B: Entfernen Sie aus dem ehemaligen PROGRAM die betreffende Variable.
Sollte diese Variable in weiteren Instanzen des ehemaligen PROGRAM benötigt werden, dann dort ebenfalls entfernen.

 3.	FALL A und B: Fügen Sie diese Variable in der Ressource ein. Alle global, über den Geltungsbereich eines PROGRAM hinaus benötigten Variablen müssen in der Ressource deklariert werden.
Falls Sie eingeführte Koppelvariable in einem selbst entworfenen Datentyp (UDT, abgeleiteter Datentyp) schon vorliegen haben, fügen Sie die betreffende Variable hier ein.

 4.	Ordnen Sie nun allen erforderlichen Instanzen die in der Ressource oder in dem abgeleiteten Datentyp neu eingetragene Variable zu.


Project Member Function

Tip
Verwenden Sie System- und Standard-Funktionen aus dem Vorrat der Sonderfunktionen

Anlegen und Editieren einer Funktion:

•	Vorgehensweise

 1.	Funktion als Member in Ressource mit Klick auf [image] einfügen und im Formblatt IDENTIFICATION und DESCRIPTION ausfüllen.

 2.	Sprachabhängig sind zusätzliche Angaben nötig. Im Fall "Function" müssen Sie eine Nummer eintragen.

 3.	Berechnungen editieren:
Formblatt schließen (OK-Button), Funktion im Projektbaum markieren, RECHTE MAUSTASTE|Edit Function anklicken. Nun allgemeine Berechnungen eintragen. Um Calculate(multiple) bzw. Calculate(single) brauchen Sie sich nicht zu kümmern.
Die IDENTIFICATION ist als Ergebnis-Variable mit dem erforderlichen Datentyp einzutragen und als Output zu deklarieren.
Sie dürfen auch im Rahmen der Berechnung Funktionen aufrufen, aber niemals Flanken-Erkennungen und Teilprozesse (PRAP-Instanzen) wegen der nicht möglichen Speichereigenschaften. Verwenden Sie die Hilfe-Angebote!
Systemfunktionen erhalten selbstverständlich keine Formeln eingetragen, deshalb fehlt auch nach Klick auf rechte Maustaste das Symbol!

•	Allgemeines
Eine Funktion ist in SPaS ein Hilfsmittel, bestimmte Zusammenhänge mit arithmetischen Ausdrücken herstellen zu können, die keinen PRAP benötigen, weil jeder der Audrücke keine sequentielle Struktur hat sondern ein Textformat (strukurierter Text nach IEC 61131-3) ohne Eigenschaften eines Ablauf-/Zustands-Verhaltens wie beim PRAP.
Es stehen die gleichen Möglichkeiten zur Verfügung wie im PRAP mit der Funktion "Calculate (multiple)". Es sind im Formblatt nur zwei Angaben einzutragen, die IDENTIFICATION, also ein Kurzbezeichner für den Code, den der Precompiler als Function aufbaut und einen ausführlicheren Text: DESCRIPTION.

•	IDENTIFICATION
Prägen Sie hierfür eine wenige Zeichen erforderliche Bezeichnung, den Namen. Diesen Namen auch als Variable mit erforderlichem Datentyp und als Output einfügen.
Für Systemfunktionen den im System vorgegebenen Text eintragen!

•	DESCRIPTION
Schreiben Sie hier einen ausführlicheren Text, aber keine lange Beschreibung sondern einen technologisch relevanten Bezeichner.

•	PARAMETER
Die Variablen werden hier angezeigt und die Handlungsmöglichkeiten für die Tabelle erhalten Sie mit rechtem Mausklick.
Beim ersten Einfügen existieren diese noch nicht. Sie können die Variablen schon hier eintragen, auch die Identifikation, müssen anschließend die Funktion selbst im Editor eingeben.
Dazu markieren Sie im Projektbaum das Member, Klick auf rechte Maustaste öffnet das Projektmenue. Dort finden Sie "Edit Function (FC)", anklicken und Sie können Ihre Funktion(en) eingeben. Lassen Sie sich auch dort helfen!!
SYSTEM-FUNKTIONEN müssen häufig die Formalparameter eingetragen erhalten. Schauen Sie also genau in Ihrem CPU-System nach und schreiben alle sorgfältig ab. Oder Sie verwenden eine schon gesammelte Systemfunktion


Tragen Sie hier eine technologisch zutreffende Bezeichnung ein, die auch mehrere Worte haben darf, um deutlich zu beschreiben, was die Funktion allgemein bewirken soll.


Hier werden alle zur Funktion zugeordneten Variablen angezeigt, sofern sie in einer funktionellen Verarbeitung ("Edit Function (FC)") bekannt sind.
Bearbeiten können Sie Variable entweder einzeln nach Klick auf [image] oder nach Öffnen des "Edit Function (FC)".
Beachten Sie die Hinweise zu den wählbaren Sprachen.


STEP 7 (S7-300 und S7-400) wird mit abgezählten Funktionen erzeugt. Geben Sie hier nur die FC-Nummer ein!


Project Member Actual Function, Call Function

 Related Topics

Grundsätzliches:
Der Funktionsaufruf ist ein eigenständiger Vorgang insofern, als er in keinem Prozeß-Zerlegungsgraphen enthalten ist. Nur im Projektbaum ist jede Funktion dokumentiert. Sie ist mit ihren aktuellen Variablen ein Hilfsmittel des Projektanten zur Gestaltung der Prozeß-Steuerung, des Automatisierungs-Programms.
Die Ausführung:

 1.	Markieren Sie das "PROGRAM", in das Sie einen Funktionsaufruf eingliedern wollen.

 2.	KLicken Sie auf

 3.	Sie können keinen neuen Namen eingeben, weil es sich um einen Aufruf der deklarierten Funktion handelt. Daher bei "FUNCTIONS" die zutreffende auswählen.

 4.	Sie sehen rot unterlegt alle Formalparameter, denen Sie Aktualparameter zuweisen können, aber jetzt noch nicht dürfen. Geben Sie aber noch eine DESCRIPTION ein und ZUM SCHLUSS OK klicken.

Damit ist der Funktionsaufruf im PROGRAM angelegt.
Nun folgt mit neuerlichem Öffnen des Memberdialoges die Zuordnung der Formalparameter zu den Aktualparametern:
Sie erhalten Zugriff durch Klick auf eine rot markierte Zeile oder auf [image] und wählen aus dem im Programm oder der Ressource deklarierten Aktualparametern.

Note
Achten Sie auf die Zugehörigkeit der Variablen (Anzeige im Feld "Member"), weil in verschiedenen Members gleiche Namen zugelassen sind. Die Zugehörigkeit muß immer das gleiche PROGRAM bzw. die RESSOURCE sein.


Der Name der aufzurufenden Funktion besteht aus der IDENTIFICATION der deklarierten Funktion in der Ressource. Vorangestellt ist "C_" als call der Funktion, angeschlossen ist ein Zähler, der angibt, wie oft die Funktion gerufen wird. Der Name ist nicht editierbar, wählen Sie die Funktion bei "RELATIONS" aus!


Tragen Sie hier eine technologisch zutreffende Bezeichnung ein, die auch mehrere Worte haben darf, um deutlich zu beschreiben, was die Funktion bewirken soll.


Eine Funktion

•	erhält ihre IDENTIFICATION aus dem "Vorrat" der FUNCTIONS, dieser NAME wird automatisch unverändert übernommen.

•	ist mit keiner Task verbindbar, daher hier keine Editiermöglichkeit.


wird noch ...


Project Member System Function and System Function Block

Tip
Verwenden Sie System- und Standard-Funktionen aus dem Vorrat der Sonderfunktionen

System-Funktionen und Funktionsblocke sind vom Hersteller der Ressource bereitgestellte, nicht änderbare Funktionseinheiten, sog. Systembausteine. Sie werden für spezielle Eigenschaften unbedingt benötigt, oft sind es auch Systembausteine für die Kommunikation.
In die Resource eingefügt werden sie mit Klick auf das Ikon [image].
Im Formblatt IDENTIFICATION click here und DESCRIPTION ausfüllen.Falls Sie eine Siemens-Sprache gewählt haben, müssen Sie noch nach einem Klick auf "SFC/SFB" das Blatt für die Art des Systembausteins ausfüllen.
Danach haben Sie im Feld "PARAMETER" die Formal-Variablen einzutragen, wie Sie diese vom Hersteller z.B. aus einer Bibliothek genannt bekommen. Beginnen Sie damit durch einen Klick auf
.


Project Member Foreign FB, Funktionsblock ohne PRAP

Grundsätzlich sind in SPaS die Funktionsblöcke in Form von Prozeßablaufplänen enthalten. Hier gibt es jedoch die Möglichkeit, erprobte FB-Typen, die in irgendeiner Sprache geschrieben vorhanden sind, in das Projekt einzubeziehen.
Eine Variable "Dummy" wird automatische erzeugt und dient dem Start der FORMULA, also des Berechnungstextes, den Sie unter 4. als Inhalt des FB editieren werden. Vorgehensweise:

 1.	Sie fügen durch Klick auf [image] in den Projektbaum unter der Resource ein.

 2.	Im Formblatt IDENTIFICATION und DESCRIPTION ausfüllen.

 3.	Sprachabhängig sind zusätzliche Angaben nötig. Im Fall "Function Block" müssen Sie eine Nummer eintragen.

 4.	Berechnungen editieren:

Note
Falls Sie eine AWL oder irgendeine andere Spache ihres Funktionsblocks vorliegen haben, müssen Sie diesen Inhalt in die Sprache Structured Text selbst "übersetzen" und eintragen.

Formblatt schließen (OK-Button), Funktion im Projektbaum markieren, RECHTE MAUSTASTE|Edit Function anklicken. Nun Berechnungen, d.h. vorliegendes Programm, in ST eintragen. Um Calculate(multiple) bzw. Calculate(single) brauchen Sie sich nicht zu kümmern.


Instanzbildung, Teilprozeß-Bildung: Zuordnung Formal- zu Aktualparameter

Jede Instanz eines Funktionsblocks entsteht durch Vergabe eines Namens für die Instanz und den Bezug auf den Funktionsblock als Typ. In SPaS sind die Typen Prozeßablaufpläne PRAP und deren Instanzen die Teilprozesse (TP).
Die im Memberdialogfenster angezeigten Formalparameter müssen Sie den entweder

•	im zugehörigen Programm oder

•	in der Ressource oder

•	im passenden, selbst definierten Datentyp

deklarierten Aktualparametern zuordnen.

Tip
Lassen Sie sich beim Suchen helfen. Klicken Sie auf [image] und markieren zunächst, was Sie suchen wollen. Dann geben Sie die ersten Zeichen des Suchbegriffes ein und klicken auf "Search". Sie erhalten alle Zeichenketten mit den Anfangszeichen in der Tabelle aufgelistet.

Da alle Variablen aufgelistet sind, lohnt eventuell die Filterung. Sie können mit "Filter Options" und Wahl bei "Filter Values" die Anzeige mit Klick auf "Filter OFF/ON" verändern.

Note
Achten Sie auf die Zugehörigkeit einer Variablen (Anzeige im Feld "Member"), weil in verschiedenen Members gleiche Namen zugelassen sind. Die Zugehörigkeit muß immer das gleiche PROGRAM bzw. die RESSOURCE sein.

Gehen Sie wie folgt vor:

 1.	Links in der PARAMETER-Tabelle die Formalvariable markieren (event. Hinweis, Variable sei nicht zugeordnet, mit Klick auf OK quittieren)

 2.	Rechts in der Tabelle die Aktualvariable, die zugewiesen werden soll, markieren

 3.	Mit einem Klick auf [image] erscheint in der linken Tabelle die ausgewählte Variable anstelle des "none". Dabei erfolgt die Anzeige mit <Member>.Variable. <Member> kann strukturierter Datentyp oder PROGRAM-Name sein.

 4.	FirstRun-Variable, die besonders eingefügt wurden, bedürfen der Zuweisung von InitialVariablen.

Tip
Sollte das falsch gewesen sein, dann Zeile markieren, rechte Maustaste und "disconnect" anklicken, dann erscheint wieder "none". Danach erneut zuweisen.
Lesen Sie auch unter Falsche Parameter
Wollen Sie mehrere aufeinanderfolgende Zeilen korrigieren, dann diese Zeilen markieren und "disconnect" anklicken.
HINWEIS: Fehlende Aktualparameter ergänzen Sie zuvor im entsprechenden PROGRAM bzw.in der RESSOURCE.


STEP 7 (S7-300 und S7-400) wird mit Funktionsbausteinen erzeugt. Alle Aktualparameter werden in einem Instanz-Datenbaustein übergeben.
Globalvariablen in der Ressource sind in einem Datenbaustein, dessen Nummer einzugeben ist, enthalten. Wenn keine Globalvariablen in der Ressource deklariert sind, sollte keine Nummer eingegeben werden.

Bemerkungen zu Instanz-Datenbausteinen:

 1.	Ein Multi-Instanz-Datenbaustein enthält alle Aktualparameter, deshalb tragen Sie NUR IN "PROGRAM INSTANCE" eine DB-Nr. ein. Alle FB-Instanzen ohne Eintrag bei DB Setting.

 2.	Einzel-Instanz-Datenbausteine enthalten zu jeder FB-Instanz die Aktualparameter. Geben Sie hier nur die DB-Nummer ein!
Trotzdem MUSS die PROGRAM INSTANCE einen DB erhalten!

Note
Einwandfreies Nachladen geänderter Instanzen bei online laufender CPU (Schalterstellung auf "RUN-P") ist nur bei Einzelinstanzen möglich!

Tip
Der Multi-Instanz-DB ist zu bevorzugen. Falls er über 64K Daten enthält, lösen Sie das Problem entweder durch Einzelinstanzen oder fügen ein weiteres PROGRAM ein, in das Sie Aufrufe aus dem "überfüllten" PROGRAM eintragen.


Project Member - Configuration

 Related Topics

•	Allgemeines
Felder, in denen ein Eintrag erfolgen kann sind "IDENTIFICATION" und "DESCRIPTION".
Die Bedeutung einer Konfiguration im Automatisierungsprojekt begründet sich auf die Entscheidung des Projektanten, wie er die Aufteilung der zu automatisierenden Anlage aufgeteilt hat. Globale Variable und solche, die der Kommunikation über Busverbindungen dienen (Access Variable), sind derzeit noch nicht eingebbar.

•	IDENTIFICATION
Wählen Sie einen kurzen aber technologie- bzw. auf die Anlage bezogenen Text als Bezeichner.

•	DESCRIPTION
Hier wird ein längerer Text zur Erläuterung erwartet.


Wählen Sie einen technologie- bzw. auf die Anlage bezogenen Text als Bezeichner.


Globale Variable und solche, die der Kommunikation über Busverbindungen dienen (Access Variable), sind derzeit noch nicht eingebbar.


Project Member - Ressource

 Related Topics

•	Allgemeines
siehe Ressource einfügen, bearbeiten
Die Ressource wird praktisch durch eine Steuereinrichtung (z.B. SPS) bereitgestellt (click here), vorgegeben sind damit die Kapazitäten wie z.B. die Anzahl der zulässigen Programmzeilen oder der Timer usw.
Die globalen Variablen (PARAMETER) dienen der Kommunikation zwischen den Bausteinen, die zur Ressource "gehören". Außerdem können Sie direkt addressierte Variablen deklarieren

•	Access Paths, Kommunikationswege zwischen Ressourcen und/oder Konfigurationen sind noch nicht in SPaS vorgesehen!

•	IDENTIFICATION
Die Kurz-Bezeichnung, die für die Station bzw. für die Steuereinrichtung wichtig ist, nicht den Hersteller und ähnliches, sondern z.B. St_Einr_1, eintragen.

•	PROCESSOR
Tragen Sie hier die Bezeichnung der CPU ein, z.B. für ein Siemens-Produkt CPU 315-2DP oder CPU 221 (siehe "Sprachen in SPaS")

•	DESCRIPTION
Die herstellerbezogene Bezeichnung , aus der die Kapazitäten, die Leistungsfähigkeit der CPU bzw. der Steuereinheit hervorgehen, eintragen. Dabei kann noch ein technologischer Bezug stehen wie z.B. "Reinigungs-Abteilung".

•	PARAMETER - Globale Variable
Hier finden Sie alle bereits eingegebenen Variablen und der RESOURCE zugeordnete PROGRAM-Instanzen. Sie können durch rechten Mausklick die Handlungsmöglichkeiten für die Tabelle ausnutzen zum Suchen, umordnen u.a.
Ein Klick auf [image] öffnet das Eingabefeld für Globale Variable.
Globale Variable sind innerhalb der Ressource für die Instanzen zu deklarieren. Diese sind bei der Instanziierung den Formal-Variablen der Typen-PRAP zuzuordnen.
Wählen Sie zur Darstellung der dieser Ressource zugeordneten Variablen in 'Filter Options' "Member" und suchen Sie in 'Filter Values' die Ressource aus. Danach Klick auf "Filter Off".
Fügen Sie mit [image] eine neue Variable hinzu. Nach dem Ausfüllen der Eigenschaften jeder Variablen müssen Sie auf [image] klicken, um die Speicherung dieser Variablen, zugeordnet zur Ressource, in der Datenbank zu veranlassen. Ein Klick auf [image] ergibt zwar den Eintrag in die Datenbank, aber nicht die Zuordnung!

Warning
Vergessen Sie nicht, am Ende den OK-Button zu betätigen, sonst ist alle Mühe umsonst gewesen!

•	Externe Variable
sind derzeit nicht deklarierbar. Es handelt sich um solche, die in der Konfiguration global deklariert wurden.

Tip
Sie können auch die Variablen aus einer Excel-Liste importieren.


Ein Kürzel, das die Automatisierungsstation kennzeichnet, z.B. STAT_1, muß hier eingetragen sein. click here


Eine technologische Bezeichnung, die den Anwenderzweck verdeutlichen hilft, z.B. "Anfahrüberwachung". click here


Jede Steuerungseinheit enthält eine CPU, einen zentralen Prozessor. Von der Leistungsfähigkeit hängt praktisch ab, welche Eigenschaften das zu verarbeitende Programm haben darf, welche Tasks verfügbar sind, wieviel Formalparameter ein Funktionsbaustein-Typ, also ein PRAP, haben darf und vieles mehr.
Die in SPaS eingetragenen Prozessoren entnehmen Sie bitte den wählbaren Sprachen.


Angezeigt werden alle in der Ressource global deklarierten Variablen. Falls Sie noch keine hier eingeführt haben, dann finden Sie eine Hilfe mit dem HELP-Button unter "PARAMETER".


Project Member - PROGRAM

•	Allgemeines
siehe PROGRAM einfügen, bearbeiten
Ein PROGRAM, auch Typ-Programm, vereinigt Teilprozesse in Gestalt von Instanzen und enthält für diese Instanzen erforderliche Variable. Die Programm-Instanz ruft gemäß zugewiesener Task die hier aufgeführten Instanzen in der angegebenen Reihenfolge auf.

•	IDENTIFICATION
Setzen Sie hier eine Kurzbezeichnung ein, die in der Ressource einmalig ist.

•	DESCRIPTION
Bezeichnen Sie hier den technologischen Abschnitt, der durch die Instanzen (Teilprozesse) gesteuert wird. Beachten Sie dabei click here

•	PARAMETER
Die globalen Variablen (PARAMETER) dienen auch der Kommunikation zwischen den Bausteinen, die zu "PROGRAM "gehören.

Note
Externe Variable liefern die Ressource und die Konfiguration (Konfiguration in dieser Version nicht), also dort deklarierte globale Variable.

Hier finden Sie alle bereits eingegebenen Variablen und dem PROGRAM zugeordnete Instanzen, also Teilprozesse und Function-Aufrufe. Sie können durch rechten Mausklick die Handlungsmöglichkeiten für die Tabelle ausnutzen zum Suchen, umordnen u.a.
Ein Klick auf [image] öffnet das Eingabefeld für in PROGRAM lokal deklarierte Variable,
sie sind innerhalb des PROGRAM für die Instanzen zu deklarieren. Diese sind bei der Instanziierung den Variablen der Typen-PRAP zuzuordnen.
Wählen Sie zur Darstellung der diesem PROGRAM zugeordneten Variablen in 'Filter Options' "Member" und suchen Sie in 'Filter Values' das zutreffende PROGRAM aus. Danach Klick auf "Filter Off".
Fügen Sie mit [image] eine neue Variable hinzu. Nach dem Ausfüllen der Eigenschaften jeder Variablen müssen Sie auf [image] klicken, um die Speicherung dieser Variablen, zugeordnet zum Programm, in der Datenbank zu veranlassen. Ein Klick auf [image] ergibt nicht die Zuordnung!

Warning
Vergessen Sie nicht, am Ende den OK-Button zu betätigen, sonst ist alle Mühe umsonst gewesen!
"CANCEL" nimmt alle Änderungen zurück.

Noch einige wichtige Hinweise:

 1.	Sie können auch die Variablen aus einer Excel-Liste importieren.

 2.	Ein Doppelklick auf einen 'NAME' unter 'PARAMETER' öffnet die Variablentabelle einschließlich der Auswahl der Variablen grün unterlegt.

 3.	ÄNDERUNGEN sind wie folgt auszuführen:
Doppelklick auf die Variable, danach Änderungen in der Variablentabelle ausführen und mit Klick auf [image] bestätigen.
Die Änderung muß links unter 'PARAMETER' sichtbar sein, falls es Datentyp oder Usage betrifft.


Setzen Sie hier eine Kurzbezeichnung ein, die in der Ressource einmalig ist.


Bezeichnen Sie hier den technologischen Abschnitt, der durch die Instanzen gesteuert wird. Beachten Sie dabei click here


Die globalen Variablen (PARAMETER) sind lokal in PROGRAM deklariert und dienen der Instanziierung der Formalparameter und der Kommunikation zwischen den Bausteinen, die zu PROGRAM "gehören". Externe Variable liefern die Ressource und die Konfiguration, also dort deklarierte globale Variable.
Falls Sie noch keine Ihrem Programm zugeordnet haben oder Veränderungen wünschen, dann klicken Sie auf den HELP-Button. Dort ist unter PARAMETER das Vorgehen beschrieben.


Project Member - PROGRAM-Instance

•	Allgemeines
siehe auch: PROGRAM Instance, einfügen, bearbeiten
Die Programm-Instanz "teilt dem Betriebssystem der SPS" mit, unter welchen zeitlichen oder ereignisbedingten Vorschriften (Tasks) der Programmtyp abgearbeitet werden soll.

•	IDENTIFICATION
Tragen Sie hier eine Kurzbezeichnung ein, die besonderen Bedingungen genügen soll.

•	DESCRIPTION
Die Beschreibung darf ausfühlicher sein, muß jedoch im Rahmen der Vorschrift bleiben.

•	RELATIONS
Es ist auf jeden Fall der Programm-Typ zu wählen. Danach erfolgt die Zuweisung einer Task, die bei der "zuständigen" Ressource deklariert wurde.

•	PARAMETER
Dieses Feld bleibt leer.


IDENTIFICATION
Tragen Sie hier eine Kurzbezeichnung ein, die bestimmten Bedingungen genügen soll.


DESCRIPTION
Die Beschreibung darf ausfühlicher sein, muß jedoch im Rahmen der Beschränkungen bleiben.


RELATIONS
Es ist auf jeden Fall der Programm-Typ zu wählen. Danach erfolgt die Zuweisung einer Task, die bei der "zuständigen" Ressource deklariert wurde.


Project Member - Task

•	Allgemeines
siehe TASK bearbeiten, einfügen

•	Identification
Kurze Bezeichnung, z.B.: Zyklisch, oder 300ms

•	Description
Hinweis auf Programm-Instanzen, in denen Task verwendet wird(Hinweis dazu)

Weitere TASK-Themen:
SINGLE / INTERVAL und PRIORITY
Festlegungen für STEP 7
Festlegungen für "Strukurierten Text" nach IEC 61131-3
Bemerkungen zu Tasks bei PhoenixContact
Festlegungen für C und C++


SINGLE/INTERVAL
Entweder Sie benötigen eine zeitzyklische Aufruffolge oder eine ereignisgesteuerte (Hardware Interrupt). Tragen Sie also einen Zeitwert oder einen Variablan-Namen ein. Diese Variable muss natürlich vom Typ BOOL sein!
Dieses Feld muss unbeschrieben bleiben, wenn es sich um rein prioritäten-gesteuerte Aufrufe handelt.
PRIORITY
Die Prioritäten der Tasks sind von 0 bis 31 verfügbar. Wählen Sie die für Ihren Zweck richtige aus.


In der nachstehenden Tabelle sind einige OB aufgeführt, die auch in SPaS programmiert werden dürfen.

Die OB 121 und 122 sind nicht aufgenommen, weil solche Fehler eigentlich nicht auftreten sollten. Für weitergehende Fragen müssen Sie sich bitte in der Hilfe vom STEP 7 Manager Antwort suchen.


Task-Anforderungen bedingen auch ein Betriebssystem, das derzeit nur begrenzt unterstützt wird. Es gibt nur für die Priorität 0 einen Aufruf im freien Zyklus. Daher brauchen Sie auch keine Auswahl oder Eintragung durchzuführen.


Task-Anforderungen bedingen auch ein Betriebssystem, das bekannt sein muß. Erkundigen Sie sich also beim Hersteller der CPU genau!
PRIORITY: Die Priorität 0 ist die höchste. Die niedrigste müssen Sie vom Hersteller der Steuereinheit erfragen. Einen Aufruf im freien Zyklus, also ohne Eintragung bei SINGLE/TIME vergeben Sie die niedrigste Priorität. Im Standard IEC 61131-3 wird abweichend hiervon ein freier Zyklus ohne Tasksteuerung eines PROGRAMs erreicht.
SINGLE: Ein Interrupt bei Erscheinen einer Booleschen Variablen erfordert den Eintrag des Namens der Variablen.
TIME: Eine zyklische Unterbrechung erfordert den Eintrag der Zykluszeit, d.h. alle wieviel Millisekunden soll der Aufruf erfolgen.


Im Anschluß an die Erklärungen zu Structured Text sind hier die Besonderheiten der TASKs für PC WorX Version 5.20 SP 1.34 dargestellt.
Die Prioritäten sind bei Warm- und Kaltstart mit 0 festgelegt, ansonsten müssen Sie als Projektant selbst eine Ordnung der Vorrangbearbeitung bestimmen. Deshalb gibt es zu den Prioritäten nur drei Angaben. In der Auflistung sind einige wenige System-Tasks enthalten:
Default
Nur unter PRIORITY den Wert 31 eingeben, die niedrigste in PC WorX.
Warmstart
PRIORITY den Wert 0 eingeben. SINGLE/TIME . . . spg0
Kaltstart
PRIORITY den Wert 0 eingeben. SINGLE/TIME . . . spg1
Stop Programmausführung
SINGLE/TIME . . . spg2
Wachtdog-Fehler
SINGLE/TIME . . . spg10
Stack-Überlauf
SINGLE/TIME . . . spg12
I/O-Treiber-Fehler
SINGLE/TIME . . . spg14
Zyklische Tasks
Die Zeit des Aufrufzyklus' in Millisekunden eingeben


STEP 7 (S7-300 und S7-400) wird mit Organisationsbausteinen erzeugt. Geben Sie hier nur die OB-Nummer ein oder lassen Sie das Feld offen; denn wenn die Felder PRIORITY und SINGLE/INTERVAL passend ausgefüllt sind, fügt SPaS die richtige Zahl dann ein.


Strukturierte Datentypen

 Related Topics

Hier können Sie mehrere Variable elementarer Datentypen (oder bereits deklarierte DDT: noch nicht in SPaS Version 1) zusammenstellen unter einem Namen, einer Identifikation. Deshalb wird auch das Kürzel UDT (User Defined Type) zuweilen verwendet. Grundsätzlich ist nach IEC 61131-3 "structured data type" unter "derived data types" (DDT) zu finden.
IDENTIFICATION bedeutet den Namen, der kurz sein sollte.
DESCRIPTION bedeutet eine Beschreibung, die z.B. den Einsatz-Zweck benennt.
EINTRAGEN der VARIABLEN in den DDT:click here
Einfügen von UDT in das Projekt: click here
Siehe auch: click here


Variable in DDT einfügen und bearbeiten

Nachdem Sie das DDT-Member "Structure (Type)" unter der Ressource angelegt haben, klicken Sie auf [image] und es öffnet sich die Variablentabelle. Hier gehen Sie wie folgt vor (Änderungen anschließend):

 1.	Mit Klick auf [image] müssen Sie bei NAME den Bezeichner der Variablen eintragen, unbedingt auch den Datentyp wählen!

 2.	USAGE sollte mit Local Static gewählt werden, anderenfalls erfolgt dies automatisch.

 3.	Einen Anfangswert dürfen Sie ebenfalls eingeben (Initial Value).

 4.	EINTRAGEN der Variablen in die Datenbank erfolgt mit Klick auf [image]. Dann sehen Sie auch den Eintrag im Member.

 5.	Beenden Sie die Eingabe der Variablen entweder mit Klick auf [image] bzw. OK Button.

Änderungen führen Sie durch mit

 1.	Markieren der Variablen im Member. Die zutreffende Zeile erscheint grün in der Tabelle.

 2.	Namen , Datentyp oder Point of Automation ändern.

 3.	Klick auf

Entfernen einer Variablen

 1.	Markieren der Variablen im Member. Die zutreffende Zeile erscheint grün in der Tabelle.

 2.	Klick auf [image]. Der Eintrag im Member verschwindet ebenfalls!
Frage, ob gelöscht werden soll, mit OK beantworten.

 3.	Klick auf


Wie bei Datenbausteinen werden hier einfach laufende Nummern eingesetzt.


DDT-Variable

Die Nutzung einer unter der Ressource deklarierten formalen Datenstruktur (DDT bzw. UDT) erfolgt zunächst durch Einfügen einer Strukturvariablen [image] in die RESOURCE oder in ein PROGRAM. Eine DDT-Variable in der Ressource ist global verfügbar in allen PROGRAMs, eine DDT-Variable im PROGRAM ist nur dort gültig. Geben Sie NAME und Text für Description ein und wählen Sie den zutreffenden Typ im Feld "TYPES". Im Bereich PARAMETER sehen Sie alle deklarierten Variablen.
Mit der rechten Maustaste erhalten Sie die Gelegenheit, den Variablen laufende Adressen zuordnen zu lassen. Es gibt hier keine Änderungsmöglichkeiten!
Step 7 verlangt noch den Eintrag einer Datenbaustein-Nummer im vorhandenen Sheet. Das USAGE ist automatisch mit "Address Memory" festgelegt.
Erforderliche Änderungen im DDT vornehmen!(click here)

Note
Durch Click auf eine Variable öffnet sich die Variablentabelle. Hier sehen die Daten und können in "Point Of Automation" eine Eintragung vornehmen.


Operation

Jede Operation gibt die binäre Belegung der Operationsvariablen in der "List of Operation Variables" an, die zum PRAP gehören.
Folgende Hinweise können Sie erhalten:

•	Zu Statement

•	Zu Liste der Operationsvariablen

•	Zu Edit Selected Variable

•	Zu Insert New Varable

•	Zu OK


In dieses Feld schreiben Sie einen kurzen Text, der aussagt, was technologisch im gesteuerten (Teil-)Prozeß geschehen soll. Mit Klick auf "OK" erfolgt die Übernahme in das Operations-Symbol (grünes Rechteck)


Mit Klick auf diesen Button und anschließendem Doppelklick auf die neue Eintragung öffnet sich das Fenster zum Eintragen einer neuen Operationsvariablen in Form eines Kommentars (Statement) und deren Identifikation (NAME). Weitere Hilfe siehe dort.
Wollen Sie eine Operations-Variable entfernen, dann markieren Sie diese Variable, und mit rechtem Mausklick wird "Disconnect Operation Variable" angeboten:
Der Text verschwindet mit einem Klick, aber der NAME (Identifikation) bleibt im Projekt bestehen, ohne eine Bindung an ein Member (disconnect) und steht zur freien Verfügung.


Liste der Operationsvariablen
Jeder Operationsvariablen ist ein Markierungs-Kästchen vorangestellt. Mit Klick auf dieses Kästchen wird ein "Haken" eingetragen. Er bedeutet: Diese Operationsvariable wird in der betreffenden Operation ihrer textlichen Aussage entsprechend (bei "Comment" zu erkennen) ausgeführt.
Nicht markierte Kästchen bedeuten für die betreffende Operationsvariable, daß sie mit der "negierten Aussage" des Variablen-Textes ausgeführt wird.
Die Nummern zwischen Kästchen und Doppelpunkt sind Zählwerte, die jedoch auch nach einem Löschen einer Operationsvariablen nicht fortlaufend sein können.
WICHTIG
Wenn in aufeinander folgenden Operationen das Kästchen markiert bleibt oder nicht markiert bleibt , verändert sich die Steuerwirkung nicht.
Wollen Sie eine Operations-Variable entfernen, dann markieren Sie diese Variable, und mit rechtem Mausklick wird "Disconnect Operation Variable" angeboten:
Der Text verschwindet mit einem Klick, aber der NAME (Identifikation) bleibt im Projekt bestehen, ohne eine Bindung an ein Member (disconnect) und muß entweder noch mit Klick auf [image] aus der Datenbank entfernt werden oder steht zur freien Verfügung.


Mit Klick auf diesen Button öffnet sich das Fenster zur Bearbeitung von Variablen (ganz allgemein) für die ausgewählte Variable.
Wollen Sie eine Variable löschen, dann markieren Sie diese Variable, und mit rechtem Mausklick wird "DISCONNECT" angeboten. Das bedeutet, die Variable bleibt im Projekt erhalten, die Bindung an den PRAP (als Member) entfällt.


Mit KLick auf diesen Button übertragen Sie den Inhalt des Formblattes "Operation" in die Datenbank, so daß der Inhalt der Liste der Operationsvariablen der Operation bei "Comment" fest zugeordnet wird.
Wollen Sie eine Variable aus der Liste löschen, dann markieren Sie diese Variable, und mit rechtem Mausklick wird "disconnect" angeboten. (Erläuterung hier)


Operation Variables

In diesem Formular bestimmen Sie alle Eigenschaften, die mit der ausgewählten Operations-Variablen in Zusammenhang stehen. Folgende Parameter stehen zur Verfügung:

•	Statement - Variablenbezeichner

•	Point of Automation - EMSR-Stelle

•	Variable Name (Flag)

•	Generated

•	Address

•	Variable Usage

•	Choose a  Function

•	Formula


Der Variablenbezeichner ist hier eintragbar oder änderbar und wird mit Klick auf "OK" in die Liste der Operationsvariablen dann übernommen, wenn auch ein VARIABLE NAME (Flag) vorhanden. Anderenfalls wird der Bezeichner nur ohne Bezug zwischengespeichert. Mit Klick auf "Cancel" bleibt der vorhandene Text.


Tragen Sie - wenn überhaupt - hier nur Funktionen-Hinweise, keine konkreten EMSR-Stellen ein. Z.B. bei einem allgemeinen Antrieb UV oder elektrisch EU, oder HO für optische Signalisierung usw.
Konkrete EMSR-Stellen müssen bei den Aktualparametern bzw. direkt adressierten Variablen der Teilprozesse - Instanz-Aufrufe der PRAP-Typen - eingetragen werden.


Der Variablen-Name ist hier nicht eintragbar, mit Klick auf [image] öffnet sich das zugehörige Formblatt.
(Flag) deutet auf die Eigenschaft der hier einzutragenden Booleschen Variablen hin. Sie kann, sofern sie mit einer Funktion (siehe Choose a Function) verbunden ist, diese einschalten und ausschalten. (siehe "Eingebettete Funktionen im PRAP").


Die Eigenschaft "Generated" ist hier nicht eintragbar, mit Klick auf [image] öffnet sich das zugehörige Formblatt.


Die Variablen-Adresse ist hier nicht eintragbar, mit Klick auf [image] öffnet sich das zugehörige Formblatt.


Bitte wählen Sie aus dem Angebot die zutreffende Eigenschaft aus.

 Ausführliche Erläuterung


Auswahl einer eingebetteten Funktion

Das PopUp-Menue gestattet folgende Auswahl zur Verknüpfung der Booleschen Operations-Variablen als FLAG mit einer "Eingebetteten Funktion":

 Eingebettete Funktionen im PRAP

•	not Specified
Die Variable ist ohne Verknüpfung, hat keine FLAG-Eigenschaft

•	Create Timer
Die Variable schaltet ein Zeitglied (Timer bzw. Timer Function) ein und aus. Außerdem werden in den Programmtext Befehle geschrieben, die für eine Zeitgliedfunktion entscheidend sind.

•	Create Counter
Die Variable lädt in einen Zähler (Counter bzw. Counter Function) den Soll-Zählertwert. Außerdem werden in den Programmtext Befehle geschrieben, die für eine Zählgliedfunktion entscheidend sind.

•	Count Down
Die Variable bewirkt mit jedem Wechsel des Wertes von false auf true (0 auf 1) das Rückwärtszählen eines anzugebenden Zählgliedes.

•	Count Up
Die Variable bewirkt mit jedem Wechsel des Wertes von false auf true (0 auf 1) das Vorwärtszählen eines anzugebenden Zählgliedes.

•	Counter Reset
setzt den aktuellen Zählwert auf Null. Dies kann wichtig bei Vorwärtszählern sein.

•	Calculate/Copy(norm) und Calculate(single)

 1.	Calculate(multiple) und Calculate(single):
(multiple) bedeutet:
Die Variable bewirkt bei einem Wechel des Wertes von false auf true (0 auf 1) die Ausführung der Berechnung, die in einem arithmetischen Ausdruck angegeben ist. Mit dem Wechsel von 1 auf 0 schließt die Berechnung. Die Dauer einer Berechnung ist gleich der Dauer der stabilen Situation, so daß das Ergebnis beim letzten Berechnungszyklus gilt. Die Anzahl der Berechnungen, deshalb "multiple", hängt von der Geschwindigkeit der CPU ab.
(single) bedeutet:
Mit der 0-1-Flanke der Operationsvariablen erfolgt automatisch eine einmalige Berechnung des arithmetischen Ausdruckes. Die stabile Situation kann beliebig länger dauern, das Ergebnis ändert sich nicht mehr. Sollten während der stabilen Situation Änderungen der Werte bei Operanden erwartet werden, beeinflussen sie natürlich nicht das Ergebnis. Beispiel für "single"
Die Besonderheit ist, daß auch Schiebe- und Rotier-Operatoren verwendet werden dürfen.
Der arithmetische Ausdruck wird wie üblich berechnet, d.h. Klammerausdrücke werden zuerst, Schiebe- und Rotieroperatoren vor * und /, danach + und -.

 2.	Copy:
Die Variable bewirkt mit jedem Wechsel des Wertes von false auf true (0 auf 1) das Übertragen, d.h. die Zuweisung (:=), von einer Konstanten auf einen Speicherplatz oder den Inhalt eines Speicherplatzes auf einen anderen. Dabei erfolgt automatisch eine Datentyp-Anpassung, falls das nötig ist. Ebenso können Sie Bitwerte 0 oder 1 auf Boolesche Variablen übertragen.
Auch bei "Calculate(single)" können Sie eine Kopierfunktion projektieren. Das unterschiedliche Verhalten ist oben beschrieben.


Mit Klick auf "nothing / none" lesen Sie zur Bestätigung, ob ein Formelobjekt hergestellt werden soll. Nach einem Klick auf "Yes" erhalten Sie, falls erforderlich, ein Formular zum Konfigurieren der gewählten Funktion. Ansonsten öffnet der Variablenzugriff(click here).
Das rote Kreuz daneben gestattet, die gewählte oder eine zu entfernende Funktion, wenn sie also bereits konfiguriert ist, zu löschen.

Warning
Nach beendeter Bearbeitung des Formelobjektes und seiner Variablen kehrt das Fenster (click here) der Prozeß-Variablen bzw. Operationsvariablen zurück. Nun müssen Sie "OK" anklicken (Enter-Taste), um die Ergebnisse der Konfigurationsarbeit zu speichern. "Cancel" macht alle Arbeit ungeschehen!

Allgemeine Erläuterungen:
Eingebettete Funktionen (im Buch Entwurfsprozeß)


Hinweise zum Funktionenwechsel:
Grundsätzlich kann ein Funktionenwechsel nur mit dem Löschen der bisherigen "Formula" erfolgen.
Es gibt eine Ausnahme, weshalb dieses Prinzip unterbrochen werden darf. Es handelt sich dabei um Ausdrücke für Vergleicher oder andere mathematische Formeln.

Tip
Wollen Sie z.B. von CALCULATE(single) auf CALCULATE(multiple) wechseln, dann öffnen Sie das Formula-Window, markieren alles (Tasten Ctrl+A), kopieren in das clip board (Tasten Ctrl+C) und mit Klick auf Cancel kehren Sie zurück. Nun wechseln von single auf multiple, danach Klick auf Yes (Formula wird gelöscht) und öffnen wieder das jetzt leere Formula-Window, stellen den Cursor an den Anfang und tragen den gesamten Inhalt wieder ein (Tasten Ctrl+V).
Anmerkung: Anstelle Ctrl kann auch Strg auf der Tastatur stehen.


Process Variables

In diesem Formular bestimmen Sie alle Eigenschaften, die mit der ausgewählten Prozeß-Variablen in Zusammenhang stehen. Folgende Parameter stehen zur Verfügung:

•	Statement - Variablenbezeichner

•	Point of Automation - EMSR-Stelle

•	Variable Name (Flag)

•	Generated

•	Address

•	Variable Usage

•	Choose a Function

•	Formula


Der Variablenbezeichner ist hier eintragbar oder änderbar und wird mit Klick auf "OK" in die Liste der Prozeßzustandsvariablen NUR DANN übernommen, WENN auch ein VARIABLE NAME (Flag) vorhanden. Anderenfalls wird der Bezeichner nur ohne Bezug zwischengespeichert und die Eintragung in die "Condition" erfolgt. Mit Klick auf "Cancel" erfolgt kein Eintrag in die Variablenliste, also bleibt der alte Text.


Tragen Sie hier nur Funktionen-Hinweise, keine konkreten EMSR-Stellen ein. Z.B. bei einem allgemeinen Positionserfassung GS oder Füllstand LS, oder HS für Bedienereinfluß usw.
Konkrete EMSR-Stellen müssen bei den Aktualparametern bzw. direkt adressierten Variablen der Teilprozesse - Instanzen der PRAP-Typen - eingetragen werden. Und bei Unikaten oder in Typen mit beschränkter Anzahl der Formalparameter.

Sollten Sie Betriebsmittelkennzeichen statt EMSR-Stellen nutzen, gilt das Gesagte sinngemäß.


Die Variable ist hier nicht eintragbar, mit Klick auf [image] öffnet sich das zugehörige Formblatt (weitere Hilfe dort!).

Note
Sie können eine Prozeßvariable nur dann wiederholt verwenden, wenn Variable Name (Flag) ausgefüllt ist!

(Flag) deutet auf die Eigenschaft der hier einzutragenden Booleschen Variablen hin. Sie zeigt an, sofern sie mit einer Funktion (siehe Choose a Function) verbunden ist, ob das Ergebnis true oder false ist. Deshalb wird sie auch Ergebnis-Variable genannt.


Die Eigenschaft "Generated" ist hier nicht eintragbar, mit Klick auf [image] öffnet sich das zugehörige Formblatt.


Die Variablen-Adresse ist hier nicht eintragbar, mit Klick auf [image] öffnet sich das zugehörige Formblatt.


Bitte wählen Sie aus dem Angebot die zutreffende Eigenschaft aus. Für formale Parameter kommen nur Input, Output oder Input/Output in Frage.

 Ausführliche Erläuterung


Das PopUp-Menue gestattet die Auswahl zur Verknüpfung der Booleschen Prozeß-Variablen mit einer "Eingebetteten Funktion":(click here)

•	not Specified
Die Variable ist ohne Verknüpfung mit einer eingebetteten Funktion, also eine normale, Boolesche Variable.

•	Timer Output Q
Q ist das Kuzzeichen für den Ausgang eines Timers, den Sie zuvor konfiguriert haben müssen. Die Variable(Flag) ändert ihren Wert von 0 auf 1, wenn der anzugebende Timer "abgelaufen" ist, d.h. der ihm zugeordnete Zeitwert ist erreicht.

•	Count Down
Die Variable bewirkt mit jedem Wechsel des Wertes von false auf true (0 auf 1) das Rückwärtszählen eines anzugebenden Zählgliedes.

•	Count Up
Die Variable bewirkt mit jedem Wechsel des Wertes von false auf true (0 auf 1) das Vorwärtszählen eines anzugebenden Zählgliedes.

•	Counter Output QU / QD
QU und QD sind das Kuzzeichen für den Ausgang eines Counters, den Sie zuvor konfiguriert haben müssen. Die betreffende Variable(Flag) ändert ihren Wert von 0 auf 1, wenn der anzugebende Counter "abgelaufen" ist: QU, wenn der zugeordnete Zählwert erreicht ist.
QD, wenn der Zählwert auf 0 rückgezählt ist.

•	Comparison
Ein Vergleich zwischen zwei Werten, also auch Inhalten von Speicherplätzen, soll immer
Istwert - Vergleich mit - Sollwert>
lauten. Wird "Vergleich mit" erfüllt, dann erhält die "Ergebnis"-Variable(Flag) den Wert 1 (true), ansonsten 0 (false). Istwerte können mit dieser Vorgabe keine Konstanten sein, sind folglich stets Speicherplätze. Die Anpassung der Datentypen erfolgt automatisch.
Ist- und Sollwert dürfen arithmetische Ausdrücke sein.

•	Raising Edge
Die "Ergebnis"-Variable(Flag) (Condition) erhält mit jedem Wechsel des Wertes der Eingangs-Variablen (Primary Variable) von false auf true genau einen CPU-Zyklus lang den Wert 1.

•	Falling Edge
Die "Ergebnis"-Variable(Flag) (Condition) erhält mit jedem Wechsel des Wertes der Eingangs-Variablen (Primary Variable) von true auf false genau einen CPU-Zyklus lang den Wert 1.

•	Raising and Falling Edge
Die "Ergebnis"-Variable(Flag) (Condition) erhält mit jedem Wechsel des Wertes der Eingangs-Variablen (Primary Variable) von true auf false und umgekehrt genau einen CPU-Zyklus lang den Wert 1.


Eingabe und Bearbeitung der Variablen in PRAP, FUNCTION, PROGRAM, RESOURCE

Das Datenbankhandling erfolgt mit den Arbeitssymbolen:

Die Symbole bedeuten:
Neuen Datensatz einer Variablen hinzu
Datensatz zur markierten Variablen löschen
Datenbank-Inhalt editieren
alle Änderungen in Datenbank sichern
Editiervorgang ungeschehen beenden
Datenbankinhalt erneut sichern
 Daten übernehmen, zugleich in Datenbank sichern
 alle Variablen-Records anzeigen

In dieser Tabelle haben Sie Zugriff zu allen Variablen, die zur Ressource gehören. Dabei haben Sie die Wahl, die Variablen ohne Filter-Auswahl oder unter bestimmten Bedingungen dargestellt zu bekommen. Im Einzelnen stehen folgende Felder zur Verfügung:

 1.	MEMBER

 2.	NAME: Im Fall einer Operationsvariablen.
NAME: Im Fall einer Prozeßvariablen.
"NAME": Im Fall einer externen Zustandsinitialisierung.

 3.	DATATYPE

 4.	Address

 5.	POINT OF AUTOMATION
Hier wird entweder übernommen, was unterhalb "Statement" eingetragen wurde, oder Sie schreiben hier den Text ein.

 6.	INITIAL VALUE

 7.	USAGE

 8.	Anzeigefeld

Tip
Mit Klick auf [image] können Sie bei zu vielen Variablen einen Suchvorgang nutzen.


MEMBER
Es wird Ihnen angezeigt, welchen PRAP-Knoten (dessen Identification) Sie im Projektbaum markiert haben, weil automatisch das Filter gesetzt wurde.
Falls Sie den Filter-Button anklicken (Filter Off)oder [image], können Sie die Zuordnung der jeweiligen Variablen hier ablesen.


Die Filter-Auswahl ist ein- und ausschaltbar mit dem "Filter-Button". Die Filterbedingungen sind unter "Filter Options" wählbar und mit "Filter Values" zu spezifizieren. Wird z.B. "Member" markiert, dann muß aus den angegebenen Members bei Values das Zutreffende gewählt werden. Bleiben die anderen Options unmarkiert und der Filterbutton wird angeklickt, dann werden alle Variablen des Members angezeigt.

Die Markierung "Data Type" gestattet Ihnen eine besondere Auswahl aus allen Variablen.
Die Markierungen "Parameter" und "Data Type" spezifiziert aus allen Variablen des Projektes.


Hier tragen Sie den Namen der formalen O-Variablen ein, eine Kurzfassung zum "Statement".
Beachten Sie dabei den Hinweis click here
sowie den Text zu "ADDRESS".


Hier tragen Sie den Namen der formalen P-Variablen ein, eine Kurzfassung zum "Statement".
Beachten Sie dabei den Hinweis click here
Lesen Sie auch den Text zu "ADDRESS".
Neu aber wiederholt verwendete P-Variable für Kopplungszwecke können Sie durch Nutzung des Filters ( Member = PRAP-Name der P-Variablen ) finden. Dann mit Klick auf [image] eine neue Variable anlegen und die Daten der ausgewählten kopieren.

Note
Die unmittelbare Übernahme einer P-Variablen ist gesperrt, da sie dem anderen Member - hier Typen-PRAP - zugeordnet ist. Eine Kopie ordnet den gleichen Namen dem aktuellen Typen-PRAP zu.


Zu jeder Variablen ist ein Datentyp auszuwählen. Auch konstante Werte benötigen einen Datentyp, um sie den Variablen anpassen zu können.


•	In erster Linie in PROGRAM oder auch RESOURCE, in Typen-PRAP werden normalerweise keine Adressen angegeben.

•	Die Adressenangabe für eine Variable ist wichtig für Instanzen.

•	Ausnahme: Haben Sie einen PRAP als Unikat entworfen, dann tragen Sie hier die betreffende Adresse ein.

•	Es gibt Fälle, in denen durch die Beschränkung des Betriebssystems nur eine bestimmte Anzahl Formalparameter zulässig ist. Dann geben Sie hier die Harwareadressen ein, die im Typen-PRAP festzulegen sind.


Hier nur dann Eintragungen vornehmen, wenn es sich um direkte Adressen handelt, also bei Instanzen. Ansonsten können schon Hinweise auf EMSR-Stellen stehen, z.B. LIS für Füllstands-Anzeige und -Steuerung.
Falls Sie Betriebsmittel-Kennzeichen wie z.B."Y" für Antriebsort verwenden, ist dies ebenso möglich.
Kopplungen sollten hier ebenfalls eingetragen werden, wenn sie bei Typen überhaupt schon konkret angebbar sind.
In diesem Fall wird empfohlen, "KOP von ... nach ..." einzuschreiben.


Der Anfangswert einer Variablen kann hier angegeben werden. Gewöhnlich stellen die Betriebssysteme der Ressourcen beim Laden des Steuerungsprogramms alle Werte auf Null. Dieser Initial-Wert wird aber häufig NICHT beim Betriebswechsel der Ressource von STOP auf RUN der Variablen übertragen.
Nutzen Sie in der Initialoperation durch die Kopierfunktion (enthalten in Function: Calculate) Anfangswerte auf eine Variable zu übertragen.
Sollte eine Konstante, "CONSTANT" als Usage, (z.B. fester Vergleichswert, Zeitwert, Zählwert) eingeführt werden, dann hier die Zahl eintragen. Eine Konstante wird nicht überschrieben, also behält sie ihren Wert.
Zeitwerte mit Zeitmaßen versehen, also 1,5h (nicht "Stunden"!)oder 28min5sec, auch 28M5S, oder 575ms. Stets "TIME" als Datentyp wählen und "CONSTANT" als Usage. Wollen Sie einen veränderlichen Zeitwert dem Timer übergeben, dann 0 eintragen oder das Feld leer lassen, Usage ist dann "INPUT", "INPUT/OUTPUT" oder "LOCAL STATIC" je nach Anwendungsfall.
Zählwerte als Ganzzahlen angeben und Datentyp "Integer" wählen und "CONSTANT" als Usage. Variable Werte wie bei Zeitwerten.
Siehe auchEinzelheiten hierzu.


Klicken Sie auf den [image] -Button!
Sie erhalten die nötigen Hinweise zu "NAME".


Deklaration VAR_GLOBAL und VAR_ACCESS in CONFIGURATION

Note
Vorbemerkung zu SPaS Version 1:
Derzeit sind ACCESS_VAR, also Größen zur Kommunikation über Bus nicht deklarierbar!

...später mehr...


Deklaration der VAR_ACCESS, VAR_GLOBAL und VAR_EXTERNAL in RESOURCE

Note
Vorbemerkung zu SPaS Version 1:
Derzeit sind VAR_ACCESS nicht deklarierbar!
VAR_GLOBAL sind Deklarationen aller innerhalb der Ressource erforderlichen Aktual-Parameter, auch mit den zugehörigen direkten Adressen. Hierzu gehören alle Variablen, die der Kommunikation der Programme innerhalb der Ressource, z.B. Koppelungen, dienen und nicht schon in der Konfiguration (in Version 1 nichts in Konfiguration deklarieren!) stehen!
Beachten Sie Vorschriften der verschiedenen Sprachen(click here oder click here)

Die Bedeutung der Datenbank-Symbole entnehmen Sie bitte den Hinweisen auf der unteren Zeile des Fensters.
Tragen Sie in NAME den Variablenbezeichner ein, der hier als Symbol für die anzugebende Hardwareadresse gilt. Im Feld USAGE. beschränkt sich die Auswahl auf Constant, Address Input, Address Output und Address Memory (E.., A.., M.. bzw. %I.., %O.., %M..). In das Feld ADDRESS geben Sie nur noch die Ziffernfolge für die Adresse ein! Falls erforderlich, die Byte-Bit-Trennung nicht vergessen(click here). Bei Klick auf [image] erfolgt die Übernahme der bei "NAME" eingetragenen Zeichenfolge einschließlich Datentyp, Adresse und "USAGE".
Zum Schluß nicht vergessen auf "OK" zu klicken!!


Tragen Sie in NAME den Variablenbezeichner ein, der hier als Symbol für die anzugebende Hardwareadresse gilt.


Hier wird angezeigt, welchem Member die Variable zugeordnet ist, bei Mehrfachzuordnungen natürlich nicht, sondern "Multiple Choise" ist dann zu lesen.


In das Feld ADDRESS geben Sie nur noch die Ziffernfolge für die Adresse ein! Falls erforderlich, die Byte-Bit-Trennung nicht vergessen.
Näheres im Buch "Begriffe in SPaS"!


Diejenige EMSR-Stelle eingetragen, die der Variablen zugeordnet ist und wie sie im Technologie-Schema, z.B. R-I-Fließbild, steht. Bei verfahrenstechnischen Prozessen ist die DIN 19227 verbindlich.
Bei anderen Prozessen das Betriebsmittelkennzeichen wie Y für Antrieb, B für Melder.

Koppelungen sind hier ebenfalls eintragbar. Vorläufig nur als Information für den Leser dieser Tabelle.


Für Variable mit fester Adresse bleibt nur "active" zu wählen


Im Feld USAGE. beschränkt sich die Auswahl auf Constant, Address Input, Address Output und Address Memory


Deklaration der Aktual-Parameter und Adressen in PROGRAM-TYPE

 Related Topics

Note
Vorbemerkung:
VAR_EXTERNAL sind solche Variablen, die bereits in der Ressource deklariert sind, der PROGRAM untergeordnet ist. Sie müssen hier nochmal aufgenommen werden.
VAR_GLOBAL sind Deklarationen aller innerhalb des PROGRAM erforderlichen Aktual-Parameter mit den zugehörigen direkten Adressen. Hierzu gehören alle Variablen, die der Kommunikation der Unter-Programme innerhalb des Programms, z.B. Koppelungen, dienen und nicht schon in der Ressource stehen!
Wenn Sie ändern müssen, dann finden Sie unten Hinweise...

Die Bedeutung der Datenbank-Symbole entnehmen Sie bitte den Hinweisen auf der unteren Zeile des Fensters.
Tragen Sie in NAME den Variablenbezeichner ein, der hier als Symbol für die anzugebende Hardwareadresse gilt.
Im Feld USAGE. erstrecktt sich die Auswahl auf Constant, Address Input, Address Output, Address Memory (E.., A.., M.. bzw. %I.., %O.., %M..), Local Static und Local Temporary.

Note
Beachten Sie bei Systembausteinen, gekennzeichnet mit [image], daß Datentypen und Adreßangaben speziellen sprachspezifischen Anforderungen unterliegen!

In das Feld ADDRESS geben Sie nur noch die Ziffernfolge für die Adresse ein! Falls erforderlich, die Byte-Bit-Trennung nicht vergessen. Nur in einem Projekt für STEP 7 werden auch die Präfixe wie z.B. E,A,MB,PEW akzeptiert.
Im Feld DATATYPE wählen Sie den zutreffenden Typ. Übrigens muß dieser mit dem des Formalparameters übereinstimmen, wenn der Aktualparameter mit seiner Adresse bei der Instanzierung zugewiesen wird.

Bei Klick auf [image] erfolgt die Übernahme der bei "NAME" eingetragenen Zeichenfolge einschließlich Datentyp, Adresse und "USAGE".
Zum Schluß nicht vergessen auf "OK" zu klicken!!

Tip
Da es hier keine "Statements" zu den "Names" gibt, klicken Sie nach dem "OK" auf "View| Variables" und tragen dort unter "Varlist Comment" ein. Das ist auch für alle Änderungen eine günstige Möglichkeit! (Filterfunktionen nutzen)

Wichtiger Hinweis bei Änderungen
Das Änderungsprocedere ist nur in folgender Form möglich, weil Sie die zu ändernde Variable - einschließlich ihrer Eigenschaften - in dem Memberdialogfeld suchen müssen, wo diese Variable deklariert wurde.
Also NICHT unter NAME in der Variablentabelle suchen und ändern!! Sie erfahren aber, wenn die Variable markiert ist, mit rechtem Mausklick, wo sie deklariert ist.
Suchen Sie also im Memberdialogfeld und markieren die Variable. Grün unterlegt finden Sie die im Memberdialogfeld angeklickte Variable im Access Field, also der Variablentabelle. Nun können Sie alles ändern, auch den Namen und danach unbedingt auf [image] klicken. Sie können den Erfolg oder Mißerfolg links im Memberdialogfeld sehen.


Zeitglied-Projektierung - Timer Configuration

Das Grundwissen zum Timer-Entwurf lesen Sie bitte bei Zeitglied - Timer nach.
Die Konfigurierung eines Zeitgliedes/Timers enthält vier Größen, von denen drei in den folgenden Punkten aufgeführt sind:

 1.	Timer
ist das durch die Operationsvariable je nach Operationenfolge ein- und ausgeschaltete Zeitglied. Es handelt sich laut IEC 61131-3 um einen Standardfunktions-Baustein.
Die Felder Name, Statement und "Variable Usage" bilden die Aussage über Bezeichnung und Art des Timers.
"Variable Usage" ist eine Aussage über den Speicherort des Timers. Schreibt der Hersteller der Software nichts anderes vor, sollte USAGE = "Local Static" sein, falls der Timer nicht als Variable (mit Aktualparameter-Übergabe im Instanzbaustein) gehandhabt wird.
Der "Data Type" ist mit "TON" festgelegt und darf nicht geändert werden! Streng genommen ist dies der Typ des Standard-Funktionsblocks.

 2.	Timer Value
Die Felder Name, Statement und Variable Usage bestimmen die Eigenschaften der Größe Timer Value = Zeitwert. Geben Sie zuerst "Name" ein, danach alles andere:

•	Der Datentyp ist "TIME" und darf nicht verändert werden.

•	Der Initialwert, also die Zeitdauer ist einzutragen oder das Feld leer zu lassen. (click here)

 3.	Elapsed Time ist der momentane Zeitwert und als Variable vom Datentyp TIME verfügbar, also in der Timer-Konfiguration nicht weiter zu beachten. Für Anzeige, d.h. Ausgabe der aktuellen Zeit nutzen sie die Funktion Copy und für Vergleicherfunktionen verwenden Sie als Istwert ebenfalls diesen Timer-Ausgang in der Form TimerName.ET, wobei ".ET" nur im Formelausdruck einzutragen ist!

Timer Output Q kann nur zugehörig zu einer P-Variablen bearbeitet werden. Schließen Sie also die Bearbeitung der Timer-Konfiguration ab und wenden sich dem Timer-Ausgang zu. Wählen Sie bei Choose a Function:
"Timer Output Q".


•	Name
ist ein Kurzzeichen zu Statement und nur in der Variablentabelle (Klick [image]) editierbar. Beachten Sie die Hinweise bei Wählbare Sprachen.

•	Statement
ist die Benennung des Timers wie z.B. Schließzeit, Anlaufdauer usw. Schreiben Sie hier einen Text, der zeigt, wofür der Timer nötig ist, also niemals T121!

•	Variable Usage
im allgemeinen "Local Static" (In Version 1. nicht: "Address Memory" für fest vorgegebene Timer, z.B. T4) oder ist sprachabhängig.


•	"Name" ist ein Kurzzeichen zu Statement und nur in der Variablentabelle (Klick [image]) editierbar.
"Name" erhält entweder eine feste Zeit als Konstante zugewiesen oder (click here)ist ein Formalparameter, dem die Instanz des PRAP-Typen einen Zeitwert übergibt oder es ist ein Speicherplatz, dem anderweitig der Zeitwert übertragen wird.

•	"Statement" bezeichnet die Zeitgröße z.B. als Wartezeit, Sicherheitswert, Kontrolldauer usw.

•	"Variable Usage" charakterisiert mit

 1.	"Constant" einen festen Zeitwert,

 2.	"Local Static" bei Übergabe von verschiedenen Zeitwerten über einen Speicherplatz im RAM,

 3.	"Input" oder "Input/Output" bei Übergabe von verschiedenen Zeitwerten über einen Speicherplatz, der mit einer direkten Adresse instanziert wird.

•	"Timer Value" die vorgegebene Maske ist nicht auszufüllen, wenn "USAGE = Constant" gewählt wurde. Sie müssen den Wert als INITIAL VALUE(click here) in das Formular nach dessen Öffnen eingeben.


Zeitglied-Ausgang Q / Timer Output Q

Bitte beachten Sie zwei Möglichkeiten. Sie erwarten die Ausgabe mit true auf der P-Variablen (Condition):

 1.	Es handelt sich um einen im PRAP kreierten Timer, dann suchen Sie "NAME" dieses Timers und übernehmen alle weiteren Eintragungen, Daten.

 2.	Es handelt sich um einen Timer in einem anderen PRAP, dann suchen Sie in diesem MEMBER nach "NAME" des Timers und übernehmen alle weiteren Eintragungen, Daten, durch Klick auf [image].


Zählglied-Projektierung - Counter Configuration

Das Grundwissen zum Counter-Entwurf lesen Sie bitte bei Zählglied - Counter nach.
Beachten Sie die Hinweise zu Zählern in den wählbaren Sprachen.
Die Konfigurierung eines Zählgliedes/Counters enthält sechs Größen, von denen fünf in den folgenden vier Punkten aufgeführt sind:

 1.	Counter
ist das durch die Operationsvariable je nach Operationenfolge gestartete Zählglied. Es handelt sich laut IEC 61131-3 um einen Standardfunktions-Baustein.
Die Felder Name und Statement bilden die Aussage über die Art des Counters. "Variable Usage" ist eine Aussage über den Speicherort des Zählers. und ist abhängig von der gewählten Sprache, im allgemeinen "Local Static", wenn der Counter, das Zeitglied, nicht als Variable ( mit Aktualparameter-Übergabe im Instanzbaustein) gehandhabt wird.
Der Datentyp, "Data Type", ist mit CTUD festgelegt (Counter Up Down).

 2.	Counter Value (PV=Preset Value)
Die Felder Name, Statement und Variable Usage bestimmen die Eigenschaften der Größe "Counter Value" = Zählwert. Geben Sie zuerst "Name" ein, danach alles andere. Der Datentyp ist sprachabhängig, im allgemeinen "INT".
Beim reinen Vorwärtszähler den Wert 0 eingeben, oder mit dem Rücksetzsignal R den Zählwert Null setzen. Bei einem Vor-Rück-Zählers nutzen Sie erforderlichen Falls ebenfalls den R-Eingang.

 3.	Die Zähleingänge CU und CD können sowohl Operationsvariable als auch Prozeßvariable sein. Wählen Sie bei Choose a Function:
"Count Up / Count Down".

 4.	Den Rücksetzeingang R können Sie nur mit einer Operationsvariablen steuern. Damit können Sie in ausgewählten Operationen den aktuellen Zählwert CV null setzen.

 5.	Current Value (CV) ist der laufende Zählerwert und kann als Ausgangs-Variable verwendet werden. Dazu nutzen Sie bitte die Kopier- oder Arithmetikfunktion, die Sie in der betreffenden Operation projektieren, wo der aktuelle Zählerinhalt benötigt wird. Tragen Sie als Operand den "NAME" des Zählers ein und ergänzen ihn nur in dem Formelausdruck mit ".CV". Der Datentyp muß wie bei "Counter Value" (PV) sein.
In Vergleicherfunktionen verfahren Sie bitte ebenso und verwenden "NAME.CV" als ISTWERT.

Counter Output QU / QD kann nur zugehörig zu P-Variablen bearbeitet werden. Schließen Sie also die Bearbeitung der Counter-Konfiguration ab und wenden sich dem Counter-Ausgang zu. Wählen Sie bei Choose a Function:
"Counter Output QU", wenn beim aufwärts zählen PV=CV erreicht ist.
"Counter Output QU", wenn ein abwärts zählen CV=0 erreicht ist.


Name
Eine Kurzbezeichnung bitte eingeben, nachdem Sie mit Klick auf [image] die Datentabelle geöffnet haben.
Statement
Geben Sie dem Zähler eine Bezeichnung click here. Aber vermeiden Sie z.B. Z34 zu schreiben, weil das nichtssagend ist. Schreiben Sie dagegen "Anzahl der Mehlsäcke", ist auch nach Jahren noch der Zweck des Zählers klar.
Variable Usage
im allgemeinen "Local Static" ( "Address Memory" für fest vorgegebene Counter, z.B. Z4 bei Step 7) oder ist sprachabhängig.


•	Name
Nach Klick auf [image] geben Sie eine Kurzbezeichnung zum Statement ein.

•	Statement
Tragen Sie hier eine Bezeichnung für den Zählwert ein, z.B. "Anzahl der Pakete".

•	Variable Usage
Wählen Sie "Constant" für einen festen Wert, ansonsten "Input".

•	Value
Den Wert in Zahlenform bei "Initial Value" eintragen, z.B. 145. Der Datentyp ist sprachabhängig, im allgemeinen INT.


Zähler auf-/abwärts zählen - Count Up/Down

Suchen Sie "Name" des Zählgliedes (Datatype = Counter), das mit jedem Wechsel der Variablen (P- oder O-Variable) von false auf true um den Wert 1 verringert oder erhöht werden soll.
Anschließend markieren und Klick auf [image].


Zählglied-Ausgang / Counter Output QU / QD

Sie erwarten die Ausgabe mit true auf der P-Variablen (Condition):
Bei QU, wenn der Zählerwert CV durch die Anzahl der CU-Signale PV erreicht hat.
Bei QD, wenn der Zählerwert CV durch die Anzahl der CD-Signale von CV=PV auf 0 heruntergezählt wurde.
Suchen Sie "NAME" dieses Counters und übernehmen damit alle weiteren Daten automatisch.

Note
Die Zählereigenschaften sind abhängig vom CPU-Hersteller, also sprachabhängig..


Vergleicherfunktionen - Comparison Configuration

Allgemeines
Im Thema Vergleicherfunktion - Comparison finden Sie Grundsätzliches beschrieben.
Wichtig ist,

•	daß Sie möglichst nur bereits deklarierte Variable verwenden (siehe: Eingabehilfe).

•	die Symbole [image] und [image] richtig bedienen. (siehe click here)

•	daß auf beiden Seiten der Vergleicheroperation auch arithmetische Ausdrücke stehen dürfen, so z.B. a < b + c

•	daß mehrere Vergleicher-Ausdrücke mit AND, OR oder XOR zu einer Formel verbunden werden dürfen.

•	daß den Vergleicher-Ausdruck, also die gesamte Formel, durch ";" abgeschlossen wird.

Sie können von hier aus zu den Erklärungen der Felder gelangen:

 1.	Name

 2.	Statement

 3.	Variable Usage

 4.	Formula


Hier wird die Variable (deren "Name") angezeigt, auf der der Cursor im Feld "Formula" steht. Editierbar nur nach Klick auf [image].

Note
Momentanwerte der Zeit- und Zählglieder sind mit "Name".ET (Datentyp TIME) bzw. "Name".CV (Datentyp INT) in den Formelausdruck einzutragen.


Technologisch begründeter Text, dem "Name" zugeordnet ist. Hier änderbar bzw. bei neuen Variablen einzutragen.


Praktisch kommen nur drei Möglichkeiten aus dem Angebot in Frage:

•	Input / Input/Output
Falls Ist- bzw. Sollwert auf einer Input- oder Outputadresse liegen.

•	Local Static
Falls sich die Variable innerhalb des Bausteins im RAM befindet. Zum Beispiel kann durch die Kopierfunktion auf einem Speicherplatz ein Wert abgelegt werden.

•	Constant
Falls der Sollwert (rechts vom Vergleichsoperator) eine feste Zahl ist, die in "Initial" eingetragen werden muß nach Klick auf [image]. Beachten Sie im Falle einer konstanten Zeit "T#" voranzustellen und anschließend Zahl und Einheit(en), z.B. T#12s120ms.


In dieses Feld tragen Sie in der Reihenfolge

Istwert	Vergleichsoperation	Sollwert

die Vergleicherformel ein. Ist- und Sollwert sind Variable, die Sie aus dem Angebot wählen - anklicken! - können, wofür sie den Tastenschlüssel Strg+Leerzeichen benutzen (Ctrl+Space).(Eingabemöglichkeiten für Variable in Formelausdrücken)
Die Vergleicheroperationen wählen Sie - anklicken! - bitte aus dem Angebot mit dem Tastenschlüssel Strg+J (Ctrl+J) oder nutzen die Zeichen der Tastatur. Sie dürfen auch arithmetische Ausdrücke anstelle eines Istwertes oder Sollwertes eintragen.
WICHTIG:click here


Kopier- und arithmetische Funktionen - Calculate(multiple) und Calculate(single)

Allgemeines
Zur Eingabe der Formeln siehe Abschnitt "Wichtige Hinweise zum Formulieren ..." weiter unten. Einige Grundregeln:

 1.	Kopier- und arithmetische Funktionen sind hier vereinigt, weil das Zuweisungszeichen ":=" einer Kopierfunktion entspricht.

 2.	Im Fall eines arithmetischen Ausdrucks erfolgt die Zuweisung des Ergebnisses an die links stehende Variable, anderenfalls die Kopie des Wertes der rechts - allein - stehenden Variablen, die auch eine FUNCTION sein kann. (Sprachabhängigkeit bei FUNCTION beachten!)

 3.	Das Verwenden einer FUNCTION in einem Ausdruck erfolgt wie in jeder Hochsprache durch Eintragen des Funktionsnamens und der Zuweisung der Aktualvariablen. Nutzen Sie die Tastenkombination Ctrl+J, Zeilen nach "Insertable Functions...", um sicher zu sein, daß die FUNCTION auch vor ihrem Aufruf deklariert ist. Weiter mit: Das Handling von FUNCTION und FUNCTION_BLOCK)

 4.	Das Verwenden einer INSTANZ / TeilProzeß in einem mathematischen Ausdruck ist nicht möglich, weil sie / er keinen Wert liefert, dennoch können Sie einen PRAP-Aufruf als INSTANZ nutzen:
Führen Sie einen Namen als Variable neu ein, dem Sie als Datentyp den PRAP-Namen zuweisen. Nutzen Sie die Tastenkombination Ctrl+J, um sicher zu sein, daß der PRAP vor seinem Aufruf deklariert ist. Außerdem sind alle Formalvariablen dann schon vorhanden. Ändern Sie dann den PRAP-NAMEN vor der KLammer in den Instanznamen, den Sie neu eingeführt haben. Weiter mit: Das Handling von FUNCTION und FUNCTION_BLOCK

 5.	Calculate(multiple) und Calculate(single)
unterscheiden sich grundsätzlich durch die Häufigkeit der Abarbeitung während einer stabilen Situation, in der die Berechnung durchgeführt wird:

•	Es bedeutet "multiple" die normale Abarbeitung der Berechnungsfunktion, d.h. bei jedem Arbeitszyklus der Ressource (z.B. SPS) innerhalb der Situation wird berechnet.

•	Es bedeutet "single" eine einmalige Abarbeitung der Berechnungsfunktion, d.h. nur im ersten Arbeitszyklus der Ressource innerhalb der Situation wird berechnet.

In den Themen (aus dem Buch "Entwurfsprozeß") Kopierfunktion - Copy und Arithmetik-Funktionen finden Sie Grundsätzliches beschrieben.
Wichtige Hinweise zum Formulieren der Ausdrücke
Denken Sie daran,

•	daß Sie nur bereits deklarierte Variable verwenden (siehe: Eingabehilfe für Formelausdrücke).

•	daß auch Konstante einen "Name" haben, dem als "Initial Value" ein von Ihnen eingetragener Wert zugeordnet ist, zu dem auch ein passender Datentyp gehört.
Wenn Sie in einen Formelausdruck lieber einen Zahlenwert direkt eintragen wollen, dann ist auch dies möglich. Auch numerische Literale der Form lt& DATENTYP gt& : lt& ZAHL gt& dürfen eingesetzt werden.

•	daß der Ergebnisspeicher (= Variable vor dem Zuweisungszeichen := ) mit seinem DATENTYP das zu erwartende Ergebnis auch aufnehmen kann. Die rechts vom Zuweisungszeichen stehenden Operanden werden weitgehend automatisch durch den PreCompiler angepaßt.
Für die Kopierfunktion gilt die automatische Datentyp-Anpassung in vorgegebenen Grenzen. Damit ist sie nutzbar für die "Umrechnung" eines Datentypen.

•	daß Arithmetik-Ausdrücke, die den Ergebnisspeicher enthalten, nur mit "Calculate(single)" sinnvolle Ergebnisse bringen. Z.B. sollte A:=A+1 mit "single" programmiert werden, weil sonst A letztendlich die Anzahl der Arbeitszyklen mit enthält. Sollte bei B:=A+1 in B ein Teil von A enthalten sein, gilt dies ebenso; denn B könnte ein DINT- und A ein INT-Datentyp sein, wobei A der niederwertige Teil von B ist.
Es gibt allerdings Fälle, in denen dieser Effekt praktisch genutzt werden kann!!

•	daß Sie einen Kommentar in die Zeichen "(*" und "*)" einschließen müssen.

•	die Symbole für "POST" und "ACCEPT"richtig bedienen: WICHTIG

Note
Momentanwerte der Zeit- und Zählglieder sind mit "Name".ET (Datentyp TIME) bzw. "Name".CV (Datentyp INT) in den Formelausdruck einzutragen.

Sie können von hier aus zu den Erklärungen der Felder gelangen:

 1.	Name

 2.	Statement

 3.	Variable Usage

 4.	Formula

 5.	Bedeutung der Button CHECK und OK


•	Input
kann nur für alle Operanden rechts vom Zuweisungszeichen gelten, falls nicht lokale Speicherplätze verwendet werden.

•	Input/Output
kann für alle Operanden beiderseits vom Zuweisungszeichen gelten. Operanden rechts vom Zuweisungszeichen können Ergebnisse der Kopierfunktion oder anderer arthmetischen Ergebnisse sein und nicht auf lokalen Speicherplätzen liegen.

•	Output
trifft vorrangig für den Operanden links vom Zuweisungszeichen zu, sofern das Ergebnis nicht lokal abgelegt werden kann.

•	Local Static
Falls sich die Variable innerhalb des Bausteins im RAM befindet. Zum Beispiel kann durch die Kopierfunktion auf einem lokalen Speicherplatz ein Wert abgelegt werden. Zeitgliedwerte und Zählerwerte sind ebenfalls lokal.

•	Constant
Falls der Operand (rechts der Zuweisung) eine feste Zahl ist, die in "Initial" eingetragen werden muß (nach Klick auf [image]).


Einen Kopierauftrag (Copy) formulieren Sie ganz einfach durch:
 Zielspeicher := Quelle ;
Quelle kann eine Variable sein aber auch eine Konstante. Der Datentyp soll "kleiner" oder gleich dem des Zielspeichers sein, wobei damit die Bitanzahl bzw. der Zahlenumfang gemeint ist. Die Datentypanpassung erfolgt automatisch. Sie dürfen alle Datentypen verwenden, weil es beim Kopieren nicht auf Vorzeichen ankommt. Aus BYTE, WORD oder DWORD eine Größe mit Vorzeichen "herstellen zu lassen", also z.B. von WORD nach INT wandeln gelingt nur mit ausdrücklichem Befehl WORD_TO_INT, weil der Programmierer dies sehr bewußt anzuweisen hat!.
Der Zielspeicher darf auch eine Boolesche Variable sein, der Sie entweder 0 oder 1 als Konstante zuweisen können.

Einen Berechnungsauftrag (Calculate) tragen Sie nach Ihrem Ermessen ein. Entscheiden Sie, ob das Ergebnis nur im ersten Arbeitszyklus - "single" - berechnet werden darf oder in allen - "multiple" - berechnet werden kann. Mehr hierzu: click here
Das Problem der Datentypen liegt darin, daß Byte, Word, Dword nicht "verrechenbar" sind wegen des fehlenden Vorzeichens. U-Typen, wie z.B. UINT, werden als positive Werte auf dem nächst größeren Bitformat verarbeitet, sofern überhaupt möglich, denn 64-Bit-Maschinen sind noch selten.
Als Berechnungs-Regel gilt, zuerst Klammerausdrücke, dann Shift und Rot und trigonometrische Funktionen, danach Potenzen, Multiplikation und Division, zum Schluß Addition und Subtraktion.

WICHTIG:click here

Tip
Klick zuerst CHECK danach OK!
Sie dürfen in mehrere Zeilen nacheinander eine Formel schreiben, die immer mit ";" endet.
Sie dürfen mehr als eine Formel in das Formula-Fenster schreiben. Die Berechnung erfolgt in der Reihenfolge, wie die Formeln eingetragen sind.


Alle im Formelfeld eingetragenen Ausdrücke werden einer ausführlichen Prüfungsfolge unterzogen.
Variablen-Namen werden auch zeichengetreu verglichen, also große und kleine Buchstaben werden unterschieden, daher ist "Hand" ungleich "HAnd"!! Deshalb ist es anzuraten, mit Ctrl + J sich die gültigen Operatoren heranzuholen.
Fehlende oder falsche Zeichen, z.B. Komma anstelle Semikolon werden erkannt.
CHECK
Es erfolgt nur die vollständige Prüfung, aber nichts wird gespeichert. Das Formelfeld bleibt geöffnet.
OK
Es erfolgt die vollständige Prüfung und anschließend wird alles im Formelfeld Eingetragene gespeichert, also auch alle Fehler.
Das Formelfeld wird am Ende geschlossen.


Variable der Vergleicher-, Kopier- und Arithmetik-Funktionen

Jede Variable muß zuerst mit einem "NAME", der Variablen-Identifikation, eingeführt werden, bevor sie in Formelausdrücken verwendet wird. Statement, also Erklärung in Kurzfassung und Usage, die Verwendung jeder Variablen werden im oberen Bereich festgelegt. Im unteren Bereich sind - je nach Filter - alle Variablen angezeigt.
Mit Taste "F1" oder [image] sind auch Einzelinformationen zu den Feldern zu erhalten.
Im unteren Anzeigefeld ist es mit RECHTER Maustaste möglich, weitere Informationen zu einer Variablen zu erhalten. Die Anzeige erfolgt unterhalb der Tabelle, die Anzeigefläche ist nach oben hin vergrößerbar.

 1.	Symbole [image] und [image] für "POST" und "ACCEPT"richtig bedienen: WICHTIG

 2.	NAME
Falls nicht schon vorhanden, auf [image] klicken, um eine neue Variable einzuführen. Die Kurzbezeichnung zum Statement (siehe oben!) eintragen, dabei bitte beachten:click here
Falls schon vorhanden, dann Zuordnung im Fenster "Member" sichtbar.

 3.	DATATYPE
BOOL ist nur sinnvoll bei der Zuweisung von 0 (false) oder 1 (true), also in einer Kopierfunktion.
BYTE, WORD, DWORD,LWORD nicht in arithmetischen und Vergleicher-Ausdrücken einsetzen, weil nur mit Vorzeichen behaftete Größen dort zugelassen sind.
BCD-Typen nur einsetzen, wenn bekannt ist, daß sie in der Zielsprache akzeptiert werden.
TON, CTUD An Timer und Counter können mit COPY Werte zugewiesen werden, auch der Vergleich mit einem Sollwert ist sinnvoll: Für TIMER mit Datentyp TIME, für Counter mit Datentyp INT.
CONSTANT sind feste Werte, die in der Instanz auch keine Änderung erfahren. Eintrag des Wertes bei Initial Value (siehe dort).

 4.	ADDRESS
Hier nur Hardware-Adressen eintragen, wenn der PRAP ein Unikat ist.

 5.	POINT OF AUTOMATION
Falls USAGE mit Input, Output oder Input/Output erklärt, ist eine EMSR-Stelle zu erwarten. Tragen Sie bei PARAMETER hier höchstens die Buchstabenkombination des Meß- oder Stellortes ein.
Nur AKTUAL-PARAMETER sollten die komplette Eintragung erhalten.

 6.	INITIAL VALUE
Hier tragen Sie vor allem auch Konstant-Werte ein, nicht nur Anfangswerte. Zeitwerte: T#..H..M..S...MS. Es müssen nicht alle Zeit-Maße angegeben werden, z.B. T#580ms.


Formel-Editor

Alle mathematischen Ausdrücke müssen den Regeln der IEC 611313-3, Kapitel 3.3, für die Sprache "ST" (Strukurierter Text) entsprechen.

 1.	Nach einer Neu-Einführung einer Variablen erfolgt mit Klick auf [image] (ACCEPT) sowohl die Übernahme in die Formel bzw. Funktion als auch in die Datenbank und wird damit auch dem Member zugeordnet.

 2.	Nach Änderungen an Daten zu einer Variablen - Ausgenommen "NAME" - in der Datenbanktabelle mit Klick auf [image] diese Änderungen in die Datenbank eintragen.

Warning
Bei Klick auf ACCEPT wird diese Variable an der Stelle des Cursors eingetragen, sofern nach dem Cursor ein Leerzeichen oder ":" steht. Veränderte Eintragungen zur Variablen NICHT!

 3.	Nach jeder Auswahl ein Leerzeichen einfügen als Trennzeichen zwischen Operanden und Operationszeichen.

 4.	Solange Sie den Cursor vor dem ersten Zeichen oder innerhalb einer Variablen stehen haben, werden deren Eigenschaften Name, Statement und Variable Usage oben angezeigt.

 5.	Am Ende der Formel ein ";" anfügen. Damit wird deutlich, daß der Ausdruck hier abschließt.
Denn:

•	Sie dürfen die Formel, den Ausdruck, auf mehrere Zeilen verteilen.

•	Sie dürfen auch mehrere Ausdrücke eintragen. Die Abarbeitung der Formeln erfolgt in dieser Reihenfolge.

•	Sie dürfen IF .. THEN .. ELSE / ELSIF verwenden, um die Berechnung von Ausdrücken unter bestimmten Bedingungen zu verlangen. Am Ende ist END_IF; einzufügen.

•	Sie dürfen FOR .. TO .. BY .. DO verwenden, wobei nach FOR einer Variablen der Anfangswert zuzuweisen ist, nach TO der Endwert (Negative Zahlen nicht verwenden) zu stehen hat. Der Endwert darf größer oder kleiner als der Anfangswert sein.
BY muß entfallen, wenn der Sprungfaktor den Wert 1 hat. Soll er z.B. 3 sein, dann schreiben Sie BY 3 ein, und der Anfangswert wird nach jedem Durchlauf um 3 aufwärts bzw. abwärts verändert.
Nach DO tragen Sie die Ausdrücke ein, die wiederholt zu berechnen sind. Am Ende schließen Sie mit END_FOR; ab.

•	Sie dürfen in diesem Feld wie mit jedem einfachen Texteditor arbeiten, es erleichtert aber die Arbeit, mit den Tastenschlüsseln zu operieren:
Ctrl+Space => alle bekannten Variablen werden angeboten
Ctrl+J => alle Operationszeichen sind aufgeführt


Die Art der Verwendung der Variablen - Variable Usage - wird hierher übernommen. Hier ist keine Eingabemöglichkeit. Ändern Sie bitte im zutreffenden Formular.


Die Art der Verwendung der Variablen - Variable Usage - wird hierher übernommen. Sie können aber auch ändern!


Eingabemöglichkeiten für Variable in Formelausdrücken

Die Tasten "Strg" ("Ctrl") + "Leerzeichen" ("Space") zeigen alle Variablen. Zur Nutzung als Operanden wählen Sie mit Klick den jeweils richtigen aus.

Tip
Nach Öffnen des Fensters blinkt der Cursor darüber. Geben Sie mit der Tastatur die gewünschte Zeichenfolge ein, um den Operanden leichter zu finden.

Eingabemöglichkeiten für Operationen in Formelausdrücken
Die Tasten "Strg" ("Ctrl") + "J" zeigen Ihnen alle mathematischen Operationen, im Fall der Vergleicher-Ausdrücke auch die Vergleichsoperationen. Sie dürfen beiderseits eines Vergleichs-Operanden einen arithmetischen Ausdruck eintragen. Sie dürfen alles von der Tastatur eingeben.
Im Fall der Datentypwandlung klicken Sie hier und erfahren alle Möglichkeiten.
Nicht in der Tabelle vorhandene Variable

•	ENTWEDER
vorher, also vor dem Schreiben der Formel, in die ACCESS TABLE einführen nach KLick auf:
Danach im Formelfeld mit Strg+Leerzeichen den Formelausdruck aufbauen.
Im Fall einer Zahlenkonstanten dürfen Sie diese Zahl auch einfach in die Formel eintragen, ohne Eintrag in der ACCESS TABLE. Im Fall Boolescher Konstanten verwenden Sie bitte nur "True" oder "False", weil "1" oder "0" als Zahlen interpretiert werden.

•	ODER
Falls Sie schon die Formel mit nicht eingetragenen Variablen geschrieben haben, dann empfiehlt es sich, die Variablen nacheinander nach Klick auf [image] in die ACCESS TABLE, also in die Variablentabelle wie folgt einzutragen:

 1.	Variable in Formel markieren und mit Strg+X entfernen oder mit Strg+C kopieren.

 2.	Klick auf

 3.	Standard-Text im Feld "NAME" ersetzen: Zunächst markieren und danach Strg+V betätigen

 4.	Fehlende Daten wie Datentyp jetzt eintragen bzw. wählen.

 5.	Falls mit Strg+X entfernt, dann mit Klick auf [image] übertragen. Falls mit Strg+C kopiert, einfach [image] anklicken.


Flankenauswertung - Raising and Falling Edges Detection

Allgemeines
Im Thema Flanken-Funktionen finden Sie Grundsätzliches beschrieben. Sie gehört laut IEC 1131-3 zu den Standard-Funktionsbausteinen. Allerdings gibt es hier keine Wahl bezüglich Speicherort (Usage) der FB. Und Datentypen gibt es auch keine auszuwählen. Daher sind nur die Eingangs- und die Ausgangsvariable zu projektieren.
Wählen Sie im Feld "Name" bzw. aus der Tabelle diejenige Variable aus, deren Flankenauswertung erforderlich ist, sie wird auch "Primary Variable" genannt. Falls keine Variable zutrifft, dann führen Sie eine neue mit Klick auf [image] ein.
Beachten Sie die richtige Bedienung der Symbole [image] und [image]. Nur mit dem letztgenannten erzielen Sie eine Übernahme der Daten sowohl in die Datenbank als auch in den Funktionenzusammenhang der Flankenauswertung, mit dem "POST-HAKEN" wird nur in die Datenbank neu eingetragen.

Primary Variable:
Die Eingangsvariable, deren Flanke(n) ausgewertet werden soll(en), bitte nach Klick auf [image] eintragen oder auswählen.

Note
Wollen Sie die Primary Variable gegen eine andere auswechseln - nicht einfach ändern - dann müssen Sie zuerst das Formelobjekt löschen.


•	Name
ist ein Kurzzeichen zu Statement und nur in der Variablentabelle (Data Access) editierbar. Es ist diejenige Variable, die nur einen Maschinenzyklus lang den logischen Wert 1 hat.

•	Statement
ist die Benennung der "Eingangs- oder Primary Variable". Schreiben Sie hier einen Text, der zeigt, wofür sie nötig ist.

•	Variable Usage
kann Input, Output oder Local Static sein.


Primary Variable | Name
Die "Eingangsvariable", deren Flanke(n) ausgewertet werden soll(en), muß vom Datentyp BOOL sein. Ihre Verwendung (USAGE) kann ein Input, Output oder Input/Output sein, d.h. es handelt sich um eine EMSR-Stelle. Sie kann aber auch interner Merker sein, also mit Local Static oder Local Temporary deklarierbar.
Sie können eine vorhandene Variable auswählen oder eine neue eintragen. Beachten Sie die richtige Bedienung der Symbole [image] und [image].


Import von Typen-PRAP und anderen

Bereits mit dem PRAP-Editor entworfene PRAP oder Funktionen aller Art können Sie importieren, indem einfach die beim Export entstandene Datei *_VAR.txt geöffnet wird, die anderen (*.prp und *.mtx und *_VAR_**.txt) werden automatisch mit verwendet. Dabei sind ** die internen Nummern von eingebetteten Funktionen.
Gehen Sie wie folgt vor:

 1.	Klick auf [image], wählen Sie die zu importierende Datei und öffnen sie (auch Doppelklick möglich). Das Lesen des Files erfolgt unmittelbar.
Sollten Sie die falsche geöffnet haben, dann einfach den Vorgang wiederholen.

 2.	Im Feld "NAME" finden Sie den Bezeichner des exportierten Bausteins vor. Sie können ihn ändern, falls erforderlich.

Note
Der Name eines Systembausteins ist nicht änderbar!

 3.	Im Feld "DESCRIPTION", also ein Kommentar, ist der Text aus dem exportierten Baustein zu lesen. Er kann hier geändert werden.

 4.	Klick auf OK beendet den Import.

Note
Überprüfen Sie eingebettete Funktionen wegen deren Wiederverwendbarkeit.

Sie können in der Tabelle die gelesenen Variablen erkennen. Im Fall eines Irrtums können Sie das Ganze durch Klick auf CANCEL ungeschehen machen.

Note
Alle System-Bausteine der Firma Siemens erhalten beim Import die Baustein-Nummer, also FB-, FC- oder SFC-Nummer original eingetragen. Andere Bausteine müssen nach dem Import noch ihre dem Projekt entsprechende Nummer eingetragen bekommen.
Derzeit gibt es in SPaS nur Siemens-Bausteine, die eine solche Ergänzung benötigen.


Export von Typen-PRAP und anderen

Einmal entworfene PRAP und andere Typen können für andere Konfigurationen, Ressourcen oder Projekte zur Verfügung gestellt werden, wenn sie exportiert werden. Dabei enstehen mindestens drei Dateien mit den Erweiterungen .prp, .mtx und .txt (genauer *_VAR.txt). Sorgen Sie dafür, daß keine der Dateien verändert wird, ansonsten ist kein Import möglich. Jede eingebettete Funktion, genauer: Jede mit einem FLAG (Prozeß- oder Operationsvariable) verbundene FORMULA (eine oder viele Funktionen) erhält ebenfalls eine Textdatei. Jede Formula-Datei ist erkennbar an dem Dateinamen *-VAR_**.txt, wobei ** die intern vergebene Formulanummer ist.
Sie müssen den Speicherort, also den Pfad und Dateinamen angeben. Angezeigt wird der Pfad, den Sie unter Shared Repository eingegeben haben.
Aber Sie können auch den Speicherort ändern. Klicken Sie auf [image], wählen Sie das gewünschte Verzeichnis und tragen den Filename ein.


Bitte Speicherort für exportierten Typ angeben.


Import einer Excel-Tabelle mit Teilprozeß-Variablen

Note
Der Import einer Variablentabelle ist grundsätzlich in eine Ressource, in ein Programm(Typ) und in abgeleitete Datentypen (DDT) möglich.
Es gibt (noch)KEINEN Export in eine Excelliste!
Legen Sie für die Ressource, jedes Programm und jeden DDT eine Variablenliste an, ansonsten haben Sie nur Zusatzarbeit mit dem Variablenhandling. Die Variablenlisten können in ein und derselben Datei, aber sollten in unterschiedlichen Blättern enthalten sein oder wenigstens in unterschiedlichen Zeilenbereichen.

Tip
Der Import mehrfach auftretender Bezeichner unter "NAME" erfolgt ohne weitere Kennzeichnung.Vermeiden Sie den Mehrfachimport durch Einklammern des Namens. Beispiel: "Motor ein" bei erstem Auftreten und "(Motor ein)" bei Wiederholungen. Praktisch ist es auch, bei Koppelvariablen den "Output" zu importieren und alle "Input" einzuklammern.
Änderungen an Variablen gegenüber dem Listeneintrag am besten im betreffenden Member, also PROGRAM oder RESOURCE, erledigen.
Änderungen am Statement nach Klick auf "View|Variables"

Hinweise zum Vorgehen: Im Laufe der Prozeßzerlegung erhalten Sie Teilprozesse und deren zugehörige Eingangs- und Ausgangs-Variablen als Namen bzw. Bezeichner oft sogar auch deren Anschlußadressen durch das Verdrahtungsprojekt, auch Busadressen sind damit gemeint. Als Beispiel diene die Liste zum Lehrbeispiel Lampen- und Stern-Dreieckschaltung: Liste nach PZG
Wenn Sie sich eine Exceltabelle anlegen können, dann brauchen Sie viele Handgriffe nur einmal zu tun und außerdem haben Sie eine "Variablensammlung" immer als Dokument dabei.
Die Zusammenstellung der Variablen für ein Programm darf jede Variable, d.h. jede Adresse nur einmal enthalten. Zwei Listenformen werden empfohlen,

•	zum einen die nach Teilprozessen orientierte Liste, in der die Variablen wie im PZG (siehe oben) sind,

•	zum anderen die nach Adressen orientierte Liste, in der die Variablen in einer z.B. "aufsteigenden" Adressen-Folge geordnet sind. In dieser Form könnte ein Verdrahtungsprogramm die Tabelle liefern.

Note
Beachten Sie die Schreibweise der Namen, Datentypen und Verwendung (Usage) Klicken Sie zu Ihrer Unterstützung auf die Stichworte.

Das nachfolgende Formblatt soll nun erläutert werden:

 1.	"Start Excel"
dient dazu, dieses Programm eigenständig zu starten, damit Sie Ihre Tabelle sichtbar und bearbeitbar machen können.

 2.	Im Feld "Completely Qualified Excel File"
wird der Ordner "Shared Repository" angezeigt. Sie müssen eventuell den Ordner wechseln, Ihre Variablen-Datei auswählen und öffnen.

 3.	Klick auf "Work Book"
Zeigt die Anzahl der Blätter an, die Sie in Excel unter "Extras|Optionen|Allgemein - Blätter in neuer Arbeitsmappe" angegeben haben. Wenn Sie das nicht getan haben, dann sind generell drei Blätter (Work sheets) angelegt.

 4.	"Work Sheet" so einstellen, daß Sie Ihre Variablentabelle importieren und nichts anderes der Exceldatei. Anschließend Klick auf "Work Sheet". Eine Anzeige folgt nur im Fehlerfall!

 5.	"Variable Definitions by Column Letters" müssen jetzt ausgefüllt werden, wobei Sie die Spalten Ihrer Tabelle eingeben. Sie erkennen die Freizügigkeit bezüglich der Spalten-Inhalte! Legen Sie also nach Ihrer Vorstellung die Tabelle an.

Tip
Falls Sie z.B. keine Initialwerte eintragen wollen, dann brauchen Sie diese Spalte nicht anzulegen. Geben Sie einen Buchstaben an, der außerhalb der Liste liegt, also z.B. "K"

Als Beispiel-Liste sehen Sie die zum Lehrbeispiel. Sie ist nach Instanzen geordnet, siehe Spalte F, "TP-Name".

 6.	Die "Row Nbr"
first und last dienen zum Bestimmen eines Listenausschnittes. Einstellen NICHT VERGESSEN!!
In der Beispiel-Liste ist first immer 2, damit die Titelzeile nicht gelesen werden kann.

 7.	Die Vorbereitung zum "Import"
geschieht durch Klick auf "Reading"

 8.	Klick auf "Check Import"
zeigt Ihnen im unteren Feld das Ergebnis, wobei die Daten durch Komma getrennt sind.
Leerzeilen enthalten nur Kommata. Beachten Sie den Text zur Beispieltabelle.

 9.	Klick auf "OK"
beendet die gesamte Aktion und importiert endgültig in PROGRAM bzw. RESOURCE.

 10.	Klick auf "Cancel" unterbindet den Import, daher können Sie jederzeit "Probe-Importe" durchführen.


Mit KLick auf [image] bitte Ihre Excel-Tabelle (name).xls auswählen!


Mit einem Klick auf "Work Book"wird Ihnen mitgeteilt, wieviel "Work Sheets" Ihre Variablen-Tabelle enthält. Im Feld neben "Work Sheet" die Nummer angeben , ab der die Variablentabelle gelesen werden soll.


Wählen Sie für jedes Feld den Spaltenbuchstaben gemäß Ihrer Tabelle!
Nicht enthaltene Spalten müssen nicht in der Liste angelegt werden, geben Sie einfach einen Buchstaben außerhalb der Liste an.
Als Hilfe betrachten Sie ein Beispiel: click here


Stellen Sie die erste und letzte zu übernehmende Zeile aus Ihrer Tabelle ein. Sie können die Zeilen-Nummer auch direkt in das Feld schreiben. Gleiche Zeilennummer bedeutet, nur diese eine Zeile zu importieren.


Nach Klick auf "Check Import" können Sie hier das Ergebnis der Importaktion sehen. Die Daten sind mit Komma getrennt. Gelesene Leerzeilen enthalten nur Kommata.


Excel-Liste, nach Teilprozessen geordnet

Beim Aufbau der Variablenliste ist zu beachten, daß Zeilen, in denen unter "Name" nichts eingetragen ist, oder der Name in Klammern steht, z.B. (I_AUF auf Zeile 12), nicht gelesen werden. Sie erscheinen als Leerzeile.
Damit folglich jede Variable nur einmal gelesen wird, sind die Namen der Eingangs- oder Koppelvariablen eingeklammert, die wiederholt auftreten.
Ausgangsvariable sind sowieso einmalig, es sei denn, Sie verwenden eine Ausgangs- auch als Eingangsvariable (z.B. bei Koppelungen), ansonsten liegt ein Entwurfsfehler vor.


Excel-Liste, nach Adressen geordnet

Beim Aufbau der Variablenliste ist zu beachten, daß Zeilen, in denen unter "Name" nichts eingetragen ist, nicht gelesen werden. Sie erscheinen als Leerzeile.


PRAP Drucken

Ein im Feld "Charts" dargestellter PRAP kann nach rechtem Mausklick und anschließendem Klick auf "Print" gedruckt werden.
Das Ausdrucken von Prozeßablaufplänen ist in der Version 1 noch etwas schwierig, weil die Druck-Grenzen auf dem Panel "Charts" noch nicht mit den wirklichen Grenzen übereinstimmen. Das macht sich besonders bei mehrseitigen PRAP bemerkbar. Dennoch ist am Ende das Ergebnis recht gut, wenn Sie etwas Geduld aufbringen.
Sie sollten wie folgt vorgehen:

 1.	Klicken Sie "Printer Select"
und entscheiden vor allem, ob Sie Hochformat oder Querformat drucken wollen. Danach Klick auf "OK".

 2.	Normalerweise sehen Sie nach dem OK auf dem Formblatt PRAP Print Preview linksseitig bei Hochformat ein ebensolches zunächst leeres Feld; bei Querformat entweder dasselbe oder ein "halbseitig" leeres Blatt.

 3.	Die Einstellung der Resolution zwischen 300 und maximalen Pixel/inch sollte bei 300 beginnen. Angezeigt wird die max.Pixel-Zahl des Druckers.
Ferner ist die Schriftgröße - Text Size - wichtig, weil sich danach die Größe der Operations und Conditions richtet.
Klicken Sie auf "Preview", eventuell auch mehrfach in kurzen Abständen, um einen Eindruck vom Druckbild zu erhalten.

 4.	Nur bei klar erkennbarer Strukur des PRAP sind die Einstellungen sinnvoll.

 5.	PRAP, die mehrere Seiten benötigen, müssen Sie so auf die Blätter verteilen, daß eine sinnvolle Trennung der Struktur erfolgt. Da die Darstellung der Seitengrenzen im Panel "Charts" noch mangelhaft ist, müssen Sie durch wiederholtes Verschieben der PRAP-Teile die günstigste Darstellung im Druckbild ermitteln.
Die Anzahl der Druckseiten ist nicht immer richtig, häufig wird eine Leerseite am Ende gedruckt.


Information und Beschreibung zur Funktion des PRAP

Allgemeines:
Die Felder sind alle editierbar. Allerdings erfolgt der Eintrag des PRAP-Namens, automatisch immer in die Zeile "Project" am Anfang. Die ersten vier Felder sind die sog. Auftragsdaten.
Bemerkungen zu den Feldern:
Das Feld "Project" beginnt mit dem Namen (Identifikation)des PRAP. Danach sollte der Projektname stehen, den Sie selbst eintragen.
Im Feld "Editor" wird der Name des Entwerfers, des Projektanten, erwartet, der den PRAP entwickelt hat.
"Order" bedeutet soviel wie Auftaggeber, schreiben Sie also nach Bedarf etwas Sinnvolles ein, weil der Auftraggeber für die Richtigkeit des PRAP mit haften sollte.
"Last Access" ist ein automatischer Eintrag.
"Description" sollte die wichtigsten Besonderheiten des PRAP enthalten. Dazu gehören Hinweise auf eingebettete Funktionen, Erläuterungen aller Besonderheiten, die einem bestimmten Zweck dienen. Auch die Lösung einer Aufgabenbeschreibung kann für den späteren Leser sehr hilfreich sein.
Handhabungshinweis:
Die sog. Auftragsdaten müssen Sie wenigstens einmal ausgefüllt haben. Wenn Sie nun einen anderen PRAP beschreiben wollen, dann werden diese Eintragungen genau von dem vorher geöffneten übernommen. Sie können natürlich Veränderungen vornehmen, falls erforderlich.

Note

 1.	"OK"-Klick speichert die Eintragungen, "Cancel"-Klick übernimmt keine Veränderungen.

 2.	UNBEDINGT nach "OK" die rechte Maustaste betätigen und "SAVE GRAPH" anklicken, erst jetzt werden die Eintragungen in der Datenbank gespeichert.


Der Inhalt ist dem Beispielprojekt entnommen.


Die Zeichenfolge, die den Bezeichner des Projektes darstellt, muß einmalig sein, bezogen auf das "Database Login". Der Projektname dient außerdem der Registrierung beim Betriebssystem des PC.


Nach dem Markieren z.B. mit Strg+C in die Zwischenablage bringen. Danach das Blatt "Login" durch Klick öffnen, Cursor in "Database Login" setzen und z.B. mit Str+V das Login eintragen.


Es existieren nur solche P-Variable, für die "NAME" eingetragen wurde!!


Zum Beispiel: Eine Operationsvariable "Beleuchtung einschalten" wird mit Haken markiert, also gilt dies in der zugehörigen Operation, sie soll "Anfang der Aktion" heißen. Die darauf folgende Operation soll "Fortsetzen der Aktion" heißen und die Beleuchtung soll eingeschaltet bleiben, dann wird auch in dieser Operation die Variable mit Haken markiert. Die Beleuchtung wird erst ausgeschaltet, wenn diese Operationsvariable nicht markiert in einer Folge- Operation erscheint. Und sie bleibt solange ausgeschaltet, bis in einer anderen Folge-Operation wieder der Haken im Kästchen erscheint. Das gleiche Verhalten gilt für das Ein- und Ausschalten von Timern und Countern, für die Ausführung einer Kopierfunktion (Copy) oder Arithmetik-Formel (Calculate). Dies entspricht der mit "Flag" erwähnten Eigenschaft der Variablen.


Ein Wechsel des Wertes ist nur von einer Operation zur ihr folgenden Operation möglich.
Der Wert bleibt von einer zur nächsten Operation erhalten, wenn die Markierung dieselbe ist (Haken oder nicht).


Ein Wechsel des Wertes ist nur von einer Operation zur ihr folgenden Operation möglich.
Der Wert bleibt von einer zur nächsten Operation erhalten, wenn die Markierung dieselbe ist (Haken oder nicht).


Falls Sie z.B. wegen großer Zählwerte keinen Zähler sondern lieber eine Addition mit 1 projektieren wollen, dann beginnen Sie mit E=0 (E=Ergebnis, z.B. mit INT als Datentyp). Formulieren Sie E := E + 1, dann wollen Sie mit jedem Erreichen der Operation, in der die Operationsvariable von 0 auf 1 wechselt, E um den Wert 1 erhöhen. Würden Sie "multiple" gewählt haben, erhöht sich E bei jedem SPS-Zyklus um 1! Also müssen Sie hier "single" wählen.


Die Standardfunktionen der Arithmetik sind in der IEC 61131-3 bezüglich Datentypen so gefordert, daß sie automatisch alle anderen auf den "größten" Datentyp anpassen. Falls also der Ergebnis-Datentyp REAL sein sollte und alle Eingänge z.B. INT, steht die Datentypwandlung INT->DINT->REAL automatisch im Compilat des Formelausdrucks.


Cursor auf obere Begrenzung, bis Cursorbild wechselt, linke Maustaste festhalten und Rand nach oben schieben.


Geben Sie hier an, welches der insgesamt vorhandenen Blätter übernommen werden soll. Danach Klick auf "Work Sheet", um mitgeteilt zu bekommen, falls die Nummer nicht existiert.


Die Größe des Bildes ist am kleinsten bei der maximalen Pixelzahl > 300, weil auf dem Panel "Charts" die Auflösung 300 ist.


Übersicht zu SPaS

Für den eiligen Nutzer:

 1.	Wichtige Hinweise zu verschiedenen Hilfe-Möglichkeiten wie ? und F1-Taste

 2.	Wichtige Empfehlungen zur Anwendung von SPaS

 3.	Anlegen eines neuen Projektes

 4.	Öffnen, Schließen und Löschen eines Projektes

 5.	Begriffe in SPaS

 6.	Wählbare Sprachen

Nutzbare Komponenten: SPaS-Manager PRAP-Editor Projekt-Editor Datenverwaltung PreCompiler DEBugging

S P a S - Software-Projektierungswerkzeug für automatische Steuerungen zur Erzeugung von Steuerungs-Software für SPS, Microcontroller und Soft-SPS

SPaS richtet sich terminologisch und systematisch nach der Norm DIN IEC 61131-3, wodurch aus konventioneller, bislang üblicher Sicht sich zuweilen andere Vorgehensweisen (siehe Entwurfsprozeß) ergeben. Die Norm wird hin und wieder zitiert, aber nicht erläutert, höchstens interpretiert. Ferner erfolgt die Prozeß-Zerlegung mit dem Ziel, den Vorstellungen der IEC 61499-1 möglichst nahe zu kommen. Deshalb gibt es in Erweiterung der Prozeß-Zerlegung die Funktions-Block-Darstellung als hilfreiche Unterstützung der Projektierung. SPaS verwaltet in seinem Manager derzeit folgende nutzbare Komponenten:

 1.	SPaS-Manager
Der SPaS-Manager ermöglicht den Zugang zu allen Tools, die im Folgenden aufgeführt sind. Aber er enthält auch die zwei Hauptfelder, links für den Projekt-Editor, rechts für den PRAP-Editor. Hier gibt es auch zusätzliche Funktionalitäten!

 2.	PRAP-Editor

•	Hiermit ist der technologisch orientierte Ablauf jeder Teilsteuerung zu entwerfen.

•	Eine schrittweise Anleitung an Beispielen ist im Editor enthalten.

•	Der Precompiler erzeugt für jeden im PRAP entworfen Steuerungsablauf einen Funktionsbaustein, kurz PRAP-FB, als FB-Type.

 3.	Funktionen-Editor

•	Eine Funktion enthält Berechnungen, deren Ergebnissse in jedem Bearbeitungs-Zyklus eines Programmes für darin enthaltene Teilsteuerungen neu zur Verfügung stehen.

•	Im betreffenden Programm erfolgt der Funktionsaufruf mit Zuweisung der aktuellen Parameter.

 4.	Projekt-Editor

•	Die Struktur des gesamten Steuerungs-Projektes ist damit zu entwerfen. Es besteht u.a. aus allen PRAP-FB und solchen, die nicht mit dem PRAP-Editor entworfen wurden (z.B. Regelungs-FB) und hier generell Fremd-FB genannt werden, die als ASCII-Bausteine vorliegen müssen.

•	Das Projekt kann aus mehreren Konfigurationen bestehen

•	Jede Konfiguration enthält mindestens eine Ressource

•	Jede Ressource enthält wenigstens eine Task, ein Typ-Programm und eine Programm-Instanz.

•	Ein Beispielprojekt ist im Projekt-Editor enthalten.

 5.	Pre-Compiler

•	Die Kurzform heißt PreCOM.

•	Für jede Ressource muß in eine der Wählbaren Sprachen das Projekt übersetzt werden. Der Precompiler ist grundsätzlich dafür ausgelegt, Quellcode zu liefern.
Die konventionelle Sprache ist derzeit STEP 7-AWL. Auch in C oder C++ kann PreCom übersetzen. Die Sprache gemäß DIN IEC 61131-3 ist derzeit ST.

 6.	Datenverwaltung in einer Interbase-Datenbank

•	Die mit dem PRAP-Editor entworfene funktionelle Variablen-Verarbeitung für jeden Teilprozeß wird in der Datenbank gehalten

•	Die Variablen einer Ressource(z.B. SPS) oder eines Programms stehen zentral in der Datenbank zur Verfügung

•	Die mit dem Projekt-Editor entworfene Automatisierungs-Programmstruktur ist in der Datenbank gespeichert

 7.	DEBugging - Lebendiger PRAP
Mit Hilfe dieses Tools ist es möglich, den laufenden Steuerungsprozeß zu verfolgen. Die Darstellung ist dabei der PRAP, der im Entwurfsablauf vom Teilprozeß (Instanz) genutzt wurde, also im Projekt enthalten ist.
Es ist auch möglich, eine PRAP-Instanz oder mehrere statisch schrittweise ohne SPS zu untersuchen.

 8.	Precompiler - PreCOM
Ein Steuerprogramm, von PreCOM erzeugt, ist ein Quellcode-Programm im Text-Format als Anweisungsliste für STEP 7, oder C- bzw. C++-Quellcode.
dieser muß folglich noch in den Maschinencode des betreffenden CPU übersetzt werden.
Eine obere Grenze der Anzahl der zu implementierenden PRAP- bzw. Fremd-Programme besteht im Prinzip nicht.


Wichtige Empfehlungen

Was Sie beherzigen sollten:
Sie haben sich vorgenommen, mit SPaS die Prozeß-Steuerungsprojekte zu bewältigen. Anstatt mit einer der üblichen SPS-Sprachen (Kontaktplan, Funktionsplan, Anweisungsliste oder Ablaufsprache) zu arbeiten, müssen Sie jetzt mit einer prozeßnahen Beschreibung, dem Prozeßablaufplan (PRAP), jeden Teilprozeß graphisch erfassen. Das bedeutet für Sie eine große Umstellung, weil Sie sich in erster Linie um die technologischen Zusammenhänge kümmern müssen, nicht wie bisher allein, sondern möglichst mit dem Prozeßtechnologen zusammen. Er bzw. sie kann Maschinenkonstrukteur sein oder Verfahrenstechnologe, oder auch Verwaltungsspezialist. In jedem Fall muß es eine Persönlichkeit sein, die den zu automatisierenden Prozeßablauf in allen Einzelheiten kennt. Legen Sie auf alle Fälle jegliche Gedanken ab, wo ein Merker angelegt oder gesetzt werden soll. Machen Sie sich keine Gedanken mehr um logische Ausdrücke wie UND und ODER oder irgendetwas speichern zu müssen.
Verlassen Sie sich darauf, daß das Compilat, z.B. eine Anweisungsliste oder C-Code, KEINE syntaktischen Fehler enthält, wenn Ihr Projekt keine Probleme beim Vorübersetzen macht.
ÄNDERN SIE NIEMALS in dem Compilat, Sie lösen damit Ihr Problem nicht!! Suchen Sie die Problemlösung immer durch Korrekturen in den PRAP oder in der Datenbank.
Falls Sie mit dem Vorgehensmodell in SPaS noch nicht vertraut sind, also welche Arbeits-Schritte der Reihe nach erfolgen sollten, dann finden Sie Hinweise im Thema Entwurfsprozeß. Die Datenverwaltung wird darin ebenfalls besprochen.
GRUNDSÄTZLICH MÜSSEN SIE EIN PROJEKT ANLEGEN, BEVOR SIE MIT DEM ENTWURF BEGINNEN!
Wenn Sie eine Anleitung benötigen, wie ein Projekt angelegt wird, finden Sie im Projekt-Editor unter "Neues Projekt anlegen" allgemeine Hinweise und schrittweise Erläuterungen zu einem Musterprojekt "Lampen- und Stern-Dreieck-Steuerung."
Im PRAP-Editor finden Sie Ausführungen zum PRAP selbst, zur Bedienung des Editors, und die drei PRAP des Beispiel-Projektes sind ausführlich behandelt.
Sie müssen unbedingt ein Projekt anlegen, bevor Sie einen PRAP entwerfen können, deshalb:

Dringender Hinweis vor jedem Beginn mit einem Projekt oder im Falle von Projekt-Veränderungen (Versionen):
Lesen Sie wenigstens den ersten Satz aus dem Thema im Buch Projekt-Editor: Neues Teil-Projekt anlegen.
Hinweise zu Hilfe-Texten


Sprachen in SPaS

Unter dem Begriff Sprache wird normalerweise unterschieden, ob in Kontaktplan, Funktionsbaustein, Anweisungsliste usw. programmiert wird. In SPaS wird gezielt ein Compilat erzeugt, das der gewählten Sprache entspricht, Structured Text gemäß IEC 61131-3, Step 7 AWL gemäß Siemens-Vorschrift oder "C" bzw. "C++" mit allen notwendigen Dateien wie nnn.h und nnn.c bzw. nnn.cpp.
Aber die Hersteller "sprechen keine einheitliche Sprache", das will heißen, daß sich die AWL von Hersteller zu Hersteller, ja sogar innerhalb der Produkte eines Herstellers(!) deutlich unterscheiden. Das ist der Grund, weshalb in SPaS der Begriff etwas anders aufgefaßt wird.
Sie können sich nun die Besonderheiten, soweit wir sie erwähnenswert gefunden haben, zu den wählbaren Sprachen ansehen:
STEP 5 (wird nicht unterstützt)
STEP 7 MICRO/WIN (S7-200)
STEP 7 (S7-300/400)
IL nach IEC 1131-3 / Concept (wird  nicht unterstützt)
ST nach IEC 1131-3
ST für PhoenixContact
C / C++


STEP 5

Diese Sprache wird nicht im Precompiler implementiert!


IL nach DIN IEC 61131-3

IL ist nicht im Precompiler implementiert! Es sind nur ST und ST für PhoenixContact vorhanden.


ST nach DIN EN 61131-3

Die Sprache "Strukurierter Text" (Structured Text) steht zur Verfügung. Es gibt derzeit eine spezielle Variante für einen bestimmten Hersteller: PhoenixContact. Für den reinen ST-Text gibt es keine eingetragenen Prozessoren.
Beachten Sie folgenden Hinweis:

Note
Wählen Sie die Zuweisung der Ausgangsvariablen ( Formal-Aktual-Parameter ) bei Bausteinaufrufen, wenn Sie gefragt werden:
Entweder innerhalb der Parameterliste mit dem "=>"-Operator
( ...<form. Parameter> => <akt. Parameter > ...)
oder außerhalb der Parameterliste durch
<akt. Parameter > := <Instanz >.<form. Parameter>

Im Sinne der Kompatibilität für alle Sprachen beachten Sie bitte:
Bei der Vergabe direkter Adressen, das Modulo-8-Verfahren wie bei Siemens für Bitadressen beibehalten, also bei 0.0 beginnen. %I, %Q ODER %M voranstellen nicht nötig.
Also z.B.:
USAGE = Address Input
ADDRESS = 2.5
Sie können auch %IX29 statt dessen eingeben, müssen aber aus 2.5 selbst 29 richtig errechnen. Zur Byte-Nummer 2 wird noch +1 addiert, mit 8 multipliziert und die Bit-Nummer zugezählt.
Grundsätzlich gelten die Festlegungen im Standard, und der Precompiler erzeugt ein dementsprechendes Produkt. Folglich werden alle Standard-Funktionen und -Funktionsbausteine erwartet.
Abweichungen gegenüber IEC 61131-3:

•	Teilprozess- bzw. Instanz- oder Funktionsaufrufe dürfen bei der Aktualparameter-Zuweisung auch mathematische Ausdrücke enthalten. In SPaS können nur Variable zugewiesen werden!

•	In eine Prozess-Organisations-Einheit PROGRAM kann keine Quell-Programmzeile eingetragen werden. Hier erfolgen ausschließlich Aufrufe von TP und Funktionen.


ST für PhoenixContact

Bitte beachten Sie die allgemeinen Ausführungen zu ST.
Viele Hersteller haben sich unter dem Dach der PLCopen auf ein gemeinsames Schema einer XML-Datei geeinigt. Auf der Basis von PC WorX ( Version 5.20 SP 1.34 als "Normativ" ) wurde die Ausgabe eines XML-File programmiert, das mit dem Klick auf "Save To File" erzeugt wird. Zusätzlich steht eine *.ST-Datei zur Verfügung, aus der der ST-Code ablesbar ist.
Projektgestaltung
Entwickeln Sie Ihr Steuerungsprojekt ohne besondere "Vorsichtsmaßnahmen", weil Besonderheiten durch Meldungen gewissermaßen eingefordert werden. Im folgenden erhalten Sie jedoch Hinweise, die befolgt werden sollten.
RESOURCE
Wählen Sie bitte die IDENTIFICATION anders als "STD_RES", weil dann die vorhandene Standard-Ressource nicht überschrieben wird.
Tragen Sie in das Feld "PROCESSOR" sowohl den Typ als auch die Bezeichnung des eigentlichen Prozessors ein.

Tip
. . . . . . .Beispiel: ILC 390 PN, ARM_L_40
Auf Abstände brauchen Sie nicht zu achten, aber unbedingt ZUERST die SPS-Bezeichnung und danach den Prozessor, und ein KOMMA muß zwischen die Angaben als Trennzeichen.

Falls Sie mehrere Programme unter der Ressource aufrufen, dann müssen Sie sich klar machen, welche Variablen allen gemeinsam zur Verfügung stehen müssen. Auf alle Fälle gehören die programm-übergreifenden Koppelvariablen dazu, die lokal in der Ressource zu deklarieren sind. Ebenso ist für die Initialisierung des Systems eine lokale Boolesche Variable einzuführen, z.B. InitVar.
Die Prozeßvariablen können Sie ebenfalls hier deklarieren, aber wenigstens alle in den Programmen gemeinsam erforderlichen Inputvariablen. Dabei sind Adressen anzugeben, die Sie bitte mit beliebigen Byte.Bit bzw. Byte eintragen, weil die wirkliche Adressierung bei PhoenixContact nicht projektierbar ist, sondern ausschließlich in PC WorX mit der "Prozessdatenzuordnung" bewerkstelligt werden muß. Oder es sind Onboard-Anschlüsse der CPU zuzuweisen, wobei das Funktionsarbeitsblatt zu öffnen ist und der Cursor auf die Variable zu stellen ist. Mit einm rechten Mausklick erhält man dann diese Möglichkeit.
TASK
Die Anzahl der Zeichen für die Identification ist auf sieben ( 7 ) beschränkt. Die Anzahl der Tasks darf 16 nicht überschreiten.
Da die PhoenixContact-Bezeichner der Tasks hier nicht zum Eintragen vorgesehen sind, sondern nur die Priorität - 0 bis 31 - und ein Wert für die Zykluszeit in Millisekunden oder die Adresse einer Variablen, gilt für
. . die TASK DEFAULT die Priorität 31, das andere Feld bleibt leer
. . die TASK WARMSTART die Priorität 0, und spg0 in das Feld Single/Interval
. . die TASK KALTSTART die Priorität 0, und spg1 in das Feld Single/Interval
. . TASK ...
Sie müssen für andere Tasks selbst auf eine sinnvolle Prioritäts-Zuordnung achten!
Prozeßablaufplan, FB-TYP
Die oben genannte Version von PC WorX erlaubt keine längeren Bezeichner für FB-Typen als 12, weil diese durch Instanzierung in der Typenspalte erscheinen, dort aber die Zeichenzahl beschränkt ist.
Temporäre Variable sind nicht verfügbar, also nur lokale benutzen.
Die Zustandsinitialisierung ist mit FirstRun als Input oder In_Out zu deklarieren. Weiteres siehe Initialisierung der Treilprozesse.
FUNCTION, FC-TYP
Funktionen dürfen keine Ausgangsvariable haben, also kann jede Funktion nur ihren einen Ergebniswert als Output liefern. Ferner muß immer wenigstens eine Inputvariable angelegt werden, lokale Variable sind natürlich deklarierbar. Die Zuweisung eines konstanten Wertes an den Funktionswert ist nicht möglich.
Für die Initialisierung des Automatisierungssystems erscheint es sinnvoll, sowohl eine Task Kaltstart als auch eine Task Warmstart zu projektieren. Die Initialisierungsfunktion heißt dann z.B. Init_FC := True_False;
PROGRAM
Die POE PROGRAM kann, wie die RESOURCE auch, Prozeßvariable aufnehmen. Dabei sind Adressen anzugeben, die Sie bitte mit beliebigen Byte.Bit bzw. Byte eintragen, weil die wirkliche Adressierung bei PhoenixContact nicht projektierbar ist sondern ausschließlich in PC WorX mit der "Prozessdatenzuordnung" oder z.B. Vergabe von Onboard-Adressen bewerkstelligt werden muß.
Vergessen Sie nicht, an das Ende aller Aufrufe noch einen Aufruf der Initialisierungsfunktion einzufügen, wobei Sie aber "false" als Aktualwert der Formalvariablen True_False zuweisen müssen. Der Funktionswert ist der in der Ressource hinterlegten Initialisierungsvariablen zuzuordnen.
Schließlich sei noch darauf hingewiesen, daß allen FirstRun in den Instanzen die in der Ressource angelegte Initialisierungsvariable zuzuweisen ist.
Import der XML-Datei in PC WorX

Import eines vollständigen Projektes

 1.	Legen Sie ein neues Projekt an und importieren Sie die XML-Datei, die nach Markierung der Ressource in SPaS und Klick auf "Save to File" im Repository abgespeichert wird.

 2.	Kopieren Sie alle Systemvariablen der STD_RES in Ihre projektierten Globalvariablen. Jetzt erst können Sie die STD_RES löschen!

 3.	Die Variablen der Programme in die Programm-Instanzen kopieren.

 4.	Nun löschen Sie bitte noch das Programm "Main", falls es nicht überschrieben wurde.

Import einzelner Funktionsbausteine/Funktionen

 1.	In SPaS markieren Sie den zum Import bestimmten FB, also Prap, bzw. FC, anschließend Klick auf "Save to File".

 2.	Importieren Sie in PC WorX die erzeugte XML-Datei, die den Namen des FB/FC trägt.

 3.	Überschreiben Sie den vorhandenen Baustein

Import einzelner Programme

 1.	In SPaS markieren Sie das zum Import bestimmte PROGRAM, anschließend Klick auf "Save to File".

 2.	Grundsätzlich enthält die XML-Datei alle zum Programm gehörigen FB un FC. Importieren Sie in PC WorX die erzeugte XML-Datei, die den Namen des PROGRAM trägt.

 3.	Nun werden Sie entscheiden müssen, welche Bausteine Sie überschreiben wollen. Nicht vergessen, die Variablen in der Instanz des Programms auf den neuen Stand bringen.

Damit können Sie beginnen, die Buskonfiguration und die Prozessdatenzuordnung in PC WorX zu bearbeiten.


Sprachen C und C++

C und C++ sind voll nutzbar.
Eingetragene Prozessoren für das Feld "PROCESSOR" im Member Resource gibt es noch nicht.
Im Sinne der Kompatibilität für alle Sprachen beachten Sie bitte: bei der Vergabe direkter Adressen, das Modulo-8-Verfahren wie bei Siemens für Bitadressen beizubehalten. KEINE E, A ODER M vorstellen! Also z.B.: USAGE = Address Input und ADDRESS = 2.5

Sie benötigen den Quellcode, die sog. "iec1131-templates" für

 1.	den azyklischen Programmaufruf mit Task-Priorität 0 und

 2.	Standard-Funktionsblöcke: TON, CTUD, R_EDGE, F_EDGE.

 3.	Bus-Schnittstellen für CAN oder ETHERNET
Andere Buskonzepte auf Anfrage

Fordern Sie den Quellcode an über www.pretschner.com

Note
Es ist vorgesehen, sowohl zyklische Tasks als auch Interrupt-Tasks bereitzustellen. Ein Termin ist dafür nicht nennbar.

Datentyp-Konvertierung
Es gelten im allgemeinen die Regeln der Datentyp-Wandlung. Allerdings gibt es keine Rundungsberechnung bei REAL_TO_DINT, da grundsätzlich nur die truncate function gilt.
Der Datentyp "BCD" ist vollkommen unbekannt, weshalb Sie selbst eine passende Umrechnung vorsehen müssen.


STEP 7 MICRO/WIN (S7-200)

RESOURCE
Die Ressourcen-Unterschiede zwischen den CPU 212 bis 214 und den CPU 221 bis 226 werden bezüglich verfügbarer Bereiche im Precompiler nur im "V"-Bereich der Variablen berücksichtigt, bei CPU 210 (auch PDS 210) der"M"-Bereich. Bitte tragen Sie deshalb im Member RESOURCE im Feld "PROCESSOR" auch die Versionsnummer ein, ansonsten wird nur der kleinste Variablenbereich verwendet.
Beispiel: CPU 224 V2.0 verwaltet bis VB8191. Fehlt die Version, dann bis VB5119.
Genaueres hierzu:V- und M-Variable
PRAP und FUNCTION
heißen Sub-Routine, "SBR<nr>". Die "nr" kann von 0 bis 63 gewählt werden. Jede Sub-Routine darf Instanzen, also Teilprozesse, aufrufen. Es sind in einem Projekt insgesamt 64 Aufrufe erlaubt.
Die Zustandsinitialisierung im PRAP ist mit FirstRun als Input, Input/Output oder AddressMemory(CPU 21x) zu deklarieren. Weiteres siehe Initialisierung der Treilprozesse. FORMALPARAMETER
sind nur in der Reihe CPU 22... zulässig, dürfen KEINE ANFANGSWERTE haben, und dann auch nur 16 pro Sub-Routine.
STATISCHER LAKOLDATENBEREICH
ist in S7-200 nicht enthalten, es gibt einen "Local Temporary"-Bereich L0.0 bis L59.7 in der Reihe CPU 22x. Deshalb ordnet SPaS Variable mit USAGE "Local Static" automatisch V-Adressen zu, ebenso den internen Zustands- und Operationsvariablen.
In der Reihe CPU 21x können ausschließlich direkt adressierte Variablen genutzt werden, weil auch kein temporärer Bereich existiert.
VERGLEICHE
sind immer in der Folge Istwert - Vergleichsfunktion - Sollwert zu schreiben.
Es wurde ein "kleinster gemeinsamer Nenner" bezüglich der Operationen eingesetzt, soweit das sinnvoll ist. Andererseits erfolgt das Umsetzen der Operationen ohne Rücksicht darauf, ob z.B. dies zwar in der CPU 224, aber nicht in der CPU 212 realisierbar ist. Sie als Programmierer müssen also entscheiden, welche CPU wofür geeignet ist. Aber die CPU in der Ressource angeben lohnt sich, weil nur dann auch nach Unterschieden beurteilt werden kann.
Weitere Themen zu S7-200:
Import des Compilates in STEP 7 Micro/Win
V- und M-Variable
Zeitbausteine und ihre Taktzeiten


Import des Compilates in STEP 7 Micro/Win

IMPORT des Compilates in STEP 7-Micro

 1.	Neues Projekt anlegen und einen Ordner dafür bereithalten für "speichern unter"

 2.	NUR BEI CPU 22..:

•	Projektknoten "Symboltabelle" öffnen, Doppelklick auf "Anwender 1". Die leere Tabelle ist geöffnet.
Jetzt mit WORDPAD die Textdatei aus dem Compilat (<Resourcenname>.txt) öffnen. Alle Leerzeilen löschen AUßER die nach der letzten Textzeile, weil sonst die letzte Textzeile NICHT importiert wird. Danach "Alles markieren" (Strg+A oder Ctrl+A) und kopieren (Strg+C oder Ctrl+C).

•	Zurück zu STEP 7-Micro: Mauszeiger auf erstes Tabellenfeld führen, rechte Taste betätigen und "Einfügen" auswählen. DANACH IST DIE GESAMTE TABELLE ZU ERKENNEN.

 3.	Mauszeiger auf Projektknoten "Programmbaustein" führen, rechte Maustaste betätigen und "Impotieren..." auswählen. Die Frage bezüglich speichern verneinen und anschließend die Datei <Resourcenname>.awl "öffnen".

 4.	Nach Ende des erfolgreichen Importes kann alles übersetzt, und das Projekt mit "Datei|Speichern unter" in einem vorbereiteten Ordner abgelegt werden.

BEMERKUNGEN zu der Reihe CPU 21..:

•	Auf das Erzeugen einer Symbolliste wird verzichtet, weil Sie dann gezwungen wären, jedem Speicherplatz nur je ein Symbol zuordnen zu dürfen. Die direkte Adressierung hat den Vorteil, einer Adresse beliebig viele Symbole zuweisen zu dürfen.

•	Sie müssen für jeden Teilprozeß einen PRAP einführen, weil es keine Typ-Bausteine gibt! Nutzen Sie deshalb die Möglichkeit des PRAP-Exports und -Imports.


V- und M-Variable

Außer der CPU 210, die nur M-Speicher hat, verfügen alle CPU der S7-200 über einen reativ großen V-Speicherbereich und einen geringeren M-Speicherbereich.
Die automatische Zuordnung der Variablen mit USAGE = Local Static und Local Temporary, zu denen auch Zustands- und Operationen-Bit gehören, erfolgt generell aus dem V-Bereich. Der M-Bereich ist für Merker vorgesehen, die der Projektant extra einsetzen muß. Damit ist folgendes gemeint:
Jede direkt adressierte Variable erhält entweder ein USAGE Address Input oder Address Output oder Address Memory. Im Fall Address Memory erfolgt

•	automatisch in Verbindung mit dem Datentyp die Zuweisung des Präfix Vx, wenn dies nicht im Adreßfeld steht.
Beispiel:
Im Adreßfeld eingetragen "12", Datentyp "INT" gewählt. Ergebnis der AWL-Ausgabe: VW12 (hier ist x=W)

•	die von Hand angegebene Zeichenfolge aus dem Adreßfeld zur Ausgabe. Falls dort z.B. MB12 eingetragen wurde, ist das Ergebnis MB12. Natürlich wird überprüft, ob der angegebene Datentyp mit B kompatibel ist, und nur M sowie V gehören zu Address Memory. Ein falscher Buchstabe führt zur Fehlermeldung.

•	CPU 2xx und ihre Speicherbereiche:
CPU 210________M0.0 bis M5.7
CPU 212________V0.0 bis V1023.7
CPU 214________V0.0 bis V4095.7
CPU 215 und
CPU 216________V0.0 bis V5119.7
CPU 221 und
CPU 222________V0.0 bis V2047.7
CPU 224, V1.____V0.0 bis V5119.7
CPU 224, V2.____V0.0 bis V8191.7
CPU 224, XP____V0.0 bis V10239.7
CPU 226, V1.____V0.0 bis V5119.7
CPU 226, V2.____V0.0 bis V10239.7
CPU 226, XM____V0.0 bis V10239.7


Zeitbausteine und ihre Taktzeiten bei S7-200

TIMER
werden nur mit Einschaltverzögerung programmiert, also mit dem Standard-Funktionsblock (Data Type) TON, daher dürfen auch nur die so funktionierenden Timer-Nummern verwendet werden. Falls Sie eine Nummer außerhalb dieses Bereiches angeben, z.B. T0, dann erfolgt eine Fehlermeldung.
Grundlagen zu Zeitbausteinen: TIMER, Zeitbausteine allgemein
CPU 2xy
210.....keine TIMER
212..................T32... : ..Takt=1ms
...................T33..T36 : ..Takt=10ms
...................T37..T63 : ..Takt=100ms
214..............T32,T96 : ..Takt=1ms
.....................T33..T36,
.....................T92..T95,
.....................T97..T100 : ..Takt=10ms
.....................T37..T63,
....................T101..T127 : ..Takt=100ms
215..226..........T32,T96 : ..Takt=1ms
.......................T33..T36,
.......................T97..T100 : ..Takt=10ms
.......................T37..T63,
......................T101..T255 : ..Takt=100ms

Die Timernummern T32 bis T255 sind als Eintrag in das Adreßfeld geeignet, und USAGE ist mit ADDRESS MEMORY zu wählen. Der Datentyp ist für alle gleich "TON". In SPaS gibt es bekanntlich nur den Typ Einschaltverzögerung, mit dem im Rahmen der PRAP-Struktur alle Zeitfunktionen darstellbar sind.
Konstante Zeitwerte (USAGE = Constant) der TIMER bei PT sind normal mit Datentyp TIME anzugeben, z.B. Eintrag im Feld "Initial Value" = 3min 5s. In der AWL finden Sie als Vorgabewert die Anzahl der Takte (Zählwert), die für den eingesetzten TIMER an Hand dessen Nummer automatisch berechnet wurden. Der Höchstwert des Zählwertes ist immer 32767.
Veränderliche Zeitwerte der TIMER bei PT sind ebenfalls als Zeitwert anzugeben mit USAGE = TIME. Sie können den Wert mit USAGE "Local Static" oder auch "Input" übergeben. Auch die Angabe einer Adresse ist erlaubt, dann mit "Address Input" oder "Address Memory".
Wollen Sie einen Zählwert, den Sie selbst, bezogen auf den TIMER und dessen Nummer, errechnen müssen, als Sollwert eübergeben, dann müssen Sie INT als Datentyp wählen.
Zeitwert-Ausgabe (ET) kann ebenfalls genutzt werden, um z.B. mittels Vergleich ein Ereignis bei einer bestimmten Zwischenzeit einzuleiten. Wählen Sie den Vergleichswert als Zeit, also Datentyp TIME. Die Umrechnung wird wie bei PT automatisch vorgenommen.


STEP 7 (S7-300/400)

Es werden nur Ressourcen-Unterschiede zwischen der 300er und der 400er Serie grob überprüft. Der Programmierer muß möglichst selbst an die Beschränkung der Ressourcen bei Anwendung der 300er Serie denken. Er wird aber auf Überschreitungen der Reihe 313 aufmerksam gemacht, jedoch nicht der CPU 312 und CPU 614.
Eingetragene Prozessoren und die Merkerbereiche:
CPU 312: M 0.0 bis M 127.7
CPU 313 usw.: M 0.0 bis M 255.7
CPU 400 usw.: M 0.0 bis M 65535.7
CPU 614 ohne Kontrolle des Merkerbereiches

•	Nicht erfaßt werden in SPaS alle Bereichsgrenzen, die mit Herstellen des Maschinencodes zusammenhängen. Die OB1, DB, FB und FC können nur 16K bei den CPU 31x, aber 64K der 400-er Reihe aufnehmen.

•	Verwenden Sie vorwiegend für jede Instanz einen Datenbaustein.

•	Falls der Multiinstanz-Datenbaustein eines PROGRAMs "überläuft", müssen Sie ein weiteres Programm in das Projekt einfügen und dort hinein Teile des ersten verschieben. Oder Sie führen Einzel-Instanzdatenbausteine ein.

•	Bitte achten Sie darauf, daß alle Symbole für FB-Bezeichner oder deren Instanzen, sowie Variablennamen deutlich unter 25 Zeichen Länge bleiben. Sie dürfen NICHT mit einem Unterstrich enden! Beachten Sie die aktuelle Namenskonvention.

•	Wenn Sie direkt adressierte Variablen verwenden wollen, dürfen Sie dies tun, d.h. Sie können mit Unikaten arbeiten.

•	Peripherie-Adressen (PEW, PAW usw.), wie sie bei der Nutzung von Analog-Digital-Wandlern oder umgekehrt erforderlich sind, können im "lebendigen PRAP" (Online.exe) nicht angezeigt werden. Deshalb kann es sinnvoll sein, ein PEW z.B. auf ein MW zu kopieren.

Folgende Step-7-Themen sind erreichbar:
Step 7: Projekt
Organisationsbausteine
Datenbausteine
Wie der OB 100 eingebaut werden kann
Zeit- und Zählglieder, Schieben, Datentypwandlung
Systemfunktionen
FUNCTIONs
Das Ergebnis und wie es gespeichert wird
Inbetriebnahme mit OnlineViewer


STEP7-Projekt

Ein STEP7-Projekt beinhaltet immer ...

 1.	wenigstens eine Ressource mit einer konkreten CPU, z.B. CPU 315-2DP
und wenigstens einer Hauptprogramm-Task, dem OB1, und einer weiteren Startprogramm-Task, dem OB100 oder auch zusätzlich OB101. Tragen Sie Priorität und, wenn nötig, die Standard-Zykluszeit oder die Interruptadresse ein. Z.B. für die Nutzung des OB35 tragen Sie Priorität 12 und 100ms ein. Die "Hilfe" zeigt Ihnen eine Tabelle.

 2.	wenigstens einen (Haupt-)Programm-Typ, der in einem FB eingetragen wird, dessen Nummer Sie bitte angeben müssen.

Tip
Sie dürfen anstelle FB auch FC wählen, dann muß jede Instanz einen DB haben!

Dem Programm-Typ sind alle Instanz-Aufrufe nachzuordnen, denen Sie Datenbausteine zuordnen können oder keine. Auch UDT-Variable und Aufrufe von FUNCTIONs können eingefügt werden.
Den Abschluß der Aufrufe bildet eine Programm-Instanz, die dem (Haupt-)Programm-Typ zugeordnet wird. Und es muß diejenige Task, die den OB1 enthält, gewählt werden. Schließlich muß ein Datenbaustein angegeben werden, der Instanz-DB:
Er ist eine Multiinstanz, wenn die FB-Instanzen keine DB haben.

Note
Einwandfreies Nachladen geänderter Instanzen bei online laufender CPU (Schalterstellung auf "RUN-P") ist nur bei Einzelinstanzen möglich!


Die Organisationsbausteine (OB)

 Related Topics

Step 7 stellt mit seinem Betriebssystem in der CPU verschiedene OB zur Verfügung, mit denen zeitzyklisch (OB 30 bis 37) oder prozess-spezifisch als Interrupt (OB40 bis 47) Programme aufgerufen werden können.
Für den azyklischen Betrieb steht der OB1 zur Verfügung, der die ihm zugewiesenen Programme aufruft, sobald sowohl die interne Datenverarbeitung als auch die ihm zugewiesenen Programme abgearbeitet sind.
Start-OB dienen der Initialisierung nach einer Unterbrechung des Betriebes. Sie werden vor allen anderen OB vom Betriebssystem gestartet und dauern nur einen CPU-Zyklus.

Note
Sehen Sie sich im STEP-7-Manager die Werte für die Priorität, die Zeitwerte der Intervalle und Adressvergabe für prozessabhängige Aufrufe an und wie mit den OB verfahren werden muß. Für OB 100, 101 und 102 gibt es noch ein Hilfsprogramm zu schreiben.
Die OB40 bis 47 sind NOCH NICHT IN SPaS BETRIEBSFÄHIG!!!

Eine Schnellinformation erhalten Sie hier: click here


Anlaufbausteine OB 100, 101 und 102

Es gibt zwei Möglichkeiten:
Entweder sie nutzen die allgemeine Initialisierung oder
Sie verwenden nachfolgendes "Rezept":

 1.	Fügen Sie im Step7-Manager in die Bausteine Ihres Projektes den OB100 ein und programmieren Sie CALL FC0.
Natürlich können Sie eine beliebige FC-Nr. wählen.

 2.	Editieren Sie mit einem einfachen Textprogramm, z.B. WordPad, den FC0 für eine

•	Hauptprogramm-Multiinstanz:
FUNCTION FC0 : VOID
BEGIN
SET;
= 'Multi-Instanz-Name'.'Instanz-Name'.firstRUN;
= 'Multi-Instanz-Name'.'nächster Instanz-Name'.firstRUN;
= ... alle Instanz-Namen'.firstRUN;
 ...
END_FUNCTION

•	Hauptprogramm-Einzelinstanz:
FUNCTION FC0 : VOID
BEGIN
SET;
= 'Instanz-Name'.firstRUN;
= 'nächster Instanz-Name'.firstRUN;
= ... alle Instanz-Namen' .firstRUN;
 ...
END_FUNCTION

 3.	Speichern Sie diese Datei unter 'Bezeichner'.AWL ab, damit Ihnen ein Import (Einfügen | Externe Quelle) möglich ist.

 4.	Entweder:
Kopieren Sie den jeweils zur Hauptprogramm-Instanz passenden Programmtext in die vom Precompiler hergestellte 'Bezeichner'.AWL am Ende als letzten Eintrag. Danach dann übersetzen.
Oder:
Importieren Sie diese Datei in Step 7 zusätzlich zur Programmdatei. Dann aber immer als letzte übersetzen, damit der Step7-Compiler die gültigen Adressen einsetzen kann!

Die Bezeichner in ' .. ' lesen Sie aus Ihrem Projekt ab. Alles andere einfach abschreiben.


S7-Datenbausteine

In Step 7 dienen Datenbausteine zur Aufnahme von Daten zu den Variablen, die zu einem Funktionsbaustein gehören. Eine besondere Rolle spielt dabei der Instanzdatenbaustein, der als Datenbaustein einer Instanz eines Funktionsbausteins zugewiesen wird.
In SPaS gibt es diese Unterscheidungsmöglichkeit nicht ohne weiteres, weil die Projektgestaltung universal sein muss. Deshalb gilt eine Grundsatzregel:
Ein PROGRAM kann einem Funktionsbaustein oder einer Funktion zugeschrieben werden. Zu einer Funktion gehört kein Datenbaustein! Dann müssen alle im PROGRAM aufgerufenen Instanzen je einen Datenbaustein zugeordnet bekommen.
Verwenden Sie einen Funktionsbaustein als die Daten verarbeitende Struktur, dann müssen Sie der PROGRAM INSTANCE unbedingt einen Datenbaustein zuweisen, der Instanz-Datanbaustein heißt. Hierin werden die Variablen, die Sie im PROGRAM deklarieren, gespeichert.
Siehe auch PROGRAM bearbeiten.
Öffnen von Datenbausteinen siehe AUF DB...
UDT, die sie unter dem Begriff Derivated Data Types, DDT, anlegen, erhalten zu jeder "Instanz", also einer konkreten Anwendung des Types (Variable des UDT-Typs), einen Datenbaustein. Hier dürfen keine direkt adressierte Eingangs- und Ausgangsvariablen eingetragen werden.
Siehe auch Datenstrukturen
Die RESOURCE kann ebenfalls Variablen aufnehmen, so genannte globale Variablen, auf die alle zur Ressource gehörenden Member zugreifen dürfen. ABER hierzu gibt es KEINE Instanz! Der Datenbaustein nimmt keine direkt adressierten Eingangs- und Ausgangsvariablen auf, nur direkt adressierte Variable im RAM! Siehe auch Ressource einfügen und bearbeiten.


Verschiedene Standard-Funktionen und -Funktionsbausteine

Zeitglieder sind wie bei STEP 5 konzipiert. Im PRAP-TYP sind sie bei "Variable Usage" als INPUT zu deklarieren, der Timer ist dann als formale Größe bekannt mit seinem Namen. Die aktuellen Timer, d.h. die Nummern, sind in den Instanzen zu übergeben.
Falls erforderlich, dürfen auch Timer direkt adressiert verwendet werden, sie sind dann in den Instanzen nicht mehr änderbar! Die aktuale Größe, z.B. T12, ist als Adresse zu betrachten, "Variable Usage" muß dann als ADDRESS MEMORY deklariert werden.
Als Datentyp, eigentlich Standard-Funktionsbaustein-Typ, gilt grundsätzlich "TON" und darf nicht verändert werden!
Eingegebene Soll-Zeitwerte werden automatisch mit dem Einschalten des Timers geladen, sofern Sie einen konstanten Wert angeben. Der Datentyp ist immer "TIME".

Note
Ist der Soll-Zeitwert irgendwie veränderlich und daher über Variablenzuweisung für den Timer als Typfunktion verfügbar, müssen Sie eine FUNCTION FC40, TIM_S5TI, aus der Sammlung der Systemfunktionen(siehe auch Bibliotheks-Funktionen) in das Projekt einfügen. Der FC40-Aufruf wird graphisch sichtbar unter dem PRAP-Member automatisch in das Projekt eingefügt. Keine Aktualparameter zuordnen!! SPAS setzt automatisch den "richtigen" Aufruf in den Quellcode.

Der Timer-Ausgang Q wechselt seinen Wert bei Erreichen des Sollwertes. Falls der Ausgang nicht benötigt wird, braucht er nicht projektiert zu werden.

Zählglieder sind vorwärts oder rückwärts zählend oder für beides im PRAP-TYP projektierbar. Es können nur positive Werte von 0 bis 999 gezählt werden. Geben Sie für Zählwerte als Datentyp "INT" an.
Der Zähler-Ausgang Q = 0/1 hängt vom inneren Zählerwert ab. Es ist daher nur möglich, rückwärts gezählte Ereignisse über Q zu erfassen: Sobald der Zähler-Inhalt Null ist, wechselt der Q-Wert. Reine Vorwärtszähler geben über Q folglich nicht den erreichten Sollwert an!
Natürlich ist die Sollzahl mit dem Einschalten des Zählers zu laden (wird automatisch erledigt).
Zählglieder (formale Zähler) bei "Variable Usage" mit "INPUT" deklarieren. In den Instanzen sind die aktuellen Zähler zuzuweisen. Festgelegte Counter, z.B. Z12, sind als Adresse zu betrachten und in das Feld ADDRESS einzutragen, und "VARIABLE USAGE" ist ADDRESS MEMORY.
Der "DATA TYPE" = CTUD gilt einheitlich. Der Precompiler ermittelt, ob nur vorwärts oder nur rückwärts gezählt wird und schreibt automatisch den richtigen Typ in das Compilat.

Datentyp-Wandel ist wie folgt möglich:

•	WORD_BCD_TO_INT und DWORD_BCD_TO_DINT

•	INT_TO_BCD_WORD und DINT_TO_BCD_DWORD

•	automatisch:
SINT-->INT-->DINT-->REAL

•	automatisch:
REAL-->DINT mit RND (round)

•	REAL_TO DINT(variable name) mit RND

•	oder TRUNC

Bit-Schiebe-Operationen
benötigen zwei Daten, die Variable - den Operanden - und die Anzahl der zu schiebenden Bit.
Der Operand darf WORD oder INT bzw. DWORD oder DINT als Datentyp haben, die Anzahl BYTE oder SINT. Nur eine positive Anzahl ist zulässig. Denken Sie auch daran, daß die Anzahl höchtens 16 bzw. 32 sein darf.
Indirekte Adressierung und Datenbaustein öffnen
siehe im Text zu Adressen und Pointer.


Functions - Funktionen

Funktionen erhalten in Step 7 ebenso wie Funktionsbausteine Nummern. Die Anzahl ist von der CPU abhängig. Es sind alle Formelausdrücke zugelassen, für USAGE sind INPUT, OUTPUT, IN_OUT und Local Static zugelassen.
Jede Funktion verbindet gemäß IEC 61131-3 mit ihrem Namen auch ein Ergebnis. Dieses Ergebnis wird automatisch mit RET_VAL (Return-Value, Rückgabe-Wert) in die AWL geschrieben. Der Datentyp, den Sie dem Funktionsnamen zugwiesen haben, wird automatisch hinter die FUNCTION geschrieben. Die Besonderheit bei STEP 7 liegt darin, daß es den TYP "VOID" gibt, den Sie nicht benutzen dürfen!


Bibliotheks-Funktionen

Es sind zur Zeit die folgenden Funktionen getestet worden:

•	FC1 / DP SEND,

•	FC2 / DP RECEIVE,

•	FC40 / IEC Time to S5 Time

•	SFC14 /Read Consistent Data of a Standard DP Slave

•	SFC15 /Write Consistent Data to a Standard DP Slave

•	SFC58 / Write Data Record und

•	SFC59 / Read a Data Record

Unter der Ressource die [image] -Typen einfügen, die eingetragenene FC- bzw. SFC-Nummer muß mit der oben angegebenen jeweils übereinstimmen.
Funktions-Aufrufe außer FC40 unter PROGRAMs als Member einfügen, niemals jedoch unter FB-aufrufende oder FC-aufrufende Bausteine, da dort der Eintrag automatisch erfolgt.

Note
Alle Bibliotheksbausteine müssen vor dem Übersetzen mit dem S7 Manager aus der Bibliothek in das Verzeichnis "S7-Programm | Bausteine" kopiert werden!

Aktualparameter:
Adressenangaben und Sonderfunktionen wie AUF DBxx stets als USAGE = Constant in das Feld INIT VALUE eintragen. Hexadezimale Adressen mit Date Type = WORD (auch BYTE, DWORD) immer dezimal eintragen, also z.B. nicht "W#16#64" sondern "100". Der Precompiler trägt dann hexadezimal in das Compilat ein.


Adressen und Pointer als konstante Größe

Grundsätzlich sind Adreß-Zuweisungen bei Aktualparametern an eine Variable als Symbol gebunden. Es gibt jedoch verschiedentlich Probleme mit der S7-Siemens-Software, weil in der Symbolliste nicht alle Größen erscheinen dürfen. Deshalb muß in solchen Fällen die Adresse als Konstante dem Symbol zugewiesen werden. Nur in STEP 7 ist dies möglich, weil es keine Deklaration der Konstanten gibt, wie z.B. in der Sprache C.
Dann erfolgt im Compilat der Eintrag des Initialwertes. In der Abbildung [image] ist ein Beispiel der Adressenzuweisung für den Profibusbetrieb gezeigt.

Note
Verwenden Sie stets den Datentyp "ANY" beim Eintrag von Adressen und Pointern in das Feld "INITIAL VALUE".

Beispiele:
NAME: Pointer_8_7
INITIAL VALUE: P#8.7

NAME: Memo
INITIAL VALUE: MW[MD2]

NAME: AR1
INITIAL VALUE: [AR1, P#1.1]

AUF und LAR
Zum Öffenen eines Datenbausteins MÜSSEN SIE in eine eingebettete Funktion schreiben:
AUF_DBnn();(nn steht für eine Nummer) Die KLAMMERN sind PFLICHT
Die Eintragung in die Access Table dazu:
NAME: AUF_DBnn oder auch AUFDBnn (Beispiel).
INITIAL VALUE: AUF DBnn oder AUF DB-Name (Syntax Step 7 hier zwingend erforderlich)

Ebenso sind die LAR zu behandeln.
Eingebettete Funktion: LAR_1(); Die KLAMMERN sind PFLICHT
NAME: LAR_1 oder LAR1 (Beispiel)
INITIAL VALUE: LAR1 (Syntax Step 7 hier zwingend erforderlich)


Import des Compilates in STEP 7

Das Ergebnis des Compilierens - das Compilat - sehen Sie nach Klick auf "Show Compilat" im Projekt-Menue. Ein Klick auf "Save to file" erzeugt drei Dateien, die als Name die Identifikation der markierten Ressource erhalten:
1. Die Anweisungsliste mit Extension "[Ressource].AWL" und
2. Die Symboltabelle mit Extension "[Ressource].SDF"
3. Das Online-Programm mit Extension "[Ressource].ONL"

Import von AWL und Symboltabelle in den Simatic-Manager für STEP 7
Der SIMATIC-Manger gewährleistet den Import der AWL- und SDF-Dateien, so daß Sie keine Probleme beim Implementieren des Kompilates in eine S7 haben. Die AWL können Sie in den Ordner "Quellen" eines S7-Programms(..) einfügen. Markieren Sie S7-Programm: Klick auf "Einfügen" und "Externe Quelle"
Die sdf - Symboldatei - gehört zum S7-Programm(..) wie die AWL und muß vor dem Compilieren der AWL importiert werden. Markieren Sie wieder S7-Programm(..): Klick auf "Einfügen" und "Symboltabelle"

Note
Falls Sie Zeitwerte in Instanzen einem Timer übergeben, beachten Sie bitte, den Eintrag "TIM_S5TI" zusätzlich in die Symboltabelle selbst durchzuführen, wobei die Adresse "FC40" lautet.


Der lebendige PRAP - OnlineViewer

Das "Online-Programm" dient zur Darstellung des "lebendigen PRAP", d.h. mit dem Arbeiten der SPS kann über deren MPI-Verbindung am Bildschirm der aktuelle Stand des Teilprozesses angezeigt werden. Leider ist die Datenübertragung zur Zeit nur für langsame Steuerungsprozesse geeignet. An einer Profibus-Übertragung der Daten wird gearbeitet.


Entwurfsprozeß

Sie werden mit dem Vorgehensmodell in SPAS bekannt gemacht und hoffentlich auch bald vertraut sein.
Bitte lesen Sie die aufgeführten Themen, damit das nachfolgende Schema verständlich wird:

•	Grundlagen und Zusammenhänge: Binäre Prozeßanalyse

•	Ein nützliches Hilfswerkzeug für den Anfang: Prozeß-Ablauf-Netz

•	Eine notwendige Vorarbeit zum Automatisierungsprojekt: Prozeßzerlegung

•	Schlichtweg DAS BESCHREIBUNGSMITTEL für jeden (Teil-)Steuerungsprozeß: Prozeß-Ablauf-Plan

•	Das Variablen-Handling, die Datenverwaltung: Daten-Bank, Datenzugriff, Variablentabelle

Danach oder dabei ist wichtig zu wissen, wie der Prozeß und die zugehörige Steuerung betrachtet werden, dies erfahren Sie durch das Informationsflußmodell.
Das Prozeß-Steuerungsprojekt schließt alle Teilprozesse ein und beschreibt die "Organisation" des Steuerungsablaufes. Dazu gehören Entscheidungen, welche Teilprozesse in welche Steuereinheit (z.B. SPS) zu implementieren sind und in welcher Reihenfolge sie aufgrufen werden sollen. Dies alles enthält ein Projektbaum, der mit dem Projekt-Editor gestaltet wird. Dies ist das "Automatisierungs-Projekt"-Modell. Im Projekt-Editor finden Sie auch (ein Beispiel-Projekt).


Binäre Prozeßanalyse

Die Erarbeitung einer Automatisierungskonzeption ist ohne eine fehlerfrei bzw. fehlerarm und systematisch formulierte Aufgabenstellung nicht sinnvoll. Die Binäre Prozeßanalyse stellt drei graphische Beschreibungsmittel zur Verfügung, das Prozeßablaufnetz, den Prozeßzerlegungsgraphen und den Prozeßablaufplan.
Unter der Methode Binäre Prozeßanalyse ist zu verstehen, daß die Steuerung eines technologischen Prozesses, einschließlich regelungstechnischer Komponenten zum Stabilisieren von Prozeßgrößen, in sogenannten Prozeß-Schritten erfolgt. Jeder solcher Prozeßschritt ist ein technologisch begründeter Teil des zu steuernden Prozesses - besser: Prozeß-Abschnittes, der je nach Prozeßablauf durchzuführen ist oder nicht.
Diese Zweiwertigkeit der Entscheidung deutet auf ein binäres Steuerungsverhalten hin, das im Ergebnis der Analyse der steuerungstechnischen Anforderungen zu einem dementsprechenden Modell führt, dem Prozeßablaufnetz (PAN).
Enthalten Prozeßschritte Stabilisierungs-Anforderungen für Prozeßgrößen, muß dafür die Prozeßanalyse der Regelungsstrecke(n) erfolgen, die nur im Falle der Anwendung der strukturellen Analyse (siehe Fußnote) ebenfalls binären Charakter hat, ansonsten sind selbstverständlich analoge, numerisch untermauerte Analysenmethoden einzusetzen.
Enthalten Prozeßschritte binäre Steuerungs-Anforderungen, dann muß zwingend die binäre Prozeßanalyse fortgesetzt werden. Ein graphisches Beschreibungsmittel, das in verständlicher Form und fehlerfrei im Sinne der Automatentheorie die binäre Steuerungsaufgabe eines oder mehrerer Prozeßschritte formuliert, ist der Prozeßablaufplan.
Um sich des Beschreibungsmittels PRAP richtig bedienen zu können, muß u.a. der Informationsfluß zwischen gesteuertem Prozeß / Prozeß-Abschnitt und der Automatisierungseinrichtung geklärt sein.
Dazu dient das Informationsflußmodell.
siehe auch: Prozeßzerlegungsgraph

------------------------
 Empfohlene Basisliteratur: Reinschke, K.: Multivariable Control Springer Verlag und Verlag der Akademie der Wissenschaften , Berlin 1989


Informationsfluß-Modell

Das in der Abbildung dargestellte Modell zeigt den Fluß der Information zwischen gesteuertem Prozeß bzw. Prozeß-Abschnitt und der Steuereinrichtung, z.B. einer SPS. Als Prozeßabschnitt sollen technologisch "abtrennbare" Prozeßteile wie eine Teilanlage, eine Fertigungseinheit, ein Transportband usw. verstanden werden, die als technologischer Verbund den Gesamtprozeß ergeben.

Die Schnittstelle zwischen Prozeß und Steuereinheit wird durch die Binärvektoren P, X und O, Y gebildet:
Wie die Abbildung zeigt, wird die am Prozeßausgang P auftretende Anzahl sog. Prozeßzustandvariable p in Eingangsvariable x des Eingangsvektors X der Steuereinrichtung überführt.
Jede am Prozeßeingang O wirkende Operation ist Abbild des Ausgangsvektors Y der Steuereinrichtung. Die Ausgangsvariablen y werden in die Operationsvariablen o überführt.

Die Überführungs-Anforderungen müssen in den Variablenlisten der Datenbank enthalten sein, wobei EMSR-Stellen (= Points of Automation) nach DIN 19227-1 (Leittechnik - Graphische Symbole und Kennbuchstaben für die Prozess-Leittechnik, Darstellung von Aufgaben) die Schnittstellen zum Prozeß darstellen. Ferner gilt der Standard DIN 6779 (Kennzeichnungssystematik für technische Produkte und technische Produktdokumentation) mit den Teilen 1 bis 13: Teil 12 für Bauwerke und technische Gebäudeausrüstung und Teil 13 für Chemieanlagen.
Die technische Realisierung erfolgt u.a. durch die Prozeß-Meß- und Stelltechnik.
Hierzu werden oft sogenannte eingebettete Funktionen wie Zeitglieder und Zählglieder, arithmetische Funktionen, Kopierfunktionen (z.B. für Grenzwerte, Zeit- und Zählwerte usw.) und andere benötigt. Vergleicher- und Flankenfunktionen sind in den IEE bzw. ME enthalten.
Das Verhalten des Prozesses unter dem Einfluß der ihn steuernden, beeinflussenden Operationen spiegelt sich in Änderungen der Prozeßzustandsvariablen wider und ist im Steuerungsmodell Prozeßablaufplan (PRAP) dokumentiert. Im PRAP sind auch alle eingebetteten Funktionen wirksam.


Prozeßzerlegung

 Related Topics

Wegen der Übersicht zu automatisierender Prozesse, ist eine Prozeßzerlegung unumgänglich, die zum Steuerungs-System führt. So ist es zweckmäßig, wenn Sie sich die aufgeführten Kapitel ansehen:
Ziele der Prozeßzerlegung
Kriterien der Prozeßzerlegung
Schritte der Prozeßzerlegung
Prozeßzerlegungsgraph
Funktions-Block-Darstellung (FBD)
Koppelungen zwischen Teilprozessen
Probleme und Fehler bei TP-Kopplungen


Ziele der Prozeß-Zerlegung

Ziele der Prozeßzerlegung sind,

 1.	einen Überblick über das gesamte Steuerungsproblem, den Systementwurf, zu erhalten und

 2.	Steuerungs- und Regelungsaufgaben getrennt als Teilprozesse (TP) analysieren zu können, ohne dabei die gegenseitigen, steuerungstechnischen Beziehungen außer acht zu lassen. Zu jedem TP gibt es Variablen, die in der Datenbank zu erfassen sind, wobei zu jeder Variablen der Bezug zum technologischen Schema (Fließbild, Anlagen- oder Maschinenschema) durch EMSR-Stellen bzw. andere Betriebsmittelkennzeichen zu dokumentieren ist.

 3.	die Teilprozesse (TP), die in einer gemeinsamen Ressource abzuarbeiten sind, entweder in einen eigenen Prozeßzerlegungsgraphen (PZG) einzutragen oder in einem einzigen für alle Ressourcen. Im letzteren Fall sind die TP zu kennzeichnen, welcher Ressource sie zugehören.

 4.	die durch Zerlegung gewonnenen Teilprozesse auch in der Darstellung durch ihre aktuellen Größen (Konstante und Eingangs-/Ausgangsvariable) zu ergänzen sowie den Bezug zum Typen (z.B. Typen-PRAP) herzustellen. Damit ergibt sich die Funktions-Block-Darstellung, kurz FBD.

Aus diesen Gründen ist es notwendig, daß Sie sich ein sinnvolles System von Teilprozessen schaffen. Dabei können Teilprozesse auch Stabilisierungsprobleme für Prozeßgrößen beinhalten, also Regelungsaufgaben sein.
Es hat sich gezeigt, daß eine intuitiv gewählte Prozeßzerlegung bei der Erstellung der Prozeßablaufpläne ungünstig sein kann, weil z.B. der Bezug zum zu leitenden Prozeß an Hand des technologischen Schemas (R-und I- Fließbild) verloren geht.
Eine der Prozeßzerlegung vorgelagerte Komponente, in deren Ergebnis ein ungestörter Prozeßablauf modelliert wird, und eine sinnvolle Prozeßzerlegung entsteht, ist das Prozeßablaufnetz(PAN). Es ist erwiesen, daß man durch den Einsatz des PAN insbesondere Chargen- oder Batch-Prozesse im Überblick behält und bei der Zerlegung in Teil-Prozesse sich durch das Softwaretool PAN-Editor effektiv unterstützen lassen kann.
Jeder Teilprozeß enthält prinzipiell die drei Komponenten des Prozesses, wie sie im Informationsflußmodell dargestellt sind. Reine Bedien- und Signalisierungs-Teilprozesse beinhalten häufig keinen Anteil des technologischen Prozesses. Ebenso gibt es Teilprozesse ohne Zeit-/Zählglieder, Vergleicher usw.
Das entstehende Teilprozeß-System benötigt Koppelgrößen, um die Teilprozesse miteinander steuerungstechnisch zu verbinden, und das Verhalten des Prozesses durch die Wirkung der Prozeßsteuerung zu gewährleisten. Das Ergebnis dieser Dekomposition wird im Prozeßzerlegungsgraphen dargestellt.
Die Prozeßzerlegung wird in mehreren Schritten nach drei Kriterien ausgeführt.

Zurück zum Entwurfsprozeß.


Kriterien der Prozeßzerlegung

Die Zerlegung des Gesamtprozesses in Teilprozesse erfolgt nach drei Kriterien:

 1.	Der Prozeßablaufplan kann als Steuerungsmodell des Teilprozesses - TP - bei parallel laufenden Steuerungsanforderungen für den Entwerfer bald unübersichtlich werden. Dann lohnt es sich, mehr als einen TP zu entwickeln, das Problem weiter zu zerlegen.
(Das Prozeßablaufnetz kann dabei hilfreich sein)

 2.	Jeder Teilprozeß kann sinnvoll einem Anlagenteil oder Anlagenabschnitt aus dem technologischen Schema (auch Prozeß-Abschnitt) zugeordet werden. Dabei spielt der Aufbau aus Behältern, Transportbändern, Reaktoren, Förderschnecken usw. eine wesentliche Rolle, da dann die Struktur der Prozeßzerlegung dem Anlagenschema etwa entspricht.

 3.	Alle Teilprozesse mit gleicher funktioneller Verarbeitung der Variablen (Antriebssteuerungen, Signalisierungen u.a.) sollten aus dem Anlagenschema bzw. der Aufgabenformulierung besonders entnommen und für die Prozeßzerlegung vorgemerkt werden. Häufig kann man für solche Steuerungsanforderungen Typen-Teilprozesse entwerfen und verwenden bzw. Typenprozeßablaufpläne nutzen, die schon existieren.


Schritte der Prozeßzerlegung

 1.	Der erste Schritt sollte die Einteilung des Gesamtprozesses an Hand eines technologischen Anlagenschemas betreffen. Die so gewonnenen Prozeß-Abschnitte, die aus einem oder mehreren Anlagenteilen (Behälter, Maschinen usw.) bestehen, beinhalten sinnvollerweise je einen Prozeßschritt.
Sie sollten insbesondere im Falle eines Batch-Prozesses für das Zusammenwirken aller Prozeßschritte ein Prozeßablaufnetz (PAN) entwickeln. Damit erhalten Sie ein Grob-Modell der Steuerung des Gesamtprozesses. Aus dem Grobmodell können Sie nun Teilprozesse des ersten Schrittes herauslösen, indem Sie einen oder mehrere Prozeßschritte zu einem Teilprozeß erklären. Solche, aus dem PAN gewonnenen Teilprozesse, müssen noch weiterbearbeitet werden (siehe PRAP-Editor und PZG-Editor).
Falls Sie für einen Fließprozeß das Steuerungskonzept entwickeln müssen, bedenken Sie, daß nach dem Anlauf alle Prozeßabschnitte simultan, bzw. mehr oder weniger parallel arbeiten. Es kann sinnvoll sein, das Steuerungskonzept für die Prozeß-Inbetriebnahme, für die -Außerbetriebnahme und z.B. -Störungsverhalten zu entwickeln. Betrachten Sie jeden Prozeßabschnitt und den(die) darin technologisch enthaltenen Prozeßschritt(e) als Teilprozeß des ersten Schrittes.

 2.	Der zweite Schritt soll zwei Überlegungen enthalten:

•	Erstens:
Gibt es steuerungstechnische Beziehungen zwischen den Teilprozessen, dann sollten Pfeile - gerichtete Verbindungen - dies kennzeichnen. Geben Sie diesen Kopplungen Namen.

•	Zweitens:
Stellt sich bei näherem Betrachten eines TP des ersten Schrittes heraus, daß eine weitere Zerlegung sinnvoll ist, dann sollte das geschehen.

 3.	Als dritten Schritt einer sinnvollen Prozeßzerlegung sollten Sie eine Einteilung nach den einzelnen Ebenen des PZG vornehmen. Jedem dabei entstehenden Teilprozeß ist wenigstens eine technologisch sinnvolle und einmalige Bezeichnung zuzuordnen. Es kann auch hilfreich sein, die Teilprozesse zu numerieren oder mit anderen Kurzzeichen zu versehen.
Die drei empfohlenen Ebenen:
Mensch-Anlagen-Kommunikation
Automatikabläufe - Koordinierungssteuerungen
Stellglied-/Antriebs-Steuerungen

 4.	Im vierten Schritt sollten Sie zur Dokumentation Ihrer bisherigen Arbeit den Prozeßzerlegungsgraphen (PZG) zeichnen.

 5.	Der fünfte Schritt erfordert die Zuweisung zu allen Prozeß- und Operationsvariablen des PRAP-Types.
Zu jedem Teilprozeß gehört eine bestimmte Anzahl Eingangs- und Ausgangsvariable, die mit technologisch prozeßnahen Bezeichnern (Name) versehen werden sollten und eine direkte Adresse - Anschlußbezeichnung am Steuergerät - erhalten müssen. Variable im Speicherbereich des Steuergerätes können entweder vom Maschinencompiler automatisch vergeben werden oder eine Adresse des Speichers erhalten.
Tragen Sie jede Variable am TP-Kästchen des PZG außen an, die Eingänge links, die Ausgänge rechts.
Achten Sie darauf, daß Ausgangssvariable auf den TP bezogen sind, d.h. sie dürfen nur in einem d.h. in keinem anderen TP vorkommen!
Damit ist der Übergang vom PZG zur FBD (Funktionsblock-Darstellung) gekommen. Lesen Sie dort weiter!

Tip
Es lohnt sich, eine Variablenliste - Excel-Tabelle - anzulegen, weil sie in das Steuerungsprojekt importierbar ist. Siehe click here


Prozeß-Zerlegungs-Graph (PZG)

 Related Topics

Der Prozeßzerlegungsgraph beschreibt die steuerungstechnischen Beziehungen zwischen allen Teilprozessen eines Prozesses durch deren paarweise Steuerrelationen. Jeder Teilprozeß wird im PZG als Rechteck und jede Steuerrelation als gerichtete Verbindung (Pfeil-Linie) zwischen den Teilprozessen dargestellt. Bei der Anordnung der Teilprozesse sollten Sie nach der vorgegebenen Empfehlung verfahren:
Teilprozesse der MAK werden oben gezeichnet
.....................MAK-Ebene
Teilprozesse für automatische Abläufe bzw. zur Koordinierung werden in der Mitte gezeichnet
.....................Koordinierungseben
Teilprozesse der Stellglieder und Antriebe werden unten gezeichnet
.....................Antriebsebene
siehe auch: Schritte der Prozeßzerlegung
Die Teilprozesse und ihre Steuerrelationen (= steuerungstechnische Beziehungen) lassen sich verschieden darstellen. So zeigen die Beispiele:

 1.
TP1 beeinflußt einseitig die TP2 und TP3; TP2 und TP3 haben keine gegenseitigen Steuerrelationen.

 2.
TP1 wie oben, aber es beeinflussen sich auch die TP2 und TP3 und zwar in beiden Richtungen. Ein Pfeil an beiden Enden der Verbindungslinie erspart Doppelverbindungen.

Zu viele Verbindungslinien und Pfeile tragen meist nicht zur Klarheit des Modells bei.
PZG in Form des Funktionsbaustein-Modells, die Funktions-Block-Darstellung (FBD)
Bezeichnet man das bisher beschriebene Modell als Grobmodell, dann ergibt sich aus der Praxis heraus ein Feinmodell für die Prozeß-Zerlegung. Der Gedanke liegt sehr nahe, jeden Teilprozeß (TP) als Funktionsbaustein mit dem "Innenleben des zugehörigen PRAP" zu verstehen und links alle Eingänge, rechts alle Ausgänge einzutragen. Die Anordnung der TP erfolgt dann in "Signalfluß-Richtung" von links nach rechts.
Da es noch keinen PZG-Editor in der SPAS-Version 1 gibt, bleibt der Gestaltungswille frei, aber auch ohne Daten-Verbindung zum Projekt. Sie finden hier den PZG zum Beispiel-Projekt.


Koppelungen zwischen Teilprozessen - Interactions -

Der Begriff "Koppelung" soll bedeuten, daß ein Informationsaustausch zwischen zwei Teilprozessen (TP) durch Koppelvariable existiert. Das Steuerungssystem beinhaltet alle Koppelungen.
Im zweiten Schritt der Schritte der Prozeßzerlegung ist auf das Einführen der Koppelungen verwiesen, und im Thema Prozeßzerlegungsgraph sind zwei Beispiele der formalen Darstellung enthalten. Es handelt sich um eine Problemlösung, paarweise Steuerungsabläufe in Form von Prozeßablaufplänen (PRAP) miteinander zu verbinden, zu synchronisieren, damit das Gesamtergebnis des Steuerungsprozesses, also das Zusammenwirken der Teilprozesse, den technologischen Prozeß-Anforderungen entspricht. Es werden

•	die natürliche Koppelung über Prozeßgrößen oder

•	eingeführte Koppelvariable

verwendet.
Die praktische Ausführung von Koppelungen
soll nun behandelt werden:

 1.	Natürliche Koppelung
Zwei Teilprozesse sind allein durch den gesteuerten Prozeß untereinander verbunden, wenn durch die Anordnung von Sensoren der korrekte Steuerungsprozeß gewährleitet ist. Als Beispiel sei ein Transportabschnitt betrachtet, bei dem ein Stückgut auf Transportbändern bewegt wird.

Das erste Band werde nicht beachtet, das zweite beginnt zu laufen, sobald B1 anspricht. Es schaltet wieder ab, sobald das Stückgut bei B4 angekommen ist und an B3 verlassen hat. In diesem Sinne arbeitet auch die Steuerung für den Motor 3. B3 ist in beiden PRAP vorhanden und garantiert die Koppelung. Wenn M3 einschaltet, läuft M2 noch, bis B3=N. Somit wird ein teilweiser Parallel-Lauf beider TP erreicht.
Mit dem Prozeßablaufnetz modellierte Prozesse ergeben Teilprozesse, die nur natürlich gekoppelt sind.
Die Wirkungsrichtung dieser Koppelung - Pfeil im PZG - geht von TP Motor 2 nach TP Motor 3, da B3 durch die Funktion des Motors 2 primär beeinflußt wird.

 2.	Eingeführte Koppelung
Das gleiche technologische Beispiel mit eingeführter Koppelung, also mit Koppelvariable, sehen Sie nun. Die Koppelvariable "M2 ausschalten" ist in dem PRAP des Motors 3 in den Operationen "M3 aus" und "M3 ein" mit der Aussage "M2 NICHT ausschalten" vertreten. So kann M2 einschalten, wenn B1 das Stückgut meldet und bleibt in Betrieb, bis "M2 aussch." wahr wird. Um den gleichen Steuerungsablauf zu erhalten wie oben, ist noch eine Operation hinzugekommen.

Der Sensor B4 wird nicht mehr benötigt. So können Sie mit dem Entwurf bereits Geld sparen, und aus der Sicht der Zuverlässigkeit ist diese Einsparung auch ein Gewinn. Aber dann sind beide Instanzen (TP Motor 2 und TP Motor 3) nicht mehr von einem Typen-PRAP!

 3.	Natürliche Koppelung im Steuerungssystem
Da Sie in diesem Fall auf die Dynamik der Prozeßzustandsvariablen achten müssen, um einen sicheren Steuerungsablauf zu erhalten, ist es auch wichtig, die Sensoreigenschaften zu kennen. Aber diese Kenntnis muß man sich immer verschaffen. Beide Instanzen erhalten natürlich die gleiche Boolesche Eingangsvariable.

 4.	Eingeführte Koppelung im Steuerungssystem
Der TP Motor 2 wartet auf die Meldung vom TP Motor 3, ehe er abschaltet. Damit hat sich die Koppelungsrichtung geändert gegenüber der natürlichen Koppelung. Die Koppelvariable "M2 ausschalten" ist im TP Motor 3 eine Operationsvariable (Sender der Information), im TP Motor 2 ein P-Variable (Empfänger der Information). Die Dynamik ist auch hier zu beachten, damit die beabsichtigte Wirkung auch eintritt! Beide Variablen sind schon im Typen-PRAP einzubauen. Dieser Aspekt kommt bei der natürlichen Kopplung gar nicht in Betracht.

Die Adressenvergabe:

•	Das Eintragen der direkten Adressen oder die Bereitstellung von symbolischen Adressen erfolgt zum Zwecke der Instanzierung im zugehörigen Typ-Programm (PROGRAM) oder in der Ressource (RESOURCE)

•	Sie können in beiden PRAP-Typen, gemeint sind jetzt der Sender-PRAP ("USAGE"=Output)und der Empfänger-PRAP("USAGE"=Input), die gleichen Namen (Identification) einsetzen , um für sich selbst deutlich werden zu lassen: Es sind die gleichen Variablen.
Und ebenso selbstverständlich müssen beide Instanzen die gleiche Adresse im Merkerbereich durch Sie erhalten, wenn Sie "Address Memory" (unter "USAGE" in PROGRAM) angeben.

•	Tragen Sie "Local Static" bei "USAGE" in PROGRAM oder RESOURCE ein, so erfolgt eine automatische Adressenzuweisung im RAM, die Ihnen nicht mitgeteilt wird.

•	Wollen Sie mit verschiedenen Namen in den Typen arbeiten, dann ist es dennoch eine einzige Koppelvariable, und Sie müssen für diese Koppelvariable eine Adresse im Merkerbereich angeben und bei "USAGE" entsprechend "Address Memory" wählen.

•	Innerhalb eines PROGRAM können Sie auch ohne in PROGRAM deklarierte Koppelvariable (nicht bei Step 7!) auskommen, wenn Sie
dem INPUT der Empfängerinstanz unmittelbar den Output der Senderinstanz zuordnen.

 1.	Öffnen Sie die Empfängerinstanz

 2.	Öffnen Sie die Variablentabelle und wählen bei "Filter Values" die Senderinstanz

 3.	Klicken Sie auf den Filterbutton darunter, so daß "Filter ON" zu lesen ist. Dadurch können Sie die zutreffende Koppel-Variable (USAGE = Output) auswählen, markieren durch Klick.

 4.	Klick auf [image] weist diese Variable dem Input zu.

 5.	Das Member (Empfängerinstanz) mit Klick auf OK schließen, wenn alle Zuweisungen erfolgt sind. Wenn sie wieder öffnen, sehen Sie den vollständigen Bezeichner eingetragen:
<Senderinstanz>.<Formalvariable>


Probleme und Fehler bei TP-Koppelungen

Im folgenden sind Hinweise zur Adressierung von Koppelvariablen und Probleme sowie Fehler bei der Behandlung von Koppelungen aufgeführt:

•	Adressierungs-Probleme und Fehler
Sowohl die natürliche als auch die eingeführte Koppelung haben einen "Sender" und können viele "Empfänger" haben. Problematisch ist ein "vergessener Empfänger", wenn z.B. ein Schreibfehler vorliegt, also die gemeinsame Adresse des Senders mit allen Empfängern dadurch bei einem Empfänger falsch ist. Schlimm wird es auch, wenn ein Empfänger gar die falsche Adresse, d.h. Namen hat.

•	Die Dynamik der Koppelvariablen
ist zu beachten. Der Sender muß so lange diese Variable true oder false halten, wie es die angekoppelten TP, alle "Empfänger", für deren Funktion benötigen. Dieser Fehler ist im Entwurfsablauf der PRAP oft schwer zu entdecken.

•	Die Aufruf-Reihenfolge der Instanzen im Programm
kann sowohl bei natürlichen als auch bei eingeführten Koppelungen zu dynamischen Fehlern führen, wenn der Sender den Wert der Koppelvariablen ändert, die Empfänger (manchmal nur einer von allen) aber den "alten Wert" noch benötigt und erst im Folgezyklus der SPS den neuen.

•	Falsche Ausgabe einer Koppelung

kann geschehen, wenn eine Situation technologisch bedingt durchlaufen werden kann. Beachten Sie im folgenden Bild

beim Teilprozeß TP1a die Möglichkeit, einen leeren Wagen auch noch entladen. Das geschieht nur deshalb, weil mit dem Erreichen der Operation Or auch im Teilprozeß TP2a mit "Wagen entladen" = Y der Übergang nach O1 erfolgt. Natürlich erfolgt im nächsten Zyklus (Takt) wieder der Rücklauf zur Operation O0, weil der Wagen leer ist und die Wagenklappe wegen der Trägheit sich nicht öffnen wird. Aber solche falschen Koppelungen sollten beseitigt werden, wie es TP1b zeigt. Nur ein nicht leerer Wagen wird entladen.
Geht man davon aus, daß die Situation r in TP1a und b über die Entladedauer stabil ist, dann kann auch TP2a zu TP2b umgezeichnet werden. Das hat zum Vorteil, daß im Fall des leeren Wagens das Öffnen nie angewiesen wird. Also könnte TP2b auch mit TP1a gut zusammenarbeiten.


Funktions-Block-Darstellung (FBD)

Die Ermittlung der Eingangs-und Ausgangs-Variablen zu jedem Teilprozeß, wie dies im Kapitel Schritte der Prozeß-Zerlegung im fünften Schritt beschrieben ist, muß aus drei Gründen erfolgen:

 1.	Die natürlichen Koppelungen sind letztlich Eingangs-Variable aus dem Prozeß. (Graphische Darstellung als Pfeil mit ausgefüllter Spitze.)
Jede dieser Eingangsvariablen ist im Projekt einem TP zugeordnet. Die angekoppelten TP enthalten zum Variablen-Namen die TP-Nummer.

 2.	Die eingeführten Koppelungen sind "an der Quelle" Ausgangsvariable. Dort sind sie im Projekt zugeordnet. (Graphische Darstellung als Pfeil mit einfacher Spitze.) Eingangsvariable sind sie bei allen angekoppelten TP. Um sie deutlicher zu erkennen, werden sie möglichst nicht mit den Prozeß-Variablen gemeinsam dargestellt. Daher die unterschiedlichen Pfeilspitzen.

 3.	Die Teilprozesse sind Instanzen der PRAP-Typen, in denen Prozeßvariable und Operationsvariable als formale Variable enthalten sind. Jeder TP muß daher deutlich den Bezug zum Typen erkennen lassen.

Die Standardisierung in der IEC 61944-1 erfüllt SPAS nicht vollständig, wählt sie aber als Grundlage, als Vorbild.
Weiteres Vorgehen:

•	Tragen Sie in eine Tabelle, am besten eine Exceltabelle (click here) Namen und Datentyp zusammen mit der TP-Bezeichnung ein.

•	Parallel dazu tragen Sie die Namen an jedem Teilprozeß, verbunden mit einem Eingangs- bzw. Ausgangspfeil, ein.

•	Ergänzen Sie jedes TP-Kästchen mit dem Namen des Typen und dessen Variablen. Ein kleines Beispiel finden Sie hier: Beispielprojekt Lampe/Stern-Dreieck-Schaltung
Achten Sie in diesem Beispiel auf die Entwicklungs-Folge der PZG hin zum PZG/FBD.


Eingebettete Funktionen

 Related Topics

Binäre, also zweiwertige, Funktionen sind für die Abarbeitung der automatentheoretisch begründeten PRAP erforderlich. Der Begriff soll darüber hinausweisen, obwohl eine Flankenerkennung auch eine binäre Funktion ist. Er faßt alle nicht im "Automatenteil des PRAP" erforderlichen funktionellen Verknüpfungen zusammen.

Wichtige Vorbemerkung:
Um Datentypen-Anpassung brauchen Sie sich als Projektant nicht zu kümmern!! Nur in Ausnahmefällen, auf die Sie besonders hingewiesen werden, verwenden Sie bitte die Standardfunktionen nach IEC 61131-3.

Alle Funktionen in alphabetischer Reihenfolge:

•	Arithmetik-Funktion

•	Aufruf eines TP oder einer FC

•	Flankenerkennung

•	Übertragungs-, Umspeicher- oder Kopierfunktion

•	Vergleicherfunktion

•	Zählglieder, Counter

•	Zeitglieder, Timer

Neben der Projektierung der Prozeßvariablen durch binäre Größen, die unmittelbar aus Meßgebern bzw. Sensoren (Lichtschranken, Stößeltaster usw.)gewonnen werden, treten im PRAP häufig andere Probleme auf, die mit den folgenden Funktionen lösbar sind.
Aufgaben der Zeitsteuerung, ebenso Zählaufgaben, können erforderlich sein, wenn Sie eine Prozeßgröße "umgehen wollen statt sie zu messen" oder aber eine wirklich zeitabhängige Steuerung entwerfen wollen. Die Zählglieder sind hier ausschließlich Software-Zähler. Die Erläuterungen zu
Zeitgliedern (Timer)
und
Zählgliedern (Counter)
zeigen Ihnen, wie sie im PRAP einzusetzen sind.
Näheres zum Ein- und Ausschalten der Timer und Counter
Mit der Vergleicherfunktion
werden Istwerte (im ganz allgemeinen Sinne) mit Sollwerten verglichen.(click here) Damit können Sie im PRAP von einer Grenzwertbeurteilung abhängige Funktionen planen. Sie können auch als Istwert eine momentane Zeit in einem Timer vergleichen mit einem festen Zeitwert, also "fragen", ob z.B. 20 Minuten im Timer XYZ abgelaufen sind.
Berechnungen verschiedener Art werden für ganz unterschiedliche Zwecke benötigt.
Mit Hilfe der Arithmetik-Funktionen
können Sie ein Berechnungs-Problem im PRAP mit erledigen. Derzeit sind die Grundrechenarten, If-Then-Else, For-To-By sowie Schieben und Rotieren projektierbar. Trigonometrische Funktionen oder Wurzelziehen usw. sind noch nicht verfügbar. Aber Sie dürfen Aufrufe von FUNCTIONs oder auch Teilprozessen (PRAP-Instanzen) einfügen.(click here)
In bestimmten Fällen wird eine
Flankenerkennung benötigt, die sich beim Übergang einer Booleschen Variablen von false auf true oder umgekehrt ergeben soll. Der Impuls ist als Prozeßvariable - Text-Inhalt eines Condition-Symbols - im PRAP projektierbar. Er beginnt mit der Flanke der sogenannten "primären Prozeßvariablen" und endet nach einem Arbeitszyklus der SPS. Z.B. können "Einlaufbeginn eines Kartons in die Waage", "Ende des Waggons erreicht" solche Texte sein, deren Primärvariable "Karton in Waage" oder "Wagon eingefahren" sein könnten.(click here)
Hinweise zu Besonderheiten der Hardware finden Sie im entsprechenden Text zu den Sprachen der SPS.


Ein- und Ausschalten / Aufrufen und nicht Aufrufen von Bausteinen

Um Funktionen bedarfsgerecht ein- und auszuschalten bzw. aufzurufen oder nicht, achten Sie auf die Operationenfolge im PRAP. Ein in Operationen, die aufeinander folgen, markiertes "Ein" hält ohne Unterbrechung die Funktion aufrecht. Folgt auf eine Operation mit "Aus" eine Operation mit "Ein", so erfolgt bei Timern und Countern ein Neustart mit Löschen des Inhaltes und Einlesen des Sollwertes (Zeit- bzw. Zählwert).
Da Zählwerte oder auch Zeitwerte abhängig vom Prozeßgeschehen, also von der Prozeßsituation sein können, ist es sinnvoll, solche Vorgabewerte z.B. auf ein Merkerwort zu schreiben. Deshalb gibt es die Übertragungs- oder Kopierfunktion.(click here)
Natürlich lassen sich auch andere Anwendungen als eben erwähnt denken. Ein Reglerbaustein benötigt eventuell auch vom Prozeß her verschiedene Sollwerte. Oder Grenzwerte für Alarme, oder Signalisierungen ändern sich in Abhängigkeit von der Prozeßsituation. Auch "analoge" Ausgaben an den Prozeß in digitaler Form z.B. an Ausgangsworte sind projektierbar. Immer ist in diesen Fällen in einer ausgewählen Operation eine solche Ausgabe erforderlich. Folglich muß dort diese Ausgabe durch Markierung der betreffenden Operationsvariablen (Flag) veranlaßt werden.
Aufrufe von Funktionen und Teilprozessen unterliegen derselben Gesetzmäßigkeit. Eine Operationsvariable dient im Zusammenhang mit "Calculate(multiple)" (bei CHOOSE A FUNCTION) diesem Zweck. Genau dort, wo sie markiert ist, erfolgt der Aufruf.


Zeitglieder - Timer

 Related Topics

Im Rahmen der binären Prozeßanalyse werden ausschließlich Zeitglieder mit Einschaltverzögerung - nach IEC 61131-3 die Standardfunktion TON - benötigt, da im PRAP alle Zeitfunktionen damit erfaßbar sind. Das Projektieren von Zeitgliedern erfolgt selbstverständlich unabhängig vom Hersteller der praktisch eingesetzten Ressource. Daher sind nur solche Anschlüsse vorgesehen, die international vereinbart wurden.
Jedes Zeitglied erhält einen Namen (Name) als Identifikator und eine Bezeichnung (Statement).
Die im Zeitdiagramm dargestellte Funktion eines Zeitgliedes mit Einschaltverzögerung enthält alle wichtigen Eigenschaften:

•	Start der Verzögerungszeit PT mit dem Einschalten des Eingangs IN (IN schaltet ebenso das Zeitglied ab)

•	Ausgang Q schaltet ein, sobald PT beendet ist

•	Bei kürzerer Einschaltdauer als PT bleibt Q ausgeschaltet

•	Q schaltet zusammen mit IN aus

Im Teilprozeß verwenden Sie für IN eine technologisch passende Bezeichnung einer Operationsvariablen. Für den Ausgang Q formulieren Sie die technologisch sinnvolle Prozeßvariable. Diese Form des Vorgehens entspricht dem Informationsflußmodell.

Tip
Sie müssen Q nicht in der gleichen Situation eintragen, wie das im Beispiel zu sehen ist. Eine "spätere Abfrage" bedingt jedoch, das Zeitglied so lange eingeschaltet zu lassen!

Beide Variablen können Sie selbst adressieren oder die Zuweisung einer Merkervariablen dem Precompiler überlassen.
Beispiele:
Operationsvariable bewertet
Füllkontrollzeit ein / aus
Anlaufwarnzeit Start/Stop

Prozeßvariable bewertet
Füllkontrolldauer zu Ende ja/nein
Anlaufwarnung beendet ja/nein

Wichtige Hinweise:

 1.	Beginnen Sie bei der Konfigurierung des Zeitgliedes immer mit der Operationsvariablen, die das Zeitglied steuert (Flag!).

 2.	Die Operation, in der Sie das Zeitglied einschalten müssen, wird durch den Prozeßablauf bestimmt.
Dort ist die Operationsvariable zu markieren. Diese Operationsvariable muß bezüglich ihrer Verwendung (USAGE) als "Local Static" oder "Output" gekennzeichnet werden.
Sie können ein solches Zeitglied auch über mehrere Operationen eingeschaltet lassen (siehe Tip). Aber das Abschalten muß spätestens in einer Operation vor dem (Wieder-)Einschalten erfolgen, weil damit auch die Zeitdauer PT wieder neu geladen und gestartet werden kann.

 3.	Die Prozeßvariable eines Zeitgliedes, also den Ausgang Q, können Sie wie jede andere benutzen, also nicht nur in dem Teilprozeß, in dem Sie das Zeitglied starten, etwa um sie im Sinne einer natürlichen Koppelung zu verwenden. Dann muß die Variablenverwendung mit "Input/Output" angegeben werden, anderenfalls mit "Local Static".
Sie brauchen diese aber auch überhaupt nicht zu projektieren, also nicht "abzufragen", sofern der Hersteller der Hardware das zuläßt. Sie können durch Vergleich ermitteln, welche "Teil"-Zeit abgelaufen ist (Timer-Vergleich: TimerName.ET < "Sollzeit").

Warning
Überschreitung des Maximalwertes für Zeitglieder
begegnet man am besten durch Programmierung einer Addier-Funktion, die mit einer zyklischen Task aufgerufen wird. Die Zeitvariable ist vom Typ TIME, die zyklisch zu addierende Konstante ebenso und im Wert gleich der Zykluszeit. Ein Vergleich gibt Antwort auf die Frage, ob ein bestimmter Zeitwert erreicht ist.

Projektierungs-Ablauf

Der Beginn erfolgt durch Betätigen der rechten Maustaste auf die Operation, in der ein Timer eingeschaltet werden soll. Danach "Data Access"-Klick (oder Doppelklick)und eine neue Variable einführen und markieren, die den Timer ein- und ausschalten soll (Eingang E). Schreiben Sie das Statement ein und klicken auf [image], um "Variable Name (Flag)" als neue Variable benennen zu können. Im nachfolgenden Bild sehen Sie ein Beispiel aus dem PRAP "Stern-Dreieck-Anlauf".

Die "Übernahme" des Namens erreichen Sie mit KLick auf [image], danach geben Sie "Output" als USAGE an und wählen bei "Choose Function" die Funktion "Create TIMER". Ein Klick auf "Formula - None" öffnet die Timer-Configuration:

Benutzen Sie bitte die angebotenen Hilfetexte.
Die Q-Variable des Timers enthält eine "Condition". Stellen Sie auf dieses Langrund den Cursor, betätigen Sie die rechte Maustaste, und nach Klick auf "Data Access" (oder click here) finden Sie ein ähnliches Formular vor wie für die Ein-Ausschaltvariable, hier wieder das Beispiel aus der Stern-Dreieck-Anlaufschaltung:

Benutzen Sie bitte die dort angebotenen Hilfetexte.
Weitere Einzelheiten zum Konfigurieren siehe: Timer-Projektierung

Ein ausgeführtes Beispiel finden Sie bei Stern-Dreieck-Anlaufschaltung, Projektieren des Zeitgliedes.


Zählglieder - Counter - Grundsätzliches und Projektierung

 Related Topics

Für Zählglieder benötigen Sie

•	die Eingangs-Bit-Größe LD zum Laden des Zählerwertes (Operationsvariable); CV erhält den Wert PV, sobald LD=1,

•	eine Eingangs-Bit-Größe zum Zählen (CU / CD), bei Vorwärts-Rückwärts-Zählern auch beide (wahlweise Operations- oder Prozeßvariable),

•	einen Rücksetzeingang zum Löschen des aktuellen Zählwertes CV, um bei Vorwärtszählern wieder von vorn beginnen zu können,

•	einen Soll-Zählerwert PV in Form einer Konstanten oder einer Adresse, auf der PV steht. Der Zählerwert kann auch den Wert 0 haben. In diesem Fall reicht das Rückwärtszählen in negative Werte, das nicht alle Hersteller ermöglichen,

•	die Ausgangsgröße des aktuellen Zählerstandes CV, die in einem Integer-Format vorliegt,

•	die Ausgangs-Bit-Größe QU zum Anzeigen(Prozeßvariable), ob der Zählerwert PV durch vorwärts zählen erreicht ist, d.h. CV>=PV,

•	die Ausgangs-Bit-Größe QD zum Anzeigen(Prozeßvariable), ob der Zählerwert PV durch rückwärts zählen erreicht ist, d.h. CV<=0 hat.

Anschlußbezeichnungen der Eingänge:

•	LD = Load Preset Value, Lade PV

•	CU = Count Up, Vorwärts Zählen: CV+1

•	CD = Count Down, Rückwärts Zählen: CV-1

•	R = Reset: CV:=0

•	PV = Preset Value, Soll-Zählerwert

Anschlußbezeichnungen der Ausgänge:

•	QU = Quit Upcount

•	QD = Quit Downcount

•	CV = Current Value

Wichtig für alle Zähler ist der LD-Wechel von 0 auf 1:

 1.	Rückwärtszähler: LD-Wechel vor dem ersten Zählvorgang, weil ansonsten kein Zählerwert PV eingelesen wurde (im Bild: PV=2). Ob LD noch den Wert 1 haben darf, wenn gezählt wird, ist sprachabhängig! ST verbietet dies, Siemens-Zähler nicht.

 2.	Vorwärtszähler: LD=0, kein Wechsel, weil sonst der PV-Wert auf CV übertragen wird.

Note
In SPaS gibt es nur einen Zählertyp: CTUD
Richten Sie es im PRAP so ein, daß Sie QD erst dann "abfragen", wenn die Operation (mit Operationsvariable zum Laden des PV) verlassen ist.
REINE VORWÄRTSZÄHLER wie andere auch mit einer Flag-Variablen (Operationsvariable) projektieren, die jedoch niemals den Wert 1 haben darf, d.h. sie erhält in keiner Operation einen "Haken".

Die folgenden Abbildungen sollen zeigen, wie wahlweise mit Operationsvariablen gezählt werden kann oder auch mit Prozeßvariablen. Sie dürfen beliebig wechseln zwischen den Möglichkeiten.
P-Variable sind zum Zählen z.B. von Stückgütern geeignet, Operationsvariable eher zum Zählen "interner Abläufe".
Sämtliche Booleschen Variablen können Sie adressieren oder dies dem Precompiler überlassen (USAGE: Local Static).

Projektierungs-Ablauf

Hinweis:
Den PRAP hierzu finden Sie:click here
Der Beginn erfolgt durch Betätigen der rechten Maustaste auf die Operation, in der ein Counter eingeschaltet werden soll. Danach "Data Access"-Klick (oder click here) und eine neue Variable einführen und markieren, die den Counterwert laden soll (Eingang LD). Schreiben Sie das Statement ein und klicken auf [image], um "Variable Name (Flag)" als neue Variable benennen zu können. Geben Sie "Local Static" als USAGE an und wählen bei "Choose Function" die Funktion "Create COUNTER". Ein Klick auf "Formula - Nothing" öffnet die Counter-Configuration:
Tragen Sie schon das Statement zum Zähler ein und klicken dann auf [image], wodurch Sie den Namen, also das Kurzzeichen zum Statement, eingeben können. Der Datentyp ist hier die Standard-Funktion "CTUD", wie sie von IEC 61131-3 vorgeschrieben ist. USAGE ist sprachabhängig.
Als Beispiel ist hier das folgende Bild angegeben:

Danach ist der Zählerwert, Datentyp = INT, anzugeben. Im Beispiel ist er 0, weil ein Vorwärts-Rückwärts-Zähler alle Zugänge und alle Abgänge erfassen soll, ohne eine Vorgabe:

Damit ist zunächst der Counter konfiguriert. Die Ausgänge QU, QD und CV müssen nicht "belegt" werden (bei manchen Sprachen bzw. CPU-Herstellern schon). Das Projektieren eines QU/QD-Ausgangs beginnt mit dem Einführen einer Prozeßvariablen ("Condition"). Stellen Sie auf dieses Langrund den Cursor, betätigen Sie die rechte Maustaste, und nach Klick auf "Data Access" (oder Doppelklick) finden Sie ein ähnliches Formular vor wie für die Ein-Ausschaltvariable. Im Beispiel zu erkennen:

Mit Einführen der Variablen FwBw_0 ist es noch nicht getan. Sie müssen noch die Funktion "Counter Output QU" wählen, und nach Klick auf Formula wählen Sie den zutreffenden Zähler aus, im Beispiel "FwBwCounter".

Note
Zähler können sowohl von Operationsvariablen als auch von Prozeßvariablen aufwärts und abwärts gezählt werden.
Das Lade- und das Reset_Signal nur durch Operationsvariable (Flag) erzeugen.

Im Beispiel sehen Sie im ersten Bild das Aufwärtszählen durch eine Operationsvariable:

Im zweiten Bild erkennen Sie die Nutzung einer p-Variablen zum Aufwärtszählen im Vorwärts-Rückwärts-Zähler:

Weitere Einzelheiten zum Konfigurieren siehe: Counter-Projektierung


Vergleicherfunktion - Comparison

Allgemeines
Die Projektierung der verschiedenen Vergleicherfunktionen erfolgt im PRAP, wo eine Prozeßzustandvariable zum Ausdruck bringt, daß eine Prozeßgröße wie Füllstand, Position oder Druck usw. einen bestimmten Wert erreicht, über- oder unterschritten hat. Das Vergleichsergebnis entspricht der Aussage Yes/No - ja/nein einer P-Variablen, die Sie adressieren (Input/Output) können oder dies dem Precompiler (USAGE: Local Static oder Local Temporary) überlassen, der dann eine lokale Merker-Variable einsetzt. Der Grenzwert / Sollwert kann fest oder z.B. über die Kopierfunktion prozeßabhängig vorgegeben werden.

Note
In den Vergleicher-Ausdruck sind die Daten einzutragen. Bedenken Sie bei der Angabe der Datentypen, daß Byte, Word und DWord nur für Gleichheit oder Ungleichheit zulässig sein können, weil ansonsten eine erforderliche Vorzeichenangabe fehlt! Kümmern Sie sich ansonsten nicht um die Anpassung der Datentypen, das besorgt - weitgehend - der Precompiler automatisch.

Die Vergleicherfunktion VGL dient der Verarbeitung der folgenden Operatoren (Rechenzeichen):
VGL kann sein =, <, >, <=, >= und <>
Es muß immer
Istwert VGL Sollwert
notiert werden, wobei der Istwert immer von einer Adresse gelesen wird. Sie können auch Zeit- oder Zählglied-Ausgänge (Timer.ET oder Counter.CV)als Istwerte nutzen. Der Sollwert kann eine Zahlenkonstante, auch ein Zeitwert, sein, kann aber ebenso von einer Adresse entnommen werden. Beachten Sie die Hinweise zu den SPS-Sprachen.

Sie dürfen folgende Ausdrücke vorgeben:

•	Beide Seiten zu VGL können arithmetische Ausdrücke enthalten.

•	Mehrere Vergleicher-Ausdrücke können Sie mit AND oder OR oder XOR verbinden. Bitte jeden Ausdruck einklammern oder wenigstens ein Leerzeichen davor und danach. Am Ende der Formel ";" nicht vergessen.

•	Geben Sie nur eine Vergleicher-Formel an und keine zusätzlichen Berechnungen

Projektierungs-Ablauf

Führen Sie im PRAP den Cursor auf die "Condition", die die Vergleicher-Formel beinhalten soll und klicken auf die rechte Maustaste, und danach erhalten Sie mit Klick auf "Data Access" (oder click here) das Formular:

 1.	Es kann angenommen werden, daß Sie den PRAP schon so weit entworfen haben, daß nur noch die eingebetteten Funktionen, hier die Vergleicherfunktion, eingetragen werden müssen. Daher tragen "Statement" und "Variable Usage" konkrete Begriffe. Während "Statement" ein technologienaher Text ist, kann "Varable Usage" durch "Input/Output" gekennzeichnet sein, falls die Instanzen eine Bitadresse angeben, oder durch "Logic Static" oder "Local Temporary", falls die Boolesche Variable lokal im Baustein verwendet wird, dann generiert der Precompiler eine Bit-Adresse im RAM.

 2.	Durch Klick auf [image] sind die Daten der Booleschen Variablen definiert, ansonsten holen Sie das jetzt nach. Dabei können Sie sich an das Beispiel aus der Lampensteuerung halten.
Damit ist die Boolesche Variable vorbereitet, das Ergebnis einer Vergleicherfunktion zu tragen (Flag-Eigenschaft).

 3.	Wählen Sie nun bei "Choose a Function" die Bezeichnung "Comparison". Danach öffnen Sie mit Klick auf "Formula nothing" und "Yes" (Neue Vergleicherfunktion generieren) das Formblatt.
 Ein Klick auf den Help-Button gibt Ihnen die notwendigen Hinweise zum Ausfüllen.
Ein Klick auf [image] öffnet die "Access Table". Dort können Sie neue Variable eintragen, falls für die Vergleicherfunktion erforderlich.


Flanken-Funktionen - Edge Detection

Allgemeines
Projektierbar sind steigende (rising), fallende (falling) oder sowohl ansteigende als auch fallende (rising_falling) Flanke (Edge) eines Binärsignales zu erkennen und auszuwerten.
Beim Wechsel des Wertes der auszuwertenden Variablen (Primary Variable) von "No nach Yes" handelt es sich um eine steigende Flanke, folglich bei "Yes auf No" um eine fallende.
Die betreffende "Ergebnis"-Variable (Variable Name (Flag) ) ist stets eine P-Variable ("Condition"). Diese Ergebnis-Variable ist nur einen Arbeitszyklus der Ressource/Steuerungseinheit (z.B. SPS) lang true.

Projektierungs-Ablauf
Führen Sie im PRAP den Cursor auf die "Condition", die die Flanken-Verarbeitung beinhalten soll und klicken auf die rechte Maustaste, und danach erhalten Sie mit Klick auf "Data Access" (oder Doppelklick) das Formular "Process Variables". Bei "Choose a Function" können Sie drei Funktionen wählen:

•	"Raising Edge"

•	"Falling Edge"

•	"Raising_Falling Edge"

Danach Klick auf "Formula"-Button und mit "Yes" das Erzeugen der Funktion bestätigen. Es öffnet sich das Formblatt "Edge Detection Configuration", wo Sie die auszuwertende Variable (Primary Variable) eintragen müssen. Mit Klick auf [image] öffnet sich die Variablentabelle, aus der Sie eine schon vorhandene Variable auswählen können oder eine neue eintragen. Mit Klick auf [image] erfolgt dann der Eintrag in das Feld "Primary Variable | Name" .
Weitere Einzelheiten erfahren Sie unter Flankenauswertung.


Kopierfunktion - Copy

Die Projektierung der Übertragungs- oder Zuweisungs-Funktion geschieht ausschließlich auf Anweisung (=Befehl) einer Operationsvariablen. Die gewünschte Kopierfunktion wird daher nur in den Operationen ausgeführt, in denen der Befehl markiert ist. Sie können diese Boolesche Variable selbst adressieren oder überlassen dies dem Precompiler, indem Sie eine lokal statische oder temporäre Verwendung (USAGE) wählen.
Die Zuweisung oder Kopie von einem Speicherplatz A auf einen Speicherplatz B erfolgt einfach durch den Ausdruck
B := A;
A darf auch eine Funktion sein (FUNCTION als Member) Sie können 1-, 8-, 16- oder 32-Bit-Größen auf Merker oder auf Ausgänge übertragen. Sie können auch konstante Werte auf Merker oder Ausgänge schreiben. Wählen Sie gewissenhaft die zum Datentyp passende Zahlendarstellung, die Sie als Initialwert eintragen.
Wenn Sie z.B. eine 8bit- auf eine 32bit-Variable übertragen wollen, brauchen Sie sich nicht um die Datentyp-Anpassung zu kümmern, das erledigt automatisch der Precompiler. Damit steht Ihnen die Möglichkeit offen, Zeiten, Grenzwerte, Zählgrößen, Sollwerte für Vergleicher, Regler usw. situationsabhängig mit Hilfe ensprechend lautender Operationsvariablen zuzuweisen.
Natürlich müssen Sie darauf achten, daß die Empfänger dieser Nachricht von der gleichen Adresse ihre Werte abholen. Beachten Sie ferner, daß z.B. die Soll-Zeitwertausgabe in einem anderen PRAP stehen darf als das Zeitglied, das eine solche Vorgabe benötigt.
Einzelheiten siehe unter Kopier- und Arithmetikfunktionen.


Funktionen, Operatoren und deren Ausführung, Operationen: Caculate(multiple) und Calculate(single)

 Related Topics

Mit dem Begriff "Funktionen" sind folgende Verknüpfungsoperationen gemeint:

•	Zweistellige Operationen:
Addieren ( + ), Subtrahieren ( - ),Multiplizieren ( * ), Dividieren ( / ), Zuweisung ( := )
Bitweise UND-Verknüpfung ( AND ), ODER-Verknüpfung ( OR )

•	Einstellige Operationen:
Absolutwert eines Operanden ABS (für Integer- und Real-Typen)

•	Bitweises Schieben oder Rotieren eines Operanden rechts/links um eine Anzahl N Bit.
Beispiel:
SHL(IN:=Operand,N:=Anzahl)

•	Bedingungs-Operationen:
IF < logischer Ausdruck > THEN
< Zuweisungs-Ausdrücke mit oben angeführten Funktionen >
(jeder mit ';' abgeschlossen)
(Es folgt eine neue Bedingung)
ELSIF < logischer Ausdruck > THEN < Zuweisungs-Ausdrücke ...
ELSE
(Falls logischer Ausdruck nicht erfüllt) < Zuweisungs-Ausdrücke ...
END_IF;

•	Schleifen-Operationen:
FOR < Schleifenvariable > := < Anfangswert > TO < Endwert > BY < Schrittwert > DO
< Zuweisungs-Ausdrücke mit oben angeführten Funktionen >
END_FOR;

Aber auch Potenzieren (**) und trigonometrische Funktionen werden in zukünftigen Versionen zugelassen sein. Sprachabhängig bleiben natürlich bestimmte Einschränkungen. Vergewissern Sie sich also, ob eine von Ihnen gewünschte Funktion auch auf der Ressource durchführbar ist.
Ein arithmetischer Ausdruck wie z.B. E := a + b * c - SHR(IN:=d,N:=Anz) wird mit Anz=9 wie folgt berechnet:

 1.	Zuerst alle Rotier- und Schiebefunktionen. Also SHR wird berechnet und auf d gespeichert. Die Anzahl, hier 9, darf auch auf einem Speicherplatz stehen. Das Ergebnis wird vorzeichenbehaftet verarbeitet, weil alle Operanden eines solchen Ausdrucks diese eigenschaft haben müssen.

 2.	Anschließend folgt die "Multiplikation", also b*c.

 3.	Danach erfolgt die Addition des Zwischenwertes mit a und schließlich die Subtraktion minus d.

 4.	Der Ergebniswert wird auf dem Ergebnis- oder Ziel-Speicherplatz E abgelegt.

Tip
Die sogenannte Punkt-Vor-Strich-Abarbeitung einer arithmetischen Formel können Sie durch Klammern, also "(" und ")", verändern. Klammerausdrücke werden vorrangig berechnet.

Um Datentypen-Anpassung brauchen Sie sich selten zu kümmern, weil der Precompiler das meist selbständig durchführt. Es werden allerdings, wie schon erwähnt, nur vorzeichenbehaftete Datentypen angenommen, das sind SINT, INT, DINT und REAL. Die Ausnahme sind reine Zuweisungen bzw. Kopierfunktionen (z.B. A := D), Schiebe- und Rotierfunktionen und andere Bitmanipulationen wie AND, OR usw. Sollte die Anpassung nicht automatisch erfolgen können, dann erhalten Sie eine Mitteilung.
Das Ausführen einer arithmetischen Funktion bestimmt eine Operationsvariable. Sobald sie in einer Operation true ist, erfolgt der oben erklärte Ablauf so lange (bei jedem SPS-Zyklus), bis der Wert der Operationsvariablen wieder false ist, also etwa in der folgenden Operation. Daher "Caculate(multiple)", also "berechne mehrfach".
Falls Sie diese Boolesche Variable mit Local Static angeben, erzeugt der Precompiler eine lokale Variable selbst.
Sollte der Ergebnis-Speicher auch im arithmetischen Ausdruck erscheinen,
z.B. a := a + 1,
dann muß die Berechnung innerhalb genau eines Bearbeitungszyklus' der SPS erfolgen, weil ansonsten das Ergebnis die Anzahl der SPS-Zyklen am Ende der betreffenden Situation enthielte. Zum Beispiel sei a=5 beim Aufruf der Additionsfunktion (ist gleich Übergang in diese Situation), und es sollen 60 Bearbeitungszyklen während der Dauer der Situation angenommen werden, dann ist am Ende a=65 anstelle a=6. Sie können solche Ausdrücke zum Zählen verwenden anstelle Zählglieder zu projektieren. Aber eine einmalige Berechnung müssen Sie mit "Calculate (single)" wählen. Es sei denn, Sie wollen den Zähleffekt nutzen.
Weitere Details unter Kopier- und Arithmetikfunktionen.


Aufruf von Teilprozessen und Funktionen in PRAP

Aufrufe nicht nur standardisierter Bausteine in einem PRAP sind sinnvoll, um die Struktur des Projektes an den Bedarf anzupassen, aber auch um bestimmte Effekte, wie die Bildung eines Subsystems, zu erreichen.
Es ist in jedem Fall zeitsparend, an Hand der Funktionsplandarstellung alle benötigten Variablen in das aufrufende Member einzufügen, um sie dann Formalvariablen zuweisen zu können. Ebenso ist es günstig, TP-Namen einzuführen, die später benötigt werden.

 1.	Anleitung zum Aufruf eines Teilprozesses

•	Ein Teilprozeß (TP bzw. Instanz eines PRAP-Typen) entsteht immer aus einem PRAP dadurch, daß der PRAP-Name, der den Typ einer Variablenverarbeitung darstellt (Funktionsbaustein), durch einen Variablennamen "ersetzt" wird. Diese Variable ist letztendlich vom Typ des PRAP-Namen. Anschließend sind allen Variablen des Typen (Formal-Parameter) die im TP gültige Variablen (Aktual-Parameter) zuzuweisen.

•	Mit Klick auf "Formula" öffnet das Editierfeld. (Oder es ist bereits geöffnet.)

•	Setzen Sie den Cursor möglichst weit links
und drücken Sie dann die Tasten Ctrl+J (Strg+J). Scrollen Sie das Feld an das Ende, dort stehen alle einfügbaren Funktionen und Funktionsblöcke (PRAP). Es sind nur solche, die VOR dem Member stehen, das den Aufruf vollziehen soll. Eventuell müssen Sie im Projektbaum das Member erst verschieben.
Ein Klick auf das gewünschte schreibt den gesamten Ausdruck in das Formelfeld.

•	Vor dem Klammerausdruck der Formalvariablen befindet sich der PRAP-Name. Löschen Sie ihn, um einen TP-Namen dafür einzutragen. Zuerst Klick auf [image] und danach auf [image], lassen Sie sich durch "Help" weiterführen.

 2.	FUNCTION als Funktionsaufruf

•	Stellen Sie den Cursor an die gewünsche Stelle. Wählen Sie wie oben aus den möglichen aufrufbaren Funktionen die passende durch Klick. Der Name vor dem Klammerausdruck bleibt erhalten als Funktionsaufruf.

•	Das Eintragen einer Funktion in einen mathematischen Ausdruck ist gleich dem Funktionsaufruf, der das Ergebnis der Funktion zurückgibt.

•	Eine Funktion hat stets einen Funktionswert wie jede Ausgangsvariable. Dieser Wert ist mit dem Namen der Funktion und deren Datentyp verbunden.

•	Jede Funktion benötigt mindestens eine Eingangsvariable. Ausgangsvariable können ebenfalls vorhanden sein. Beiden Arten von Formalvariablen sind Aktualvariable zuzuweisen.

 3.	INSTANCE / TP als Aufruf eines FUNCTION_BLOCK / PRAP

•	Der große Unterschied gegenüber einer FUNCTION ist bekanntlich die innere Zustandsfolge eines PRAP. Achten Sie darauf, daß der Aufruf wirklich so oft erfolgt, um den Durchlauf durch den PRAP zu sichern.

•	Fügen Sie eine PRAP-Typ-Funktion ein, dann müssen Sie als erstes den NAMEN (vor der Klammer) durch einen Instanz-Namen ersetzen. Das ist dann ein Teilprozeß-Name, der wie jede andere Variable eingefügt wird, allerdings mit dem Typen des PRAP-Namen, den Sie im "Angebot" der Datentypen (DATA TYPE) finden.

•	Nun weisen Sie allen Formalparametern Aktualvariable zu, wie es oben beschrieben ist.

•	Alle Ausgangsvariablen können Sie anschließend auch in selbst geschriebenen Formelausdrücken verwenden.

 4.	Aktualvariable stehen in einer FUNCTION oder einem FUNCTION_BLOCK allgemein nicht zur Verfügung, es sei denn es sind Konstante. Falls nicht ohnehin bereits deklarierte Variable im Funktionsaufruf wieder eingesetzt werden, müssen zusätzlich Variable deklariert und den Formalvariablen im Funktionsaufruf zugewiesen werden.
USAGE dieser Variablen darf nicht ADDRESS INPUT, ADDRESS OUTPUT oder ADDRESS MEMORY sein.
Achten Sie ansonsten gewissenhaft darauf!


Den gleichen Namen einsetzen bedeutet nicht zuweisen eines schon vorhandenen! Geben Sie die gleich Zeichenfolge nochmals ein oder kopieren Sie diese.


Der Standard IEC 61131-3 beschreibt die Standard-Funktionen "Rising Edge Detector" und "Falling Edge Detector" mit dem Eingang "CLK Input" und Ausgang "Q"


Die Datenbank

Bis Ende des Jahres 2005 wurde ausschließlich die Interbase-Datenbank benutzt. Seit Begin 2006 steht Firebird zur Verfügung, weil es zuweilen mit dem Betriebssystem Windows XP unangenehme Überraschungen gab. Da vollständige Kompatibilität herrscht, gibt es keine Probleme.
Dem User eines Projektes in SPaS sind Zugriffe in mehrerer Hinsicht ermöglicht:

 1.	Das Formblatt Database Options gewährt

•	das Neu-Anlegen eines Projektes

•	das Wiedereinloggen

•	das Arbeiten auf dem lokalen Server oder einem Server über das Internet

•	das Erzeugen eines Datenbank-Backup als komprimierte Datei

•	das Rückladen einer Backup-Datei

 2.	Anzeige und Editieren aller in der Datenbank eingetragenen Variablen

 3.	Zu jedem Member gehörige Daten und Variable sind in Arbeits- bzw. Formblättern editierbar (Hilfetexte siehe dort)


Entwurf strukturierter Datentypen - Derived Data Types (DDT)

 Related Topics

Neben den elementaren Datentypen wie BOOL bis REAL oder TIME, TON (Timer mit Einschaltverzögerung) usw. können Sie selbst definierte strukurierte Datentypen einführen und in einer Ressource deklarieren und dabei alle Datentypen eintragen.

Note
Die SPaS-Version 1 gestattet es nicht, bereits deklarierte DDT zu verwenden, ebenso sind Array- und Aufzählungstypen sowie Strings nicht nutzbar!

Nach dem Klick auf [image] tragen Sie einen Bezeichner des neuen Datentypes (Identification) ein. Ebenso sollte zur näheren Beschreibung in "Description" ein Text zu stehen kommen. (Falls ein Sheet UDT Settings, dann Nummer eintragen)
Nun müssen nach einem Klick auf [image] die Variablen eingetragen werden, die Inhalt des DDT sind.
Danach "OK" klicken, wodurch dieser Datenbaustein in die Ressource eingefügt ist.
Das Bilden der StrukturVariablen erfolgt in der RESOURCE oder dem PROGRAM TYPE, in dem Sie diese Datenstruktur benötigen.


Variable strukturierter Datentypen (VarDDT)

Wie jeder DDT ist auch eine VarDDT ein Member im Projektbaum! Der NAME des MEMBER ist festzulegen, der DDT zu wählen bzw. zuzordnen, so daß Sie von einem Struktur-Typ viele Struktur-Variablen bilden können. Jeder Zugriff auf eine Variable aus der Struktur lautet MEMBER.NAME
Das weitere Vorgehen erfahren Sie (click here).


Variable

Grundsätzlich gibt es in SPaS drei unterschiedliche Variablengruppen,

•	die Prozessvariablen (p-Var oder Eingangsvariable),

•	die Operationsvariablen (p-Var oder Ausgangsvariable)und

•	die allgemeinen Variablen, vor allem solche in eingebetteten Funktionen. Es gehören auch Konstante mit "NAME" als Identifikator in diese Gruppe.

Sie werden intern in verschiedenen Listen geführt und sind auch nicht austauschbar. Zum Beispiel ist eine p-Var nicht in einem arithmetischen Ausdrück einsetzbar. Siehe auch PRAP-Editor.
Jede Variable hat einen "NAME" als Identifikator, dem wegen der begrenzten Anzahl Zeichen noch ein "STATEMENT", zuweilen auch "DESCRIPTION", mit bis zu 128 Zeichen (sprachabhängig!) beigegeben wird und weitere Eigenschaften:

 1.	MEMBER:
Zuordnung zu einer Programm-Organisations-Einheit (POE). Jede Variable des Members erhält damit ihren Bezug mit <MEMBER>.<NAME>
Änderung der Zuordnung: click here

 2.	DATA TYPE:
Alle einfachen Datentypen wie z.B. BOOL, INT, REAL, TIME usw., aber auch FC, FB, P(rogram), DDT (Derived Data Types 'STRUCT')
Die Wandlung von Datentypen: click here

 3.	ADDRESS:
KEIN Eintrag bei USAGE von Constant und Input bis Input/Output.
KEIN Eintrag bei USAGE Local, weil Maschinen-Code-Compiler automatisch Adresse zuweist.
Eintrag ERFORDERLICH bei USAGE Address ..., aber nur Adress-Zahlen nötig. Bei Booleschen Adressen Byte.Bit mit Bit = 0 bis 7.

 4.	USAGE:
Constant (unbedingt mit Eintrag in INITIAL VALUE), Input, Output, Input/Output, Local Static, Local Temporary
Address Input, Address Output, Address Memory

 5.	INITIAL VALUE:
Anfangswert bei erstmaligem Start der CPU, einer Ressource.
Feste Wertzuordnung bei USAGE = CONSTANT.

 6.	POINT OF AUTOMATION:
Bezeichner der technologischen Aufgabenstellung aus dem Technologie-Schema, z.B. EMSR-Stellen nach DIN 19227-1.
Teilprozeß-Koppelungen mit Schlüsselwort KOP und nachfolgender Angabe des absendenden TP und Angabe aller empfangenden TP. Beispiel: KOP 12 nach 2,34,17, falls die TP im Prozeß-Zerlegungs-Graph oder in der Funktions-Block-Darstellung Nummern erhalten haben.

Die Gesamtansicht aller Variablen erhalten Sie im SPaS-Manager mit Klick auf

•	"View|Variables" oder

•	"View|All Variables" und anschließend auf [image].

Klicken Sie "View|Variables", erhalten Sie eine auf die Variablenart bezogene Ordnung (click here). Hier können Sie auch Variablen-Bezeichner (Statement = Varlist Comment) nachtragen, z.B. an Stelle von "Global Variable" bei Aktual-Variablen, oder auch ändern.
Mehr zu Listen: click here

Tip
Wollen Sie eine Variable löschen, dann beginnen Sie es hier (rechte Maustaste auf markierter Zeile). Die endgültige Beseitigung aus der Datenbank ist anschließend entweder bei View|All Variables möglich, oder Sie öffnen das zugehörige Member, markieren die betreffende Variable und löschen diese in der Variablentabelle (Access table) mit Klick auf [image].


Benutzen der Variablen-Anzeige und -Liste

Die Variablenanzeige

•	gestattet keine Ergänzungen

•	gestattet die Übersicht unter verschiedenen Filtermöglichkeiten

•	ermöglicht einige Änderungen

•	Erlaubt insbesondere Statements zu in der Ressource oder Programm-Typen eingeführten Aktualparametern zu schreiben

Die Liste enthält zwei Felder, die linke Liste enthält alle Variablen, eventuell nach Klick auf [image].
Daneben ist [image] zum Löschen aller nicht im Projekt zugewiesenen Variablen. Eine Variable gilt als zugewiesen, wenn diese in einem Member deklariert ist. Bitte überzeugen Sie sich VOR dem Klick auf diesen Button, ob Sie nicht noch eine Variable benötigen.

Die rechte Seite zeigt weitere Daten der Variablen.

Bedienen der Filterfunktion:

•	Allgemein: Nur eine Option auswählen
Kombinierbar: Kind/Function & Member

•	Suchen Sie unter Filter Values das Zutreffende aus. Variablen zu Instanzen werden nicht angezeigt, da dortkeine deklarierbar sind!
"Kind" bedeutet die Art der Variablen, also Prozeß-Zustands-Variable oder Operations-Variable. Lokal deklarierte sind von der Art "Variable".

Die Datenfelder

•	Kümmern Sie sich nicht weiter um die Felder, in denen Indizes angezeigt werden, die im Zusammenhang mit der Interbase- Datanbank stehen.

•	Varlist Comment
ist ein Feld, in dem Statements bzw. Comments oder Descriptions erscheinen, die im Laufe der Projektentwicklung entstanden oder auch nicht. Hier können Sie den Text ändern, falls erforderlich überhaupt erst eintragen.

•	Jede Änderung ist entweder rückgängig durch Klick auf [image] zu machen oder in die Datenbank einzutragen durch Klick auf [image].

•	Empfehlung: Keine weiteren Änderungen hier durchführen! Ändern Sie dort, d.h. in dem MEMBER, wo die Variable (=NAME)zugeordnet ist.

•	Eine markierte Variable kann mit Klick auf die rechte Maustaste [image] weitere Auskunft über ihre funktionelle Verknüpfung geben oder gelöscht werden.


Alle Variablen anzeigen und bearbeiten

Die Gesamtansicht aller Variablen erhalten Sie im SPaS-Manager mit Klick auf

•	"View|Variables" oder

•	"View|All Variables" und anschließend auf [image], falls keine Anzeige.

Klicken Sie "View| All Variables" erhalten Sie eine Sicht auf das Member bezogen:
Im Feld "MEMBER" sehen Sie, wo die Variablen zugeordnet sind bzw. deklariert wurden, und im Feld "USAGE" wird angezeigt, wie diese Variable verwendet wird. Falls "Muliple Choise" bei "MEMBER" eingetragen ist, dann finden Sie unterhalb der Tabelle angegeben, wo überall zugeordnet. Im Feld "COUNTER" erkennen Sie, wie oft die Variable zugeordnet wurde.

Note
Nutzen Sie die Möglichkeit, zu jeder in der Tabelle markierten Variablen mit rechter Maustaste und Klick auf "Search member of Variable declaration" oder "Search instances using the variable" mehr zu erfahren.

•	Sie können alle erforderlichen Korrekturen nur in den Feldern vornehmen, NICHT IN DER TABELLE.

•	Fehlende Variable können Sie nach Klick auf [image] hier eintragen. Die Zuordnung jeder Variablen kann nur im Member erfolgen. Die Felder "MEMBER" und "USAGE" bleiben also leer. Bis zu dieser Zuordnung bleibt auch offen, ob die Variable ein formaler oder aktualer Parameter ist. Dies ist wichtig zur Zuordnung der Variablen zum Typ bzw.zur Instanz. Auf jeden Fall nach der Korrektur [image] anklicken!

•	Überflüssige, nirgends zugewiesene Variable entfernen Sie entweder
mit Klick auf [image] oder
einzeln nach dem Markieren mit Klick auf [image]. Vorher bitte View|Variables anklicken und dort löschen.


Datenbank-Report

Variablen des markierten Members werden aus der Datenbank druckreif angezeigt, sind jedoch nicht veränderbar. Bitte beachten Sie die Bedeutung der Symbole am oberen Rand des Fensters.
Dort finden Sie hinter dem Wort "Kind" drei mögliche Listen-Typen:

•	Process Variable:
Die in die "Conditions" eingetragenen Namen und Statements, alle sind Boolesche Variable.

•	Operation Variable
Die in die "Operations" eingetragenen Namen und Statements, alle sind Boolesche Variable.

•	Variable

 1.	Hier sind alle anderen Variablen aus Funktionen enthalten, die mit den Process oder Operation Variables verknüpft sind.

 2.	Es werden auch alle Aktual-Parameter in dieser Liste geführt.
Deklarationen in PROGRAM oder RESOURCE enthalten nur diese Liste. Dies sind dann "Global Variables".

 3.	Strukturierte Datentypen sind ausschließlich in der Liste "Variables" enthalten.

Falls Sie Fehler feststellen, dann brauchen Sie die Anzeige nicht zu schließen, Sie korrigieren entweder im zugehörigen Member oder in der Gesamtansicht aller Variablen.

Warning
Der Druckvorgang funktioniert nur für "Current Page". Stellen Sie also die zu druckende Seite zentral im Bildschirm und klicken auf "OK". Dies müssen Sie leider bei allen Seiten wiederholen.
Zuweilen werden mehr Seiten als nötig angezeigt. Achten Sie bitte auf den Inhalt der Seite, die zum Drucken dem Drucker übergeben wird.


Import einer Variablentabelle (Exceltabelle)

Wenn Sie für die Prozeß- und Koppelvariablenvariablen eine Exceltabelle anlegen, können Sie diese in Member importieren, mehr dazu: click here


Back-Up-Datenbank

Die im Verlaufe der Projektentwicklung entstehende Datenbank kann für Zwecke der Archivierung in komprimierter Form gespeichert werden. Bei Wiederverwendung muß mit dem Rückladen wieder eine normale Datenbank (Back Up and Restore) erzeugt werden.


Änderung der Zuordnung einer Variablen zu einem anderen Member

Folgende REIHENFOLGE DER HANDLUNG ist zu empfehlen:

 1.	Memberdialog des Members öffnen, in dem die Variable steht (Doppelklick auf Member)

 2.	Variable markieren, wodurch die Variablentabelle geöffnet wird.

 3.	Rechte Maustaste bietet "disconnect" an. Mit Klick (linke Maustaste) verschwindet die Variable aus dem Memberfeld. In der Variablentabelle bleibt sie stehen.

 4.	Variablentabelle schließen durch Klick auf [image]. Anschließend "OK"-Klick und Member wird geschlossen.

 5.	Öffen neues Member und Variablentabelle öffnen mit KLick auf [image].

 6.	Bei "Filter Off" die Variable suchen und alle Daten überprüfen, ob sie so bleiben sollen, danach markieren. Es darf bei "Member" kein alter Eintrag stehen! Falls doch, dann disconnect wiederholt durchführen.

 7.	Klick auf [image] ordnet die Variable dem neuen Member zu.

 8.	Member schließen mit Klick auf "OK".


UDT = User Defined Data Types ist ein Begriff aus SIEMENS Step 7. Dieses Sheet gibt es nur bei einer Sprache aus S7. Ebenso müssen Sie einen Datenbaustein für jede Variable vergeben.


Begriffs-Erklärungen

Ein Werkzeug, wie SPaS es darstellt, benötigt eine zum Teil neue Begriffswelt, weil die Struktur eines Steuerprogramms sowohl den Erfolg der Prozeß-Steuerung bestimmen kann als auch der Projektant insbesondere bei großen Prozessen eine Übersicht benötigt, die er sich durch verschiedene Strukturen schaffen und bewahren kann. Das gilt besonders bei Änderungen in einzelnen Teilprozessen, die normalerweise im PRAP mit dem PRAP-Editor stattfinden. Begriffe aus der Norm DIN IEC 61131-3 werden hier nicht näher erläutert, sondern nur deren Texte aus der Norm zitiert.

Hier finden Sie Begriffe alphabetisch geordnet und kurz erklärt: Wörterbuch

Herausgehobene Themen aus dem Wörterbuch:
Adresse - allgemein
Adresse - direkt
Formalparameter
Aktualparameter

Aufruf
Aufrufbezeichner
Aufrufgruppe
Baustein
Bausteinbezeichner
Instanz-Baustein

Prozeß-Ablauf-Plan (PRAP)
PRAP- und Fremd-Programme
Typ-Baustein / Bausteintyp

Project (Projekt)


Adresse - allgemein

Alle von Ihnen eingeführte Variablen, die unter USAGE mit "Local Static" markiert wurden und die daher KEINE ADRESSE erhalten, sind im PRAP- oder PROGRAM-Typ unter "VAR" ... "END_VAR" deklariert. Der Maschinencode-Compiler erzeugt zu jedem dieser "Symbole" eine für den Benutzer nicht sichtbare Adresse im RAM.
Wollen Sie eine Adresse angeben, dann lesen Sie unter Adresse - direkt weiter.


Adresse - direkt

In der DIN IEC 61131-3 wird hierzu unter direkte Darstellung (direct representation) ausgeführt: "Mittel zur Darstellung einer Variablen in einem SPS-Programm, von der eine herstellerspezifische Entsprechung zu einem physikalischen oder logischen Speicherort direkt bestimmt werden kann".

Note
Sprachunabhängig sind direkte Adressen dann, wenn sie zusätzlich zum "USAGE" folgende Festlegungen enthalten:
Bit-Adressen sind mit [Byte-Nr].[Bit-Nr] anzugeben, wobei [Bit-Nr] = 0 .. 7 vorgeschrieben ist.
Byte-Adressen sind von 0 an frei wählbar.
Wort-Adressen enthalten immer zwei Byte-Adressen. Also enthält z.B. die Wortadresse 14 die Byte-Adressen 14 und 15. Die nächste Adress-Nummer ist die 16.
Doppelwort-Adressen enthalten folglich zwei Wortadressen.

Unter USAGE sind "Address Input" oder "Address Output" oder "Address Memory" einzutragen, niemals "Local Static" oder "Local Temporary". Der SPaS-Precompiler bestimmt aus dieser Angabe das Präfix: Z.B. bei "Address Input" für STEP 7 "E", "EB", "EW" oder "ED" je nach Datentyp.
Wenn Sie die Sprache STEP 7 (S7 200, S7 300 oder S7 400) wählen, dürfen Sie auch z.B. E 5.2 schreiben. Dagegen müssen Sie Peripherie-Adressen immer eintragen (z.B. PEW 352) oder über Pointer wie Adress-Register ("Address Memory").
Wenn Sie die Sprache "Structured Text" wählen, können Sie auch die international genormte Form anwenden, also bei "Address Input" z.B. %IX12 oder auch %IX22.4.7, weil dann jeder Punkt eine gänzlich andere Bedeutung hat!


Aktual-Parameter

Ein Instanzbaustein übergibt aktuelle, d.h. für diesen Baustein gültige Adressen oder Konstante an den für ihn gültigen Typ-Baustein. Deshalb werden diese auch Übergabe-Variable genannt, obwohl es auch feste Werte - Konstante - sein dürfen. Wichtig ist dabei die Reihenfolge der Aktualparameter, weil in der Variablendeklaration des Typ-Bausteins die Formalparameter "Platzhalter" der funktionellen Verarbeitung darstellen.
Deklariert werden Aktual-Parameter in Members wie RESSOURCE und PROGRAM mit Address Memory, Address Input, Address Output oder Local Static.


Konstante Größen, numerische Literale

 Related Topics

In SPaS werden weitestgehend die Festlegungen der DIN EN 61131-3, Tabelle 4, zur Anwendung gebracht. Die Basis-2/8/16-Literale sind derzeit nicht nutzbar. Literale mit Typangabe sind auf anderem Wege als in der Norm angegeben gewährleistet und Pflicht.
Bitte folgende Hinweise beachten, wenn Sie in INIT VALUE eintragen:

•	Jede Größe hat eine Identifikation über ihren Namen (NAME bzw. IDENTIFICATION)

•	Jede Konstante (USAGE = Constant) ist auch einem Datentyp zugehörig.

•	Boolesche Größen
Sie dürfen als NAME z.B. true / false (Groß- oder Kleinbuchstaben) oder andere wählen.
Sie dürfen als Initialwert 0 / 1 verwenden, aber wahlweise True / False ebenfalls!

•	Ganze Zahlen:

 1.	SINT: -128 ..+127

 2.	INT: -32768 .. +32767

 3.	DINT: -2147483648 .. +2147483647

Große Zahlen können Sie mit "_" aufgliedern, z.B. 343_562_110. Aber bitte kein Punkt oder Komma verwenden.

•	Gleitkommazahlen:
REAL: -3.402823*10 hoch+38 .. 0.0 .. +3.402823*10 hoch+38
Verwenden Sie nicht mehr als 7 Ziffern
Tausender mit "_" aufteilen oder mit ","
Anstelle 10 hoch.. E+38 bzw. E-38 schreiben, aber die Potenzangabe kann auch unterbleiben. Z.B. ist 234.368 eine Real-Zahl.

•	Zeitwerte:
Gemäß DIN IEC 61131-3 ist T# ..H ..M ..S ..MS gültige Eingabe, aber SPaS gestattet, Zeitwerte verkürzt schreiben zu dürfen. Z.B. werden auch 25,3min angenommen und automatisch DIN-gerecht intern weiterverarbeitet.
Tageszeiten und Kalenderwerte, also etwa DATE_AND_TIME ist späteren Versionen vorbehalten.

•	Zählwerte:
Für alle Zähler dürfen Werte der Datentypen INT, DINT, aber auch UINT und UDINT. Erkundigen Sie sich ausführlich, welcher Datentyp für Ihre CPU geeignet ist! Ebenso können die Zählwerte beschränkt sein, also den vom Datentyp möglichen Umfang nicht ausschöpfen.
Denken Sie daran, daß Sie auch mit Arithmetik alle Zählprobleme lösen können.

Numerische Literale direkt eingeben: Ausnahmen in Formeln
Wollen Sie einen konstanten Wert einer Variablen übertragen oder ihn in einer Formel einsetzen, dann dürfen Sie gemäß obiger Beschreibung ein Symbol (Name) verwenden, das dieser Konstanten zugeordnet ist oder diese Konstante als Zahl direkt in den Formelausdruck schreiben.
Beispiele zeigen das Kopieren, Überschreiben:
"Variable" ist Output und INT deklariert
Variable := zwanzig; ( "zwanzig" ist Constant und INT mit Initial Value = 20 deklariert)
Variable := 20; ("20" ist nicht deklariert, nur in den Formelausdruck als Zahl eingetragen, Datentyp ist frei, nicht festgelegt.)
Variable := INT#20; (INT#20 ist nicht deklariert, nur im Ausdruck eingetragen mit der Maßgabe, daß "20" ein Integerwert ist.)
"Var" ist Output und BOOL deklariert
Var:= wahr; ("wahr" ist Constant und BOOL mit Initial Value = 1 / True deklariert)
Var := True; ("True" ist nicht deklariert, nur in den Formelausdruck als Wert eingetragen, Datentyp ist BOOL durch das Schlüsselwort True. HIER NIEMALS "1" VERWENDEN!! )
Var := BOOL#1; ("BOOL#1" ist nicht deklariert, nur in den Formelausdruck als Wert eingetragen. Anstelle von 1 darf auch true stehen.)


Formal-Parameter

 Related Topics

Jede Funktion und jeder Funktionsbaustein enthält Variable, die funktionell innerhalb des Bausteins verarbeitet werden. Diese Variablen werden Formalparameter genannt, die in der Variablen-Deklaration des Typen-Bausteins aufgeführt sind. Sie sind "Platzhalter" für Aktualparameter und damit vorläufige Adressen, die zu wirklichen werden, wenn im Instanz-Aufruf oder Funktions-Aufruf aktuelle übergeben werden.


Aufruf

Zum Aufbau eines Steuerungsprojektes wird der Begriff neu beschrieben:
Jeder Aufruf muß "eine Ebene" nach dem Bezeichner eines Aufrufes eingefügt werden. SPaS fügt automatisch eine Ebene nach Aufruf-Bezeichner die aufgerufenen Bausteine ein. Die Reihenfolge der Aufrufe wird im Steuerprogramm (Compilat) eingehalten.
Jeder Baustein muß vom Betriebssystem des Prozeßsteuerrechners, also auch von einer SPS, wenigstens einmal aufgerufen werden.
Ein Aufruf kann von einem PROGRAM und auch von einem Baustein ausgehen, sowohl von einer Funktion (FUNCTION) als auch einem Funktionsblock (PRAP, FUNCTION BLOCK).


Aufruf-Bezeichner

Gemäß der DIN IEC 61131-3 steht jeder Aufruf in einem Programm = PROGRAM, um danach die Programm-Instanz einer Task zuzuordnen. PROGRAM ist folglich im Sinne des Teilprojekt-Aufbaus ein Aufrufbezeichner. Ihm folgen im Projektbaum die aufgerufenen Bausteine wie z.B. Teilprozesse (=PRAP-Instanzen) oder Funktionen. Echtzeit-Betriebssysteme verwalten Tasks, jede Task ruft ihr zugeordnetes Programm auf (Programm-Instanz).
Andererseits können auch in PRAP und Funktionen wieder Aufrufe stehen, dann sind diese Indentifikatoren zugleich Aufrufbezeichner.

Betriebssystem-Aufrufe werden auch gemäß DIN 19239 Organisationsbausteine genannt, wie es von SPS-Erzeugnissen der Firma Siemens her bekannt ist. Solche Aufrufbezeichner beginnen mit den Buchstaben OB und bedienen eine große Palette von Tasks.


Aufrufgruppe

Der Begriff der Aufrufgruppe bildet sich aus der Tatsache, Bausteine um eine Ebene versetzt gegenüber dem aufrufenden Baustein im Projektbaum einzutragen. Sie werden in dieser Reihenfolge abgearbeitet. Falls nur einer eingetragen ist, besteht die Gruppe eben nur aus diesem Baustein.

Aufrufgruppe
wird jede Aufruffolge genannt, die der Precompiler (PreCOM) an den Aufrufbezeichner der vorhergehenden Ebene "übergibt", d.h. im AWL-Programm einen Aufruf (CALL) je Baustein einträgt.
Hierzu gehören:

•	Aufrufe eines jeden PROGRAM

•	Aufrufe innerhalb eines PRAP

•	Aufrufe innerhalb einer FUNCTION


Baustein

Baustein heißt jeder Teil eines Steuerprogramms. Die DIN IEC 61131-3 kennt dafür den Begriff Programm-Organisations-Einheit (POE), ein Baustein ist eine POE. PreCOM erzeugt für jeden Teilprozeß einen Baustein, der als PRAP existiert, folglich mittels PRAP-Editor festgelegter Steuerungsablauf eines Teilprozesses ist, auch PRAP-Typ genannt.
Bausteine haben oft die Bezeichnung Funktionsbaustein und daher den Kurzbezeichner FB mit nachgestellter Nummer. Die DIN IEC 61131-3 nennt sie FUNCTION_BLOCK.
Typ-Baustein
Instanzbaustein
PRAP- und Fremd-Baustein


Bezeichner und Namen

 Related Topics

Bezeichner sind meist formale Abkürzungen für Variable und Bausteine, sie dienen der Identifikation. Hierzu gehören auch Bausteinbezeichner unter den konventionellen Sprachen die z.B. von den Produkten der Firma Siemens bekannten FB, FC (Funktionsbaustein, Funktion) usw. Instanzbausteine sind auf FB-Typen basierend. Sie sind wirklich ausführbare Funktionen mit wirklichen Adressen, sogenannten Aktual-Parametern.
DIN IEC 61131-3 gestattet eine freie Wahl der Zeichenfolge aus den Ziffern 0 .. 9, den Buchstaben a .. z, A .. Z und Unterstrich "_", wobei das erste Zeichen ein Buchstabe oder ein Unterstrich sein muß.


Typ-Baustein / Typ-PRAP

Typen-Baustein oder Baustein-Typ kann jeder PRAP sein, der seinen funktionellen Ablauf als typische Steuerungsfunktion für einander gleich zu steuernde technologische Einheiten zur Verfügung stellt. Diese Formulierung weist darauf hin, daß ein Typen-Baustein nicht aufgerufen werden kann, ohne einen konkreten Bezug zu den zu verarbeitenden Variablen herzustellen. Einen solchen Bezug leistet der Instanzbaustein.
Das Schalten eines Elektro-Motors kann eine solche typische Steuerungsfunktion sein. Für mehrere Motoren, die den gleichen Schaltablauf erfordern, kann ein Steuerungstyp entworfen werden. Ein solcher Typbaustein(PRAP-Type) oder Function Block PRAP(Type) erhält dann eine ihm zugehörige Identifikation.
Jede dieser PRAP-Typen ist zugleich Daten-Typ unter der "IDENTIFICATION" bzw. des dort eingetragenen Bezeichner-Textes.
Die DIN IEC 61131-3 definiert:
"SPS-Sprachelement, bestehend aus :
(i) Der Definition einer Datenstruktur, geteilt in Eingangs-, Ausgangs- und interne Variablen und
(ii) einer Menge von Operationen, die mit den Elementen der Datenstruktur durchgeführt werden, wenn eine Instanz des Funktionsbaustein-Typs aufgerufen wird."


Instanz-Baustein

Ein Instanzbaustein ist eine Programm-Organisationseinheit. Sie entnimmt ihre funktionellen Eigenschaften genau dem Typ-Baustein, dem sie ihre individuellen, technologisch relevanten Variablen-Parameter zur Verarbeitung übergibt.
Der Prozeßzerlegungsgraph enthält ausschließlich Instanzen oder Unikate.
Nach DIN IEC 61131-3 ist der Instanzbaustein ein "individuelles, benanntes Exemplar einer Datenstruktur, verknüpft mit einem Funktionsbaustein-Typ oder Programm-Typ, das von einem Aufruf der zugehörigen Operationen bis zum nächsten erhalten bleibt."
Falls diese Zeilen zur Klärung nicht beitragen, könnten Sie unter dem Begriff Aufrufgruppe fündig werden.


PRAP- und Fremd-Bausteine

 1.	PRAP-Bausteine
sind Anweisungslisten bzw. Befehlsfolgen (ST, C/C++), die einem PRAP entsprechen, der mit dem PRAP-Editor erzeugt wurde. Zur Eigenschaft eines jeden PRAP (Member im Projektbaum markieren: rechte Maustaste|Klick: Open Member Dialog oder Doppelklick mit linker Maustaste) gehören der Name und eine Bezeichnung des PRAP (Identification, Description).

•	PRAP-Typen stellen ihre PRAP-Struktur (funktionelle Verknüpfung aller Parameter) und Formalparameter zur Verfügung, die PRAP-Instanzen (=Teilprozesse) durch Aktualparameter ersetzen.

•	Unikat- bzw. TP-PRAP sind Teilprozesse, die einmalig im durch die Prozeßzerlegung vorliegenden Steuerungs-System sind.

 2.	Fremd-Bausteine
sind keine durch PRAP entstandenen Bausteintypen, sondern Befehlsfolgen, die mit "Structured Text" entworfen, in das Steuerprogramm eingebunden und beim Compilieren in den Quellcode (Herstellersoftware!) mit übersetzt werden.

 3.	System-Bausteine
können in das Projekt mit aufgenommen werden, sie (click here) sind an den Hersteller der Ressource gebunden. Häufig sind es Kommunikations-Funktionen für eine bestimmte Datenbus-Ausführung.


Project (Projekt)

Der Begriff Projekt ist mit einem Bezeichner versehen, einem Namen also, der für das gesamte Prozeß-Steuerungsvorhaben steht, das als Steuerungsprogramm erzeugt werden soll. Dieser Name wird einmalig beim Anlegen des Projektes vom User gegeben.
Ein Projekt beinhaltet im System SPaS mindestens eine Configuration (Konfiguration) und zu jeder Konfiguration gehört mindestens eine Resource (Ressource). Zu jeder Ressource gehören mindestens ein PROGRAM und eine TASK.
Der weitere Aufbau ist im Detail im Thema Projekt-Editor beschrieben.


Standard-Funktionen und -Funktionsbausteine

Standard-Funktionen
sind in der DIN IEC 61131-3 im Abschnitt 2.5.1.5 beschrieben. SPaS verwendet davon die Typumwandlungen sowohl durch automatisches Einsetzen als auch durch manuelles. Typwandlungen, die eindeutig durchführbar sind, z.B. INTEGER nach REAL, werden automatisch in das Compilat geschrieben. Eine Typwandlung von INTEGER nach SHORTINTEGER oder WORD muß zwingend der Projektant verantworten und von Hand einsetzen.
Numerische Funktionen wie ABS, SQRT, LN oder alle trigonometrischen Funktionen sind vorbereitet. Da dies auch sprachabhängig ist, ob diese Funktionen verfügbar sind, ist der Precompiler noch nicht damit ausgestattet.
Arithmetische Funktionen sind außer MOD und EXPT verfügbar.
Bitschiebe-Funktionen sind alle verfügbar.
Bitweise boolesche Funktionen sind außer NOT verfügbar.
Auswahlfunktionen sowie Zeichenfolgefunktionen  sind nicht verfügbar.
Vergleichsfunktionen sind vollständig verfügbar.
Funktionen für Datentypen der Zeit sind NUR für TIME verwendbar, alle anderen NICHT.

Standard-Funktionsbausteine
Bistabile Bausteine wie RS-Flip-Flop werden grundsätzlich nicht benötigt und sind daher nicht verfügbar.
Flankenerkennung ist vollständig einsatzbereit.
Zählerbausteine werden alle mit dem Typen CTUD projektiert. Die Zähl-Variablen CU bzw. CD sind beliebig verfügbar. Das R-Signal ist nicht verfügbar. Die Ausgänge QU und QD können frei benutzt werden.
Zeitbausteine werden grundsätzlich mit dem Typen TON projektiert. Falls die Ausschaltverzögerung benötigt wird, ist dies im PRAP zu gestalten.

Weitere Themen:
Allgemeine Funktionen, insbesondere selbst definierte (Funktionen) und (Einfügen einer Funktion in die Ressource) oder (der Funktions-Aufruf)


Subsysteme

Unter einem Subsystem werden mehrere Funktionsblöcke verstanden, die in ihrer Gesamtheit "nach außen" eine bestimmte Funktionalität garantieren. Folglich enthält jedes PROGRAM prinzipiell ein Subsystem. SPaS unterstützt aber auch durch die Aufrufmöglichkeit von Teilprozessen aus PRAP heraus eine andere Subsystem-Gestaltung. (click here)
Die IEC 61944-1 kennt zwei Bezeichnungen: Composite Function Block und Subapplication. Der Unterschied ist, stark vereinfacht gesagt, durch die benutzte Hardware gegeben. Sind alle Funktionsblöcke auf einer Resource installiert, heißt das Subsystem Composite Function Block.


System-Funktionen bzw. Funktionsblöcke

System-Funktionen sind vom Hersteller der Ressource bereitgestellte, nicht änderbare Funktionen, sog. Systembausteine. Sie werden mitunter für spezielle Eigenschaften unbedingt benötigt, oft sind es auch Funktionen für die Kommunikation.
Es gibt mit dem Ikon [image] die Möglichkeit des Einfügens von Funktionen bzw. Funktionsblöcken in die Ressource. Denken Sie daran, dass weder Quellcode noch Maschinencode bei SPaS bekannt sind, folglich müssen Sie Systemfunktionen vom Hersteller z.B. aus einer Bibliothek in das Compilat einfügen. Fragen Sie beim Hersteller!
Die ersten Erfahrungen liegen mit S7 vor.(click here)


Alphabet-Buttons

Hinweis auf eine Fehlfunktion:
Wenn Sie in den Abschnitt der Alphabet-Buttons durch Klick hineinspringen, dann die Maustaste erst loslassen, wenn Sie mit dem Cursor außerhalb der Buttons sind, ansonsten springt die Darstellung dorthin, wo der Cursor gestanden hat!

Tip
Falls Sie lieber die Buchstaben anwählen wollen, dann gehen Sie zurück zum "Handbuch" und finden unter "Begriffe in SPaS" das "Wörterbuch" mit Buchstabenwahl.


-A-

Access Table - Datenzugriff auf Datenbank
Adresse - allgemein
Adresse - direkt
Aktual-Parameter
Anfangszustand/Initialisierung/Startzustand der Teilprozesse
ASCII-Baustein
Aufruf
Aufruf-Bezeichner
Aufrufgruppe
Arithmetik-Funktionen
Ausdruck
Ausgabe an Adresse (Kopier-Funktion)

Zurück zu den Buttons


-B-

Baustein
Bezeichner, Name, Identification
Bedingungsstabil
Beschreibung - Zulässige Zeichenfolge
Binärer Prozeß-Zustand
Binäre Prozeßanalyse
Binär-Vektor

Zurück zu den Buttons


-C-

Code
Comment - Sequence of Letters and Digits
Compilat
Connectors, Sinn und Zweck und verwenden im PRAP
Configuration
Conversions of data types

Zurück zu den Buttons


-D-

Data Type - Datentyp
Datentyp-Wandel - Data type conversion
Description - Sequence of Letters and digits
Durchlauf
dynamische Prozeßzustandsvariable

Zurück zu den Buttons


-E-

Ebene
Einzelübersetzung von PRAP, FUNCTION, PROGRAM
Entwurfsprozeß des Automatisierungs-Projektes
Erzeugte Koppelung

Zurück zu den Buttons


-F-

Fach-Sprache
FirstRun - Initialisierungsvariable
Funktionsbaustein-Bezeichner
Formal-Parameter
Function Block
Formelobjekt
Funktion
System-Funktion
Zurück zu den Buttons


-G-

Globale Variable
Gerichteter Graph

Zurück zu den Buttons


-H-

Halteprozeßzustand
Hilfe-Texte, wie damit umgehen ...

Zurück zu den Buttons


-I-

Identification - Zulässige Zeichen/Sequence of letters and digits
Initial-Operation/Situation
Instabile Operation/Situation
Instabiler Zyklus
Instanz-Baustein
Initialisierung/Startzustand der Teilprozesse

Zurück zu den Buttons


-J-

(kein Stichwort)

Zurück zu den Buttons


-K-

Kombinatorische Struktur
Kommentar - Zeichen
click here
Konfiguration
Konnektoren im PRAP
Konstante Größen
Koppel-Variable

Zurück zu den Buttons


-L-

Lokale Variable (Local Static, Local Temporary)

Zurück zu den Buttons


-M-

Member
Mensch-Anlagen-Kommunikation

Zurück zu den Buttons


-N-

NAME - Zulässige Zeichen/Sequence of letters and digits
Natürliche Koppelung
Eingebettete Funktionen

Zurück zu den Buttons


-O-

Operation
Operationen-Folge
Operationsvariable
Operationen-Zyklus

Zurück zu den Buttons


-P-

Parameter
Paarweise Steuerrelationr
Pfad
POE - Programmorganisationseinheit
PRAP
PRAP- und Fremdprogramme (ACSII-Bausteine)
PreCOM
PreCompiler-Ergebnis
Programm (PROGRAM)
Project (Projekt)
Projektbaum
Prozeß-Schritt
Prozeß-Situation
Prozeß-Zerlegung
Prozeßzustands-Variable

Zurück zu den Buttons


-Q-

(kein Stichwort)

Zurück zu den Buttons


-R-

Ressource

Zurück zu den Buttons


-S-

Situation
Sprache, wählbare Sprache
SPaS
Stabilitäts-Prozeßzustand
Starker Zusammenhang
Startzustand / Initialisierung der Teilprozesse
Statement - Sequence of Letters and digits
Statische Prozeßvariable
Steuerung
Steuerungs-System
Strukturierte Datentypen - User Defined Types
Strukur-Stabilität, strukurstabil
System-Funktion

Zurück zu den Buttons


-T-

Task
Teil-AWL / Teil-Steuerung
Teilprozeß
Transition
Typenteilprozeß
Typenprozeßablaufplan

Zurück zu den Buttons


-U-

Übergangs-Prozeßzustand
Umwandlung von Datentypen
Unikat

Zurück zu den Buttons


-V-

Variable
Variablentabelle - Access Table
Variable Usage, Verwendung von Variablen
Vergleicherfunktion
Vollständigkeit

Zurück zu den Buttons


-W-

Wandelung der Datentypen
Wählbare Sprachen
Wertebelegung
Widerspruchsfreiheit

Zurück zu den Buttons


-X-

(kein Stichwort)

Zurück zu den Buttons


-Y-

(kein Stichwort)

Zurück zu den Buttons


-Z-

Zeit- und Zählglieder
Zustand
Zustands-Merker
Zyklus, Operationenzyklus

Zurück zu den Buttons


Beispielprojekt

An einem kleinen Ein-Ausschalt-Vorgang und einem Stern-Dreieck-Schaltproblem werden die Handhabung des Projekt-Editors und des PRAP-Editors zur Vorbereitung der Übersetzung in ein Steuerprogramm für S7-300 (Fa. Siemens)behandelt.
Das Beispielprojekt finden Sie hier.
Die PRAP-Entwicklungen erreichen Sie hier.
Ein Timer aus dem Beispiel-Projekt: Klicken Sie hier.
Eine Vergleicher-Funktion aus dem Beispielprojekt: Stromvergleich


Beispiel Timer

Der folgende Timer ist mit einer konstanten Dauer entworfen: Beispiel aus Stern-Dreieck-Schaltung


Zähler-Beispiel

Im PRAP sind drei Zähler enthalten, ein Vorwärtszähler, ein Rückwärts-Zähler und ein Vorwärts-Rückwärts-Zähler.
Der Vorwärts-Rückwärts-Zähler(V-R-Z)
wird bereits mit dem Anfangswert Null in der Initialsituation eingeschaltet und nie ausgeschaltet. Damit wird erreicht, daß das momentane Zählergebnis während der Gesamt-Funktionszeit zur Verfügung steht. Die PRAP-Funktion wird durch den V-R-Z gesteuert. Der Übergang von der Operation O1 zur Operation O2 erfolgt, sobald das Zählergebnis 5 ist. Der Übergang von O3 zu O0 erfolgt bei der Aussage: Vor-Rück-Zähler = 0 (Prozeßvariable p6).
Die Prozeßvariable 1 (p1), "Zählvorgang einschalten", sei irgendein Schalter, der zu jeder Zeit auch ausgeschaltet werden kann, dann gilt p1=N.
Das Vorwärts-Zählen des V-R-Z geschieht durch die Prozeß-Variable p4, das Rückwärts-Zählen durch die Prozeß-Variable p5. Stellen Sie sich bitte je einen Sensor vor, um die beiden Ereignisse des Hinzufügens und Entfernens zu "melden".
Der Vorwärtszähler
wird erst nach dem Einschalten des Zählvorganges in Betrieb genommen. Er erhält einen Anfangswert 4, natürlich etwas merkwürdig, weil jede Erhöhung durch Zählen nur höhere Werte liefert. Aber es ist ja nur ein Beispiel. Das Zählen erfolgt in der O2 durch eine Operationsvariable. Nach einem "Sollwert" wird nicht gefragt.
Der Rückwärtszähler
wird in der Operation 2 eingeschaltet mit einem Anfangswert = 10. Das Rückwärtszählen erfolgt in der O3 durch eine Operationsvariable. Auch hier wird nicht nach einem Sollwert gefragt, z.B. wann der Wert 10 heruntergezählt ist, also der Zählerausgang Null ist.
Die PRAP-Funktion:
Die Initial-Situation (Sit0) kann nur mit dem Einschalten (p1) verlassen werden. Die Folge-Situation mit O1 ist so lange stabil, wie der V-R-Z noch nicht den Wert 5 (p8) erreicht hat (Vergleicherfunktion: Zählerstand mit Konstante 5), oder der Zählvorgang wird abgeschaltet (p1). Immer dann, wenn ein Stück hinzu kommt (p4 = Y), wird der Zählerwert um 1 erhöht. Dabei wechselt die Stabilitätsbedingung für O1 von p1=Y UND p4=N nach p1=Y UND p4=Y UND p8=N. Ein neues Stück kann erst erfaßt werden, wenn der Sensor vorher wieder p4=N meldet.
Der Übergang zur Situation 2 (Sit2) mit der Operation 2 führt zur Stabilität nur, wenn in diesem Augenblick kein Stück entnommen wird. Mit dem Übergang zählt der V-Z und der R-Z wird eingeschaltet.

Im Bild sehen Sie die markierte O2 und die Belegung der Operationsvariablen. Im Feld "Statement" können Sie erkennen, wie der Text im Rechteck der Operation entsteht, beachten Sie "\n " als Symbol für Zeilenwechsel. Darunter, in der "List of Operation Variables", sehen Sie alle Operationsvariable des PRAP und deren Markierung.
Erfolgt nun eine Entfernung eines Stückes, findet der Übergang zur Situation 3 statt, wobei diese nur stabil ist, solange der Sensor p5=Y meldet.
Sobald der Sensor p5=N meldet, findet der Übergang von Sit3 nach Sit2 statt. Dieses "Hin-Und-Her" des Rückwärtszählens führt bei leerem Zähler (p6=Y) zum Übergang in die Sit0, die nicht stabil ist, weil der Zählvorgang ja noch eingeschaltet ist, also p1=Y anliegt. Entweder jetzt wird ausgeschaltet, oder ein neues Zählexperiment kann beginnen.

Note
Wenn Sie diesen PRAP selbst ausprobieren, dann meldet "Check Graph" per Warnung die mögliche instabile Schleife O2 - O3 - O2.

Die dargestellten Zählerdiagramme sollen zeigen, in welchen Operationen welche Ereignisse eine Zählwert-Änderung erzielen. Der V-R-Z ist nur von außen durch die Stück-Zugabe oder-Entnahme beeinflußt, während die beiden anderen nur durch den Operationen-Wechsel bzw. Situationen-Wechsel ihren Wert verändern.
Die Projektierung eines Zählers bzw. dieses Beispiels finden Sie im Abschnitt Entwufsprozeß - Projektierungs-Ablauf.


Beispiel Vergleicher

Die folgende Vergleicherfunktion ist mit einem konstanten Sollwert entworfen: Beispiel aus Motor-Strom-Auswertung


Ein Ausdruck ist kein Druckerzeugnis eines Druckers sondern ein arithmetisches Gebilde, das im Textformat entworfen wurde, auch mit "strukturierter Text" bezeichnet.


Ausgangsvariable
sind Größen aller Datentypen, die

•	im PRAP meist Formalvariable sind, also ohne direkte Adressenangabe. Aber sie sind bezüglich Nutzung (USAGE) "Output" bzw. "Input/Output" oder "Local Static/Temporary". Es können auch Konstante mit USAGE "Constant" verwendet werden.
Operations-Variable sind immer vom Datentyp "BOOL", sie können als "Output" oder "Local Static" genutzt werden.

•	im PROGRAM (TYP) Aktualvariable sind, also direkte Adressenangaben tragen. Dann ist die Nutzung (USAGE) "Address Output" oder "Address Memory".
Keine direkte Adressenangabe erfolgt bei im PROGRAM lokal bleibenden Variablen, also USAGE ist dann "Local Static".
Konstante Werte mit USAGE "Constant" sind ebenfalls möglich.

•	im Teil-Prozeß, bzw.in der Instanz werden keine Ausgangsvariablen deklariert, aber diejenigen aus dem PROGRAM zugewiesen, dem der TP untergeordnet ist.


Ein Übergang von einer Operation Oj zur Folgeoperation Ok heißt bedingungsstabil, wenn der Haltezustand der Folgeoperation Ok nicht abhängig von den Bedingungen des Übergangszustandes der Operation Oj zur Operation Ok ist. In der Abbildung ist zu sehen, daß der Haltezustand der Operation O2 durch die Prozeßvariable p2 = nein-Belegung realisiert wird und nicht durch die Prozeßvariable p1.


Werte müssen auf Adressen ausgegeben werden, wenn Zeitwerte, Zählwerte und Sollwerte für Regler, Vergleicher , sowie Grenzwerte für Alarme und anderem nicht unabhängig vom Prozeßgeschehen festgelegt werden können. Damit ist die Möglichkeit gegeben, von der Prozeßsituation abhängig unterschiedliche Werte vorzugeben. Diese Funktion führt praktisch ein Kopieren von Werten durch. Unter dem Thema "eingebettete Funktionen" können Sie mehr erfahren.


Configuration (Konfiguration)
bezeichnet ein Automatisierungssystem mit einer oder mehreren Steuerungseinheiten (einschließlich Regelungen). Hier werden die beteiligten Steuerungseinheiten, wie sie SPS oder andere darstellen, aufgeführt. Jede Steuerungseinheit ist eine Ressource und enthält ihre eigenen Steuerungsaufgaben, die über ein Netzwerk mit den anderen zur Konfiguration gehörenden Ressourcen im Datenaustausch stehen kann.


Die Eigenschaft "Datentyp" einer Variablen bestimmt die Codierung der zur Verfügung stehenden Bit, zur Darstellung bzw. Speicherung der Variablen.
Der Typ ANY ist nur ausgewählten Größen vorbehalten wie z.B. einem Pointer. Näheres in click here.
Der Typ BOOL nutzt nur ein Bit, wobei die Adressierung von Hersteller zu Hersteller der SPS recht unterschiedlich ist.In SPaS wird nach dem Byte.Bit-Prinzip adressiert. Die Kennung E, A, M oder I, O, M am einfachsten nicht davorschreiben, da sie automatisch ergänzt wird.
Byte- und Word-Typen (BYTE, WORD, DWORD, LWORD)ebenso wie Unsigned-Typen (USINT, UINT, UDINT, ULINT) schöpfen den Wertebereich der 8, 16, 32 oder 64 Bit voll aus. Unsigned-Typen sind bei konventionellen SPS wie S5 oder S7 derzeit NICHT verwendbar!
Integer-Typen (SINT, INT, DINT, LINT)nutzen das höchste Bit (niedrigstes Bit ist Bit 0), also Bit 7, 15, 31 oder 63 als Vorzeichen-Kennung, wodurch sich der Wertebereich etwa halbiert.
TIME ist ein Datentyp identisch mit DINT, jedoch vordefiniert mit der Einheit Millisekunde. Damit sind folglich 2,1474 * (10 hoch 9)ms als Höchstwert erreichbar, das sind 2,1474*(10 hoch 6)s oder 35791,33min oder 596,522h. Als Konstante wird die Zeit in der Form T#aaHbbMccSdddMS ausgegeben.
Real-Typen (REAL), auch Gleitkomma-Zahlen genannt, haben 32 Bit gemäß der Internationalen Norm IEEE 754 (aus dem Jahr 1985), wobei das Bit 31 als Vorzeichen genutzt wird, die Bit 30 bis 23 dienen zur Darstellung des Exponenten e und die Bit 22 bis 0 der Mantisse. Damit sind die Werte
-3.402823E+38 ... -1.175495E-38,0,+1.175495E-38 ... +3.402823E+38
darstellbar.

Neben diesen Typen gibt es noch Funktions-Baustein-Typen:
TON - Zeitbausteine mit Zeitwert der Type TIME
CTUD - Zählbausteine mit Zähler-Werten i.a. vom Typ INT
R_TRIG, F_TRIG und RF_TRIG - Flanken-Erkennung
und andere. Hierzu gehören PRAP-Typen, die mit ihrer IDENTIFICATION im Projekt eingebunden sind.
Die BCD-Typen (BCD) sind in der IEC 61131-3 nicht vorgesehen und sind daher auch in SPaS nicht einsetzbar. Sie können auf den Typen BYTE, WORD und DWORD gehalten werden und stellen Ziffern im Bereich 0 bis 9 auf Tetraten (4 Bit) dar. Die Benutzung der BCD-Zahlen kann durch einen Typwandel erreicht werden: click here
Weiterhin können abgeleitete, strukturierte Datentypen eingesetzt werden: click here


Datentyp-Wandel, Type conversion functions
Datentypen sind geordnet nach ihrer Bit-Anzahl und ihrer Kodierung, d.h. Bedeutung der Bit oder Bitgruppen. In diesem Sinne ist der kleinste Datentyp "BOOL" und der größte "REAL" bzw. "LREAL". Die "L"-Datentypen nutzen 64 Bit, derzeit gibt es keine Verwendung, es sei denn in embedded systems.
Es gibt für spezielle Zwecke auf BYTE-, WORD- und DWORD-Typen eine BCD-Zahlendarstellung, die je Tetrade (4bit) nur 0 bis 9 zulassen (sprachabhängig!). Die Norm IEC 61131-3 erfaßt BCD nicht als Datentyp.
Die sogenannte Aufwärts-Konvertierung von SINT zu REAL wird für arithmetische Ausdrücke, Kopierfunktion, auch Vergleicherausdrücke, automatisch vollzogen. Das bedeutet, Sie dürfen in solchen Ausdrücken, auch in reinen Zuweisungen, also in Kopierfunktionen, die Variablen ohne Datentypwandel schreiben.
Jeder Typenwandel "abwärts" ist durch eine Konvertierungsfunktion auszudrücken, wobei es KEINE KONTROLLE gibt, ob der Inhalt unzulässig verstümmelt wird. Hierzu gehören auch Übergänge zwischen Word- und Integertypen.
Zusammenstellung zu Datentyp-Konvertierungen einer Variablen:

•	AUTOMATISCHE KONVERTIERUNG:
SINT-->INT-->DINT-->REAL
REAL-->DINT mit Rundungsfunktion ROUND
TIME<-->DINT
INT<-->WORD
WORD<-->BYTE

•	KONVERTIERUNGSFUNKTIONEN einer Variablen var:
DINT_TO_REAL(var)
TIME_TO_REAL(var)
REAL_TO_DINT(var) mit Rundungs-Funktion ROUND
TRUNC(var) mit Abschneiden der Nachkommazahlen
REAL_TO_INT(var) ohne Wertekontrolle
DINT_TO_INT(var) ohne Wertekontrolle
DINT_TO_DWORD(var)
DINT_TO_BCD_DWORD(var)
SINT_TO_BCD_BYTE(var)
INT_TO_SINT(var) ohne Wertekontrolle
INT_TO_BCD_WORD(var) vier Stellen
INT_TO_WORD(var)
DWORD_TO_DINT(var)
DWORD_BCD_TO_DINT(var)
WORD_TO_INT(var)
WORD_BCD_TO_INT(var)
BYTE_BCD_TO_SINT

Diese Liste wird laufend aktualisiert.

Note
Bitte Konvertierungsfunktionen NICHT schachteln.
Beispiel: REAL_TO_DINT(DINT_TO_INT(var))


Das Wort bedeutet die Abkoppelung der Variablen von der Bindung an das Member, dem es einmal zugeordnet bzw. zugewiesen wurde.
Die Variable bleibt im Verzeichnis aller Variablen des Projektes erhalten und sollte, wenn es nirgends gebunden (connected) ist, letztlich aus dem Projekt entfernt werden.


Ein Durchlauf (= Run Through) tritt auf, wenn zu einer Operation der Halteprozeßzustand nicht eintritt, bzw. nicht durch die Belegung der Prozeßvariablen erfüllt wird.


Eine Prozeßvariable heißt dynamisch, wenn sie nur für die Dauer und zum Zweck eines Übergangs ihre Aussage wechselt. Daher sind z.B. bei Flankenerkennungen die nur einen SPS-Zyklus mit dem Wert 1 belegten "Ergebnis"-Variablen dynamischer Natur.


Im Projektbaum sind Ebenen nicht von oben nach unten sondern von links nach rechts definiert.
Die erste Ebene ist dem Projekt vorbehalten, die zweite Ebene Konfigurationen, die dritte Ressourcen.
Mehr darüber im Thema Projekt-Editor.


Eingangsvariable
sind Größen aller Datentypen, die

•	im PRAP meist Formalvariable sind, also ohne direkte Adressenangabe. Aber sie sind bezüglich Nutzung (USAGE) "Input" bzw. "Input/Output" oder "Local Static/Temporary". Es können auch Konstante mit USAGE "Constant" verwendet werden.
Prozeß-Variable sind immer vom Datentyp "BOOL", sie können als "Input" oder "Local Static" genutzt werden.

•	im PROGRAM (TYP) Aktualvariable sind, also direkte Adressenangaben tragen. Dann ist die Nutzung (USAGE) "Address Input" oder "Address Memory".
Keine direkte Adressenangabe erfolgt bei im PROGRAM lokal bleibenden Variablen, also USAGE ist dann "Local Static".
Konstante Werte mit USAGE "Constant" sind ebenfalls möglich.

•	im Teil-Prozeß, bzw.in der Instanz werden keine Eingangsvariablen deklariert, aber diejenigen aus dem PROGRAM zugewiesen, dem der TP untergeordnet ist.


Die Variable "FirstRun" ist Schlüsselwort für den Erstlauf in jedem PRAP. Sie wird automatisch als "local static" erzeugt, um bei jedem Kaltstart den Startzustand zu gewährleisten.
Soll zusätzlich die Zustands-Initialisierung beim Warmstart/Neustart der CPU erfolgen, muß FirstRun als Input/Output oder auch als Input in die PRAP-Variablen eingeführt werden:
Member öffnen und Klick auf die Variable "FirstRun" oder eine andere unter "PARAMETER" läßt die Variablentabelle erscheinen. Wählen Sie nun USAGE entweder Input oder Input/Output.
Im Fall, daß ein TP aus einem PRAP heraus aufgerufen wird, teilen Sie jedem "FirstRun_1", "FirstRun_2" usw. als "Zwischenvariable" zu. Wichtig sind die ersten 8 Buchstaben!
Für weitere Information click here.


Der Begriff "Formelobjekt" soll aussagen, daß zum Erfassen aller Daten für die gewählte Funktionalität aus dem Angebot der "Eingebettete Funktionen" ein entsprechender Datenbank-Eintrag erfolgt.


Eine Funktion ist gemäß IEC 61131-3 als eine Programm-Organisationseinheit FUNCTION definiert, die genau ein Datenelement liefert bzw. hervorbringt. Datenelemente können neben elementaren Typen auch Strukturen sein. Zusätzlich zum Ergebniselement der Funktion sind weitere Ausgaben zugelassen.
Eine Funktion enthält in SPaS keine graphischen PRAP-Elemente, sie wird ausschließlich durch den User in ein Editierfeld eingegeben, das identisch mit dem im PRAP ist. Die Eingabesprache ist STRUKURIERTER TEXT gemäß IEC 61131-3.
Eine Funktion enthält keine Speichereigenschaft.
(Siehe auch System-Funktionen)


Globale Variable
sind Variable mit einem Geltungsbereich innerhalb einer Konfiguration, einer Ressource, einem Programm. Diese Variablen sind in den jeweils untergeordneten POE als externe Variable nutzbar. Insbesondere dienen die Aktualvariablen der Zuordnung der Formalvariablen bei Aufrufen von Teilprozessen und Funktionen in "PROGRAM".


Unter einem zusammenhängenden, gerichteten Graph versteht man eine Abbildung, die aus Knoten (z.B. Kreisen) und gerichteten Kanten (Pfeile zwischen den Knoten) besteht.


Als Stabilitäts-Prozeßzustand = Self Transition (kurz: Stabilitätszustand) bzw.Halteprozeßzustand (kurz Haltezustand) werden alle Pfade bezeichnet, die eine betrachtete Operation Oi mit sich selbst verbinden. Aus Sicht der Graphentheorie bilden Oi und der Stabilitätszustand Pii einen Zyklus. Ein Haltezustand ist Voraussetzung zur Ausführung der zugehörigen Operation. Der Halteprozeßzustand ist folglich nur eine spezielle Form eines Übergangsprozeßzustandes mit gleicher Start- und Zieloperation.
Ergibt sich durch die Belegung der Prozeßvariablen zu einer erreichten Operation kein Pfad des Haltezustandes, so wird sie durchlaufen.
Werden mehrere Operationen durchlaufen, so daß die Operation Oi wieder erreicht wird, spricht man von einem instabilen Zyklus. Eine Operation zusammen mit ihrem Halteprozeßzustand bzw. Stabilitätsprozeßzustand, nennt man Situation, die solange erhalten (stabil) bleibt, wie der Haltezustand erfüllt wird.
Jede Situation wird im Compilat als (Automaten)Zustand behandelt.


Es ist zu erwarten, daß Sie so manchen Begriff nicht verstehen, dann versuchen Sie bitte im Buch "Begriffe in SPaS" danach zu suchen. Im Wörterbuch sind viele Begriffe alphabetisch geordnet enthalten.
Leider gilt der folgende Text nicht, weil DELPHI 7, unser Entwicklungsprogramm, bezüglich "F1" HELP-Aufrufe nicht so gut funktioniert wie DELPHI 5. Es ist noch unklar, wann wir diese Situation ändern können. Wir bitten um Nachsicht!
Die sogenannte kontextsensitive Hilfe erhalten Sie, wenn Sie in einem Formblatt, bzw. einem Fenster, den Cursor in ein veränderbares Eintragsfeld (Editierfeld) plazieren und die Taste "F1" drücken, falls kein [image] vorhanden. Falls aber ein [image] oben rechts eingetragen, können Sie direkt z.B. in Editierfeldern nach Hilfe suchen.
Benutzen Sie auch den "Hilfe"-Button, falls vorhanden, um eine Hilfe-Übersicht zu erhalten, von der aus Sie auch die "Fragezeichen-Themen" erreichen können.
Bei Menüs werden entweder mit "Hilfe"-Button oder mit "F1" Erläuterungen zu den Menü-Zeilen angezeigt.
Bitte auch am unteren Rand des SPaS-Manager-Bildes die Hinweis-Texte beachten!
Bevor Sie verzweifeln, weil Sie einen Hilfetext nicht verstehen: hier klicken


Gibt es in einem Operationen-Zyklus keine Möglichkeit, daß eine Operation stabil auftritt, dann liegt ein instabiler Zyklus vor. Es sind in diesem Fall im PRAP alle Übergangszustände dieses Zyklus' zugleich erfüllt.


Initial-Operation oder Start-Operation (= Launch Operation) nennt man diejenige Operation in einem PRAP, die mit dem Einschalten/Starten (Stop => Run) der Steuer-Einrichtung als erste ausgeführt werden muß. Das gilt auch dann, wenn mit dem Start schon ein Übergang zu einer Folgeoperation erfüllt sein sollte, der erst im nächsten Verarbeitungs-Zyklus zur Ausführung gelangt. In der Initialoperation können daher z.B. Speicherbereiche mit Anfangswerten belegt werden (siehe Kopierfunktion).
Zur Initial-Situation gehört neben der Initialoperation noch der Stabilitäts-Prozeßzustand.


Eine kombinatorische Struktur entsteht, wenn der Übergangszustand Pjk der Operation Oj gleich dem Haltezustand Pkk der Operation Ok ist und umgekehrt Pki = Pii gilt. Erfüllt der Übergangszustand Pif zu einer gemeinsamen Folgeoperation Of die Gleichheitsbedingung nicht, dann gehört Of nicht zur kombinatorischen Struktur, aber es muß Pif = Pkf für alle Operationen der kombinatorischen Struktur gelten.
Die Prüfung eines PRAP ergibt mit dem Wort "Equivalence relation" Auskunft, welche Oj,Ok usw. dazugehören. Es kann mehrere kombinatorische Strukturen in einem PRAP geben, deshalb sind sie numeriert. Gibt es nur eine und sind darin alle Operationen enthalten, dann hat der PRAP die Eigenschaft "rein kombinatorisch" (Verknüpfungs-Steuerung)zu sein.


Koppelgrößen oder Koppelvariable sind natürliche oder erzeugte(=eingeführte) Kopplungen zwischen den Teilprozessen.

•	Natürliche Koppelungen ergeben sich durch die Nutzung einer Prozeßvariablen/Prozeß-Zustandsvariablen in mehreren Teilprozessen. Diese P-Variable muß bezüglich EMSR- Stelle bzw. Betriebsmittelkennzeichen demjenigen TP zugeordnet werden, wo sie durch eine Operationsvariable über den Wirkungskreis des zu steuernden Prozesses beeinflußt wird (Kausalitätsprinzip).
Beispiel: "Licht einschalten" ergibt Aussage über "Helligkeit erreicht?")
Das Prozeß-Ablauf-Netz (PAN) liefert von den Transitionen, an denen Verzweigungen stattfinden, natürliche Koppelungen an die aus dem PAN abgeleitete PRAP.

•	Erzeugte, eingeführte Koppelungen ergeben sich, wenn keine natürliche Koppelung möglich ist. Dann ist als Operationsvariable eine Koppelvariable zu "erzeugen, einzuführen", die für alle TP, die diese Information benötigen, eine Prozeßvariable wird. Innerhalb der Ressource sind diese Bit-Variablen im RAM abgelegt, so daß für die formalen Variablen "Output" bzw. "Input" zum instanziieren die aktualen "Local Static" oder "Address Memory" angegeben werden muß.

Koppelvariable instanziieren:

 1.	Im übergeordneten Member (z.B. DDT, PROGRAM oder RESOURCE) eine Variable anlegen mit USAGE

•	ADDRESS MEMORY:
Direkte Speicherplatzadresse bei "Address" angeben.

•	oder LOCAL STATIC: Keine Angabe bei "Address".

 2.	Innerhalb eines PROGRAM
Ordnen Sie dem Input unmittelbar den Output zu. Die Aktualvariable ist dann in der Form
<INSTANZNAME(=TP-Name)>.<FORMALVARIABLE> vorhanden.

Mehr zur Projektierung von Koppelungen: click here


Alle Knoten im Projektbaum haben die Eigenschaft eines "Mitgliedes" des Projektes (= Member)zu sein. Sie werden von oben nach unten durchgezählt, was den Nutzer von SPaS eigentlich nicht weiter interessiert.
Jedes Member erhält eine Identification, also eine Zeichenfolge zur "Erkennung" im Tool SPaS, und - nicht alle - eine Beschreibung (Description), ein kurzer Text, also keine Erläuterung, Erklärung, sondern ein technologisch relevantes Wort oder eine Wortgruppe wie "Vorderer Haupteingang" ist damit gemeint, das kann eine Tür oder ein Tor sein. Dies sind z.B. Typenbezeichnungen für die tatsächliche Einrichtung (vorderer Haupteingang), das sogenannte Exemplar (eines Tores), die sogenannte Instanz des Typs.
Zu jedem PRAP-Knoten gehört eine Identifikation, ein sogenannter Bezeichner, der eine Kurzform der Desription sein sollte.


Mensch-Anlagen-Kommunikation (MAK) oder Mensch-Prozeß-Kommunikation
bringt zum Ausdruck, daß der Bediener einer Automatisierungseinrichtung (AE) durch vereinbarte (in der Bedienungaanleitung!), vom Projektanten der AE vorgesehene Signale zur Tätigkeit entsprechend der Bedeutung des Signals aufgefordert wird. Besteht diese Tätigkeit in einer Bedienhandlung, so müssen Bedieneinrichtungen vorhanden sein, die eben zu dieser Zweckerfüllung geeignet sind.
Das Informationsflußmodell zeigt die Einbettung in das Modell des zu steuernden Prozesses.


Eine Operation enthält alle zu einem Teilprozeß gehörenden, binär bewerteten Operationsvariable (kurz: OVar, auch Steuervariable genannt). Zu jeder Operation gehört eine zu ihr gehörende Wertebelegung. Jede Operation ist daher ein Binärvektor.
Sie sollten auch einen Text in eine Operation schreiben (=Comment), um dem Leser des PRAP eine Art Schrittbezeichnung anzubieten, die Auskunft über den technologisch wesentlichen Sinn der Operation gibt.


Unter einer Operationenfolge versteht man Operationen, die paarweise über wenigstens einen Pfad (vergleiche auch Übergangsprozeßzustand) verbunden sind, also beginnend bei einer Start-Operation ein Pfad zu deren Folge-Operation führt, und diese als neue Start-Operation eine weitere Folge-Operation besitzt usw.
Ist die letzte Folge-Operation im speziellen Fall zugleich die erste Start-Operation, dann ist die durchlaufene Operationenfolge ein Operationen-Zyklus, oder kurz ein Zyklus.


Operationsvariable sind binär zu wertende Größen. Sie können sein:

•	Stellgrößen für alle prozeßtechnologischen Eingriffe:
Ein- und Ausschalten. Öffnen und Schließen.
Einschalten und nicht Einschalten. Ausschalten und nicht Ausschalten.
Öffnen und nicht Öffnen. Schließen und nicht Schließen.

•	Informationen an den Operateur im Rahmen der MAK

•	Ansteuersignale für Zeit- und Zählglieder, Programmgeber, Schieberegister, usw.

•	Erzeugte Koppelvariable zur funktionellen Beeinflussung anderer Teilprozesse.


Unter einem Operationen-Zyklus versteht man in einem PRAP eine in sich geschlossene Folge von Operationen, d.h. jede beliebige Anfangsoperation ist auch Zieloperation in einer Operationenfolge.


Parameter sind alle Größen, die der Verarbeitung in einer Steuerungs- oder Regelungsfunktion zugeführt werden. Unterschieden wird zwischen Formalparametern und Aktualparametern, Eingangs- und Ausgangsparametern.
Formalparameter stehen in einem Typ-Teilprozeß (also auch in einem Typen-PRAP), Aktualparameter einer Instanz eines Typen, werden den Formalparametern des Typen zugewiesen.


Paarweise Steuerrelationen sind Koppelbeziehungen zwischen je zwei Teilprozessen, die durch Koppelvariable hergestellt werden.


Unter einem Pfad = path versteht man die Verbindung zwischen einer Operation Oj und einer Folgeoperation Ok durch eine Prozeßvariable allein oder mehrere aufeinanderfolgende, jede sollte nur einmal in einem Pfad auftreten.


Programm-Organisations-Einheit (Program Organization Unit)
Abgekürzt POE ist laut DIN IEC 61131-3 eine Funktion (FUNCTION), ein Funktionsbaustein (FUNCTION BLOCK) oder ein Programm (PROGRAM) sowohl als Type als auch als Instanz.


PreCOM ist die Abkürzung von Precompiler, Vorübersetzer. Damit wird aus einem Steuerungsprojekt ein Steuerungsprogramm erzeugt, allerdings im Quellcode, der mittels zugehöriger Software zur Zielmaschine (Ressource wie SPS, Microcontroller usw.) in den Maschinencode zu übersetzen und zu implementieren ist.


Der Projektbaum ist eine graphische Darstellung aller zu einem Automatisierungssystem gehörigen Bestandteile - Mitglieder (=Members) - und ihrer funktionellen Zuordnung. Die Benennung der Mitglieder richtet sich nach der Internationalen Norm IEC 1131-3 wie Configuration, Resource, Task, Function Block, Program usw. Der Entwurf des Projektbaumes erfolgt mit dem Projekt-Editor und der eines Function Block mit dem PRAP-Editor.


Ein binärer Prozeßzustand verbindet eine Quell- (Anfangs-, Start-) Operation Oj mit einer Ziel- (Folge-) Operation Ok. Sind beide Operationen gleich (j=k) heißt dieser Prozeßzustand Halteprozeßzustand, ansonsten Übergangsprozeßzustand. Der binäre Prozeßzustand kann aus einem Pfad allein oder mehreren (alternativen) Pfaden gebildet werden.
Binäre Prozeßzustände entsprechechen Transitionen im Petrinetz, wenn die Operationen den Stellen im Netz gleichgestellt werden.


Auf der Basis des Bedingungs-Ereignis-Netzes betrachtet ist ein Prozeßschritt P<nr> eine Sequenz von Bedingung - Ereignis - Bedingung, hier dargestellt als
--> Eingangsplatz --> Transition --> Ausgangsplatz -->


Prozeßsituation
Für die Dauer der Ausführung einer Operation, z.B. O7, ändert sich deren Halte- oder Stabilitäts-Prozeßzustand, P77, nicht. Enthält er im PRAP mehrere Pfade, so kann es sein, daß zwischen ihnen die Belegung der P-Variablen während der Situationsdauer wechselt.
Die beiden zusammengehörigen Größen Operation und Halteprozeßzustand stellen eine Prozeßsituation Sit7 = (O7, P77) dar, auch kurz mit Situation bezeichnet.
Übergangssituationen gibt es nicht, nur Übergangs-Prozeßzustände,weil die Übergangsdauer zwischen Situationen im PRAP null ist. Die Steuereinrichtung benötigt dazu genau einen Arbeitszyklus.
Eine Situation kann auch als WHILE P77 DO O7 gelesen werden, oder REPEAT O7 UNTIL(P77 = false)


Prozeßzustandsvariable (kurz Prozeßvariable oder p-Var) stellen die mit ja/nein bzw. Yes / No binär bewerteten Ausgangsvariablen eines (Teil-)Prozesses, auch als Prozeßgrößen bezeichnet, dar. Es handelt sich um

•	natürliche, technologisch notwendig zu erfassende Zustandsveränderungen von Produkten, Energien, Informationen usw.

•	Informationen vom den Prozeß bedienenden Menschen (Operateur).

•	Reaktionen von Zeit- und Zählgliedern auf Grund ihrer Ansteuerung.

•	Ergebnisaussage einer Vergleicherfunktion

•	natürliche und erzeugte Koppelvariable aus anderen Teilprozessen, den "Empfang" von Steuerinformationen im Rahmen der Koppelbeziehungen.


Resource (Ressource)
ist ein Begriff für eine Steuerungseinheit. Sie kann eine SPS, ein Prozeßrechner, eine Prozeßstation, ein Mikrokontroller, eine Soft-SPS usw. sein.
Zur IDENTIFICATION erhält sie eine Bezeichnung wie z.B. Station_A, Pumpenhaus, Nebengebäude_7 usw. Damit sind Bereiche des Automatisierungssystems gemeint.
Zur Hardware-Bezogenheit dient der PROCESSOR.Hier ist also einzutragen, wie Steuereinrichtung "amtlich" benannt wird, also z.B. für Siemens-SPS S7-300, S7-223, S7-415 oder für Schneider-Electric- SPS Compact, Quantum, Momentum usw.
Die DESCRIPTION dient der erweiterten Beschreibung der Identifikation.
Vergessen Sie nicht, Project|Language, Repository bzw.  anzuklicken und das Formular auszufüllen.


Software-Projektierungswerkzeug für automatische Steuerungen bedeutet das Kunstwort SPaS.


Ein Graph ist stark zusammenhängend, wenn von einem Knoten Kj jeder andere Knoten Kk und auch Kj wieder selbst über einen Weg erreicht werden kann.
Stark Zusammenhängend (= strong connected) ist ein PRAP, wenn ausgehend von einer Operation Oj jede andere Operation Ok und sie selbst erreicht werden kann.
Ein Weg in einem Graph setzt sich aus mehreren Pfaden zusammen. Dabei ist im PRAP diese Zusammensetzung auch mit einem Wertewechsel der P-Variablen in Pfaden zugelassen.


Eine Prozeßvariable heißt statisch, wenn sie eine neue Aussage mindestens solange beibehält, wie eine oder mehrere davon abhängige stabile Operationen auf den Prozeß einwirken.


Hier sind Binärsteuerungen = binary control gemeint.
Es braucht nicht in Verknüpfungs- und Folgesteuerungen unterschieden zu werden, weil das Entwurfsverfahren mit Hilfe des PRAP das erübrigt, also PreCOM dies automatisch erkennt und im Compilat verwirklicht.


Steuerungs-System
Mit diesem Begriff ist gemeint, wenn im Ergebnis der Prozeßzerlegung und der Binären Prozeßanalyse eine Anzahl gekoppelter Teilprozesse vorliegt.
Teilsysteme können z.B. dadurch entstehen, daß ein (Gesamt-)Steuerungs-System zerlegt wird, um auf mehreren Steuer-Geräten (Ressourcen) verteilt zu werden. Das Zerlegen "durchtrennt" Koppelungen, die im Gesamtsystem vorgesehen waren.
Jedes Teilsystem wird auf einer Ressource implementiert und kommuniziert mit Nachbarsystemen so, daß die Koppelungen als Access Paths ausgewiesen die Gesamtfunktion garantieren.


Der Begriff Struktur sagt aus, daß es eine Menge Elemente gibt, die untereinander zumeist paarweise eine Relation besitzen.
Die Elemente sind hier Variable, jede mit dem ihr zugeordnetem Datentyp. Die Relation der Variablen ist die Zugehörigkeit zu einem Bezeichner, Name der Struktur, einer Baum-Struktur.
Die Norm IEC 61131-3 nennt unter dem Abschnitt "Derived Data Types" (DDT) auch die "STRUCT declaration" und meint damit structured data types.

Note
Abgeleitete Datentypen sind ausschließlich lokale. Die automatische USAGE-Festlegung ist "Local Static".

Zu den Elementen gehören die elementaren Datentypen wie BOOL bis REAL, ferner die Standard-Funktionstypen TON, CDUD, TIME, DATE usw., und es werden alle PRAP-Typen als funktionelle Strukturen eingeordnet sowie die (baum-)strukturierten Datentypen.
Der Projektant eines Automatisierungssystems kann in SPaS sogenannte User Defined Types (UDT, angelehnt an SIEMENS-Begriff) definieren.
Siehe auch: Einfügen von DDT in Ressourcen


Strukturstabilität: Ein Übergang von einer Operation Oi zur Folgeoperation Ok heißt strukturstabil, wenn der Haltezustand zu Ok abhäng von Bedingungen des Übergangszustandes erfüllt wird.

In der Abbildung ist zu sehen, daß im Übergang von Operation 1 zu Operation 2 schon eine Bedingung, die Prozeßvariable p2 = nein-Belegung, für die Stabilität der Operation 2 (sprich für den Haltezustand der Operation 2) enthalten ist.
Der Übergang von Operation 1 zu Operation 3 ist bedingungsstabil.


Eine Teil-AWL ist die Anweisungsliste zu einem PRAP, also einem Teilprozeß, wenn es sich um einen Typen-PRAP oder TP-PRAP (Unikat-PRAP) handelt. Oder eine Teil-AWL entspricht einer Instanz, einem Instanzbaustein.


Transition ist ein Begriff aus der Theorie der Petrinetze. Er wird original in diesem Sinne Im Porzeßablaufnetz verwendet. Wird dieser Begriff mit dem PRAP in Zusammenhang gebracht, so meist im Sinne des Übergangs-Prozeßzustandes.
Das englische Wort transition kann mit Übergang übersetzt werden, also auch im obigen Sinne gebraucht werden.


Teilprozeß, kurz TP, heißt jede Einheit aus dem gesamten Steuerungsbereich (im Prozeßzerlegungsgraphen zu erkennen) eines Prozesses und ist eine Instanz eines Typen-PRAP.
Ist ein Teilprozeß durch einen PRAP beschrieben, so stellt der PRAP eine Teilprozeßbeschreibung dar. Dabei sind die Variablen formaler Natur, sind also nicht mit direkten Adressen verbunden. Der PRAP ist daher der Typ des TP, dessen Variable jedoch adressiert bzw. Konstante sind. Sie heißen aktuale Parameter, weil sie für den TP speziell gelten. Jeder TP ist demnach eine Instanz des PRAP.
Auch eine Stabilisierungsaufgabe für eine oder mehrere Prozeßgrößen, also eine Regelungsaufgabe, ist ein Teilprozeß, der z.B. durch ein PID-Modell beschrieben wird.
Jeder PRAP muß einen einmaligen Namen pro Ressource haben. Jeder Teilprozeß als Instanz eines Typen-PRAP muß einen einmaligen Namen in "seinem" PROGRAM haben. Er muß im Prozeßzerlegungsgraphen - PZG - dieser Ressource enthalten sein.
Wichtige Eigenschaft eines TP:
Jeder Teilprozeß aus dem PZG ist als Instanz oder als Unikat zu verstehen. Zu jedem Teilprozeß gehört eine Anzahl Eingangssvariable und Ausgangsvariable. In keinem anderen Teilprozeß des Teil-Projektes, also innerhalb einer Ressource, darf es dieselben Ausgangsvariablen, im Blick auf die Instanz - dieselben Ausgangsvariablen mit direkten Booleschen Adressen - nicht nocheinmal geben! Mengentheoretisch bedeutet dies, daß die Schnittmenge der Mengen der Ausgangsvariablen zweier TP leer ist.
Die durch arithmetische oder Kopier-Ausdrücke sich ergebenden Ausgangsvariablen dürfen in mehreren Instanzen dann gleich sein, wenn sie nicht innerhalb eines Arbeitszyklus' der Steuereinrichtung "geschrieben" werden.


Typenprozeßablaufpläne (TTP), auch Typen-PRAP,
sind Funktionstypen, deren Variablen - zum Teil oder vollständig - keine direkten Adressen haben. Sie werden hauptsächlich bei sich strukturell wiederholenden Teilprozessen eingesetzt, wie z.B.
Antriebsteilprozesse,
Alarmteilprozesse,
Signalisierungsteilprozesse.
Die internationale Norm IEC 61131-3 und C/C++ gestatten keine direkten Adressen in Typen-Funktionsbausteinen. Das bedeutet, auch bei Unikat-TP (TP-PRAP) muß ein Typ entworfen werden, dem genau eine Instanz zugeordnet wird.
Zwei Typen-TP dürfen die gleichen Variablenbezeichner (Statements) haben, weil die Variablen an den TTP gebunden sind (Kapselung).


Ein Pfad allein oder mehrere Pfade bilden einen Übergangsprozeßzustand =Transition (kurz Übergangszustand). Er stellt den Übergang zwischen der Operation Oj und deren Folgeoperation Ok dar. Jeder Übergangszustand enthält die für den Übergang signifikanten Prozeßvariablen in geeigneter Bewertung und Verkettung, so daß die sich ergebende Aussage für jeden Pfad des Übergangszustandes eindeutig begründet und zu jedem anderen widerspruchsfrei ist.


Ein PRAP, der keine Variablendeklaration benötigt, enthält ausschließlich direkte Adressen. Das bedeutet aber, es gibt ihn nur in dieser Form einmalig. Beispiele hierfür sind Koordinierungs-Teilprozesse, die speziell für eine Technologie gelten. Auch Teilprozesse der Mensch-Maschine-Kommunikation tragen häufig diesen einmaligen Charakter.
Unikate sind sprachabhängig:
Die Norm IEC 61131-3 gestattet solche Unikate nicht, weil innerhalb eines FUNCTION BLOCK keine Hardware-Adressen zulässig sind! Das gilt ebenso für C/C++. Folglich muß ein Typ entworfen werden, dem eine einzige Instanz zuzuordnen ist. Dann ist diese Instanz ein Unikat.


Variable
sind veränderliche Größen, Parameter, die funktionell in PRAP und dort eingebetteten Funktionen verarbeitet werden. Jede Variable sollte eine technologisch sinnvolle Bezeichnung (STATEMENT) und MUSS eine Identifikation, ein Kurzzeichen (IDENTIFICATION, NAME)haben.
Zu jeder Variablen gehört zwingend ein Datentyp, wodurch die binäre Darstellung vorgegeben ist.
Die Verwendung der Variablen (USAGE) ist durch den Projektanten zu überprüfen. Insbesondere sind lokale Variable im PRAP zu deklarierbar. Diese nur für die funktionellen Eigenschaften im PRAP zuständig und nutzbar.
Globale Variable sind dagegen in der Konfiguration, der Ressource und im Programm zu deklarieren.


Variable Usage - Verwendung der Variablen

bedeutet im einzelnen:

 1.	NotSpecified
Die Variable hat keine Festlegung.
Fehler beim Compilieren sind zu erwarten.

 2.	Constant
Diese Verwendung kann sowohl Formal- als auch Aktualparameter betreffen.
Die (Symbol-)Variable ist eine Konstante, also kein Speicherplatz im Eingangs-, Ausgangs- oder Merkerbereich. Der Variablen werden nur feste Werte zugewiesen.

 3.	Input
Die Variable ist ein Formalparameter und wird ausschließlich als Eingang des Funktionsbausteins verwendet. Sie darf also nicht überschrieben werden, z.B. durch die Funktion Copy.

 4.	Output
Die Variable ist ein Formalparameter und wird ausschließlich als Ausgang des Funktionsbausteines verwendet. Eine Verwendung als Eingang erfolgt nicht. Output-Variable erhalten im Rahmen der funktionellen Verknüpfung Werte eingetragen. Z.B. bei den Funktionen Copy, Arithmetik, Comparison (true / false) (Vergleich).

 5.	Input/Output
Die damit gekennzeichneten Variablen sind Formalparameter und werden auch "Durchgangsvariable" genannt. Z.B. erfolgt die Übertragung einer Größe auf eine Variable (Copy-Funktion) zunächst als Ausgabe (Output) - diese Größe wird auf einen Ausgabespeicherplatz abgelegt -, danach aber als Input bei einem Vergleicher als Istwert verwendet.

 6.	Local Static
1. Variable sind Formalparameter, die den Funktionsbaustein, den Typ(!), nicht von außen erreichen und nicht nach außen verlassen. Falls z.B. der soeben beschriebene Vergleicher nur innerhalb des Bausteins funktioniert. Speicherwerte bleiben dem Funktionsbaustein ständig erhalten.
2. Variable sind Aktualparameter, wenn sie in einem Programm oder einer Ressource deklariert werden. Z.B. Koppelvariable können so deklariert werden.

 7.	Local Temporary
Zunächst gilt die Eigenschaft "Local", aber mit dem Aufruf eines anderen Funktionsbausteins oder Programms durch das Betriebssystem werden alle hier angelegten Speicherbereiche freigegeben. Geeignet für Vergleicherergebnisse.

 8.	Address Input, Address Output, Address Memory
Eigenschaften gelten für Instanzen!!
Aber auch in Typen-PRAP können feste Adressen vorgegeben werden, wenn die Anzahl der formalen Variablen für eine Ziel-SPS beschränkt ist. Unikate erhalten ausschließlich feste Adressen.
Es handelt sich um Aktualparameter: Fest vorgegebene Hardware-Adressen (direkte Adressen) als Input oder Output der Steuereinrichtung. Liegt eine Adresse im Merkerbereich, muß sie als Address Memory hinterlegt werden.


Vergleicherfunktion
Das Vergleichen zweier Größen geschieht in der Reihenfolge
Ist-Größe VGL Soll-Größe.
VGL sind =, <>, >=, <=, >, <
Das Ja-Nein-Ergebnis wird einer Booleschen Variablen übergeben, die als Prozeßvariable (Condition) im PRAP einzutragen ist.
Mehr hierzu in "Eingebettete Funktionen" im Kapitel Entwurfsprozeß.


Vollständig (complete) ist ein PRAP, wenn alle zu einer Operation gehörenden Übergangspfade genau irgendeiner anderen Operation zugeordnet werden können, alle Haltepfade führen zu der betrachteten Operation zurück. Das ist die pragmatische Beschreibung.
Oder die mathematische Form:
Wird jeder Pfad, der von einer Operation ausgeht, als konjunktiver Boolescher Ausdruck beschrieben, wobei ja mit 1 und nein mit 0 auszudrücken sind, dann ergibt die disjunktive Verknüpfung aller Konjunktionen den Wert 1. Die Vollständigkeit muß für jede Operation nachgewiesen werden.


Wertebelegung ist eine Bezeichnung für eine Anzahl verschiedener Variabler und deren Werte. Die Anzahl ausgewählter Variablen erfüllt einen bestimmten Zweck und wird oft als Vektor (Dimension = Anzahl) aufgefaßt.
Im Falle der PRAP-Variablen wie Operations- oder Prozeß-Variable gibt es nur zwei Werte. Daher auch die Bezeichnung Binärvektor.
Prozeßvariable haben die Werte ja und nein, sie sind im PRAP sichtbar an den abgehenden Kanten (exits yes and no) angebracht.
Operationsvariable haben Werte wie ein / aus, auf / zu (on / off, open / close), aber auch jede andere Aussage und deren Negation ist denkbar: Ventil öffnen (Open the Valve) und Ventil nicht öffnen (Don't open the Valve), Tor schließen (Shut the Gate) und Tor öffnen (Open the Gate), Motor einschalten (Switch on the Motor) und Motor ausschalten (Switch off the Motor), Beleuchtung einschalten und Beleuchtung nicht einschalten, Beleuchtung ausschalten und Beleuchtung nicht ausschalten. Entscheidend ist das zu steuernde Stellglied, allgemein "der Empfänger des Befehls", wie die Wertebelegung technologisch interpretiert wird.
Sichtbar, welche Wertung in einer Operation gilt, ist die Belegung im Operations-Variablen-Fenster. Dort ist jede Operationsvariable mit ihrer Aussage eingetragen. Gilt diese in der betreffenden Operation, so ist sie markiert; ansonsten gilt die negierte Aussage.


Widerspruchsfrei (contradictionless)
ist ein PRAP, wenn sich alle zu einer Operation gehörenden Übergangs- und Haltepfade gegenseitig ausschließen.


Zeit- und Zählglieder = Timer and Counter
Zur Steuerung von technologischen Prozessen finden auch Hilfsfunktionen Anwendung. Dazu gehören Zeit- und Zählfunktionen, die häufig Prozeßgrößen insofern simulieren, als sie ein bestimmtes Ereignis nach einer zu erwartenden Zeit bzw. nach einer Anzahl irgendwelcher Hilfsereignisse anzeigen. Unter dem Thema Zeit- und Zählglieder im Kapitel Entwurfsprozeß erfahren Sie mehr hierzu.


Das Wort Zustand betrifft hier einen Automatenzustand. Jede Prozeß-Situation wird in einen Zustand überführt, manche Prozeß-Situationen vereinigt unter einen Zustand.
Zustands-Merker und symbolische Merker:
Der Prozeßablaufplan ist ein automatentheoretisch fundierter, zustandsorientierter Graph.
Das Compilat muß z.B. zur Markierung der Zustände Merkerbit zugewiesen bekommen. SPaS generiert automatisch Boolesche Variable, die der Nutzer bei Betrachtung des Compilates betrachten kann.


Rufen Sie an: 0341/30761183 und verlangen Herrn Dr. Alder oder
Schreiben Sie eine e-mail: ealder@mail.htwk-leipzig.de