![]() |
|
![]() |
|
Hinweise zum Vorgehen: Im Laufe der Prozeßzerlegung erhalten Sie Teilprozesse[1] und deren zugehörige Eingangs- und Ausgangs-Variablen als Namen bzw. Bezeichner[2] 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[3]
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.
![]() |
|
Das nachfolgende Formblatt soll nun erläutert werden:
"Start Excel"
dient dazu, dieses Programm eigenständig zu starten, damit Sie Ihre Tabelle sichtbar und bearbeitbar machen können.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.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."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!
"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.
Tipp 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[7] sehen Sie die zum Lehrbeispiel. Sie ist nach Instanzen geordnet, siehe Spalte F, "TP-Name".
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.Die Vorbereitung zum "Import"
geschieht durch Klick auf "Reading"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.Klick auf "OK"
beendet die gesamte Aktion und importiert endgültig in PROGRAM bzw. RESOURCE.Klick auf "Cancel" unterbindet den Import, daher können Sie jederzeit "Probe-Importe" durchführen.
[1]
Teilprozeß, kurz TP, heißt jede Einheit aus dem gesamten Steuerungsbereich (im Prozeßzerlegungsgraphen zu erkennen) eines Prozesses.
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.
[2] 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!
[3]
[4] 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!
[5] Die Eigenschaft "Datentyp" einer Variablen bestimmt die Codierung der zur Verfügung stehenden Bit, zur Darstellung bzw. Speicherung der Variablen.
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.
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, TIME - Zeitbausteine /TIMER mit Zeitwert
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 1131-3 nicht vorgesehen, 16 und 32 Bit groß und stellen nur Ziffern im Bereich 0 bis 9 auf Tetraten (4 Bit) dar. Sie werden wie Word-Typen behandelt und sollten nur für Ausgaben z.B. an Ziffernanzeigen benutzt werden, wobei INT_TO_BCD bzw. DINT_TO_BCD zur Verfügung gestellt werden.
Weiterhin können abgeleitete, strukurierte Datentypen eingesetzt werden:
[6] Variable Usage - Verwendung der Variablen bedeutet im einzelnen:
NotSpecified
Die Variable hat keine Festlegung.
Fehler beim Compilieren sind zu erwarten.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, gemeint sind Zahlen, zugewiesen.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.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).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.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.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.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.
[7]