Professional Documents
Culture Documents
Einfhrung
Dieses Skript wendet sich an STEP7-Einsteiger, die bereits Grundkenntnisse in Zusammenhang mit Speicherprogrammierbaren Steuerungen haben. Es soll die Einarbeitung in STEP7 erleichtern und einen berblick ermglichen. Zu diesem Zweck sind hier Informationen in komprimierter Form zusammengestellt, die sonst auf mehrere Handbcher verteilt sind. ber viele Jahre war Einsatz und Programmierung von Speicherprogrammierbaren Steuerungen ein Thema, das mit EDV oder Informationstechnik nichts zu tun hatte. Zunehmend verlangt aber der moderne Produktionsbetrieb eine Durchgngigkeit und Verzahnung aller Steuerungs- und Informationssysteme. Dies hat zu einer nachhaltigen Vernderung in der Automatisierungstechnik gefhrt. Moderne Steuerungen sind heute Teil von vernetzten Rechnerstrukturen. In der Automatisierungstechnik werden daher zunehmend Begriffe und Methoden der Informationstechnik verwendet. Mit der Verbreitung der Norm IEC 61131 wird sich die Entwicklung einer Informatik-Sicht auf die Steuerungsebene noch beschleunigen. Im Skript soll versucht werden, die teils historisch gewachsenen Begriffe von STEP7 auch vom Standpunkt des IEC-Programmierers aus zu beleuchten.
STEP7 ?
Mit der Programmierumgebung STEP7 werden Siemens Automatisierungssysteme SIMATIC S7 programmiert. Genauer gesagt, geht es um Gerte der Familien S7-300 und S7-400, das sind Steuerungen mit mittlerer und hoher Leistungsfhigkeit. Daneben ist STEP7 auch fr die Systeme SIMATIC M7 (Automatisierungsrechner) und SIMATIC C7 (Steuerungen mit Operator Panel) verwendbar. Wegen der Marktbedeutung des Herstellers ist STEP7 weltweit verbreitet. In der Basis-Version von STEP7 sind die Programmiersprachen FUP, KOP und AWL zur Programmierung von vernetzten Automatisierungs-Stationen vorhanden. Durch optionale Programmpakete sind weitere Sprachen verfgbar (siehe unten). Auerdem arbeitet STEP7 mit greren Softwarepaketen fr Visualisierung, SCADA und Prozeleittechnik zusammen.
S7kurs_2000.doc 23.05.02
Seite 1
Home
Dipl.Ing. Norbert Heinlein
nchste
FH Frankfurt, Labor fr Automatisierungstechnik
Inhalt
1 PROGRAMMIERUMGEBUNG ...................................................................................5
S7kurs_2000.doc 23.05.02
Seite 2
nchste
Dipl.Ing. Norbert Heinlein FH Frankfurt, Labor fr Automatisierungstechnik
6 FUNKTION (FC)........................................................................................................25
S7kurs_2000.doc 23.05.02
Seite 3
9 EREIGNISGESTEUERTE PROGRAMMBEARBEITUNG........................................33
Anhang:
Literaturverzeichnis
S7kurs_2000.doc 23.05.02
Seite 4
1 Programmierumgebung
1.1 Programmiergert
Als Programmiergerte (PG) werden meist PCs mit eingebauter MPI-Steckkarte oder spezielle Laptops verwendet. Betriebssystem ist Windows NT oder 95/98, der PC sollte mindestens Pentium-Performance mit 64 MB RAM haben.
1.2
MPI-Bus
Jede S7-Station besitzt eine MPI-Schnittstelle (Multi Point Interface). ber diese Schnittstelle werden die am Automatisierungsprojekt beteiligten S7-Stationen mit dem Programmiergert vernetzt.
Bei MPI handelt es sich um Schnittstellen mit RS485-Physik, ber die ein Siemens-internes Protokoll abgewickelt wird. Es knnen bis zu 32 Teilnehmer ber eine Zweidrahtleitung verbunden werden. Jeder Teilnehmer bekommt eine MPI-Adresse zugewiesen, ber die er ansprechbar ist. Baudrate am MPI-Bus ist 187,5 kBit/s.
Fr Programmiergerte sollen die Adressen MPI-0 oder MPI-1 verwendet werden, die erste S7-Station erhlt die Adresse MPI-2.
Normalerweise verluft ber den MPI Bus nur der Datenaustausch zwischen Programmiergert und den S7Stationen zur Programmierung und fr Online Testfunktionen. Fr wenige Teilnehmer mit geringen Datenmengen kann aber auch eine Kommunikation zwischen den S7Stationen ermglicht werden. Dies geschieht durch Projektierung von sogenannten Globaldaten, die inner halb bestimmter Kommunikationskreise von den beteiligten CPUs verschickt und empfangen werden. Mit den S7Stationen knnen ber MPI auch Operator Panels verbunden werden.
1.3
STEP7 Projekt
Ein STEP7-Projekt enthlt Datenobjekte fr eine oder mehrere zusammengehrige S7-Stationen. Im folgenden
Beispiel besteht das Projekt der Einfachheit halber nur aus einer Station der Reihe S7-300.
S7kurs_2000.doc 23.05.02
Seite 5
Der Behlter Quellen ist fr Programm-Module im Quelltext bestimmt. Das sind beispielsweise Anweisungen in AWL, die mit einem Texteditor erstellt werden. Vor der bertragung zur S7-Station mssen die Quellen erst noch compiliert werden, dadurch entstehen ebenfalls Bausteine. Zu jeder Station werden also viele Informationen abgelegt: Allgemeine Dokumentation, Hardwareaufbau,
Voreinstellungen der Programmierumgebung, Symbolische Bezeichnungen von Variablen, Hilfen fr Test und
Inbetriebnahme usw. und -last not least- die eigentlichen Programmanweisungen unter FUP, KOP, AWL oder
weiteren Hochsprachen.
Vom Programmiergert aus betrachtet, gehren alle diese Informationen zum Programm fr die CPU. Vom
Automatisierungsgert aus betrachtet, besteht das CPU-Programm lediglich aus AWL-Anweisungen: das Programm
wird nmlich beim Laden in die CPU automatisch in AWL-Anweisungen umgesetzt.
Die Programmbausteine entsprechen den so festgelegten Teilaufgaben. Die einzelnen Bausteine erhalten Namen, die fr die jeweilige Teilaufgabe kennzeichnend sind. Auerdem erscheint der Bausteintyp mit Nummer, z.B. FC20 Der Baustein Fllung beispielsweise veranlat spter die Bearbeitung der Bausteine fr die Reinigungen, Kontrolle, Fllung und Etikettierung.
S7kurs_2000.doc 23.05.02
Seite 6
nchste
Dipl.Ing. Norbert Heinlein FH Frankfurt, Labor fr Automatisierungstechnik
2.2
STEP7 unterscheidet sich im Bausteinkonzept stark von den Festlegungen der Norm IEC 1131-3. Gleichzeitig ist das Verstndnis der Bausteine aber zentral wichtig fr das Verstndnis von STEP7! Grundstzlich werden alle Bausteine vom Anwender erstellt oder in das aktuelle Projekt importiert. Hinsichtlich des Inhalts knnen Bausteine unterschieden werden in Codebausteine diese enthalten Programmanweisungen (Code). Alle Bausteine auer DBs sind Codebausteine. Datenbausteine (DBs) enthalten Speicherplatz fr Daten. Auf die Daten von DBs kann man durch Anweisungen in Codebausteinen zugreifen. DBs werden in ihrer Gre und Datenstruktur vom Anwender festgelegt. Sie werden verwendet beispielsweise fr die Speicherung von statischen Variablen, Messwerten, Rezepturen, Regelparametern. Die Codebausteine knnen hinsichtlich des Programmablaufs in zwei Gruppen unterschieden werden. Organisationsbausteine (OBs) werden bei bestimmten Ereignissen vom Betriebssystem gestartet. Alle anderen Codebausteine werden durch Anweisungen im Anwenderprogramm gestartet.
Prioritt
niedrigste
OB-Nr
OB1 OB10 OB35 OB40 OB80 OB100 OB122
Name
Zyklus Uhrzeitalarm Weckalarm Prozessalarm Zykluszeitfehler Anlauf Baugruppenfehler
Systemereignis
am Zyklusende und nach dem Anlauf (Ende von OB100) definierte Uhrzeit oder Datum periodisch jeweils nach einer definierten Zeit bei bestimmten Signalen der I/O-Peripherie OB1-Zyklus berschreitet eine definierte Zeit beim Anlauf der SPS, d.h. bei Stop=>Run wenn beim Baugruppenzugriff ein Fehler erkannt wird
"Zeit-Interrupt" "I/O-Interrupt"
hchste
Am hufigsten wird in Anwenderprogrammen der OB1 (Zyklus) eingesetzt. Viele STEP7-Programme verwenden den OB1 sogar als einzigen OB. Wegen der niedrigen Prioritt kann er durch alle Systemereignisse unterbrochen werden. Die hchste Prioritt hat der OB122, der bei der Erkennung von Baugruppenfehlern sofort bearbeitet wird. Die Anzahl der verfgbaren OBs hngt ab von den Leistungsdaten der verwendeten CPU. Beispielsweise kennt die kleinste CPU (CPU312 IFM) nur OB1, OB40 und OB100. Im vorigen Abschnitt wurde am Beispiel einer Abfllanlage gezeigt, wie die Bausteine entsprechend der Anlagenfunktion gegliedert werden knnen. Wenn die einzelnen Bausteine zyklisch bearbeitet werden sollen, sieht der Programmablauf etwa so aus wie im folgenden Bild.
S7kurs_2000.doc 23.05.02
Seite 7
Wenn ein bestimmtes Systemereignis eintritt, der Anwender aber den betreffenden OB nicht erstellt hat, dann
passiert folgendes: das System verzweigt auf die OB-Adresse, dort steht aber nichts, also wird der unterbrochene
OB sofort weiterbearbeitet.
Eine beliebte Fehlerquelle besteht darin, da irgendein Baustein eigentlich zyklisch bearbeitet werden soll, aber im
OB1 die CALL-Programmanweisung fehlt. Dann passiert nichts und der Programmierer wundert sich.
2.3
Bibliothek fr Standardfunktionen
Bibliotheken unter STEP7 enthalten Bausteine, die zur Verwendung in das aktuelle Projekt kopiert werden knnen. Zur STEP7-Programmumgebung gehrt eine Standardbibliothek. Sie enthlt u.a. die Systemfunktionen (SFCs, SFBs), Standardfunktionen zum Umgang mit IEC-Datentypen und PID-Reglerfunktionen. Man kann aus vorhandenen Bausteinen eigene Bibliotheken aufbauen.
S7kurs_2000.doc 23.05.02
Seite 8
2.4
Netzwerke
Die Codebausteine sind unterteilt in sogenannte Netzwerke (NW). Unter FUP/KOP sind NWs relativ kurz.
Automatisch wird nmlich mit der ersten Zuweisungoperation ein Netzwerkende veranlat. Der Begriff Netzwerk
kommt aus der Nachbildung eines elektrischen Stromkreises unter KOP.
Unter AWL knnen NWs ziemlich lang sein (ca. 2000 Zeilen), so dass umfangreiche Algorithmen kompakt in ein NW
passen. Innerhalb eines Netzwerks kann die Programmiersprache nicht umgeschaltet werden! Ansonsten kann in
einem Baustein mit unterschiedlichen Sprachen gearbeitet werden.
2.5
Datentypen
Typ
BOOL BYTE WORD DWORD CHAR INT DINT REAL TIME DATE TOD S5TIME
Wertebereich
TRUE, FALSE 0 ... 255 0 ... 65535 (216-1) 0 ... 232-1 druckbare Zeichen (ASCII-Code) -32768 ... +32767 (-215... +215-1) (ca. -2,1Mia...2,1Mia) -231 ... + 231-1 -3,4E38 ... 3,4E38 (ca. -24..24 Tage) -231 + 231-1 ms 216-1 Tage ab 1990-1-1 Stunden(0..23) : Minuten(0..59) : Sekund.(0..59) : ms(0..999) 0H_0M_0S_0MS ... 2H_46M_30S_0MS
S7kurs_2000.doc 23.05.02
Seite 9
2.6
Variable
Der Umgang mit Variablen und Adressen bei STEP7 unterscheidet sich von den Festlegungen der IEC 61131-3. Whrend den IEC-Programmierer im Allgemeinen nicht interessiert, an welcher Adresse eine Variable im Speicher reprsentiert ist, hat sich der STEP7-Programmierer bereits vor der Variablendeklaration darber seine Gedanken gemacht und Entscheidungen getroffen. Erfahrene STEP7-Programmierer knnen einen Nutzen aus dem Wissen ber die Speicheraufteilung ziehen und manche Probleme elegant lsen. Allerdings haben es Einsteiger in STEP7 etwas schwerer. Was sind eigentlich Variable? Einige allgemein gltige berlegungen sollen den Blick auf die Belange von STEP7 schrfen: Variable oder ganz
allgemein Datenobjekte bezeichnen mit ihrem Namen eine bestimmte Menge von Speicherplatz. Unter dem
Variablennamen knnen die dort liegenden Daten benutzt werden. Im Gegensatz dazu stehen Konstante, die keinen
Speicherplatz haben und deren Wert im Programmcode festgelegt ist, weil er sich sowieso nie ndert.
Somit ist ein erstes wichtiges Kennzeichen fr Variable der zugehrige Datentyp, der ja bereits die erforderliche
Menge an Speicherplatz festlegt. Auerdem ist es wichtig zu wissen, wie lange Daten im Speicher verbleiben und
wann eine Aktualisierung der Daten erfolgt. Dies hat viel zu tun mit dem Ereignisgesteuerten Programmablauf der
CPU und wird im Abschnitt 9 behandelt.
Wichtig ist auch der Gltigkeitsbereich, innerhalb dessen der Variablenname dem Programm bekannt ist. Hierzu sind
Aussagen in den Abschnitten ber Globale und Lokale Variable gemacht.
Der Ort, an dem die Variable gespeichert ist, wird durch Speicheraufbau und Adressierung bestimmt. Dies ist Thema
der folgenden folgenden Abschnitte.
2.6.1 Variablennamen
Bei der Beschreibung irgendwelcher anderen Hochsprachen (und auch nach IEC61131-3) wrden zum Thema Namen wahrscheinlich nur Fragen der Schreibweise von Variablenbezeichnern behandelt werden. Eine Variable wre dann etwa so deklariert: Datentyp Name // Kommentar
Man wte nicht -und es wre auch nicht wichtig-, unter welcher Adresse die Variable im Speicher liegt. Beim
bersetzen des Programms wrde automatisch eine Adresse festgelegt, die zur Laufzeit des Programms
selbstverstndlich bekannt wre.
Bei STEP7 ist das etwas anders, da es eigentlich gar keine Variablennamen gibt zumindest nicht in der
adressunabhngigen Art, wie sie sonst in Hochsprachen verwendet werden. Mit dieser etwas provokativen
Behauptung soll darauf hingewiesen werden, dass bei STEP7 im Namen bereits die Adressinformation steckt und
zwar bereits im Quelltext (!) des Programms.
STEP7 Bausteine in FUP/KOP oder AWL brauchen nicht bersetzt werden! Dieses Prinzip der festen Zuordnung von Variablennamen und Adressen hat den Vorteil, dass die Bausteine ohne bersetzung in die CPU geladen werden knnen! Auch beim Fehlersuchen in Programmen kann viel Zeit gespart werden, weil Bausteine auch ohne Rckbersetzung aus der CPU ausgelesen und interpretiert werden knnen.
2.6.2 Symboltabelle
Damit man unter STEP7 trotzdem flssig programmieren kann, ist der Anwenderspeicher in bestimmte Bereiche aufgeteilt (E, A, M, Z, T, L, P, D siehe Abschnitt 3.7). Auerdem kann man mit einem Symboleditor eine symbolische Bezeichnung fr die feste Adresse festlegen und mit dieser programmieren. Beispiel: M3.5 M3.5 ist eine Variable vom Typ BOOL, die im Merkerbereich (wegen der Bezeichnung M) des Anwenderspeichers liegt und dort im Byte Nr.3 das Bit 5 belegt. In einer Symboltabelle erstellt man Zuordnungen der Art
Symbol Adresse Datentyp Kommentar
Name
M3.5
BOOL
Auf die Variable kann man dann zugreifen mit Name oder nach wie vor mit M3.5
Solche Variablen wie M3.5 nennt man in STEP7 Absolute Operanden. Gemeint ist damit, dass die Adresse sich niemals ndert und man mit ihnen operieren kann. Dieses kleine Beispiel ist bereits ein kleiner Vorgriff auf die Adressierung unter STEP7, die im Abschnitt 2.8 ausfhrlich behandelt wird.
S7kurs_2000.doc 23.05.02
Seite 10
nchste
Dipl.Ing. Norbert Heinlein FH Frankfurt, Labor fr Automatisierungstechnik
Man trgt Deklarationstyp, Variablenname, Datentyp und Kommentar ein. Die Adressen ermittelt STEP7
automatisch. Alle nicht temporren Variablen knnen mit einem Anfangswert initialisiert werden. Als Datentypen
kommen Elementare Datentypen, UDTs, ANY und zusammengesetzte Datentypen mit ARRAY, STRUCT und
STRING vor. Zusammengesetzte Datentypen siehe Abschnitt 2.6.5.
Es gibt folgende Deklarationstypen:
Typ
in out in_out temp
Beschreibung
Eingangsparameter Ausgangsparameter Ein- Ausgangsparameter temporre Variable, die im Lokaldaten-Stack gespeichert wird. Der Wert der Variablen ist ist nach der Bearbeitung des Bausteins (das bedeuted auch: im im nchsten Zyklus!) nicht mehr verfgbar. statische Variable, wird im Instanz-Datenbaustein gespeichert
Zugriff
lesen schreiben lesen, schreiben lesen, schreiben
zulssig in
FB, FC FB, FC FB, FC FB, FC, OB
stat
lesen, schreiben
FB
S7kurs_2000.doc 23.05.02
Seite 11
Beispiel fr Parameterbergabe:
Es sei ein Baustein vorhanden mit der Funktion y=sin(x). Der Baustein hat als Eingang den Formaloperanden x, ausdem er mit einem Sinusalgorithmus y bestimmt. Auch y ist ein Formaloperand, allerdings vom Ausgangstyp. Beim Aufruf des Bausteins werden die Aktualoperanden (fr x: MW2, fr y: MW4) bergeben.
temp (temporre Variable) Temporre Variable sind nur in dem Baustein gltig, in dem sie deklariert sind, d.h. beim Verlassen des Bausteins wird der zugehrige Speicherplatz freigegeben fr andere Zwecke. Der Speicherbereich fr temporre Variable ist der sogenannte Lokaldaten-Stack; der Aufbau des Stacks ergibt sich jeweils aus den gerade aktuellen temporren Variablen. stat (statische Variable) Statische Variable knnen nur in Funktionsbausteinen deklariert werden. Der Wert wird im Instanz-Datenbaustein gespeichert und ist daher im nchsten Zyklus wieder verfgbar. Im Abschnitt 8 ist die Erstellung und Verwendung von FBs erklrt.
2.6.5.1 ARRAY
Ein ARRAY verknpft ein Feld gleicher Datentypen zu einer Einheit. Es sind auch mehrdimensionale Arrays mglich. DerZugriff auf die Variable erfolgt in der Schreibweise: #ArrayName [i,k] Syntax: ArrayName ARRAY [1..10, 1..2] Datentyp // Kommentarzeile, zweidimensionales Array
2.6.5.2 STRUCT
Eine Struktur (STRUCT) verknpft verschiedene Datentypen zu einer Einheit. Der Zugriff auf die Elemente erfolgt in der Schreibweise #Strukturname.Feldname (z.B. #Messwert.Temperatur). Syntax: StructName Data1 Data2 ... Data i STRUCT Datentyp1 Datentyp2 ... Datentyp i END_STRUCT // Kommentarzeile zur Struktur
Beispiel:
2.6.5.3 STRING
Eine Zeichenkette (STRING) ist ein eindimensionales Feld aus CHAR-Datentypen. Die Feldgrsse ist maximal 254 Zeichen.
S7kurs_2000.doc 23.05.02
Seite 12
2.7
Beim Laden in die CPU werden die Bausteine des S7-Programms in einen Ladespeicher transferiert. Das Betriebssystem generiert daraus ein ausfhrbares Programm im Arbeitsspeicher (RAM) der CPU. Daneben gibt es den Systemspeicher (RAM), der in bestimmte Bereiche unterteilt ist: Eingnge (E), Ausgnge (A), Merker (M), Timer (T), Zhler (Z), Daten (D), Lokaldaten (L), Eingangsperipherie (PE) und Ausgangsperipherie (PA). Auf alle Speicherbereiche kann durch Anweisungen im Anwenderprogramms lesend und schreibend zugegriffen werden. Die folgende Tabelle zeigt die Speicheraufteilung. Die Menge der verfgbaren Operanden (d.h. die Gre des Systemspeichers) ist abhngig von der jeweiligen CPU. Als Beispiel sind in der Tabelle die verfgbaren Operanden fr die kleinste CPU der Reihe S7-300 dargestellt.
Speicherbereich
PAE Prozeabbild der Eingnge
S7Notation
E EB EW ED A AB AW AD M MB MW MD T Z
Beschreibung
PAE ist ein Speicherbereich, der vom Betriebssystem jeweils vor Beginn des OB1-Zyklus mit den Daten der Eingabebaugruppen beschrieben wird. PAA ist ein Speicherbereich, dessen Daten vom Betriebssystem jeweils nach Ende des OB1Zyklus an die Ausgabebaugruppen geschrieben werden. Anwender - Speicherbereich
*)
Ausgang (Bit) AusgangsByte AusgangsW ort AusgangsDoppelwort Merker (Bit) MerkerByte MerkerWort MerkerDoppelwort Zeiten Zhler Datenbaustein, geffnet mit Operation "AUF DB"
Speicherbereich, in den vom Betriebssystem Zeitwerte geschrieben werden Speicherbereich fr Zhler Datenbausteine werden im Anwenderprogramm erstellt in Gre und Datenstruktur. Sie knnen entweder so definiert sein, da alle Codebausteine auf sie zugreifen knnen (Globale DB) oder sie sind einem bestimmten FB oder SFB zugeordnet (Instanz-DB). Durch zwei Register der CPU (DB-, DI-Register) knnen gleichzeitig zwei Datenbausteine adressiert werden.
AD0...28, AD124 M0.0...M127.7 MB0... MB127 MW0...MW126 MD0... MD124 Z0... Z31 T0 ... T63
DB DBX DBB DBW DBD DI DIX DIB DIW DID L LB LW LD PEB PEW PED PAB PAW PAD
DB 1... DB 63 DBX 0.0 ... DBX 6143.7 DBB 0 ... DBB 6143 DBW 0... DBW 6142 DBD 0 ... DBD 6140 DI 0 ... DI 63 DIX 0.0 ... DIX 6143.7 DIB 0 ... DIB 6143 DIW 0 ... DIW 6142 DID 0 ... DID 6140 L 0.0 ... L 255.7 LB 0 ... LB 255 LW 0 ... LW 254 LD 0 ... LD 252 PEB0..31, PEB124..127, PEB256..383 PEW0..30, PEW124..126, PEW256..382 PED0..28, PED124, PED256..380 PAB0..31, PAB124..127, PAB256..383 PAW 0..30, PW 124..126, PAW 256..382 PAD0..28, PAD124, PAD256..380
DatenBit DatenByte DatenWort DatenDoppelwort Datenbausteine, Datenbaustein, geffnet mit adressiert mit Operation "AUF DI" DI-Register DatenBit DatenByte DatenWort DatenDoppelwort Lokaldaten LokaldatenBit "Lokaldaten-Stack" LokaldatenByte oder "L-Stack" LokaldatenW ort LokaldatenDoppelwort Peripheriebereich PeripherieEingangsByte Eingnge PeripherieEingangsWort PeripherieEing.Doppelwort Peripheriebereich PeripherieAusgangsByte Ausgnge PeripherieAusgangsWort PeripherieAusgDoppelwort
Speicherbereich fr temporre Daten eines Codebausteins. Der Aufbau des jeweiligen Lokaldaten-Stacks ergibt sich aus der zugehrigen Deklarationstabelle Speicherbereich, der direkt mit den Daten der Ein-/Ausgabebaugruppen in Verbindung steht. Durch Zugriff auf Daten des Peripheriebereichs knnen die Ein/Ausgabebaugruppen unabhngig vom OB1-Zyklus erreicht werden.
*) die CPU312IFM besitzt Onboard-Peripherie, die EB124..127 und AB124..127 zugeordnet ist
2.7.1 Remanenz
Normalerweise gehen Daten im Speicherbereich Merker, Zeiten, Zhler bei Spannungsausfall der CPU verloren.
Auerdem werden beim Anlauf der CPU (bergang STOPRUN) diese Daten in einen definierten Zustand gesetzt.
Durch Parametrierung der CPU kann man aber einen kleinen Teil der Merker, Zeiten, Zhler als remanent
festlegen.
Remanente Daten bleiben erhalten bei Spannungsausfall und beim Anlauf der CPU (bergang STOP RUN).
S7kurs_2000.doc 23.05.02
Seite 13
2.8
Adressierung
U E2.3 L EB1
U Sensor1 L Eingnge
UND-Operation mit dem Eingangsbit E2.3 Lade-Operation: Lade EingangsByte EB1 in Akku1
Wiederholfaktor
// 10 Bytes im Speicherbereich Merker MB 50... MB 59 // 4 Bit im Speicherbereich Ausgnge A 10.0.... A 10.3 // 3 Daten vom Typ S5TIME, die in DB10 gespeichert sind // und zwar in DB10 Byte 5 ... 10
Angenommen, es handelt sich um Operanden aus dem Merkerbereich. Dann lassen sich aus der Tabelle beispielsweise folgende Werte fr die Operanden ablesen:
BOOL: BYTE: WORD: DWORD: M10.0 =1; M 10.1 =1; ... MB 10 = 17 Hex; MW 10 = 1707 Hex MD 10 = 1707F041 Hex
M 10.7 =0; MB 11 = 07 Hex; MW 11 = 07F0 Hex ... usw ... MB 12 = F0 Hex; MW12 = F041 Hex
M13.0 =1; M13.1 =0; ... M13.7 =0
MB 13 = 41 Hex
Der Anwenderspeicherspeicher ist also Byteweise organisiert: Binre Operanden sind auf das jeweilige Byte bezogen, in dem sie vorkommen und die Nummer von Wrtern und Doppelwrtern bezieht sich auf das hchstwertige Byte!
S7kurs_2000.doc 23.05.02
Seite 14
Vorsicht Programmierfehler! Die oben beschriebene Mehrfachnutzung von Speicherplatz fr unterschiedliche Datentypen fhrt bei STEP7-
Einsteigern hufig zu Programmierfehlern! Da beispielsweise die Merker M10.0...M10.7 Untermengen von MB10
sind, verndert man durch Schreibzugriff auf MB10 auch automatisch diese Merker. Ebenso verndert man durch
Schreiben auf MW10 auch automatisch den Inhalt von MB11 usw.
Der beschriebene Speicheraufbau ermglicht ein geschicktes Programmieren, z.B. kann man alle binren Eingnge
parallel mit einer Ladeoperation in das PAE einlesen - allerdings knnen bei Unachtsamkeit bse Programmierfehler
entstehen!
Tip: Zur Vermeidung solcher Fehler sollte man in einem STEP7-Projekt die Operanden getrennt nach Datentypen in festgelegten Speicherbereichen ansiedeln! Am besten macht man hierfr ein Konzept vor der eigentlichen Programmierarbeit und erspart sich so die Mhe des Fehlersuchens. Beispiel:
Typ Merker-Bits: Merker-Bytes: Merker-Worte: Merker-Doppelworte festgelegter Adreraum MB10 ... MB19 MB20 ... MB39 MB40 ... MB59 MB60 ... MB99 Reihenfolge der Vergabe M10.0 M10.1 M10.2 MB20 MB22 MB21 MW40 MW42 MW44 MD60 MD64 MD68 ... ... ... ... ... bis M19.7 MB39 MW58 MD96
2.9
STEP7 bietet Schreibweisen zum Eingeben oder Anzeigen von Daten in verschiedenen Formaten. Whrend die meisten Schreibweisen einem bestimmten Datentyp entsprechen, knnen einige fr mehrere Datentypen verwendet werden. Folgende Schreibweisen sind zulssig:
Schreibweise 2# True/False B#(...) B#16# W#16# DW#16# Ganzzahl L# Gleitpunktzahl C# T# D# TOD# S5T# Datentyp WORD DWORD BOOL WORD DWORD BYTE WORD DWORD INT DINT REAL WORD TIME DATE TOD S5TIME Beschreibung Beispiel (e) Binre Schreibweise 2#0001_0000_0000_1101 Binre Schreibweise 2#1000_1111_0101_1101_0010_0000_0000_1101 TRUE oder FALSE TRUE, FALSE Wert der einzelnen Bytes dezimal B#(10,255) Wert der einzelnen Bytes dezimal B#(100,114,2,10) Byte hexadezimal B#16#4F Wort hexadezimal W#16#FF1B Doppelwort hexadezimal DW#16#09A2_FF13 IEC-Ganzzahlformat mit Vorzeichen in Bit 15 -2270 32767 32Bit Ganzzahlformat, Vorzeichen in Bit 31 L#44520 L#-49245 IEC-Gleitpunktzahlenformat 3.14 1.234567e+13 16Bit Zhlerkonstante 0...999 C#500 T#TageD_StundH_MinutM_SekundS_MillisekMS T#0D_1H_10M_22S_100MS D#Jahr-Monat-Tag D#1997-3-15 TOD#Stunden:Minuten:Sekunden:Millisekunden TOD#13:24:33:555 S5T#TageD_StundH_MinutM_SekundS_MillisekMS S5T#12M_22S_100MS
S7kurs_2000.doc 23.05.02
Seite 15
nchste
Dipl.Ing. Norbert Heinlein FH Frankfurt, Labor fr Automatisierungstechnik
3.2
Gezeigt ist ein ein FlipFlop mit domi nandem Rcksetzeingang. Flankenerkennungen bentigen einen freien binren Operanden zum Speichern des frheren Signal zustands, hier M1.0. Gezeigt ist die Verwendung der Operation P zur Erkennung einer positiven, d.h. ansteigenden Flanke.
3.3
Timer
ist
vom
Datentyp
Neben dem verwendeten Impuls timer gibt es noch Timer fr Einschaltverzgerung, Ausschalt verzgerung und speichernde Einschaltverzgerung.
S7kurs_2000.doc 23.05.02
Seite 16
3.4
Zhler
Mit positiver Flanke 01 an S wird der Zhler auf den Wert ZW eingestellt. ZW ist im Format C#<Wert> Wert = 0..999 Neben dem Rckwrtszhler Vorwrtsund wrtszhler. dargestellten gibt es auch Vorwrts/Rck
3.5
Arithmetische Operation
3.6
Bausteinaufruf
Gezeigt ist der bedingte Baustein aufruf: FC2 wird nur dann bearbeitet, wenn die Variable E3 den Wert TRUE hat. Auerdem gibt es noch einen absoluten Bausteinaufruf (Bearbei tung immer, ohne Bedingung). Unter FUP darf der Eingang EN dann einfach unbeschaltet bleiben (s.a. Abschnitt 3.5)
S7kurs_2000.doc 23.05.02
Seite 17
4.2
4.3
Beim sogenannten Urlschen wird der Arbeitsspeicher und RAM-Ladespeicher der CPU gelscht. Auerdem werden alle CPU- und Baugruppenparameter auf die Default-Einstellungen zurckgesetzt. Man sollte die CPU vor dem Laden eines neuen Anwenderprogramms urlschen. Die CPU mu dabei im Betriebszustand STOP sein. Zum Urlschen mit dem Programmiergert sind vom SIMATIC Manager aus die folgenden Schritte erforderlich: Erreichbare Teilnehmer CPU auswhlen Und dann: Zielsystem Zielsystem Betriebszustand CPU auf STOP Urlschen
4.4
Um die CPU vor Datenverlust zu schtzen, gibt es je nach CPU verschiedene Methoden:
S7kurs_2000.doc 23.05.02
Seite 18
EPROM, Memory-Card
Verschiedene CPUs haben einen Slot fr Memory-Card oder einen eingebauten E(E)PROM-Bereich. Sofern das
Programm in den EPROM-Bereich geladen wurde, sind Code- und Datenbausteine vor Datenverlust bei Netzausfall
geschtzt - auch ohne Batteriepufferung.
CPUs ohne Batterie-Fach Falls eine CPU keine Batterie hat (zB. CPU 312IFM), existiert ein E(E)PROM-Bereich zum Schutz der Daten bei
Stromausfall. Nach dem normalen Laden des S7-Programms in den RAM-Bereich der CPU sichert man die Daten
wie folgt:
SIMATIC Manager (Online) die betreffende CPU markieren rechte Maustaste
Zielsystem RAM nach ROM kopieren
5.1.3
Nach dem Verlassen von STEP7 wrde bei Ihrer nchsten Arbeitssitzung automatisch das zuletzt bearbeitete Projekt
geladen werden. Ein beliebiges Projekt whlen Sie aus mit:
SIMATIC Manager Datei ffnen Projekt
S7kurs_2000.doc 23.05.02
Seite 19
Statt ffnen knnen Sie hier entsprechend ein Projekt schlieen, lschen, archivieren etc. Nutzen Sie die Online-
Hilfe, wenn Sie ein Vorgang besonders interessiert. Wichtig ist Projekt archivieren, da ein Speichern des Projekts
auf Diskette wegen der Datenmenge praktisch nur mglich ist mit einer komprimierten Archivdatei.
Im Fenster "ffnen Projekt" knnen Sie sich mit Durchsuchen eine bersicht ber die vorhandenen Projekte
verschaffen. Wenn Sie genug probiert haben, stellen Sie Ihr Projekt wieder ein.
Unter Hardware konfigurieren versteht man die Festlegung, aus welchen Baugruppen die Station besteht.
Prinzipiell ist es egal, ob Sie erst das Programm erstellen und danach die Stations-Hardware konfigurieren oder umgekehrt. Sptestens aber, ehe Sie Ihre Programmbausteine in das Automatisierungsgert laden, mu die vorhandene Hardware konfiguriert sein. ffnen Sie das Objekt Hardware: Klicken Sie mit der rechten Maustaste auf das Objekt Hardware im Behlter SIMATIC 300-Station und whlen Sie Objekt ffnen, (Auch ein Doppelklick mit der linken Maustaste auf das Objekt Hardware fhrt zum Ziel). Es erscheint das Fenster Hardware Konfigurieren mit einem BaugruppentrgerSymbol. Falls der Hardware-Katalog auf der rechten Bildschirmseite noch nicht sichtbar ist, veranlassen Sie dies mit: Einfgen Hardware-Komponenten Verschaffen Sie sich einen berblick ber die Komponenten des knnen Sie Unter-Objekte ffnen durch anklicken des Symbols: Hardware-Katalogs! Wie unter Windows blich,
Nun knnen Sie den Baugruppentrger bestcken, indem Sie Komponenten im Hardware-Katalog anklicken und bei gedrckter Maustaste auf den entsprechenden Bestckungsplatz ziehen. Orientieren Sie sich bei der Auswahl der Komponenten an der Ihren zur Verfgung stehenden SIMATIC-Station. Reservierung der Steckpltze:
Steckplatz Steckplatz Steckplatz Steckpltze 1: 2: 3: 4..11: reserviert fr die Stromversorgung reserviert fr die CPU. bleibt frei Signalbaugruppen digital/analog PS (Power Supply) SM (Signal Modul)
Baugruppen-Adressen
Die Adressen der I/O-Signale einer bestimmten Baugruppe sind abhngig von den Eigenschaften der Baugruppe
(E/A und Anzahl der Byte) und von dem Steckplatz, aus dem sich die Anfangsadresse ergibt.
Tip: Neben den anderen Objekt-Eigenschaften knnen Sie sich auch die Baugruppen-Anfangsadressen direkt ausgeben lassen: Rechter Maustklick auf die betreffende Baugruppe, dann: Objekteigenschaften Adressen Beispiel: Baugruppe fr 16 digitale Ausgnge am Steckplatz 5 Wegen Steckplatz 5 gilt: Anfangsadresse = 4 (dezimal) Die Baugruppe belegt 16 Bit, also 2 Byte im Peripheriebereich der Ausgnge ab der Anfangsadresse Daher sind verfgbar: AB4 und AB5 oder: A4.0 ... A4.7, A5.0 ... A5.7
S7kurs_2000.doc 23.05.02
Seite 20
nchste
Dipl.Ing. Norbert Heinlein FH Frankfurt, Labor fr Automatisierungstechnik
Adresse
E0.0 *) E0.1 *) MW0 MW2 AW4 *) MW4 M1.1
Datentyp
BOOL BOOL WORD WORD WORD WORD BOOL
Kommentar
Zhlerstand automatisch inkrementiert, wenn Zhlen=1
Zhlerstand auf 0 gesetzt, wenn Reset=1
Zeitablauf Timer 1
Zeitablauf Timer 2
Zhlerstand als Dualwert
Zhlerstand als BCD-Wert
Status des Zhlers Zhl_Q=1 wenn Zhlerstand > 0
*) berzeugen Sie sich, da auch Ihre Station mit den entsprechenden I/O-Baugruppen bestckt ist (oder fragen Sie Ihren
Betreuer) und ndern Sie gegebenenfalls die Adressen!
Probieren Sie die verschiedenen Sortiermglichkeiten, um die Datenstze der Symboltabelle darzustellen, mit: Symbol Editor Ansicht Sortieren Sortierkriterium... Speichern Sie Ihre Symboltabelle und schlieen Sie den Symbol Editor.
Ein Baustein wird unterteilt in ein oder mehrere Netzwerke, die nacheinander bearbeitet werden. Unser kurzes Programm pat in zwei Netzwerke.
S7kurs_2000.doc 23.05.02
Seite 21
Editieren Sie ein Netzwerk am besten von rechts nach links, d.h. beginnen Sie am Ausgang! Zuerst setzen Sie die einzelnen Programmelemente und tragen schlielich die Operanden ein. Bei den Operanden knnen Sie absolute und symbolische Bezeichnungen verwenden (soweit diese bereits im Symbol Editor definiert wurden).
Symbolische Bezeichnungen mssen gekennzeichnet werden durch Anfhrungszeichen, z.B. Zhlen. Bei den Symbolischen Bezeichnungen achten Sie auf auf richtige Gro/Kleinschreibung entsprechend Ihrer Definition!
Ihre Eingaben werden Schritt fr Schritt von STEP7 auf Fehler untersucht. Falsche Eingaben werden rot gekennzeichnet. Nutzen Sie bei Bedarf die Online-Hilfe.
Zeigen Sie die vorhandenen Programmelemente an mit Einfgen Programmelemente,
oder durch klicken auf:
Falls Sie die Programmelemente am rechten Bildrand jetzt noch nicht sehen: Packen Sie im Fenster KOP/FUP/AWL
den rechten senkrechten Bildrand und ziehen ihn nach links. Damit schaffen Sie Platz fr das Dialogfeld
Programmelemente. Verschaffen Sie sich einen berblick ber die vorhandenen Programmelemente!
Whlen Sie jeweils aus den Programmelementen das geeignete Objekt aus und ziehen Sie es bei gedrckter
Maustaste in den Anweisungsteil Ihes Netzwerks, also z.B.:
Programmelemente Zeiten Bitverknpfung S-Impuls Negationspunkt (SIMATIC Timer, Impuls)
(Binre Negation)
Z_VORW -[=]
(Vorwrtszhler)
(Binre Zuweisungsoperation, oder Spule)
Am besten tragen Sie jetzt zum kennenlernen die verschiedenen Kommentare ein. Sie haben folgende Stellen, an denen Sie im Baustein Kommentar eintragen knnen:
Kommentare: FUP/KOP/AWL Baustein-berschrift Baustein-Kommentar Netzwerk-berschrift Netzwerk-Kommentar hinter OB1 unter der Bausteinberschrift hinter Netzwerk 1 unter Netzwerk-berschrift
unter AWL haben Sie auerdem noch die Mglichkeit zu einem Zeilenkommentar hinter dem Trennzeichen: // Beispiel: U E2.3 // dies ist ein Zeilenkommentar
Es ist uerst sinnvoll, den erklrenden Text gleich beim Editieren der Netzwerke bzw. des Baustein einzutragen, dann mssen Sie ein Programm spter nicht noch mal entwickeln...
Tip: Schalten Sie testhalber um in die anderen Sprachen KOP und AWL, damit Sie einen Eindruck bekommen, wie KOP und AWL funktioniert. Umschalten mit zB.: Ansicht KOP
S7kurs_2000.doc 23.05.02
Seite 22
nchste
Dipl.Ing. Norbert Heinlein FH Frankfurt, Labor fr Automatisierungstechnik
5.2
berzeugen Sie sich, dass Ihre S7-Station am Programmiergert angeschlossen und mit Strom versorgt ist.
5.3
Natrlich gibt es triviale Mglichkeiten zum Testen des Programms: Einfach auf auf die LEDs der Ein/Ausgnge
schauen oder gar frech einfach die zu steuernde Anlage anschlieen. Aus Sicherheitsgrnden ist aber dringend
davon abzuraten!!!
Nutzen Sie die in STEP7 vorhandenen Testhilfen, um die Fehlerfreiheit Ihres Anwenderprogramms zu beweisen, ehe
eine Anlage angeschlossen wird.
Dazu mssen Sie eine Online-Verbindung zum AG herstellen:
S7kurs_2000.doc 23.05.02
Seite 23
Dipl.Ing. Norbert Heinlein Starten Sie den Test mit: Test Beobachten
Jetzt knnen Sie sie die Variablenwerte betrachten. Sie sehen, wie die Werte sich im jeweiligen Netzwerk verhalten. Machen Sie sich vertraut mit der Testumgebung. Sie verlassen die Testhilfe durch erneutes anklicken von: Test Beobachten.
Operand E0.0 E0.1 MW0 MW2 AW4 MW4 M1.1 Symbol Zhlen Reset Zeit1 Zeit2 Zhl_Dual Zhl_Dez Zhl_Q Status-Format
Bin
Bin
Dez
Dez
Dez
Dez
Bin
S7kurs_2000.doc 23.05.02
Seite 24
6 Funktion (FC)
Im diesem Abschnitt werden die wesentlichen Aspekte bei der Erstellung und Verwendung von Funktionen
behandelt. Das geschieht am Beispiel eines speziellen Multiplizierers.
Beispiel-Funktion
Es soll eine Funktion erstellt werden, die das Ergebnis Y = A*B*C zurckliefert. Die Variablen sind alle vom Typ DINT
(Ganzzahl, 32 Bit). Wenn die Faktoren zu gro sind, wird der zulssige Zahlenbereich von Y berschritten und das
Ergebnis ist falsch! Deshalb sollte der Erfolg der Berechnung dem aufrufenden Baustein mitgeteilt werden.
Wegen Y= A*B*C= (A*B)*C kann die Berechnung der Multiplikation aus zwei hintereinander
geschalteten Multiplizierern mit jeweils 2 Eingngen zusammengesetzt werden.
STEP7 stellt fertige Multiplizierer mit zwei Eingngen zur Verfgung. In der Liste der Programmelemente ist die Operation MUL_DI (Multiplikation fr Variable vom Typ DINT) zu finden.
Unter AWL treten diese Operanden nicht auf. Hier wird stattdessen direkt mit dem Statusflag BIE gearbeitet EN (Enable) Der betreffende Funktionsblock wird nur dann bearbeitet, wenn EN = 1 ist. Im anderen Fall wird er bersprungen. Im Zusammenhang mit einem Bausteinaufruf ist EN die Bedingung, ob der Baustein tatschlich bearbeitet wird oder bersprungen wird. Bearbeitung des Funktionsblocks dann, wenn: EN = 1
ENO (Enable Out) Der Wert von ENO bzw. BIE wird durch Programmanweisungen im betreffenden Funktionsblock festgelegt. Es gilt
folgende Konvention zur Programmsteuerung:
Man setzt ENO in Abhngigkeit von evtl. Laufzeitfehlern durch einem Schreibzugriff auf das Statusflag BIE
(Binrergebnis) auf folgenden Wert: Bearbeitung des Bausteins ohne Fehler: Fehler aufgetreten: BIE = 1 BIE = 0 (ENO = 1) (ENO = 0)
Die letzte Operation vor dem Verlassen des Bausteins sollte also die Zuweisung eines entsprechenden Wertes auf das BIE-Flag sein. Damit wird der ENO des gesamten Bausteins festgelegt. Hierfr wird unter AWL die Operation SAVE verwendet. BIE wird wird dieser Operation auf den Wert des Statusflags VKE (Verknpfungsergebnis) gesetzt.
S7kurs_2000.doc 23.05.02
Seite 25
Mit der Operation SAVE wird der Inhalt des VKE (Verknpfungsergebnis) dem BIE zugewiesen
Man erstellt also ein VKE entsprechend der Programmsteuerungs-Konvention und weist am Bausteinende durch eine SAVE-Operation den Wert dem BIE-Flag zu. Da von den vielen Operationsbefehlen unter STEP7 lediglich SAVE einen Einflu auf das BIE-Flag besitzt, gilt auerdem noch die folgende Regel: Wenn keine Operation SAVE vorkommt, ist: ENO = EN
Beispiel: BIE soll mit dem Wert von Merker M1.0 belegt werden. In den verschiedenen Sprachen sieht die Operation so aus: FUP KOP AWL U M1.0 SAVE
6.2
Selbstverstndlich mu ein Baustein bereits existieren, ehe er aufgerufen werden kann! Ideshalb wird als erstes die Funktion erstellt. Im Deklarationsteil wird die Schnittstelle der Funktion nach auen festgelegt:
6.2.1 Deklarationsteil
Die Deklarationstabelle enthlt die Lokalen Variablen der Funktion. Als Eingnge (Deklarationstyp in) vom Datentyp DINT werden dem Baustein die drei Faktoren A, B, C bergeben. Der Ausgang Y (Deklarationstyp out) ist ebenfalls vom Datentyp DINT. Alle Formalparameter werden mit dem Anfangswert 0 initialisiert Das Zwischenergebnis A*B kann nach Verlassen des Bausteins vergessen werden; deshalb wird es als temporre Variable deklariert (Deklarationstyp temp).
Wenn unter FUP der EN Eingang unbeschaltet ist, wird der Block bearbeitet!
Zur Ermittlung des Baustein-ENO kann man hier einfach den ENO des ersten Blocks auf den EN des zweiten
durchschleifen (dann den ENO auf den EN des nchsten ...usw.). Der ENO des letzten Funktionsblocks mu ber
die Operation SAVE nach auen weitergegeben werden. Wrde oben die Save-Anweisung gelscht werden, wrde
ein berlauf-Fehler des zweiten Funktionsblocks nicht weitergegeben werden!
Im letzten Netzwerk wird als letzte Anweisung ber die Operation SAVE der Baustein-ENO gesetzt.
Meistens hat man es aber mit weniger komplexen Programmelementen zu tun, die selbst keine EN/ENO-Anschlsse
haben (z.B Binre Verknpfungen, FlipFlops, Zhler etc). Dann mu man den Wert des Baustein-ENOs eben selbst
programmieren. Dabei ist die bereits beschriebene Konvention zu beachten.
S7kurs_2000.doc 23.05.02
Seite 26
Folgende AWL-Operationen sind im Zusammenhang mit dem Binrergebnis-Flag BIE besonders interessant:
Operation Beschreibung
Wert von VKE BIE setzt VKE 0 setzt VKE 1 negiert das VKE
6.3
Aufruf unter AWL: Unter AWL erfolgt der Aufruf mit der Operation CALL. Falls der Aufruf von einer Bedingung abhngig sein soll, mu durch entsprechende Sprunganweisungen die Zeile mit CALL bersprungen werden.
6.4
Manchmal reicht die bereits beschriebene Verwendung von EN/ENO zur Fehlerbehandlung nicht aus, um im
aufrufenden Baustein ausreichende Informationen ber den Bearbeitungsstatus zu bekommen.
In solchen Fllen ist es gebruchlich, im FC einen zustzlichen Ausgangsparameter fr Statusinformationen zu
deklarieren. Den Datentyp whlt man je nach Anforderungen. Der ENO wird als Sammelmeldung benutzt: irgend
etwas ist passiert, wenn ENO=0.
Im aufrufenden Baustein hat man zunchst nur ENO zu berwachen. Erst wenn ENO=0 ist, wird die
Statusinformation ausgewertet.
S7kurs_2000.doc 23.05.02
Seite 27
7 Datenbaustein (DB)
In diesem Abschnitt werden die Erstellung, Adressierung der Daten und die Einsatzmglichkeiten von DBs behandelt. Das spezielle Umgehen mit Instanz-DBs wird im Abschnitt 8 zusammen mit Funktionsbausteinen erklrt. Die Datenstruktur und Lnge von DBs wird vom Anwenderprogramm festgelegt. Die Adressierung in Datenbausteinen ist auf Bytes bezogen, ebenso wie im Speicher der CPU. Die maximale Lnge eines DB und die Anzahl der Datenbausteine hngt ab von der jeweiligen CPU.
Beispiel: CPU 312 IFM (kleinste CPU der Reihe S7-300) max. 6 kByte (6144 Byte) DB 1 ... DB 63 DB0 ist reserviert fr Systemdaten
Grundstzlich knnen zwei verschiedene DB-Typen unterschieden werden: Instanz-DB dient einem FB als Gedchtnis und ist deshalb in seiner Datenstruktur festgelegt. Die Datenstruktur entspricht der Deklarationstabelle des zugehrigen FB und kann nicht verndert werden. Global-DB (oft auch nur als als Datenbaustein bezeichnet) Anwender-Speicherbereich, der in seiner Datenstruktur frei vereinbart werden kann Grundstzlich kann man auf alle DBs (auch auf Instanz-DBs) lesend und schreibend zugreifen durch Anweisungen in irgendwelchen Codebausteinen (OB, FC, FB).
7.1
Beim Erstellen eines neuen DBs wird festgelegt, um welchen Typ es sich handeln soll. Ein neuer DB wird erstellt
vom SIMATIC Manager aus mit:
S7-Programm Bausteine Einfgen S7-Baustein Datenbaustein
Nach Eintragen der DB-Nr (zB. DB2) und ffnen des Objekts erscheint ein Fenster Neuer Datenbaustein. Hier
wird der Typ festgelegt:
Die erste Auswahlmglichkeit betrifft einen Datenbaustein, bei dem die Datenstruktur frei festgelegt weden kann. Mit der letzten Auswahlmglichkeit kann ein sogenannter Instanz-DB erzeugt werden. Bei diesem liegt die Datenstruktur fest: sie wurde bereits festgelegt in den Deklarationen des zugeordneten Funktionsbausteins.
7.2
Nachdem ein neuer DB als Datenbaustein definiert wurde (s. vorheriger Abschnitt) erscheint eine Deklarationstabelle zum Festlegen der Datenstruktur. Eingetragen wird jeweils ein Name, Datentyp, Anfangswert und Kommentar. Die lokale Adresse vergibt STEP7 automatisch. Man beachte die unterschiedlichen Datentypen. In der linken Spalte Adresse ergibt sich automatisch die lokale Adresse.
S7kurs_2000.doc 23.05.02
Seite 28
Sobald die DB-Deklaration abgeschlossen und der DB abgespeichert ist, kann der Datenbaustein in der sogenannten Datensicht betrachtet werden mit: Ansicht Datensicht
In der Spalte Aktualwert ist zu sehen, da die Daten bereits auf den Anfangswert initialisiert wurden.
Derselbe DB in Datensicht
Tip: Man sollte fr den DB einen symbolischen Namen festlegen (zB. DB_Name)! Dann kann man bequem auf die einzelnen Datenstze zugreifen, z.B.mit DB_Name.Messwert[1]), s.a. nchster Abschnitt.
7.3
Der folgende Abschnitt betrifft den Zugriff auf Daten sowohl in Instanz- als auch in Global-Datenbausteinen. Die CPU hat fr die Adressierung der jeweiligen Datenbausteine 2 Register zur Verfgung, so da gleichzeitig zwei DBs komfortabel adressiert werden knnen: DB-Register DI - Register speichert die Nummer des (globalen) Datenbaustein speichert die Nummer des Instanz-Datenbausteins
Beispiele Absolute Adressierung: Symbolische Adressierung: DB1. DB10. DB X2.5 DB W0 Erklrung der Adressbezeichner s. Abschnitt 7.3.2 Geschwindigkeit ist der symb. Name fr den DB, z.B. DB10 x_alt ist Daten-Name in der DB-Deklaration von DB10 Motor ist der symbolische Name fr den DB,, Leistung ist Daten-Name in der DB-Deklaration von DB3
Geschwindigkeit.x_alt Motor.Leistung
S7kurs_2000.doc 23.05.02
Seite 29
Die folgenden Bezeichnungen werden verwendet, um innerhalb eines DB die gewnschten Daten absolut zu adressieren: Wichtige Bezeichnungen:
Format DB X DB B DB W DB D DI X DI B DI W DI D Datentyp BOOL BYTE WORD DWORD BOOL BYTE WORD DWORD Beispiel DB X2.5 DB B2 DB W2 DB D4 DI X2.5 DI B2 DI W2 DI D4 Erklrung Bit5 im Byte2 ... Byte 2 ... Wort 2 (d.h. Byte 2,3) ... Doppelwort 4 (d.h. Wort 4,6 ... oder Byte 4,5,6,7) Bit5 im Byte2 ... Byte 2 ... Wort 2 (d.h. Byte 2,3) ... Doppelwort 4 (d.h. Wort 4,6 ... oder Byte 4,5,6,7) in dem DB, dessen Nummer im DB-Register steht in dem DB, dessen Nummer im DB-Register steht in dem DB, dessen Nummer im DB-Register steht in dem DB, dessen Nummer im DB-Register steht in dem DB, dessen Nummer im DI-Register steht in dem DB, dessen Nummer im DI-Register steht in dem DB, dessen Nummer im DI-Register steht in dem DB, dessen Nummer im DI-Register steht
Beispiele:
AUF DB 10 L DB W0 U DB X2.3 AUF L DI 11 DI B3
7.4
Unter AWL sind auerdem die folgenden Operationen bei der Verwendung von Datenbausteinen wichtig: Weitere wichtige Operationen mit DBs
Lnge des geffneten DB: bzw: Nummer des geffneten DB: bzw: DBs tauschen L DBLG L DILG L DBNO L DINO TDB Lade Lnge des DB in Akku1 Lade Lnge des Instanz-DB in Akku1 Lade Nummer DB in Akku1 Lade Nummer Instanz-DB in Akku1 tauscht Inhalt DB-Register mit Inhalt DI-Register
S7kurs_2000.doc 23.05.02
Seite 30
8 Funktionsbaustein (FB)
8.1 Unterschied zur Funktion
Beim Aufruf eines FB mu ein Instanz-DB angegeben werden, der fr diese Instanz des FB als Speicher dient.
Wesentlicher Unterschied zu FCs ist die Mglichkeit, statische Variable zu deklarieren, deren Wert beim Verlassen
des FB erhalten bleiben.
Im Instanz-DB werden neben den statischen Variablen auch die aktuellen Werte der bergebenen Parameter (in, out,
in_out) gespeichert. Ansonsten gelten diesselben Eigenschaften wie bei Funktionen.
8.2
Das folgende Beispiel zeigt, wie ein Funktionsbaustein und der Instanz-Datenbaustein zusammenarbeiten. Im FB10
wird der Differenzenquotient x/T gebildet, z.B. zur Berechnung der Geschwindigkeit aus einem gemessenen Weg.
Durch erneuten Aufruf des FB10 mit einem anderen Instanz-DB knnte beispielsweise die Beschleunigung berechnet
werden.
Eingangsgre ist der aktuelle Mewert x. Der alte Mewert x_alt wird als statische Variable (Deklarationstyp stat)
deklariert. Die Messung soll in gleichen Zeitabstnden erfolgen, der Wert von T kann daher als konstanter
Eingangsparameter beim Aufruf des FB10 bergeben werden.
8.2.1 FB Erstellen
FB10: Anweisungsteil
S7kurs_2000.doc 23.05.02
Seite 31
8.2.2 FB Aufrufen
Es mu dafr gesorgt werden, da die Bearbeitung des FB in gleichen Zeitabstnden erfolgt. Dies kann sehr einfach mit dem OB35, ein periodischer Zeitinterrupt oder Weckalarm, realisiert werden (s.a. Abschnitt 10.2, Weckalarm) Vom Betriebssystem wird dem OB35 beim Aufruf die Abtastzeit bergeben (lokale Variable OB35_EXC_FREQ). Mit PEW288 wird ein direkter Peripheriezugriff auf eine analoge Eingangsbaugruppe mit der Adresse 288 veranlat. Beim Aufruf des FB10 (symbolischer Name d/dt) mu der Name des Instanz-DB angegeben werden, hier DB10 (GeschwDB)
OB35: Aufruf des FB10
8.2.3 Instanz-DB
Beim Aufruf des FB wird der Instanz-DB (hier DB10) angegeben. Wenn STEP7 feststellt, da es ihn noch nicht gibt, wird er automatisch aus der FB-Deklarationsliste erstellt. Der Datenbausteins kann er in zwei Darstellungs-arten angezeigt werden: DB10 in Deklarationssicht
DB10 ffnen Ansicht Deklarationssicht
DB 10 in Datensicht
DB10 ffnen Ansicht Datensicht
In der Datensicht ist zusehen, da die Daten bereits mit den deklarierten Anfangswert initialisiert sind. Wenn der FB10 mehrmals im Programm verwendet wird (z.B. Berechnung von Geschwindigkeit und Beschleunigung), mu fr jede Instanz des FB10 ein eigener Instanz-DB angegeben werden.
Auch von anderen Codebausteinen kann lesend und schreibend auf einen Instanz-DB zugegriffen werden! z.B. um Daten neu zu initialisieren (s.a. Abschnitt 7.3 Adressierung der Daten).
Beispiel:
mit absoluter Adressierung: mit symbolischer Adressierung:
T DB10.DB W6 T GeschwDB.x_alt
S7kurs_2000.doc 23.05.02
Seite 32
9 Ereignisgesteuerte Programmbearbeitung
Im Abschnitt 2.2.1 (Organisationsbausteine) wurde bereits gezeigt, da vom Betriebssystem die verschiedenen OBs gestartet werden und zwar in Abhngigkeit von bestimmten Systemereignissen. In diesem Kapitel werden die Zusammenhnge bei den wichtigsten OBs genauer beleuchtet. Besondere Aufmerksamkeit verdient dabei die Frage, wann die Aktualisierung von Daten erfolgt.
9.1
Hinweis: Im nachfolgenden Text kommt hufig der CPU-Speicher vor. In diesem Zusammenhang ist die Tabelle im Abschnitt 2.7 (Anwenderspeicher in der CPU) hilfreich fr das Verstndnis. Vor Beginn des OB1 werden die Daten der Eingangsperipherie gelesen und in dem CPU-Speicherbereich PAE (Prozeabbild der Eingnge) abgelegt. Fr die gesamte Dauer des OB1-Zyklus wird mit diesen Daten gearbeitet, wenn in Operationen auf Eingnge zugegriffen wird (E,EB, EW, ED) . Erst zu Beginn des nchsten Zyklus wird das PAE aktualisiert. Die so eingefrorenen Eingangsdaten haben den Vorteil, da das Programm trotz mglicher nderungen an der Peripherie whrend des OB1Zyklus ber konsistente, d.h. widerspruchsfreie Eingangsdaten verfgt. Nachteilig ist selbst verstndlich, da nderungen an der Eingangsperipherie erst im nchsten Zyklus bemerkt werden. Entsprechend den PAE-Daten, Merkern, anderen Daten und Anweisungen des Programms wird der OB1 abgearbeitet. Anweisungen im OB1 hinsichtlich der Ausgnge verndern den CPU-Speicherbereich PAA (Prozeabbild der Ausgnge). Sie betreffen nicht die eigentlichen, an der Peripherie aber befindlichen Ausgnge! Erst am Ende des OB1 wird der Wert des PAA auf die Ausgnge transferiert. Beim Auftreten von irgendwelchen Systemereignissen wird der OB1 entsprechend der Prioritt der zugehrigen OBs unterbrochen und nach deren Bearbeitung wieder fortgesetzt.
Falls es spezielle Problemstellungen erfordern, kann auch innerhalb des OB1-Zyklus direkt auf die Peripherie zugegriffen werden. Dies geschieht durch Lese/Schreibzugriffe auf den CPU-Speicherbereich PE (Peripheriebereich Eingnge) bzw. PA (Peripheriebereich Ausgnge) . Beispiel: L PEB 12 T PAW 2 (lade PEB 12 in Akku1) (transferiere Inhalt von Akku1 nach PAW2
S7kurs_2000.doc 23.05.02
Seite 33
nchste
Dipl.Ing. Norbert Heinlein FH Frankfurt, Labor fr Automatisierungstechnik
9.2
Mit dem OB100 (Neustart) kann das Anlaufverhalten der CPU programmiert werden.
Der OB100 unterbricht mit sehr hoher Prioritt andere OBs, bevor der CPU-Betriebszustandswechsel STOPRUN
passiert und der erste OB1-Zyklus beginnt.
Daher knnen im OB100 sehr gut Initialisierungs-Routinen programmiert werden. Weil der Baustein zur Laufzeit nur
ein einziges Mal aufgerufen wird, eignet sich der OB100 auch zum Aufruf von einmaligen zeitaufwendigen
Berechungen und fr Dokumentationszwecke.
Sicherlich macht es bei der Steuerung einer Anlage durchaus Unterschiede, ob beispielsweise ein Anlauf
STOPRUN erfolgt, weil eben eingeschaltet wird oder ob pltzlich eine eingebrochene Netzspannung wiederkehrt.
Deshalb wird vom Betriebssystem die Vorgeschichte in lokale Variable des OB100 eingetragen.
9.2.2 Anwendungsbeispiel
Im folgenden Beispiel soll das Programm unterschiedlich reagieren, je nachdem ob der Anlauf manuell oder durch Spannungswiederkehr erfolgt ist. Dazu werden die Informationen der lokalen Variablen OB100_STRTUP genutzt. ber die Variable ist bekannt (siehe Tabelle):
Variable OB100_STRTUP Typ BYTE Deklaration TEMP Beschreibung Anlaufmethode: 16#81 = Manueller Neustart 16#82 = Automatischer Neustart, z.B bei Spannungswiederkehr
Im OB100 wird daher der tatschliche Wert von OB100_STRTUP abgefragt und die Anlaufmethode ermittelt. Wichtig: die gefundene Information mu in einer statischen Variable abgelegt werden, damit auch auerhalb vom OB100 darauf zugegriffen werden kann!
S7kurs_2000.doc 23.05.02
Seite 34
Symboltabelle:
Symbol Manuell_Start Symbol Stromversorrgung_Start Operand A 4.0 Operand A 4.1 Datentyp BOOL Datentyp BOOL Kommentar A4.0=1, wenn Anlauf manuell war (Schlsselschalter oder durch PG) Kommentar A4.1=1, wenn Anlauf automatisch war (Netzwiederkehr)
S7kurs_2000.doc 23.05.02
Seite 35
9.3
Eine periodische Unterbrechung der zyklischen OB1-Bearbeitung ist mit den Organisationsbausteinen OB30 bis OB38 mglich. Allerdings ist die verfgbare Anzahl der Weckalarm-OBs abhngig von der jeweiligen CPU, wie die nachfolgende Tabelle zeigt:
CPU CPU 312 IFM CPU 313 CPU 314 CPU 314 IFM CPU 315 CPU 614 CPU 412-1 CPU 413-1 CPU 414-1 CPU 416-1 verfgbare W eckalarm-OB's --------------OB35 ------------OB35 ------------OB35 ------------OB35 ------------OB35 ------------OB 32 OB35 ----------OB 32 OB35 ----------OB 32 OB 33 OB 34 OB35 ------OB 32 OB 33 OB 34 OB 35 OB 36 OB 37 OB 38
------------------------------------OB 30 OB 31
Weckalarme unterbrechen den OB1-Zyklus periodisch, d.h. in gleichen Zeitabstnden. Der Zeittakt startet mit dem CPU-Zustandswechsel STOPRUN. Das voreingestellte Zeitraster kann bei der Parametrierung der CPU verndert werden (siehe unten). Weckalarme werden eingesetzt beispielsweise beim Aufruf von Regler-Algorithmen oder von irgendwelchen anderen Operationen, die periodisch, d.h. in gleichen Zeitabstnden durchgefhrt werden sollen.
Das Aufrufintervall sollte an das Programm und die Notwendigkeiten angepat sein! Es mu mindestens so gro
sein, da die Anweisungen des Weckalarms auch abgearbeitet werden knnen. Auerdem ist folgendes zu
bercksichtigen:
Wenn das Aufrufintervall zu klein gewhlt wird, kommen OBs der kleineren Priorittsklassen wegen der hufigen
Unterbrechungen nicht zgig voran. Dies gilt insbesondere fr das zyklische OB1-Hauptprogramm: Es droht ein
Programmabbruch wegen Zykluszeitberschreitung.
9.3.2 Anwendungsbeispiel
Es sei verwiesen auf das Anwendungsbeispiel aus dem Abschnitt 8.2 (Zeitliche Ableitung eines Mesignals) , in dem ein Periodischer Zeitinterrupt benutzt wird.
S7kurs_2000.doc 23.05.02
Weckalarm-OBs Zeittakt in ms Priorittsklasse OB 30 5000 7 2000 8 OB 31 OB 32 1000 9 OB 33 500 10 200 11 OB 34 OB 35 100 12 OB 36 50 13 OB 37 20 14 OB 38 10 15
Seite 36
9.4
Prozealarm ist ein Systemereignis, das von einer Peripherie-Eingangsbaugruppe ausgelst wird. Neben der CPUFhigkeit zur Auswertung solcher Prozealarme ist allerdings auch eine spezielle Eingangsperipherie notwendig, um den Interrupt auszulsen. Zu solchen Baugruppen gehren beispielsweise schnelle Zhler und Positioniermodule. Normale I/O-Baugruppen sind nicht alarmfhig! Im folgenden Beispiel wird am Beispiel einer CPU 312IFM, die bereits Onboard einige I/Os, davon 4 Eingnge mit Alarmfhigkeit besitzt, die wesentlichen Schritte gezeigt.
Ausgewhlt wird die Integrierte Funktion Alarmeingang. Mit Parametrieren wird das nchste Fenster gewhlt, in dem die Bedingungen zur Freischaltung eines Prozealarms definiert werden knnen.
Im diesem Beispiel soll der Alarm dann auftreten, wenn entweder am Alarmeingang1 eine steigende Flanke oder am Alarmeingang2 eine fallende Signalflanke erscheint.
9.4.2 Alarmbearbeitung
Die CPU reagiert auf die Interruptanforderung der peripheren Baugruppe durch Start des OB40. Somit wird man im OB40 die entsprechenden Anweisungen zur Alarmbearbeitung (Interruptroutine) eintragen.
S7kurs_2000.doc 23.05.02
Seite 37
Literaturangaben
Im Labor fr Automatisierungstechnik sind die folgenden Handbcher im Zusammenhang mit STEP7. Sie werden alle von der Firma Siemens AG herausgegeben: 1. Elektronische Handbcher 02/2000 auf CD-ROM enthalten die Gesamtdokumentation zu STEP7 und Softwareerweiterungen, Hardwaredokumentation zu S7, SIMATIC NET, WinCC, PCS7, WinAC u.a. (in deutsch, englisch, franzsisch, spanisch, italienisch) 2. D okumentationspaket: STEP7-Grundwissen V5 enthlt die folgenden Handbcher Getting Started: Erste Schritte und bungen mit STEP7 V5.0 (1998) Handbuch: Programmieren mit STEP7 V5.0 (1998) Handbuch: Hardware konfigurieren und Verbindungen projektieren mit STEP7 V5.0 (1998) Umsteigerhandbuch: Von S5 nach S7 (1997) D okumentationspaket: STEP7-Referenzhandbcher V5 enthlt die folgenden Handbcher Referenzhandbuch: Systemsoftware fr S7-300/400, System- und Standardfunktionen (1998) Referenzhandbuch: Funktionsplan (FUP) fr S7-300/400 (1998) Referenzhandbuch: Kontaktplan (KOP) fr S7-300/400 (1998) Referenzhandbuch: Anweisungsliste (AWL) fr S7-300/400 (1998) Handbuch: SCL fr S7-300/400, Bausteine programmieren (1996) Handbuch: GRAPH fr S7-300/400, Ablaufsteuerungen programmieren (1997) Handbuch: Automatisierungssystem S7-300, Integrierte Funktionen der CPU 312 IFM/ 314 IFM (1996) Handbuch: Automatisierungssystem S7-300, Aufbauen einer S7-300 (1995) Handbuch: Kommunikation mit SIMATIC (1997) Tabellenheft: Operationsliste (AWL) fr S7-300, CPU312IFM, CPU313, CPU314
3.
4. 5. 6. 7. 8. 9.
9.4.2.1.1.1
S7kurs_2000.doc 23.05.02
Binre Verknpfungen
Seite 38
nchste
Dipl.Ing. Norbert Heinlein FH Frankfurt, Labor fr Automatisierungstechnik
U, UN O, ON X, XN
E, A M, L DBX, DIX T, Z
Abfrage von bzw. Verknpfung nach: UND/UND NICHT Ein ODER/ODER NICHT /Ausgngen EXKLUSIV ODER/ Merker-/ EXKLUSIV ODER Lokaldatenbit NICHT Datenbit Timern, Zhlern
9.4.2.1.2 Verknpfungsoperationen mit den Statusbits 9.4.2.1.2.1 Die Bits des Statuswortes als Operanden
STEP 7 ermglicht auch die binre Abfrage und Verknpfung einzelner Bitstellen des Statuswortes. Es handelt sich 4 8 hierbei um die Bitstellen 2 bis 2 , also um die Statusbits OS OV A0, A1 BIE gespeicherter berlauf
berlauf
Anzeigenbits und
das neu eingefhrte BIE-Bit (Binrergebnis)
Die Anzeigenbits A0 (Bit 6 des Statuswortes) und A1 (Bit 7) lassen sich mit Hilfe von Ersatzoperanden wie >0, = =0 oder <0 abfragen und verknpfen. Tabelle 2 zeigt die Zuordnung zwischen den mglichen Kombinationen der Signalzustnde von A0 und A1 und dem zugehrigen Ersatzoperanden.
Signalzustand von A1
1)
Unordered, d.h. unzulssig: Mit A0 = A1 = 1 wird die fehlerhafte Ausfhrung einer Operation signalisiert
9.4.2.1.2.3 Ersatzoperanden
Aus den Statusbits des Statuswortes von STEP 7 lassen sich mit Bedingungen wie gleich Null, grer bzw. kleiner Null etc. Ersatzoperanden bilden. Diese werden mit den jeweiligen Operationen auf ihren Signalzustand abgefragt und mit dem aktuellen VKE entsprechend der gewhlten Funktion verknpft. Derartige Verknpfungen ermglichen es, auch dann programmtechnisch zu reagieren, wenn z.B. das Ergebnis einer arithmetischen Operation unzulssig war (UO, OV, OS).
S7kurs_2000.doc 23.05.02
Seite 39
Operation
U UN O ON X XN
STEP 7 verfgt ber einige Operationen, die ein direktes Bearbeiten des VKEs ermglichen.
Operationscode SET CLR NOT SAVE Operation Setze das VKE auf 1 Setze das VKE auf 0 Negiere das VKE Rette das VKE in das BIE-Bit (Binrergebnis) Bedeutung Das aktuelle VKE nimmt den Wert 1 an Das aktuelle VKE nimmt den Wert 0 an Das aktuelle VKE wird negiert (invertiert) Das aktuelle VKE wird im BIE-Bit des Statuswortes gespeichert
9.4.5
9.4.5.1.1 Verknpfungen mit Klammerausdrcken
Bei diesen Verknpfungsoperationen wird kein Operand angegeben. Mit Beginn einer Klammer-auf-Operation werden bislang erzielte binre Ergebnisse (in den Statusbits VKE, BIE oder OR gespeicherte Binrzustnde) als Zwischenergebnisse auf den sog. Klammerstack abgelegt. Mit der Klammer-zu-Operation wird das im Klammerausdruck erarbeitete VKE mit dem zuvor im Klammerstack abgelegte VKE entsprechend der Klammer-aufOperation (wie U(, UN(, O( etc.) verknpft. Innerhalb eines Klammerausdrucks wird das VKE von der CPU stets neu gebildet. Der Klammerstack hat 7 Ebenen, womit sich verschachtelte Klammerausdrcke mit einer maximalen Schachtelungstiefe von sieben bilden lassen. Beachten Sie: Innerhalb eines Klammerausdrucks knnen nicht nur binre, sondern auch alle anderen Anweisungen der Programmiersprache AWL programmiert werden! Operation U( Bedeutung UND Klammer auf
S7kurs_2000.doc 23.05.02
Seite 40
UND NICHT Klammer auf ODER Klammer auf ODER NICHT Klammer auf EXKLUSIV ODER Klammer auf EXKLUSIV ODER NICHT Klammer auf Klammer zu (entfernt den letzten Eintrag aus dem Klammerstack und verknpft ihn mit dem aktuellen im Klammerausdruck erarbeiteten VKE)
Tab. 5: Klammeroperationen ODER-Verknpfung von UND-Funktionen Diese ohne Operanden zu verwendende ODER-Operation steht zwischen UND-Funktionen und ermglicht damit die programmtechnische Realisierung von UND-vor-ODER Ausdrcken ohne Klammeroperationen. An Stelle der allein stehenden ODER-Operation kann man auch die Klammerausdrcke O(U...., U....) O(U...., U....) verwenden. Operation O Bedeutung ODER-Verknpfung von UND-Ausdrcken ohne Klammer (UND-vor-ODER)
9.4.5.1.2 Speicherfunktionen
Zu den Speicherfunktionen zhlen das speichernde Setzen und Rcksetzen von, wie die Zuweisung des aktuellen VKEs an Binroperanden. Die Operation = weist das vorhandene VKE direkt dem der Operation folgenden Operanden zu. Ist das VKE = 0, so nimmt auch der Operand diesen Zustand an. Ist das VKE = 1, wird der Operand auch auf 1 gesetzt. Das anstehende VKE kann auch mehreren Operanden zugewiesen werden, wenn man die Zuweisungen an die entsprechenden Operanden nacheinander anordnet. Vor der Zuweisung kann das VKE mit der Anweisung NOT negiert werden, wie das untenstehende Beispiel zeigt. Die Setz- und Rcksetzoperationen werden nur bei einem anstehenden VKE von 1 ausgefhrt. Mit der Setzoperation nimmt der Operand dauerhaft den Zustand 1 an, auch wenn das setzende VKE dann wieder nach 0 wechselt. Mit der Rcksetzoperation wird bei einem aktuellen VKE = 1 der angegebene Operand dauerhaft auf 0 rckgesetzt. Bei einem VKE von 0 werden weder Setz- noch Rcksetzoperation ausgefhrt: Der angegebene Operand behlt damit seinen alten Zustand. Vorrangiges Setzen/Rcksetzen: Fhrt das VKE fr die Setz- wie fr die Rcksetzoperation zugleich den Signalzustand 1, so entscheidet die Reihenfolge darber, welche der Speicheroperationen vorrangig ausgefhrt wird. Dabei gilt, bedingt durch die sequentielle Programmbearbeitung, grundstzlich folgende Regel: Die zuletzt bearbeitete Operation ist dominant gegenber der zuvor ausgefhrten Anweisung. Werden beispielsweise zunchst eine Setzoperation mit einem VKE = 1 und anschlieend eine Rcksetzanweisung fr den selben Operanden ebenfalls mit VKE = 1 ausgefhrt, so wird der Operand zwar tatschlich kurz auf 1 gesetzt, gleich darauf jedoch wieder dominant (vorrangig) zu 0 rckgesetzt. Fr Ausgnge findet dieses temporre Setzen mit anschlieendem Rcksetzen nur im Prozessabbild der Ausgnge statt. Der betreffende Ausgang bleibt fr den Rest der Programmbearbeitung rckgesetzt und damit auch bis zum bertragen des Prozessabbildes in die Ausgabebaugruppen. Ein vorrangiges Setzen erfolgt sinngem.
Operanden
Bedeutung:
9.4.5.1.2.1 kennzeichen
Operand
S7kurs_2000.doc 23.05.02
Seite 41
S R =
E, A M, L DBX, DIX
Setze Operand auf 1 Rcksetze Operand auf 0 Zuweisung des VKE an denOperanden
Tab. 7: Speicherfunktionen fr das aktuelle VKE Beispiele: Mehrfachzuweisung: U UN = = ........ Vorrangiges Setzen: E R E S E M E M 2.0 6.7 2.0 6.7 E
M
A
M
Vorrangiges Rcksetzen: UN S UN R M A M A 4.2 3.0 4.2 3.0 1.5 3.2 7.4 10.0 Negieren des aktuellen VKEs: U = NOT = M A A 2.4 2.0 2.1
1
Signal 0 Einschaltwischer
Wischzeit
Ausschalt wischer
9.4.5.1.3.2
OperandenKennzeichen
Bedeutung:
FP
E, A
Ein-/Ausgnge
S7kurs_2000.doc 23.05.02
Seite 42
nchste
Dipl.Ing. Norbert Heinlein FH Frankfurt, Labor fr Automatisierungstechnik
FN
M, L DBX, DIX
(VKE wechselt von 0 nach 1) Erkennen einer negativen Flanke des VKE (VKE wechselt von 1 nach 0)
Tab. 8: Die Flankenoperationen FP und FN Funktion: Der aktuelle Signalzustand des VKEs wird laufend verglichen mit dem Signalzustand des Operanden von FP oder FN, des sog. Flankenmerkers. Im Flankenmerker wird der Signalzustand des betreffenden VKEs aus dem vorhergehenden Programmzyklus gespeichert. Wird eine Abweichung zwischen dem aktuellen VKE und dem Zustand des Flankenmerkers also dem alten VKE- erkannt, so muss ein Flankenwechsel aufgetreten sein. Die Operation FP bzw. FN liefert in diesen Fllen ein VKE, das fr die Dauer von genau einer Zykluszeit den Wert 1 besitzt (1-Zyklus Wischer). Nach dem Vergleich wird der Flankenmerker aktualisiert, also dem aktuellen VKE angeglichen. Als Operanden fr FP/FN kommen alle binren Speicherelemente aus den Bereichen Merker, Lokaldaten, Datenbausteine oder E/A-Prozessabbilder in Frage. Das Ergebnis der Flankenauswertung, der Wischer, kann entweder unmittelbar weiter verwendet werden, z. B. fr eine Setz- bzw. Rcksetzoperation. Es kann aber auch zunchst in einem anderen binren Operanden wie einem Merker zwischengespeichert werden, sofern es fr eine sptere Verarbeitung in weiteren Programmteilen bentigt wird. Beispiele: Direkte Verwendung der Flankenauswertung O FN S E 1.0 M 10.1 A 2.1 //Auswertung der fallenden Flanke eines VKEs, hier Signal E 1.0
//und direkte Verwendung zum Setzen
//eines binren Operanden
9.4.6 Zeitoperationen
9.4.6.1.1.1 Starten von Zeitfunktionen
Mit dem Starten einer Zeitfunktion wird das Zeitverhalten (als Impuls, einschalt- oder ausschaltverzgert etc.) bestimmt. Zum Starten einer Zeitfunktion bedarf es immer eines Wechsels fr den Signalzustand (Signalflanke) des vor der Startoperation gltigen VKEs. Deskriptor Operation SI Tn Zeitfunktion Zeit als Impuls starten Startflanke
9.4.8 S_VI MP
S_EVERZ S_SEVERZ S_AVERZ SE SS SA Tn Tn Tn Zeit als Einschaltverzgerung starten Zeit als speichernde Einschaltverzgerung starten Zeit als Ausschaltverzgerung starten
S7kurs_2000.doc 23.05.02
Seite 43
nchste
Dipl.Ing. Norbert Heinlein FH Frankfurt, Labor fr Automatisierungstechnik
Ein Zeitglied lsst sich auch rcksetzen oder freigeben (nachtriggern). Das Rcksetzen erfolgt dabei statisch mit einem VKE = 1 (nicht mit einer Signalflanke) und dominant gegenber den Startoperationen. Beim Freigeben erfolgt ein Nachtriggern des Zeitgliedes mit einer positiven Flanke des vor der Operation gltigen VKEs. Dies ist jedoch nur mglich, solange das startende VKE den Zustand 1 aufweist. Bedeutung:
Tabelle 10: Rcksetzen und Freigabe fr Zeitglieder Vorgabe der Zeitdauer: Beim Start eines Zeitgliedes wird der im Akkumulator 1 stehende Wert automatisch als Zeitdauer bernommen. Die Zeitdauer wird blicherweise als Konstante in Stunden, Minuten, Sekunden und Millisekunden angegeben. Zur Kennzeichnung dieser Konstanten kann man S5TIME# oder S5T# verwenden. Wie und wann dieser Wert in den Akkumulator 1 gelangt, spielt im Prinzip keine Rolle. Er muss sich nur vor der Startoperation im Akku 1 befinden. Die Zeitdauer lsst sich aber auch als 3-stelliger Dezimalwert (001 999) und einem vorangestellten Zeitraster (0 = 10 ms, 1 = 100 ms, 2 = 1 s und 3 = 10 s) in Form einer hexadezimalen Konstanten vorgeben. L L L L S5TIME#Wert S5TIME#26M15S S5T#20S500MS S5T#1H10M Zeitdauer 26 Minuten und 15 Sekunden 20,5 Sekunden 1 Stunde und 10 Minuten
9.4.9.1.1.1 Hexwert
L W#16#1500 L W#16#3360 L W#16#0010 Raster: 1, Zeitwert 500 Raster: 3, Zeitwert 360 Raster: 0, Zeitwert 10 500 x 0,1 s = 50 s 360 x 10 s = 3600 s = 1 Stunde 10 x 0,01 s = 100 ms
Tabelle 11: Vorgabe der Zeitdauer als S5TIME# - Konstante oder als Hex-Wert Zeitwert abfragen: Der aktuelle Zeitwert lsst sich mit Hilfe zweier Ladefunktionen abfragen und ist dann als Dualwert (L) oder BCD codierter Wert (LC) im Akkumulator 1 zur weiteren Verarbeitung verfgbar. Bei dem Zeitwert handelt es sich stets um die Restlaufzeit des Zeitgliedes, da der Zeitwert vom anfangs gesetzten Wert gegen Null gezhlt wird. Operation L Tn LC Tn Bedeutung Zeit-Zhlwert als Dualwert laden (Restlaufzeit) Zeit-Zhlwert BCD-codiert laden (Restlaufzeit)
Tabelle 12: Laden eines Zeitwertes Abfrage des Binrstatus Der binre Zustand eines Zeitgliedes kann in derselben Weise abgefragt und weiterverknpft werden, wie der von anderen binren Variablen wie Eingngen, Merkern etc. Damit ergeben sich folgende Mglichkeiten der binren Abfrage:
9.4.10
U T n O T n X T n
9.4.11 UN
T n
ON
T n
XN
T n
9.4.12 Zhlfunktionen
Zu den Zhlfunktionen gehren vorwrts (ZV) wie rckwrts (ZR) zhlen, Zhler auf einen Anfangswert setzen (S), Zhler rcksetzen (R) sowie freigeben (FR). Die ersten drei genannten Funktionen ZV, ZR und S werden stets nur
S7kurs_2000.doc 23.05.02
Seite 44
dann ausgefhrt, wenn das vor der jeweiligen Operation anstehende VKE von 0 nach 1 wechselt. Sie werden demnach durch positive Signalflanken gesteuert. Das Rcksetzen erfolgt wie bei Zeitgliedern statisch, also mit einem VKE = 1 (nicht mit einer Signalflanke) und ist dominant gegenber den Zhl- und Setzoperationen. Mit der Funktion Freigeben lsst sich das Zhlen oder Setzen auch ohne positive Flanke des vor der Operation gltigen VKEs ausfhren. Voraussetzung hierzu ist, dass das VKE vor der jeweiligen Operation weiterhin den Zustand 1 aufweist und die Freigabeoperation mit einer positiven Flanke des gltigen VKEs bearbeitet wird. Der Zhlbereich erstreckt sich ber drei Dekaden, also von 000 bis 999. Ein ber- bzw. Unterlauf jenseits dieses Bereiches ist nicht mglich. Anweisung ZV ZR S R FR Operand Zn Zn Zn Zn Zn Funktion Vorwrts zhlen, um eine Einheit Rckwrts zhlen, um eine Einheit Zhler auf einen Anfangswert setzen Zhler rcksetzen, Zhlerinhalt lschen Setzen oder Zhlen ohne Flanke an den Betreffenden Eingngen ZV, ZR oder S Bedingung
VKE = 1
Tabelle 13: Zhlfunktionen Vorgabe des Anfangswertes: Mit der Setzfunktion eines Zhlers (positive Flanke des aktuellen VKEs!) wird der im Akkumulator 1 stehende Wert als Zhler-Anfangswert bernommen. Dieser Wert wird meist vorher als 3-stellige dezimale Konstante C#nnn (000 999) oder in Form einer hexadezimalen Wort-Konstanten W#16#0nnn in den Akkumulator 1 geladen. Wie und wann dieser Wert in den Akkumulator 1 gelangt, spielt auch hier keine Rolle. Er muss sich nur vor der Startoperation im Akku 1 befinden. L C#nnn L C#150 L C#999 Zhler - Anfangswert 150 999
9.4.12.1.1.1 xwert
L W#16#0220
He
220
Tabelle 14: Vorgabe des Zhler-Anfangswertes C# - Konstante oder als Hex-Wert Zhlerstand abfragen: Der aktuelle Zhlerstand lsst sich analog zur Abfrage von Zeitwerten mit Hilfe von Ladefunktionen abfragen und steht dann als Dualwert (L) oder BCD-codierter Wert (LC) im Akkumulator 1 fr eine weitere Verarbeitung zur Verfgung. Operation L Zn LC Z n Bedeutung Aktuellen Zhlerwert als Dualwert laden Aktuellen Zhlerwert BCD-codiert laden
Tabelle 15: Laden von Zhlerwerten Abfrage des Binrstatus Der binre Zustand eines Zhlers kann ebenso wie der eines Zeitgliedes, Eingangs, Merkers etc. abgefragt und weiterverknpft werden. Damit ergeben sich auch hier folgende Mglichkeiten der binren Abfrage:
9.4.13
U Z n O Z n X Z n
9.4.14 UN
Z n
ON
Z n
XN
Z n
S7kurs_2000.doc 23.05.02
Seite 45
9.5 9.5.1.1
9.5.1.1.1.1.2.1.1
Lade- und Transferfunktionen ermglichen den Datenaustausch zwischen verschiedenen Speicherbereichen der CPU. Dieser Austausch verluft jedoch nicht direkt, sondern stets mit einem Umweg ber den Akkumulator 1, nachfolgend kurz AKKU 1 genannt. Beim Laden erfolgt der Informationsfluss von einem Quell-Speicherbereich (Prozessabbilder, Merker etc.) zum AKKU 1, beim Transferieren werden die Daten vom AKKU 1 zu einem ZielSpeicherbereich transportiert, wie dies Bild 2 zeigt. Wichtig: Lade- und Transferoperationen werden unabhngig vom aktuellen VKE oder sonstigen Bedingungen durchgefhrt. Ihre Ausfhrung kann also nicht unmittelbar beeinflusst oder gesteuert werden (Ausnahme: Mit Hilfe bedingter Sprungoperationen). Sie beinflussen ihrerseits auch weder das VKE noch ein anderes Statusbit.
Bit: 31
Laden (Quelle)
AKKU 1-HH
16 15
AKKU 1-HL AKKU 1-LH AKKU 1-LL
0
Transferieren (Ziel)
AKKU 1 Bild 2: Informationsaustausch ber den AKKU 1 Ladefunktionen Die Ladefunktion besteht aus der Operation L fr Laden und der Angabe eines Quelloperanden, der in den AKKU 1 zu laden ist. Die Breite des zu ladenden Operanden kann ein Byte, ein Wort (2 Bytes) oder ein Doppelwort (4 Bytes) sein. Dabei werden ein Byte und ein Wort stets rechtsbndig in den AKKU 1 geladen. Ein Byte belegt somit das niederwertigste Byte des Akku 1 (AKKU 1-LL), ein Wort das niederwertige AKKU 1-Wort (AKKU 1-LL + AKKU 1-LH) und das Doppelwort den gesamten AKKU 1. Einfluss auf den AKKU 2 Beim Laden in den AKKU 1 wird stets der gesamte alte Inhalt des AKKU 1 an den AKKU 2 bergeben. Operation L Operand EB... EW... ED AB... AW... AD PEB... PEW... PED MB... MW... MD LB... LW... LD DBB...DBW... DBD DIB... DIW... DID Parameter Bedeutung Lade den AKKU1 mit einem Eingangs Byte, - Wort, - Doppelwort Lade den AKKU1 mit einem Ausgangs Byte, - Wort, - Doppelwort Lade den AKKU1 mit einem Peripherie Eingangsbyte, - Eingangswort, - Eingangsdoppelwort Lade den AKKU1 mit einem Merker Byte, - Wort, - Doppelwort Lade den AKKU1 mit einem Lokaldaten Byte, - Wort, - Doppelwort Lade den AKKU1 mit einem Daten Byte, - Wort, - Doppelwort Lade den AKKU1 mit einem Instanzdaten Byte, - Wort, - Doppelwort Lade den AKKU1 mit einem (EB/AB ... EW/AW... ED/AD...), der ber einen Parameter adressiert ist Lade den AKKU1 mit einem bereichsbergreifend adressierten Byte Wort Doppelwort
S7kurs_2000.doc 23.05.02
Seite 46
nchste
Dipl.Ing. Norbert Heinlein FH Frankfurt, Labor fr Automatisierungstechnik
Laden von Konstanten Der AKKU 1 kann auch unmittelbar mit konstanten Werten geladen werden, wie dies bereits bei den Zeitwerten oder Zhler-Anfangswerten gezeigt wurde. Diese Konstanten, mit Ausnahme von Integer- und Realkonstanten, mssen durch Kennungen fr ihre Datenbreite und das Zahlenformat festgelegt werden. So wird die Datenbreite z.B. mit B# (Byte), W# (Wort) oder DW# (Doppelwort) benannt. Als Zahlenformate kommen z.B. 2# (Binrkonstante), 16# (Hexadezimalkonstante), C# (Zhlerwert), S5T# (Zeitwert), D# (Datum) oder P# (Bitpointer) zum Einsatz. STEP 7 - Ladeanweisung Erluterung
L L L L L L L L L L L L L L L
1314 L#+5 2.0E+3 1234.567 W#16#ABCD D#16#F1DA_B23A ABCD S5T#2h46m30s C#12 2#1001 1001 1001 1001 2#1011 0111 1101 0011 0001 1010 1101 0010 B#(85) B#(12, 34) B#(12, 34, 56, 78) P#12.3
Laden einer 16 Bit Ganzzahl Laden einer 32 Bit Ganzzahl Lade Gleichpunktzahl (32 Bit) Lade Gleichpunktzahl (32 Bit) Lade Hex-Konstante (16 Bit) Lade Hex-Konstante (32 Bit) Lade 4 Zeichen im ASCII Code Lade Timerkonstante 16 Bit (S5TIME-Konstante) Lade Zhlerkonstante 16 Bit Lade Binrkonstante 16 Bit Lade Binrkonstante 32 Bit Laden eines Bytes Laden von 2 Bytes Laden von 4 Bytes Laden eines Pointers (32 Bit)
9.5.1.2 Transferoperationen
Beim Transferieren wird der Inhalt des AKKU1 in den adressierten Operanden bertragen. Die meisten Transferoperationen werden vom MCR (Master Control Relay) beeinflut. Tabelle 18 gibt eine bersicht der adressierbaren Operanden:
Operation T
Operand EB... EW... ED AB... AW... AD PAB... PAW... PAD MB... MW... MD LB... LW... LD DBB...DBW... DBD DIB... DIW... DID Parameter
Bedeutung Transferiere Inhalt von AKKU1 zum Eingangs Byte, - Wort, - Doppelwort (MCR abhngig) Transferiere Inhalt von AKKU1 zum Ausgangs Byte, - Wort, - Doppelwort (MCR abhngig) Transferiere Inhalt von AKKU1 zum Peripherie Ausgangsbyte, - Ausgangswort, - Ausgangsdoppelwort (MCR abhngig) Transferiere Inhalt von AKKU1 zum Merker Byte, - Wort, - Doppelwort (MCR abhngig) Transferiere Inhalt von AKKU1 zum Lokaldaten Byte, - Wort, - Doppelwort (MCR abhngig) Transferiere Inhalt von AKKU1 zum Daten Byte, - Wort, - Doppelwort (MCR abhngig) Transferiere Inhalt von AKKU1 zum Instanzdaten Byte, - Wort, - Doppelwort (MCR abhngig) Transferiere Inhalt von AKKU1 zum Operanden (EB/AB ... EW/AW... ED/AD...), der ber den Parameter adressiert ist
S7kurs_2000.doc 23.05.02
Seite 47
Tab. 18: Operanden fr Transferoperationen Operation T Operand B[AR1,m] B[AR2,m] W[AR1,m] W[AR2,m] D[AR1,m] D[AR2,m] (noch Tab. 18) Lade- und Transferoperationen fr die Adreregister AR1 und AR2 Zur Vorbesetzung und Abfrage der Adreregister AR1 und AR2 verfgt STEP 7 ber die speziellen Lade- und Transferoperationen LAR 1 und LAR 2 sowie TAR1 und TAR2. Mit den Anweisungen +AR1 und +AR2 besteht die Mglichkeit zur arithmetischen Modifizierung der Inhalte von AR1 und AR2. Tabelle 19 enthlt eine Zusammenstellung aller die Adreregister betreffenden Befehle. Operation Bedeutung Transferiere Inhalt von AKKU1 zum bereichsbergreifend adressierten Byte Wort Doppelwort
9.5.2 Erluterung
LAR1 1 LAR1 Operand ( ) LAR2 2 LAR2 Operand ( ) TAR1 3 TAR1 Operand ( ) TAR2 4 TAR2 Operand ( ) TAR +AR1 +AR1 Pointerkonstante +AR2 +AR2 Pointerkonstante ( ): Operanden
1
Lade Inhalt des AKKU 1 in das Adreregister 1 Lade Inhalt des Operanden in das Adreregister 1 Lade Inhalt des AKKU 1 in das Adreregister 2 Lade Inhalt des Operanden in das Adreregister 2 Transferiere den Inhalt des Adreregisters 1 in den AKKU 1 Transferiere den Inhalt des Adreregisters 1 in den Operanden Transferiere den Inhalt des Adreregisters 2 in den AKKU 1 Transferiere den Inhalt des Adreregisters 2 in den Operanden Tausche die Inhalte von Adreregister 1 und Adreregister 2 Addiere Inhalt von AKKU 1-L (Bit 0 - 15) zum Adreregister 1 Addiere die Pointerkonstante P#Byte.Bit zum Adreregister 1 Addiere Inhalt von AKKU 1-L (Bit 0 - 15) zum Adreregister 2 Addiere die Pointerkonstante P#Byte.Bit zum Adreregister 2
knnen sein: Der Inhalt von AR2, Datendoppelworte DBD n, InstanzDatendoppelworte DID n, Merker- und Lokaldatendoppelworte MD n und LD n sowie 32-Bit-Konstanten im Pointerformat knnen sein: Datendoppelworte DBD n, Instanz-Datendoppelworte DID n, Merker- und Lokaldatendoppelworte MD n und LD n sowie 32-Bit-Konstanten im Poin Terformat
( ): Operanden
2
( ): Operanden
3
knnen sein: Das Adreregister AR2, Datendoppelworte DBD n, InstanzDatendoppelworte DID n, Merker- und Lokaldatendoppelworte MD n und LD n knnen sein: Datendoppelworte DBD n, Instanz-Datendoppelworte DID n, Merker- und Lokaldatendoppelworte MD n und LD n
( ): Operanden
4
S7kurs_2000.doc 23.05.02
Seite 48
Operation L T
Bedeutung Lade aktuelles Statuswort in den AKKU 1 Transferiere Inhalt von AKKU 1 in das aktuelle Statuswort
Tab. 20: Laden und Transferieren mit dem Statuswort Beachten Sie: Die CPUs der S7-300 Steuerungen knnen die Bits /ER, STA und OR nicht in den AKKU laden. In diesen Positionen wird 0 eingetragen. Aufbau des Statuswortes:
8 A1
7 A0
6 OV
5 OS
4 OR
9.5.4.1.1.1 Vergleichsergebnis
Dieses binre Vergleichsergebnis lsst sich mit allen bekannten binren Operationen weiter verknpfen, speichern oder mit bedingten Sprungoperationen auswerten. Somit bilden die Vergleichsoperationen einen bergang von eingangsseitig digitalen zu ausgangsseitig binren Operandenbereichen. Weitere Informationen ber die Grenrelation der zu vergleichenden Operanden liefern die Anzeigeflags A0 und A1 des Statusregisters.
9.5.4.1.1.2 Funktionsweise
Die zu vergleichenden Operanden mssen in den beiden Akkumulatoren 1 und 2 stehen. Dorthin gelangen Sie in der Regel mit Hilfe von Ladefunktion. Dabei ist zu beachten, dass mit einer Ladeoperation der zu ladende Wert stets in den Akku 1 gelangt, der alte Wert des Akku 1 jedoch automatisch in den AKKU 2 weiter geschoben wird. Bild 3 zeigt die Inhalte der beiden Akkumulatoren nach dem Laden zweier Wortoperanden. AKKU 1 L L EW 6 MW 20 MW 20 EW 6 EW 6 AKKU 2 ????
9.5.4.1.1.3 Datentypen
Die in die Akkumulatoren geladenen Werte mssen den gleichen Datentyp (I, D oder R) aufweisen, der auch im Operationscode spezifiziert ist. Bei direkt (absolut) adressierten Variablen muss die Breite der Operanden ebenfalls dem Datentyp entsprechen. Vergleichsfunktion
S7kurs_2000.doc 23.05.02
Seite 49
Dipl.Ing. Norbert Heinlein Vergleich auf grer oder gleich Vergleich auf kleiner Vergleich auf kleiner oder gleich > =I <I < =I > =D <D < =D
10.1.1.1.1.1
Die Statusbits
Die Vergleichsfunktionen beeinflussen die Statusbits A0 und A1, sowie, beim REAL-Vergleich, auch die OverflowAnzeigen. Das Setzen der Anzeigen A0 und A1 ist dabei unabhngig von der gewhlten Vergleichsfunktion und hngt nur vom Grenverhltnis der an dem Vergleich beteiligten Operanden ab. Die Statusbits lassen sich sowohl mit binren Abfragen wie auch mit bedingten Sprungfunktionen auswerten und weiter verarbeiten, siehe Tab. 3: Binre Operationen mit Bits des Statuswortes. Das Ergebnis ist: gleich: AKKU 2 = AKKU 1 grsser: AKKU 2 > AKKU 1 kleiner: AKKU 2 < AKKU 1 Ungltig, da ein Operand ungltige REAL-Zahl ist A0 0 0 1 1 A1 0 1 0 1 OV 0 0 0 1 OS 1
eine
10.1.1.1.1.1.2.1.1
Auf den AKKU1 kann unmittelbar mit Lade- und Transferoperationen zugegriffen werden. AKKU 1 bzw. AKKU 2 kann man mit den nachfolgenden Anweisungen manipulieren. Das Statuswort wird dabei nicht beeinflut und die Anweisungen erfolgen unabhngig vom VKE.
Operation
Bedeutung
TAW TAD
Tausche den Inhalt vom AKKU 1-LL (Bit 0 bis 7) mit dem vom AKKU 1-LH (Bit 8 bis 15). Der AKKU 1-H (Bit 16 bis 31) und der AKKU 2 wird nicht verndert. (Tausche AKKU Wort). Tausche den Inhalt vom AKKU 1-LL (Bit 0 bis 7) mit dem vom AKKU 1-HH (Bit 24 bis 31) und den Inhalt vom AKKU 1-LH (Bit 8 bis 15) mit dem vom AKKU 1-HL (Bit 16 bis 23). Der AKKU 2 wird nicht verndert. (Tausche AKKU Doppelwort). Tausche den Inhalt vom AKKU 1 mit dem vom AKKU 2. (Tausche AKKUs). Kopiere den Inhalt von AKKU 1 in den AKKU 2. Der AKKU 1 bleibt unverndert. Kopiere den Inhalt von AKKU 2 in den AKKU 1. Der AKKU 2 bleibt bei der S7-300 unverndert. Erhhe den Inhalt vom AKKU 1-LL (Bit 0 bis 7) um den angegebenen Wert. Inhalte vom AKKU 1-LH, AKKU 1-H und AKKU 2 werden nicht verndert. Verringere den Inhalt vom AKKU 1-LL (Bit 0 bis 7) um den angegebenen Wert. Inhalte vom AKKU 1-LH, AKKU 1-H und AKKU 2 werden nicht verndert.
10.1.1.1.1.1.2.1.2
Wortweise Digitalverknpfungen
S7kurs_2000.doc 23.05.02
Seite 50
Mit wortweisen Digitalverknpfungen werden Paare von 16 Bit Wrtern oder 32 Bit Doppelwrtern Bit fr Bit entsprechend der gewnschten Booleschen Operation miteinander verknpft. Die zu verknpfenden Wrter mssen sich in den beiden Akkumulatoren befinden. Als Operationen stehen UND, ODER sowie EXKLUSIV ODER zur Verfgung. Das Ergebnis wird im AKKU 1 gespeichert und berschreibt somit dessen vorhergehenden Inhalt. Alle Digitalverknpfungen lassen sich auch mit Konstanten (16 oder 32 Bit) als Operanden ausfhren. Damit verknpft die Operation den Inhalt der entsprechenden Bits im AKKU 1 mit den Bitstellen der gewhlten Konstanten. Tabelle 10 enthlt eine Zusammenstellung aller Wortverknpfungen: Mnemonik UW UW Konst. 16 Bit OW OW Konst. 16 Bit XOW XOW Konst. 16 Bit UD UD Konst. 32 Bit OD OD Konst. 32 Bit Verknpfung Und Wort 16 Bit Oder Wort 16 Bit Exklusiv Oder Wort 16 Bit Und Doppelwort 32 Bit Oder Doppelwort 32 Bit Erluterung Bitweises Verknpfen von 2 Wrtern nach UND Bitweises Verknpfen von 2 Wrtern nach ODER Bitweises Verknpfen von 2 Wrtern nach EXKLUSIV ODER Bitweises Verknpfen von 2 Doppelwrtern nach UND Bitweises Verknpfen von 2 Doppelwrtern nach ODER
REAL +R R *R /R -
Addition: AKKU 2 + AKKU 1 = AKKU 1 Addiert eine 16 Bit oder 32 Bit Ganzzahl zum Inhalt des AKKU 1. AKKU 2 bleibt unverndert Subtraktion: AKKU 2 - AKKU 1 = AKKU 1 Multiplikation: AKKU 2 * AKKU 1 = AKKU 1 Division: AKKU 2 : AKKU 1 = AKKU 1 (mit Quotient als Ergebnis). Modulo-Operation: Dividiere zwei Doppelinteger-Zahlen und lade den Rest der Division in den AKKU 1.
10.1.2 Statusbits
Alle arithmetischen Operationen beeinflussen die Bits des Statuswortes
S7kurs_2000.doc 23.05.02
Seite 51
10.1.2.1
OS
(gespeichertes Overflow)
Beim Datentyp REAL wird vor der auszufhrenden Operation geprft, ob die Akkumulatoren gltige Real-Zahlen enthalten. Ist dies nicht der Fall, liefert die gewhlte Funktion einen ungltigen Wert im AKKU 1 zurck und setzt die Statusbits A0, A1, OV und OS auf 1. Die Auswertung der Statusbits A0 und A1 kann analog zur Tabelle 3 erfolgen. Die Overflow-Anzeigen lassen sich als binre Operanden OV und OS mit den Operationen U, O, X, UN, ON und XN abfragen bzw. binr verknpfen. Auf die Overflow-Anzeigen reagieren die bedingten Sprnge SPO <Sprungmarke> SPS <Sprungmarke> (bei OV = 1) (bei OS = 1)
Bedeutung Berechne den Sinus des Bogenwerts, der im AKKU 1 als Real-Zahl steht. Berechne den Cosinus des Bogenwerts, der im AKKU 1 als Real-Zahl steht. Berechne den Tangens des Bogenwerts, der im AKKU 1 als Real-Zahl steht. Berechne den Arcussinus der Real-Zahl, die im AKKU 1 steht.
S7kurs_2000.doc 23.05.02
Seite 52
Berechne den Arcuscosinus der Real-Zahl, die im AKKU 1 steht. Berechne den Arcustangens der Real-Zahl, die im AKKU 1 steht.
10.1.2.5 Statusbits
Auch bei den vorgestellten mathematischen Funktionen findet eine entsprechende Beeinflussung der Bits des Statuswortes wie bei arithmetischen Anweisungen statt.
10.1.2.5.1.1.2.1.1
Datentyp-Umwandlungsfunktionen
Der Befehlsvorrat der S7-300 untersttzt eine Vielzahl von Mglichkeiten zur Konvertierung von Datentypen. Die Umwandlungsfunktionen konvertieren den Datentyp des im Akkumulator 1 stehenden Werts in den gewnschten Typ. Je nach Funktion ist hiervon nur das rechte Wort (die Bits 0 bis 15) oder der gesamte Inhalt des Akkumulators 1 betroffen. Der Inhalt des Akkumulators 2 wird von den Umwandlungsfunktionen nicht verndert.
Operation
Bedeutung
INT To DINT: Wandle Integer-Zahl (16 Bit) im AKKU1 in eine Doppelinteger-Zahl (32 Bit). INT To BCD: Wandle Integer-Zahl (16 Bit) im AKKU1 in eine BCD-Zahl. DINT To BCD: Wandle Doppelinteger-Zahl (32 Bit) in eine BCD-Zahl. DINT To REAL: Wandle Doppelinteger-Zahl (32 Bit) in eine Real-Zahl. BCD To INT: Wandle BCD-Zahl im AKKU1 in eine Integer-Zahl (16 Bit). BCD To DINT: Wandle BCD-Zahl in eine Doppelinteger-Zahl (32 Bit). Wandle 32 Bit Realzahl in 32 Bit Ganzzahl mit Runden (z.B. +3.67 +4). Wandle 32 Bit Realzahl in 32 Bit Ganzzahl. Es wird auf die nchst kleinere (oder gleiche) ganze Zahl abgerundet (z.B. +3.99 +3; 3.67 4). Wandle 32 Bit Realzahl in 32 Bit Ganzzahl. Es wird auf die nchst hhere (oder gleiche) ganze Zahl aufgerundet (z.B. +3.01 +4). Wandle 32 Bit Realzahl in 32 Bit Ganzzahl. Es werden die Nachkommastellen abgeschnitten (z.B. +3.99 +3).
Tab. 29: Datentyp-Konvertieren und Runden Bei der ITB-Wandlung darf die Integer-Zahl im AKKU 1 maximal 999, bei der DTB-Wandlung maximal 9 999 999 betragen, sonst wird die Wandlung nicht durchgefhrt. Es werden zustzlich die Statusbits OV und OS beeinflut. Befindet sich bei der BTI- bzw. BTD-Wandlung in der BCD-codierten Zahl ein Zahlenwert zwischen 10 und 15 bzw. A und F in hexadezimaler Darstellung, so meldet die CPU einen Programmierfehler und ruft den Organisationsbaustein OB 121 (Synchronfehler) auf. Ist dieser nicht vorhanden, also nicht programmiert, so geht die CPU in den StopZustand. In Bild 2 sind alle mglichen bergnge zwischen den unterschiedlichen Zahlentypen in einer Art Zustandsdiagramm zusammengefat: BCD-Zahl 3-stellig IEEE 7-stellig
Gleitpunktzahl 32 Bit
32 Bit
DTB
Bild 4: Umwandlungs- und Rundungsoperationen
10.1.2.5.1.1.2.1.2
S7kurs_2000.doc 23.05.02
Seite 53
Neben den Umwandlungsfunktionen fr Datentypen stehen noch Funktionen zur Bildung des Einer- und Zweierkomplements sowie fr Negation und Betragsbildung zur Verfgung. Weitere Anweisungen betreffen die Bildung des Einer- und Zweierkomplements fr 32-Bit Ganzzahlen sowie die Negation und Betragsbildung von Realzahlen. Operation INVI INVD NEGI NEGD NEGR ABS Bedeutung INVERTIERE INT: Bilde das Einerkomplement einer Integer-Zahl, d.h. die Bits 0 bis 15 im AKKU 1-L werden umgekehrt (eine 0 wird zu 1 und eine 1 wird zu 0). INVERTIERE DINT: Bilde das Einerkomplement einer Doppelinteger-Zahl, d.h. die Bits 0 bis 31 im AKKU 1 werden umgekehrt. NEGIERE INT: Bilde das Zweierkomplement einer Integer-Zahl, d.h. der Inhalt von AKKU 1-L (Bit 0 bis 15) wird mit 1 multipliziert (im AKKU 1-L wird das 1er-Komplement gebildet und danach wird dazu +1 addiert). NEGIERE DINT: Bilde das Zweierkomplement einer Doppelinteger-Zahl, d.h. der Inhalt von AKKU 1 wird mit 1 multipliziert (analog NEGI). NEGIERE REAL: Kehre das Vorzeichen (Bit 31) der Realzahl im AKKU 1 um. ABSOLUTBETRAG: Bilde den Betrag der Realzahl im AKKU 1.
10.1.2.5.1.1.2.1.4
Bei allen Schiebeoperationen kann die Anzahl der zu schiebenden Bitstellen entweder in der jeweiligen Anweisung als Parameter fest angegeben oder ber den Inhalt des Akkumulators 2 variabel gestaltet werden kann. Gleiches gilt fr die Rotieranweisungen, mit Ausnahme des Rotierens durch das Statusbit A1, wobei immer nur um ein Bit rotiert werden kann. Die Bitstellen, die durch die Schiebeoperationen frei geworden sind, werden mit Nullen oder, beim Schieben mit Vorzeichen, durch den Signalzustand des Vorzeichen-Bits aufgefllt (bei Wortanweisungen Bit 15, bei Doppelwortanweisungen Bit 31). Bei den Rotieroperationen wird mit den hinausgeschobenen Bits wieder aufgefllt. Bei allen Operationen einschliesslich RLDA und RRDA steht das zuletzt hinausgeschobene Bit noch im Statusbit A1 fr eine weitere Auswertung zur Verfgung (z.B. fr Sprungoperationen oder zur binren Abfrage). Operation SLW 0...15 SLW SLD 0...32 SLD SRW 0...15 SRW SRD 0...32 SRD SSI 0...15 SSI SSD 0...32 SSD RLD 0...32 Bedeutung Schiebe Links Wort: Schiebe den Inhalt vom AKKU 1-L (Bit 0 bis 15) wortweise um die angegebene Anzahl von Stellen nach links. Schiebe den Inhalt vom AKKU 1-L wortweise nach links um die Anzahl von Stellen, die im AKKU 2-LL in Bit 0 bis 7 angegeben sind. Schiebe Links Doppelwort: Schiebe den Inhalt vom AKKU 1 doppelwortweise um die angegebene Anzahl von Stellen nach links. Schiebe den Inhalt vom AKKU 1 doppelwortweise nach links um die Anzahl von Stellen, die im AKKU 2-LL in Bit 0 bis 7 angegeben sind. Schiebe Rechts Wort: Schiebe den Inhalt vom AKKU 1-L wortweise um die angegebene Anzahl von Stellen nach rechts. Schiebe den Inhalt vom AKKU 1-L wortweise nach rechts um die Anzahl von Stellen, die im AKKU 2-LL in Bit 0 bis 7 angegeben sind.. Schiebe Rechts Doppelwort: Schiebe den Inhalt vom AKKU 1 doppelwortweise um die angegebene Anzahl von Stellen nach rechts. Schiebe den Inhalt vom AKKU 1 doppelwortweise nach rechts um die Anzahl von Stellen, die im AKKU 2-LL in Bit 0 bis 7 angegeben sind. Schiebe den Inhalt vom AKKU 1-L wortweise mit Vorzeichen (Sign) um die angegebene Anzahl von Stellen nach rechts. Schiebe den Inhalt vom AKKU 1-L wortweise nach rechts mit Vorzeichen um die Anzahl von Stellen, die im AKKU 2-LL in Bit 0 bis 7 angegeben sind. Schiebe den Inhalt vom AKKU 1 doppelwortweise mit Vorzeichen um die angegebene Anzahl von Stellen nach rechts. Schiebe Inhalt vom AKKU 1 doppelwortweise nach rechts mit Vorzeichen um die Anzahl von Stellen, die im AKKU 2-LL in Bit 0 bis 7 angegeben sind. Rotiere Links Doppelwort: Rotiere den Inhalt vom AKKU 1 doppelwortweise um die angegebene Anzahl von Stellen nach links.
S7kurs_2000.doc 23.05.02
Seite 54
Rotiere den Inhalt vom AKKU 1 doppelwortweise nach links um die Anzahl von Stellen, die im AKKU 2-LL in Bit 0 bis 7 angegeben sind. Rotiere Rechts Doppelwort: Rotiere den Inhalt vom AKKU 1 doppelwortweise um die angegebene Anzahl von Stellen nach rechts. Rotiere den Inhalt vom AKKU 1 doppelwortweise nach rechts um die Anzahl von Stellen, die im AKKU 2-LL in Bit 0 bis 7 angegeben sind. Rotiere den Inhalt vom AKKU 1 doppelwortweise um eine Bitposition ber das Statusbit A1 nach links. Rotiere den Inhalt vom AKKU 1 doppelwortweise um eine Bitposition ber das Statusbit A1 nach rechts.
10.1.2.5.1.1.2.1.5
Sprungoperationen
Zum Sprung SPB gibt es das Gegenstck SPBN, mit dem ein bedingter Sprung bei VKE = 0 mglich ist. Zustzlich gibt es Sprnge, die das Verknpfungsergebnis in das BIE-Bit retten (SPBB und SPBNB). Im BIE-Bit gespeicherte Verknpfungsergebnisse knnen ebenfalls durch Sprnge ausgewertet werden: (SPBI und SPBIN). Die Anweisung SPU (unzulssige Operation) wird ausgefhrt, wenn man z.B. bei einer arithmetischen Funktion durch Null dividiert. Operation SPA SPB Erluterung Springe unbedingt Springe bedingt wenn VKE = 1 Rechen ergebnis Signalzustand A1 A0
Springe nach Marke, wenn das VKE = 0 ist. Springe nach Marke, wenn das VKE = 1 ist. Das VKE wird zustzlich in das BIE-Bit gerettet. Springe nach Marke, wenn das VKE = 0 ist. Das VKE wird zustzlich in das BIE-Bit gerettet. Springe nach Marke, wenn das BIE-Bit = 1 ist. Springe nach Marke, wenn das BIE-Bit = 0 ist.
Springe bedingt wenn Ergebnis Null ist Springe bedingt wenn Ergebnis nicht Null ist Springe bedingt wenn Ergebnis > Null ist Springe bedingt wenn Ergebnis < Null ist =0 <> 0 >0 <0 0 1
oder
0 0
oder
0 1 0
1 0 1
Springe nach Marke, wenn das Ergebnis <= 0 ist. Springe nach Marke, wenn das Ergebnis >= 0 ist. Springe nach Marke, wenn das Ergebnis ungltig ist (unzulssige Operation).
Springe bedingt bei berlauf (OV = 1) Springe bedingt bei gespeichertem berlauf (OS = 1)
S7kurs_2000.doc 23.05.02
Seite 55
L Rezeptnummer SPL OVER der Liste SPA REZ0 (AKKU = 0) SPA REZ1 (AKKU = 1) SPA REZ2 (AKKU = 2) OVER: ... <0) ... REZ0: ... ... REZ1: ... ...
// AKKU mit Rezeptnummer laden // Marke der 1. Anweisung nach // Sprung zur Rezeptnummer 0 // Sprung zur Rezeptnummer 1 // Sprung zur Rezeptnummer 2 // Falsche Rezeptnummer (>2 oder
// Schleifenzhler vorbesetzen.
// Anfang der Schleife: Geladenen (Anzahl)
// bzw. durch die Anweisung LOOP
//) Index Schleifenzhler speichern.
// Schleifenzhler erneut in AKKU laden. // AKKU dekrementieren und // zu NEXT springen, wie der // AKKU (= Schleifenzhler) > 0
Der Schleifenzhler mu mit einem Wert zwischen +1 und +65535 initialisiert werden. Achtung Die Operation LOOP interpretiert den Schleifenzhler als Datentyp WORD (16 Bit). Verwalten Sie daher den Schleifenzhler in einem Merker- oder Datenwort. Wrden Sie den Schleifenzhler mit Null vorbesetzen, so wrde die Schleife 65 535 mal durchlaufen!
10.1.2.7.1.1.2.1.1
Bausteinfunktionen
10.1.3 Bausteinaufrufe
Bausteine knnen unbedingt oder durch den Zustand des VKE gesteuert aufgerufen werden.
Operation CALL FB xxx, DB yyy Bedeutung Unbedingter Aufruf eines Funktionsbausteins mit Instanz-DB und Bausteinparametern. Die Bausteinparameter mssen nicht zwingend beschaltet sein. Der angegebene Instanz-DB wird beim Aufruf automatisch mit
S7kurs_2000.doc 23.05.02
Seite 56
FH Frankfurt, Labor fr Automatisierungstechnik aufgeschlagen. Unbedingter Aufruf eines Funktionsbausteins ohne Instanz-DB und Bausteinparameter. Bedingter Aufruf eines Funktionsbausteins ohne Instanz-DB und Bausteinparameter. Der Aufruf erfolgt bei einem VKE = 1 Unbedingter Aufruf einer Funktion mit Bausteinparametern. Alle Bausteinparameter mssen beschaltet sein. Unbedingter Aufruf einer Funktion ohne Bausteinparameter. Bedingter Aufruf einer Funktion ohne Bausteinparameter. Der Aufruf erfolgt bei einem VKE = 1 Unbedingter Aufruf eines System-Funktionsbausteins mit Instanz-DB und Bausteinparametern. Die Bausteinparameter mssen nicht zwingend beschaltet sein. Der angegebene Instanz-DB wird beim Aufruf automatisch mit aufgeschlagen. Unbedingter Aufruf einer System-Funktion mit Bausteinparametern. Alle Bausteinparameter mssen beschaltet sein. Aufschlagen eines (globalen) Datenbausteins Aufschlagen eines Instanz-Datenbausteins
UC FB xxx CC FB xxx CALL FC xxx UC FC xxx CC FC xxx CALL SFB xxx, DB yyy
CALL SFC xxx AUF DB xxx AUF DI xxx Tab. 33: Bausteinaufrufe
10.1.4 Bausteinende
Programmbausteine lassen sich unbedingt oder abhngig vom aktuellen VKE bedingt beenden. Mit jeder Bausteinendeoperation erfolgt ein Rcksprung auf den zuvor bearbeiteten Baustein, in dem der aktuelle Baustein aufgerufen wurde. Operation BE BEA BEB Bedeutung Baustein Ende, jeder Programmbaustein (OB, FC, FB) muss mit BE abgeschlossen werden Baustein Ende Absolut: Innerhalb des Bausteins zu verwenden, jedoch nur in Verbindung mit Sprungoperationen sinnvoll Baustein Ende Bedingt: Baustein wird beendet, wenn das aktuelle VKE den Wert 1 besitzt
S7kurs_2000.doc 23.05.02
Seite 57
Bei vielen Aufgaben der Automatisierungstechnik gilt es nicht nur bestimmte Ereignisse zu erfassen, sondern auch die Hufigkeit ihres Auftretens quantitativ zu bewerten. Hierzu bieten alle Speicherprogrammierbaren Steuerungen dem Anwender komfortable und flexibel einsetzbare Zhlfunktionen an. Anwendungsschwerpunkte sind dabei das Ermitteln und Verwalten von Mengen bzw. Stckzahlen. Besonderer Bedarf von Zhleinrichtungen besteht bei Verpackungsautomaten, sei es zum Abzhlen von Pillen, Eisenschrauben fr Kleinpackungen oder Zigaretten, sofern sich die Aufgabe nicht einfacher mit Wgeeinrichtungen lsen lsst. Dabei werden in der Regel die Impulse von Gebern oder anderweitig erzeugte Signalwechsel ber einen Binreingang einem Zhler zugefhrt, dessen jeweiliger Zhlerstand ein Ma fr eine erfasste bzw. abgegebene Menge darstellt. So knnte ein Lichttaster immer dann einen Zhlimpuls liefern, sobald ein Objekt vom optischen Strahl erfasst wird.
10.2.1 Zhlfrequenz
Die Zhlfunktionen werden im Systemspeicher der CPU realisiert. Dabei ist jedoch zu bedenken, dass die verwendete CPU auch die zu zhlenden Wechsel des Signalzustands eindeutig erkennen muss. Dies ist folglich nur dann mglich, wenn ein Eingangsimpuls - oder die Pause zwischen zwei Impulsen- mindestens fr die Dauer eines Programmzyklus ansteht. Je grer also die Zykluszeit (Programmbearbeitungszeit) ist, um so niedriger wird demnach die zulssige Zhlfrequenz. Zur Verarbeitung hherer Signalfrequenzen mssen daher spezielle periphere Baugruppen eingesetzt werden, die unabhngig von der Zykluszeit der CPU arbeiten und ber schnell reagierende Impulseingnge verfgen.
Je nach Aufgabenstellung lassen sich die Zhler auf unterschiedliche Weise einsetzen:
- Als Rckwrtszhler zum Abzhler vorgegebener Mengen. Hierbei wird der Zhler, von einem per Programm vorgebbaren Anfangswert, bis Null herunter ge zhlt. Beim Erreichen des Wertes Null findet ein Wechsel des binren Zhlerstatus - Als Vorwrtszhler zum Erfassen unbekannter Stckzahlen oder Ereignismengen. In Verbindung mit Vergleichsfunktionen lassen sich Sollmengen oder Grenzwerte ber- Als kombinierter Vor- und Rckwrtszhler zur Bestimmung von Mengendifferen zen bzw. zur Bestandserfassung von zu- und abgefhrten Objekten (z. B. Lagerbe stand). - Einfache zyklische Steuerungsablufe, die sich in einem festen Zeitraster abspielen, einem Vor- oder Rckwrtszhler als zentralem Element einer Taktkette programmiert werden. knnen mit ausgehend statt. prfen.
Zur Realisierung der unterschiedlichen Anwendungen bietet ein Zhler die folgenden Programmierfunktionen an:
- Zhler auf einen vorgebbaren Angfangswert setzen - Zhler vorwrts zhlen - Zhler rckwrts zhlen - Zhler rcksetzen (auf den Wert Null) - Binrzustand des Zhlers abfragen - Zhlerwert als Dualzahl abfragen - Zhlerwert als BCD-Zahl (codiert) abfragen
S7kurs_2000.doc 23.05.02
Seite 58
10.2.5 Ausfhrungen
Die Bezeichnung ZAEHLER oben in der Box gibt die Art des Zhlers an, hier Vor-/Rckwrtszhler. Weitere Ausfhrungen sind eine nur vorwrts zhlende Version Z_VORW und der nur rckwrts zhlende Zhler Z_RUECK. In der nachfolgenden Tabelle 1 werden die in der Zhlerbox eingetragenen Bezeichnungen fr die Ein und Ausgnge aufgelistet und deren Funktionen erlutert. Bezeichnung ZV ZR S ZW R DUAL DEZ Q Datentyp BOOL BOOL BOOL WORD BOOL WORD WORD BOOL Funktion Vorwrts zhlen Rckwrts zhlen Zhler auf Anfangswert setzen Vorgabe des Anfangswertes Zhler rcksetzen Aktueller Zhlerwert im Dualcode Aktueller Zhlerwert im BCD-Code Binrer Zhlerstatus
10.2.6 Belegung
Hierzu ist anzumerken, dass nur die Belegung des ersten Eingangs - hier: ZV- zwingend vorgeschrieben ist. Die Reihenfolge der Operationen ZV und ZR ist im brigen beliebig. Die Belegung aller weiteren Ein- und Ausgnge ist optional. d.h. man kann beispielsweise auf die Vorgabe eines Anfangswertes, auf das Rcksetzen oder auf die Abfrage des Zhlerwertes im Dual- oder BCD-Code verzichten. Natrlich macht ein Rckwrtszhler nur dann Sinn, wenn sich der Zhler auch auf einen Anfangswert setzen lsst und zumindest der binre Zhlerstatus ausgewertet wird. Die Funktionen des Zhlers
10.2.8 Vorwrtszhlen - ZV Zn
Mit jedem positiven Flankenwechsel des am ZV-Eingang anliegenden VKEs wird der Zhler um eine Einheit hher gezhlt. Hat der Zhler seinen obersten Wert 999 erreicht, so zeigen weitere Zhlflanken keine Wirkung. Ein bertrag oder bergang nach Null findet nicht statt.
10.2.9 Rckwrtszhlen - ZR Zn
Mit jedem positiven Flankenwechsel des am ZR-Eingang anliegenden VKEs wird der Zhler um eine Einheit rckwrts gezhlt. Hat der Zhler seinen untersten Grenzwert 0 erreicht, so zeigen weitere Zhlflanken keine Wirkung mehr. Ein Zhlen mit negativen Werten bzw. ein bergang zum obersten Wert 999 findet nicht statt.
S7kurs_2000.doc 23.05.02
Seite 59
den Anfangswert erstreckt sich von 0 bis 999. Diesen Anfangswert holt sich der Zhler aus dem Akkumulator 1. Daher muss der Anfangswert zuvor in den Akkumulator 1 gebracht werden. Vorgabe des Zhler-Anfangswertes Mit der zuvor beschriebenen Funktion Zhler setzen wird der am Eingang ZW der Zhlerbox anliegende Wert als Anfangswert in den Zhler bernommen. Dies ist insbesondere dann von Bedeutung, wenn der Zhler als Rckwrtszhler eingestzt werden soll. Genauer gesagt, es wird beim Zhler setzen ein im Akkumulator 1 anstehender Wert in den Zhler bernommen. Der Zhler-Anfangswert gelangt in der Regel durch eine Ladeoperation L Wert in den Akku 1. Der Zhlwert kann entweder als Konstante oder als wortbreiter Operand bzw. Variable vom Typ WORD gewhlt werden.
Hierbei sind nur positive Werte zulssig. Im HEX-Format drfen nur dezimale Ziffern (0 - 9) erscheinen. Zusammen mit der Ladeoperation ergeben sich folgende Anweisungen: L L C#623 W#16#0174 //Zhler-Anfangswert 623 in den Akku 1 laden //Zhler-Anfangswert 174 in den Akku 1 laden
x 100
S7kurs_2000.doc 23.05.02
Seite 60
Das Rcksetzen wirkt - im Gegensatz zu S, ZV oder ZR- nicht mit einer positive Flanke des rcksetzenden VKEs, sondern statisch ber dessen Zustand. So lange die Rcksetzfunktion mit 1 bearbeitet wird, bleibt der Zhler auch rckgesetzt. Das Rcksetzen erfolgt somit statisch und ist dominant gegenber den Funktionen S, ZV oder ZR. Duales Laden eines Zhlwertes - L Zn Die Ladefunktion L Zn bergibt den zum Zeitpunkt der Abfrage anliegenden Zhlerstand dual codiert (10 Bit) rechtsbndig an den Akkumulator 1. Der Wert entspricht einer positiven Zahl im Format INT und kann in dieser Form weiterverarbeitet (z. B. mit arithmetischen oder Vergleichsfunktionen) oder mit Hilfe der Transferfunktion T in einem Operanden wie Merker-, Daten- oder Ausgangswort gespeichert werden. Beispiel: L Z 28 T MW 50 //Aktuellen Zhlerwert dual in den AKKU 1 laden //und im Merkerwort 50 speichern
Diese Lade-/Transfersequenz wird in der FUP-/KOP-Darstellung automatisch erzeugt, wenn man den Ausgang DUAL der Zhlerbox mit einem Wortoperanden, z. B. MW 50, beschaltet, wie dies Bild 3 zeigt.
DUAL DEZ Q
MW 50 AW 12
Binre Abfrage eines Zhlers Der binre Signalausgang Q eines Zhlers liefert den Wert 1, solange der aktuelle Zhlerwert grer als Null ist (1 ... 999). Die binre Abfrage ergibt 0, wenn auch der Zhlerstand Null ist. Diese Funktion ist besonders interessant fr den Betrieb eines Rckwrtszhlers: Sobald der Zhler von seinem Voreinstellwert bis Null herunter gezhlt wurde, wechselt der binre Signalausgang von 1 nach 0. Der binre Signalausgang kann mit allen binren Signalabfragen U Zn, O Zn, X Zn bzw. den negierenden Anweisungen UN Zn, ON Zn und XN Zn abgefragt und das Abfrageergebnis auch weiter verknpft werden.
S7kurs_2000.doc 23.05.02
Seite 61
C#40 E 1.2 0.0 E 1.0 24 L 24 C#40 MW 24 E 0.0 AW 24 = 2.0 Bild 4: Programmierbeispiel fr einen Zhler in FUP und AWL M R 10 T U Z ZW 4 T LC Z Z S Q M 2.0 R Z ZR DEZ AW 10 S Z 24 U E
Vergleichsfunktionen
Die Vergleichsfunktionen zhlen zu den digitalen Funktionen, die als Operanden Datentypen wie INT, DINT REAL verarbeiten. Mit den Vergleichsfunktionen ist es mglich, zwei digitale Operanden hinsichtlich zahlenmigen Gre miteinander zu vergleichen. Die Ausfhrung dieser Funktionen, die eigentlich arithmetische Subtraktion impliziert, erfolgt unbedingt, also unabhngig von einem zuvor gebildeten VKE sonstigen Bedingungen. Sie erzeugt jedoch ein binres VKE, das abhngig vom Ergebnis des Vergleichs ist. oder ihrer eine oder
10.2.17 Vergleichsergebnis
Dieses binre Vergleichsergebnis lsst sich mit allen bekannten binren Operationen weiter verknpfen, speichern oder mit bedingten Sprungoperationen auswerten. Somit bilden die Vergleichsoperationen einen bergang vom
S7kurs_2000.doc 23.05.02
Seite 62
eingangsseitig digitalen zum ausgangsseitig binren Operandenbereich. Weitere Informationen ber Grenrelation der zu vergleichenden Operanden liefern die Anzeigeflags A0 und A1 des Statusregisters.
10.2.18 Funktionsweise
Die zu vergleichenden Operanden mssen in den beiden Akkumulatoren 1 und 2 stehen. Dorthin gelangen Sie in der Regel mit Hilfe der Ladefunktion (L ... ). Dabei ist zu beachten, dass mit einer Ladeoperation der zu ladende Wert stets in den Akku 1 gelangt, der alte Wert des Akku 1 jedoch automatisch in den AKKU 2 weiter geschoben wird. Bild 5 zeigt die Inhalte der beiden Akkumulatoren nach dem Laden zweier Wortoperanden. AKKU 1 L L EW 6 MW 20 MW 20 EW 6 EW 6 AKKU 2 ????
10.2.19 Akkumulatorfunktionen
Es gibt allerdings bei STEP 7 auch eine Reihe von Akkumulatorfunktionen, mit denen die Inhalte der Akkus vertauscht, verschoben oder anderweitig manipuliert werden knnen, z.B. TAK (Tauschen der Inhalte der Akkumulatoren 1 und 2), PUSH - POP (Schieben der Akkuinhalte, meist bei CPUs mit 4 Akkumulatoren verwendet) bzw. TAW oder TAD (Tauschen von Bytes im Akkumulator 1). Nach dem sich die zu vergleichenden Operanden in den beiden Akkumulatoren befinden, wird die eigentliche Vergleichsfunktion mit Angabe des Datentyps spezifiziert, siehe Tabelle 2. Wird der gewhlte Vergleich von den Operanden erfllt, so liefert die Funktion das binre Ergebnis 1, das als VKE fr die weitere Programmbearbeitung zur Verfgung steht. Andernfalls, bei nicht erflltem Vergleich, ergibt sich ein VKE von 0. Die Akkuinhalte werden dabei nicht verndert.
10.2.20 Vergleichsoperationen
In der nachfolgenden Tabelle 2 sind alle 6 Vergleichsoperationen mit den zulssigen Datentypen und den gltigen Operationscodes fr AWL-Darstellung zusammengestellt. Vergleichsfunktion
11.1.2 Datentypen
Die in die Akkumulatoren geladenen Werte mssen den gleichen Datentyp (I, D oder R) aufweisen, der auch im Operationscode spezifiziert ist. Bei direkt (absolut) adressierten Variablen muss die Breite der Operanden ebenfalls
S7kurs_2000.doc 23.05.02
Seite 63
dem Datentyp entsprechen. Haben Sie beispielsweise mit = =R den Datentyp REAL gewhlt, so kann die direkt adressierte Variable nur die Breite eines Doppelwortes haben -DWORD-, z.B. L L >R Doppel....... //wort 22? ED 12 DB10.DBD 22 //Lade das Eingangs-Doppelwort 12 //Lade das Daten-Doppelwort 22 des Datenbausteins 10 //Vergleich: Ist das ED 12 grer als das Daten-
11.1.3 Besonderheiten
Wurde der Datentyp INT gewhlt, so vergleicht die CPU nur die beiden rechten (niederwertigen) Wrter der Akkumulatoren. Die linken Wrter in den 32-Bit Akkumulatoren bleiben dabei unbeachtet. Bei einem Vergleich mit REAL-Operanden wird auch berprft, ob die in den Akkus stehenden Operanden gltige REAL-Zahlen sind. Ist dies nicht der Fall, so ergibt der Vergleich in jedem Fall ein VKE von 0. Zugleich werden die Statusbits A0, A1 sowie die Overflow-Anzeigen OV und OS auf 1 gesetzt, siehe nachfolgender Abschnitt.
Das Ergebnis ist: gleich: AKKU 2 = AKKU 1 grsser: AKKU 2 > AKKU 1 kleiner: AKKU 2 < AKKU 1 Ungltig, da ein Operand ungltige REAL-Zahl ist
eine
A0 0 0 1 1
A1 0 1 0 1
OV 0 0 0 1
OS 1
Tabelle 3: Statusbits bei Vergleichsfunktionen Auswertung der Statusbits Die Statusbits lassen sich sowohl mit binren Abfragen wie auch mit bedingten Sprungfunktionen auswerten und weiter verarbeiten. Wie bereits in einem frheren Beitrag gezeigt, sind binre Abfragen mglich wie: U ON U >0 = =0 UO //Ergebnis grer Null: A0 = 0, A1 = 1 //Ergebnis gleich Null: A0 = 0, A1 = 0 //Ergebnis ungltig (unordered).
Zur Auswertung mit bedingten Sprungfunktionen gibt es Anweisungen wie: SPZ SPN SPP SPM SPU //Springe wenn Ergebnis gleich Null: A0 = 0, A1 = 0
//Springe wenn Ergebnis ungleich Null: A0 = 0, A1 = 0 oder
//A0 = 1, A1 = 0 //Springe wenn Ergebnis grer Null (plus): A0 = 0, A1 = 1 //Springe wenn Ergebnis kleiner Null (minus): A0 = 1, A1 = 0 //Springe wenn Ergebnis ungltig: A0 = 1, A1 = 1
Nheres hierzu wird jedoch in einem eigenen Kapitel zu Sprungfunktionen erlutert. Beispiele fr den Vergleich in AWL: 1. Vergleich nach INT L L = =I S wird // mit dem erzeugten VKE = 1 der Merker 20.0 ge//setzt. EW 250 M 12 20.0 //Laden des Eingangswortes 12 als INT-Wert //Laden der INT-Konstanten 250 //Vergleich auf gleich //Wenn das EW 12 dem Zahlenwert 250 entspricht,
S7kurs_2000.doc 23.05.02
Seite 64
Dipl.Ing. Norbert Heinlein 2. Vergleich nach REAL, mit symbolischen Operanden L L > =R ist UN S #Alarm_sperren #Alarm #Istwert #Maxwert
//Laden der Variablen #Istwert als REAL-Zahl //Laden der REAL-Konstanten #Maxwert //Vergleich, ob #Istwert grer oder gleich #Maxwert //UND-Verknpfung des binren Vergleichsergebnisses //Wenn der Vergleich erfllt ist und die Alarme nicht ge//sperrt sind, wird die Variable #Alarm gesetzt. Vergleich als KOP-/FUP-Box
Die Box einer Vergleichsfunktion besitzt die zwei Eingnge IN1 und IN2 sowie einen unbeschrifteten Binrausgang. In der Box steht die berschrift CMP (compare) zusammen mit dem Symbol der gewhlten Vergleichsoperation und des Datentyps, z. B. CMP = =R (Vergleich zweier REAL-Zahlen auf gleich)
CMP < =I (Vergleich zweier INT-Zahlen auf kleiner oder gleich).
Bild 6 zeigt die Box eines Vergleichs mit der Zuweisung des binren Vergleichsergebnisses an einen Merker: CMP = =I 40.1 nimmt den Zustand 1 an, wenn MW 20 der (duale) Zahlenwert des 20 gleich 540 dem konstanten Wert 540 ist. Bild 6: Box eines Vergleichs in FUP-Darstellung Verknpfungen von Vergleichsfunktionen Das binre Ergebnis einer Vergleichsfunktion lsst sich wie jede andere Boole`sche Variable mit weiteren Variablen beliebig verknpfen. Steht der Vergleich am Beginn einer Verknpfung, so entspricht dies stets einer Erstabfrage. Weitere Variablen lassen sich mit UND bzw. ODER dazu verknpfen. Befindet sich die Vergleichsfunktion jedoch innerhalb einer binren Verknpfungskette, so mssen die Anweisungen des Vergleichs in Klammern gesetzt werden. Die folgenden Beispiele sollen dies verdeutlichen: IN 2 = IN 1 M 40.1 Merkerwortes Der Merker
14
S7kurs_2000.doc 23.05.02
Seite 65
Lsung b:
Die Sprungverteilung erfolgt mit Hilfe der Statusbits A0/A1, siehe auch Statusbits bei Vergleichsfunktionen. Dabei
spielt die Art des gewhlten Vergleichs keine Rolle, da die Statusbits allein von der Grenrelation der in den
Akkumulatoren anstehenden Werte bestimmt werden.
L L = =I SPZ SPP SPM #WERT 450 GLEI GROE KLEI //Variable #WERT laden
//Festen Vergleichswert laden
//Vergleich auf gleich:
//Wenn #WERT = 450: Sprung auf Marke GLEI
//Wenn #WERT > 450: Sprung auf Marke GROE
//Wenn #WERT < 450: Sprung auf Marke KLEI
Seite 66
- Die Filter einer Entstaubungsanlage sollen alle 2 Stunden automatisch fr 10 s gert telt werden, um sie vom Staub zu befreien. - Die Beleuchtung einer Tiefgarage wird mit Einfahren eines Fahrzeugs eingeschaltet und schaltet sich automatisch 50 s spter wieder aus. - Die Zeit zum Befllen eines Silos soll ber ein Zeitglied bestimmt werden. Die Reihe von Beispielen knnte beliebig fortgesetzt werden. Daher haben die Hersteller von Automatisierungssystemen wie S7 im Befehlssatz der Steuerungsgerte eine Reihe von Zeitoperationen vorgesehen. Die bekanntesten, auch bei Schtzsteuerungen verfgbaren Zeitoperationen, sind die Einschalt und die Ausschaltverzgerung. 12.2 Einschaltverzgerung Wie Bild 1 zeigt, wird bei einer Einschaltverzgerung der bergang des Eingangssignales von 0 nach 1 (Einschaltflanke) im Ausgangssignal um eine gewisse Zeit verzgert te wiedergegeben. Das Ausgangssignal kehrt jedoch unverzgert in die Nullage zurck, sobald das Eingangssignal zu 0 wird. 12.3 Ausschaltverzgerung Bild 1 zeigt ebenfalls, da bei einer Ausschaltverzgerung das Ausgangssignal einen 0 - 1 Anstieg des Eingangssignales unverzgert bernimmt. Nach der Rckkehr des Eingangssignales zu 0 verbleibt jedoch das Ausgangssignal noch eine gewisse Zeit ta im Signalzustand 1, bevor es ebenfalls -also verzgert- den 0-Wert wieder annimmt.
1 0 1 0 te 1 0 1 0 ta
Eingangssignal Ausgangssignal
Eingangssignal Ausgangssignal
12.4 Zeitglieder Die in der Zentralbaugruppe einer SPS verfgbaren Zeitglieder verwirklichen demnach eine zeitlich-logische Funktion zwischen einem binren Eingangs- und einem Ausgangssignal. Hierzu werden reservierte Bereiche des Systemdatenspeichers der Zentralbaugruppe (CPU) herangezogen, die als Rckwrtszhler betrieben werden.
S7kurs_2000.doc 23.05.02
Seite 67
Aus dem Prozessortakt abgeleitete Taktgeneratoren liefern Zhlimpulse zum Rckwrtszhlen des dem jeweiligen Zeitglied entsprechenden Zhlers. Das Starten einer Zeit heit somit, den zugeordneten Zhler auf einen vom Zeitwert bestimmten Anfangswert zu laden und den geeigneten Zhltakt zum Rckwrtszhlen frei zu geben. Die gewhlte Zeit ist dann abgelaufen, wenn die zugefhrten Zhlimpulse den Zhlerstand auf Null gebracht haben. Fr jedes Zeitglied wird in der CPU der S7 ein Speicherwort, also 16 Bit, reserviert. Der Zhlerwert und das gewhlte Zeitraster (Zeitbasis fr die Zhlimpulse) werden darin in folgendem Format gespeichert, Bild 2: Bit Nr. 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
x 100
x 10
x1
nicht Zeitraster: benutzt 00 = 0,01 s Zeitwert: Im BCD-Code vorgebbarer Zhlwert des 01 = 0,1 s Zeitgliedes 10 = 1 s 11 = 10 s
Bild 2: Speicherwort fr ein Zeitglied 12.5 Zeitdauer Die Zeitdauer ergibt sich aus dem Produkt aus Zeitwert und dem gewhlten Zeitraster. Sie ist die Zeitspanne, whrend der eine Zeitfunktion aktiv ist (die Zeit luft). Das Zeitraster bestimmt, mit welcher Taktperiode der Zeitwert (Inhalt des Zhlers) dekrementiert wird. Die gewnschte Zeit wird um so genauer und feinstufiger wiedergegeben, je kleiner das Zeitraster ist. Da der Zeitwert als 3-stelliger BCD-Code im Speicherwort steht, lassen sich Zeiten zwischen 10 ms (Zeitwert = 1, Zeitraster = 0,01 s) und 9990 s (Zeitwert = 999, Zeitraster = 10 s) whlen. Der Hchstwert erzeugt also eine Zeit von 2 Stunden, 46 Minuten und 30 Sekunden. Das Starten einer Zeit Eine Zeitfunktion wird gestartet, wenn das vor der Startoperation gltige VKE (als Einzelsignal oder Ergebnis einer Verknpfung) seinen Signalzustand wechselt. Die meisten Zeitfunktionen erfordern einen Signalwechsel von 0 nach 1 (positive Signalflanke). Bei einer Ausschaltverzgerung erfolgt der Start der Zeit jedoch mit einer negativen Signalflanke, d.h. einem Signalwechsel des startenden VKEs von 1 nach 0, siehe auch Bild 1, Ausschaltverzgerung. Wie STEP 5 bietet auch STEP 7 fnf mgliche Startoperationen mit unterschiedlicher Wirkungsweise: - SI - Start als Impuls - SV - Start als verlngerter Impuls - SE - Einschaltverzgerung - SS - speichernde Einschaltverzgerung - SA - Ausschaltverzgerung
S7kurs_2000.doc 23.05.02
Seite 68
Bevor das spezifische Signalverhalten dieser Startoperationen jedoch nher erlutert wird, seien erst die Mglichkeiten zur Vorgabe der Zeitdauer vorgestellt. Vorgabe der Zeitdauer Beim Start eines Zeitgliedes wird dem Akkumulator 1 der CPU ein Wert fr die gewnschte Zeitdauer entnommen. Wann und auf welche Weise dieser Wert in den Akkumulator gelangt, spielt im Prinzip keine Rolle. Es sei jedoch empfohlen, diesen Wert in der Regel erst kurz vor der Startoperation in den Akkumulator zu laden. Die Vorgabe der Zeitdauer kann auf unterschiedliche Weise erfolgen: - Als Konstante oder - als Variable (Eingangswort, Merkerwort, Datenwort). Vorgabe der Zeitdauer als Konstante:
Hierzu bietet STEP 7 den Datentyp S5TIME bzw. S5T mit einem eigenen Format
an. Die Zeitdauer lt sich dann in Stunden (H), Minuten (M), Sekunden (S) und
Millisekunden (MS) exakt angeben. Der Wert fr die Zeitdauer wird mit der Operation L
- Lade in den Akku 1 gebracht: L S5TIME#aHbbMccSdddMS Millise (a Stunden, bb Minuten, cc Sekunden, ddd kunden) Hierzu einige Beispiele: L S5TIME#Wert Zeitdauer L S5TIME#26M15S 26 Minuten und 15 Sekunden L S5T#20S500MS 20,5 Sekunden L S5T#1H10M 1 Stunde und 10 Minuten Tabelle 1: Vorgabe der Zeitdauer als S5TIME Konstante
Der Bereich erstreckt sich, wie bereits erwhnt, von S5TIME#10MS (kleinstes Zeitraster
10 Millisekunden) bis S5TIME#2H46M30S (entsprechend 9990 s).
Anstelle des Datentyps S5TIME kann man jedoch auch eine 16-Bit Konstante
vorgeben, die den Zeitwert mit dem Zeitraster nach Bild 2 enthlt. Im hexadezimaler
Darstellung hat die Konstante dann das folgende Format:
W#16#rxyz
wobei r = Zeitraster (0, 1, 2, 3) und xyz der Zeitwert im BCD-Format sind.
Auch hierzu einige Beispiele: Programmieren mit STEP 7
S7kurs_2000.doc 23.05.02
Seite 69
Zeitdauer Raster: 1, Zeitwert 500 500 x 0,1 s = 50 s Raster: 2, Zeitwert 30 30 x 1 s = 30 s (besser: 300 x 0,1 s) Raster: 3, Zeitwert 360 360 x 10 s = 3600 s = 1 Stunde Raster: 0, Zeitwert 10 10 x 0,01 s = 100 ms
b)
W#16#1060 DB8.DBW 4
DB8.DBW 4
0 x1
S7kurs_2000.doc 23.05.02
Seite 70
12.6 Arbeitsweise eines Zeitgliedes Der ber den Akkumulator 1 geladene Zeitwert wird beim Starten der Zeitfunktion an das Zeitglied bergeben. Das Betriebssystem der CPU dekrementiert bei allen aktiven, also gestarteten Zeitgliedern die aktuellen Zeitwerte mit der Periode des jeweils gewhlten Zeitrasters. Die Zeit ist abgelaufen, sobald der Zeitwert bis Null herunter gezhlt wurde. Danach bleibt das Zeitglied in Ruhe bis zu einem weiteren Start der Zeitfunktion. Man beachte: Das Herunterzhlen der Zeitwerte geschieht vllig unabhngig von der Bearbeitung des Anwenderprogramms, also vllig asynchron zu den Programmzyklen. Damit besteht auch keinerlei Synchronisation zwischen einem vom Programm ausgelsten Startzeitpunkt einer Zeitfunktion und den zentral erzeugten Zhltakten fr das Zeitraster. Abfragen einer Zeitfunktion 12.7 Abfrage des Zeitstatus Der Zeitstatus (Zeit luft bzw. Zeit ist abgelaufen) lt sich ber den Binrzustand des Zeitgliedes abfragen. Die Abfrage erfolgt wie bei Eingngen oder Merkern mit UND , ODER und Exklusiv-ODER Anweisungen: Abfrage auf Signalzustand 1 U T n (*) O Tn X
(*)
Tn
Abfrage auf Signalzustand Bedeutung 0 UN Tn Verknpfung nach UND ON Tn Verknpfung nach ODER XN Tn Verknpfung nach EXOR
n ist ein Timer - Adreparameter, je nach CPU zwischen 0 und max. 255
Tab. 3: Abfrage von Zeitgliedern Das Abfrageergebnis lt sich mit anderen binren Variablen weiter verknpfen, z. B.: U UN U S T6 T 22 M 2.5 M 3.0 //Wenn T 6 den Signalzustand 1 fhrt
//UND T 22 den Signalzustand 0
//UND der Merker 2.5 den Signalzustand 1
//Setze den Merker 3.0
12.8 Abfrage der Zeitwerte Die Ladeoperationen L und LC fragen den aktuellen Zeitwert eines Zeitgliedes ab und stellen ihn entweder in dualer Form (L) oder BCD-codiert (LC) im Akkumulator 1 zur Verfgung. Beim Zeitwert handelt es sich um den aktuellen Zhlerstand eines gestarteten bzw. laufenden Zeitgliedes zum Zeitpunkt der Abfrage.
S7kurs_2000.doc 23.05.02
Seite 71
12.9 Duales Laden eines Zeitwertes Beim dualen Laden eines Zeitwertes mit der Operation L T n wird der aktuelle Zeitwert des Timers T n als 10-stellige Dualzahl ohne Zeitraster rechtsbndig in den AKKU 1 gebracht. Die hherwertigen Stellen des AKKU sind mit Null belegt. Der bergebene Wert entspricht einer positiven Dualzahl vom Datentyp INT (Festpunktzahl, 16 Bit). Der Wert kann gespeichert und/oder mit verschiedenen wortverarbeitenden Operationen weiterverarbeitet werden (z.B. Vergleichs- oder Arithmetikoperationen). Beispiele: a) als Dualzahl b) den AKKU 1 Vergleichsgre = =I auf Gleichheit S sobald beide Werte M 2.0 //und setze den Merker 2.0 auf 1, //gleich gro sind. Beachten Sie: Da es sich nur um den momentanen Stand des rckwrts zhlenden Zhlers fr das Zeitglied handelt, entspricht dieser Wert nicht einer Zeitdauer, sondern ist ein Ma fr die Restlaufzeit des Zeitgliedes. 12.10 BCD-codiertes Laden eines Zeitwertes Beim BCD-codierten Laden eines Zeitwertes mit der Operation LC T n wird der aktuelle Zeitwert des Timers T n als 3-stellige BCD-Zahl mit dem Zeitraster rechtsbndig in den AKKU 1 geladen. Die Belegung des AKKU 1 entspricht dabei der Vorgabe eines Zeitwertes, wie es bereits Bild 2 zeigt. Die hherwertigen Stellen des AKKU sind mit Null belegt. Beispiel: LC Zeit T DB 6 Rcksetzen eines Zeitgliedes Mit der Operation R T n wird ein Zeitglied rckgesetzt, wenn das gltige VKE vor dieser Operation den Wert 1 besitzt. Die aktive Rcksetzoperation stoppt eine //raster DB6.DBW12 //und speichere den Wert im Datenwort 12 des T3 //Lade aktuellen Zeitwert von T 3 BCD-codiert mit //Vergleiche beide Werte vom Typ INT L T L L T5 MW 12 T14 +125 //Lade aktuellen Zhlerstand von T 5 //und speichere den Wert im Merkerwort 12 // Lade Zhlerstand von T 14 als dual in //Lade die Integer-Konstante 125 als
S7kurs_2000.doc 23.05.02
Seite 72
laufende Zeit und setzt Zeitwert wie auch Zeitraster auf Null. Die binre Abfrage des Zeitstatus liefert beim rckgesetzten Zeitglied stets den Wert 0. Das Rcksetzen eines Zeitgliedes mit einem VKE = 1 wirkt dominant gegenber jedem Startversuch und statisch (nicht alleine mit der Flanke), d.h. solange die Rcksetzanweisung mit 1 bearbeitet wird, ist das Zeitglied blockiert. Operationen fr ein Zeitglied Nachfolgend seien alle vorgestellten Operationen fr ein Zeitglied zusammengestellt, hier vom Typ SI (starte als Impuls). Diese Reihenfolge ist fr das Programmieren in AWL zwar empfohlen, jedoch nicht unbedingt bindend. Auch mssen keineswegs alle fr Zeitfunktionen vorhandenen Operationen verwendet werden. Es gengen die Anweisungen, die fr den jeweiligen Einsatzfall bentigt werden. In vielen Fllen reicht es aus, das Zeitglied mit Vorgabe der Zeit zu starten (SI, SV ...) und den Zeitstatus binr abzufragen.
Zeitoperation Starten des Zeitgliedes und Vorgabe des Zeitwertes Rcksetzen des Zeitgliedes Duales und BCD-codiertes Abfragen des Zeitgliedes Binres Abfragen des Zeitgliedes
12.11 U L SI U R L T LC T UN =
Anweisungen
Tab. 4: Operationen fr ein Zeitglied SI SI - Start eines Zeitgliedes als Impuls Die Zeitfunktion startet, sobald das vor der Startoperation gltige VKE von 0 nach 1 wechselt. Die Zeit luft mit der programmierten Zeitdauer ab, wenn das startende VKE auf dem Wert 1 bleibt. Solange die Zeit luft, liefert die binre Abfrage des Zeitgliedes (Zeitstatus) das Ergebnis 1. Wechselt das startende VKE nach 0 bevor die eingestellte Zeit vollstndig abgelaufen ist, so wird das Zeitglied angehalten. Der binre Ausgang des Zeitgliedes nimmt den Wert 0 an. Die digitale Abfrage des Zeitwertes (L T n, LC T n) liefert den Zhlerstand zum Zeitpunkt des Abbruchs, entsprechend der Restlaufzeit des vorzeitig unterbrochenen Zeitgliedes.
S7kurs_2000.doc 23.05.02
Seite 73
12.12 Rcksetzen Wird die Rcksetzfunktion des Zeitgliedes bei laufender Zeit mit einem VKE von 1 bearbeitet, so wird das Zeitglied sofort zurckgesetzt. Sowohl die binre Abfrage des Zeitstatus wie die digitale Abfrage von Zeitwert und -raster liefern den Wert 0. Solange das VKE der Rcksetzfunktion auf dem Wert 1 bleibt, kann das Zeitglied nicht erneut gestartet werden. Das nachfolgende Zeitdiagramm zeigt das Verhalten des Zeitgliedes SI beim Starten und Rcksetzen.
VKE am tarteingang VKE am Rck setzeingang Zeit luft Zeitstatus (Binrabfrage) t t
Bild 4: Das Zeitgliedes SI beim Starten und Rcksetzen. SV - Start eines Zeitgliedes als verlngerter Impuls Die Zeitfunktion startet, sobald das vor der Startoperation gltige VKE von 0 nach 1 wechselt. Die Zeit luft mit der programmierten Zeitdauer ab, unabhngig davon, wie lange das startende VKE auf dem Wert 1 bleibt. Solange die Zeit luft, liefert die binre Abfrage des Zeitgliedes (Zeitstatus) das Ergebnis 1. Wechselt das startende VKE erneut von 0 nach 1 bevor die eingestellte Zeit vollstndig abgelaufen ist, so wird das Zeitglied erneut mit dem programmierten Zeitwert gestartet (die Zeitfunktion wird quasi nachgetriggert). Dieses Nachtriggern kann beliebig oft wiederholt werden, ohne da die Zeit vollstndig abluft. Der binre Ausgang des nachgetriggerten Zeitgliedes bleibt dann auf dem Wert 1 an. 12.13 Rcksetzen Wird die Rcksetzfunktion des Zeitgliedes bei laufender Zeit mit einem VKE von 1 bearbeitet, so wird das Zeitglied sofort zurckgesetzt. Sowohl die binre Abfrage des Zeitstatus wie auch die digitale Abfrage von Zeitwert und -raster liefern den Wert 0. Solange das VKE der Rcksetzfunktion auf dem Wert 1 bleibt, kann das Zeitglied nicht erneut gestartet werden. Das nachfolgende Zeitdiagramm zeigt das Verhalten des Zeitgliedes SV beim Starten und Rcksetzen.
Nachtriggern der Zeit VKE am Starteingang VKE am Rck setzeingang Zeit luft
S7kurs_2000.doc 23.05.02
Seite 74
Zeitstatus (Binrabfrage) t t t
Bild 5: Das Zeitgliedes SV beim Starten und Rcksetzen. SE - Start eines Zeitgliedes als Einschaltverzgerung Die Zeitfunktion startet, sobald das vor der Startoperation gltige VKE von 0 nach 1 wechselt. Die Zeit luft mit der programmierten Zeitdauer ab, wenn das startende VKE auf dem Wert 1 verbleibt. Solange die Zeit noch luft, liefert die binre Abfrage des Zeitgliedes (Zeitstatus) das Ergebnis 0. Erst wenn die Zeit vollstndig abgelaufen ist und das startende VKE noch den Wert 1 besitzt liefert der binre Ausgang des Zeitgliedes den Wert 1. Wechselt das startende VKE von 1 nach 0 bevor die eingestellte Zeit vollstndig abgelaufen ist, so wird das Zeitglied angehalten. Der binre Ausgang des Zeitgliedes bleibt damit auf dem Wert 0. Die digitale Abfrage des Zeitwertes (L T n, LC T n) liefert den Zhlerstand zum Zeitpunkt des Abbruchs, was der Restlaufzeit des vorzeitig unterbrochenen Zeitgliedes entspricht. 12.14 Rcksetzen Wird die Rcksetzfunktion des Zeitgliedes bei laufender Zeit mit einem VKE von 1 bearbeitet, so wird das Zeitglied sofort zurckgesetzt. Sowohl die binre Abfrage des Zeitstatus wie die digitale Abfrage von Zeitwert und -raster liefern den Wert 0. Die binre Abfrage des Zeitstatus ergibt auch 0, wenn zum Zeitpunkt des Rcksetzens die Zeit bereits abgelaufen war, das startende VKE jedoch noch den Wert 1 besitzt. Solange das VKE der Rcksetzfunktion auf dem Wert 1 bleibt, kann das Zeitglied nicht erneut gestartet werden. Das nachfolgende Zeitdiagramm zeigt das Verhalten des Zeitgliedes SE beim Starten und Rcksetzen.
VKE am Starteingang VKE am Rck setzeingang Zeit luft Zeitstatus (Binrabfrage) t <t t
Bild 6: Das Zeitgliedes SE beim Starten und Rcksetzen. SS - Start eines Zeitgliedes als speichernde Einschaltverzgerung
S7kurs_2000.doc 23.05.02
Seite 75
Die Zeitfunktion startet, sobald das vor der Startoperation gltige VKE von 0 nach 1 wechselt. Die Zeit luft mit der programmierten Zeitdauer ab, unabhngig vom weiteren Verlauf des startenden VKE. Solange die Zeit noch luft, liefert die binre Abfrage des Zeitgliedes (Zeitstatus) das Ergebnis 0. Erst wenn die Zeit vollstndig abgelaufen ist, ergibt die binre Abfrage des Zeitstatus den Wert 1, unabhngig von der Dauer des startenden VKE. Das binre Abfrageergebnis des Zeitgliedes wird erst dann wieder zu 0, wenn die Zeitfunktion rckgesetzt wurde. Die ist SS die einzige Zeitfunktion, bei der das Rcksetzen obligatorisch ist. Wechselt das startende VKE von 0 nach 1 whrend die eingestellte Zeit noch luft, so wird das Zeitglied erneut mit dem vorgesehenen Zeitwert gestartet (das Zeitglied wird nachgetriggert). Dies kann beliebig oft erfolgen, ohne da die Zeit voll abluft. Der binre Ausgang des Zeitgliedes bleibt damit auf dem Wert 0. Die digitale Abfrage des Zeitgliedes (L T n, LC T n) liefert den jeweils aktuellen Zeitwert. 12.15 Rcksetzen Wird die Rcksetzfunktion des Zeitgliedes bei laufender Zeit mit einem VKE von 1 bearbeitet, so wird das Zeitglied sofort zurckgesetzt. Sowohl die binre Abfrage des Zeitstatus wie die digitale Abfrage von Zeitwert und -raster liefern den Wert 0. Solange das VKE der Rcksetzfunktion auf dem Wert 1 bleibt, kann das Zeitglied nicht erneut gestartet werden. Das nachfolgende Zeitdiagramm zeigt das Verhalten des Zeitgliedes SS beim Starten und Rcksetzen.
Nachtriggern der Zeit VKE am Starteingang VKE am Rck setzeingang Zeit luft Zeitstatus (Binrabfrage) t t t
Bild 7: Das Zeitgliedes SS beim Starten und Rcksetzen. SA - Start eines Zeitgliedes als Ausschaltverzgerung Im Gegensatz zu allen bisher vorgestellten Zeitgliedern wird hier die Zeitfunktion gestartet, sobald das vor der Startoperation gltige VKE von 1 nach 0 wechselt (fallende Signalflanke). Die Zeit luft dann mit der programmierten Zeitdauer ab, sofern das startende VKE auf dem Wert 0 bleibt. Die binre Abfrage des Zeitgliedes (Zeitstatus) liefert das Ergebnis 1, solange das startende VKE 1 ist oder die Zeit noch luft. Die Dauer des am Starteingang anliegenden 1-Signales wird also um die programmierte Zeit verlngert, siehe auch Bild 1, Ausschaltverzgerung.
S7kurs_2000.doc 23.05.02
Seite 76
Wechselt das startende VKE wieder von 0 nach 1 bevor die eingestellte Zeit vollstndig abgelaufen ist, so wird die Zeitfunktion abgebrochen. Der Binrausgang bleibt auf dem Wert 1. Eine erneute fallende Flanke am Starteingang startet wieder die Zeitfunktion mit dem programmierten Zeitwert. Erst nach vollstndigem Ablauf der Zeit nimmt der binre Ausgang den Wert 0 an. 12.16 Rcksetzen
Wird die Rcksetzfunktion des Zeitgliedes bei laufender Zeit mit einem VKE von 1 bearbeitet, so wird das Zeitglied sofort zurckgesetzt. Sowohl die binre Abfrage des Zeitstatus wie auch die digitale Abfrage von Zeitwert und -raster liefern den Wert 0. Solange das VKE der Rcksetzfunktion auf dem Wert 1 bleibt, kann das Zeitglied nicht erneut gestartet werden. Auch bei einem VKE = 1 am Starteingang wird mit der Rcksetzfunktion der Binrausgang auf 0 gesetzt. Das nachfolgende Zeitdiagramm zeigt das Verhalten des Zeitgliedes SA beim Starten und Rcksetzen.
Erluterung
T - Nr
S7kurs_2000.doc
Seite 77
TW R Q DUAL DEZ
TW
Bild 9: KOP-Box und Parameter eines Zeitgliedes Alle 5 Zeitfunktionen werden in dieser Form dargestellt. Sie unterscheiden sich nur durch die das jeweilige Zeitglied spezifizierende Deskriptoren in der 1. Zeile der Box. In der nachfolgenden Tabelle 5 sind diese Deskriptoren fr die verschiedenen Zeitglieder zusammengestellt. Deskriptor 13.2.1 S_IMP ULS Operation Zeitfunktion SI Zeit als Impuls starten Zeit als verlngerten Impuls starten Zeit als Einschaltverzgerung starten Zeit als speichernde Einschaltverzgerung starten Zeit als Ausschaltverzgerung starten
13.3 Zeitbox in FUP Darstellung Zwischen KOP- und FUP-Darstellung gibt es keine wesentlichen Unterschiede. Die einzige Abweichung besteht darin, da sich in der FUP-Darstellung der Binrausgang Q nicht oben, sondern unten befindet: Beispiel: Das nachfolgende Beispiel zeigt ein Zeitglied in den Darstellungen KOP, FUP und AWL: FUP:
T5 S_IMPULS S TW DUAL DEZ Q MW 6 A 2.2 AW 8 E 0.0 R
E 0.1 S5T#20S
KOP:
AWL:
S7kurs_2000.doc 23.05.02
Seite 78
Dipl.Ing. Norbert Heinlein T5 E 0,1 0.1 S 0.0 S5T#20S T 5 E 0.0 MW AW 6 DEZ R 8 AW 8 S_IMPULS Q DUAL MW 6 A 2.2
U L S5T#20S SI R
E T 5 U T 5 L T
TW
LC
T 5 T
U A
T 5 = 2.2
S7kurs_2000.doc 23.05.02
Seite 79
MODUL A3
Startup SPS- Programmierung mit STEP 7
Seite 1 von 48
Diese Unterlage wurde von Siemens A&D SCE (Automatisierungs und Antriebstechnik, Siemens A&D
Cooperates with Education) zu Ausbildungszwecken erstellt.
Siemens bernimmt bezglich des Inhalts keine Gewhr.
Weitergabe sowie Vervielfltigung dieser Unterlage, Verwertung und Mitteilung ihres Inhalts ist innerhalb
ffentlicher Aus- und Weiterbildungssttten gestattet. Ausnahmen bedrfen der schriftlichen Genehmigung
durch Siemens A&D SCE ( Hr. Knust: E-Mail: michael.knust@hvr.siemens.de).
Zuwiderhandlungen verpflichten zu Schadensersatz. Alle Rechte auch der bersetzung sind vorbehalten,
insbesondere fr den Fall der Patentierung oder GM-Eintragung.
Wir danken der Fa. Michael Dziallas Engineering und den Lehrkrften von beruflichen Schulen sowie weiteren
Personen fr die Untersttzung bei der Erstellung der Unterlage.
Seite 2 von 48
SEITE:
1. 2. 2.1 2.2 3. 4. 5. 5.1 5.2 5.3 5.4 5.5 5.6 5.7 5.7.1 5.7.2 5.7.3 5.8 Vorwort ............................................................................................................. Hinweise zur Programmierung der SIMATIC S7-300 mit STEP 7................... Automatisierungssystem SIMATIC S7-300 ......................................................... Programmiersoftware STEP 7 ............................................................................ Installation der Software STEP 7..................................................................... Programmierschnittstelle einstellen (PC- Adapter) ........................................ Was ist eine SPS und wofr werden SPSen verwendet?............................... Was bedeutet der Begriff SPS?.......................................................................... Wie steuert die SPS den Prozess? ..................................................................... Woher bekommt die SPS Informationen ber Prozesszustnde? ....................... Wo liegt der Unterschied zwischen ffnern und Schlieern?.............................. Wie spricht die SPS einzelne Ein-/Ausgangssignale an? .................................... Wie wird in der SPS das Programm bearbeitet? ................................................. Wie sehen logische Verknpfungen im SPS- Programm aus?............................ UND- Verknpfung ............................................................................................. ODER- Verknpfung........................................................................................... Negation............................................................................................................. Wie wird das SPS- Programm erstellt? wie kommt es in den Speicher der SPS?
22
Aufbau und Bedienung der SIMATIC S7-300 .................................................. Beispielaufgabe................................................................................................ STEP 7- Projekt anlegen .................................................................................. STEP 7- Programm schreiben in Funktionsplan FUP .................................... STEP 7- Programm in der CPU testen............................................................. 5
7
7
7
8
9
14
14
14
15
15
16
17
18
18
20
21
6. 7. 8. 9. 10.
23
26
27
35
47
Seite 3 von 48
Modul A3
Startup SPS- Programmierung mit STEP 7
1.
VORWORT Das Modul A3 ist inhaltlich der Lehreinheit Grundlagen der STEP 7- Programmierung zugeordnet und stellt einen Schnelleinstieg in die STEP 7- Programmierung dar. Grundlagen der STEP 7- Programmierung 2 - 3 Tage Module A
IT- Kommunikation mit SIMATIC S7 1- 2 Tage Module E Lernziel: Der Leser soll in diesem Modul das Programmieren einer Speicherprogrammierbaren Steuerung (SPS) mit dem Programmierwerkzeug STEP 7 erlernen. Das Modul vermittelt die Grundlagen und zeigt in den folgenden Schritten die Vorgehensweise anhand eines ausfhrlichen Beispiels. Installation der Software und Einstellen der Programmierschnittstelle Erluterung was eine SPS ist und wie diese arbeitet Aufbau und Bedienung der SPS SIMATIC S7-300 Erstellung eines Beispielprogramms Laden und Testen des Beispielprogramms
Voraussetzungen: Fr die erfolgreiche Bearbeitung dieses Moduls wird folgendes Wissen vorausgesetzt: Kenntnisse in der Handhabung von Windows 95/98/2000/ME/NT4.0
Vorwort Hinweise Installation Schnittstelle Was ist eine SPS? Aufbau S7-300 Beispielaufgabe Projekt Programm Testen
Seite 5 von 48
1 PC
2 STEP7
3 PC Adapter
4 S7-300
Vorwort Hinweise Installation Schnittstelle Was ist eine SPS? Aufbau S7-300 Beispielaufgabe Projekt Programm Testen
Seite 6 von 48
2. 2.1
HINWEISE ZUR PROGRAMMIERUNG DER SIMATIC S7-300 MIT STEP 7 AUTOMATISIERUNGSSYSTEM SIMATIC S7-300 Das Automatisierungssystem SIMATIC S7-300 ist ein modulares Kleinsteuerungssystem fr den
unteren und mittleren Leistungsbereich.
Es gibt ein umfassendes Baugruppenspektrum zur optimalen Anpassung an die
Automatisierungsaufgabe
Die S7-Steuerung besteht aus einer Stromversorgung, einer CPU und Ein- bzw.
Ausgangsbaugruppen (E/A-Baugruppen). Gegebenenfalls kommen noch
Kommunikationsprozessoren und Funktionsmodule fr spezielle Aufgaben wie z.B.
Schrittmotoransteuerung zum Einsatz.
Die Speicherprogrammierbare Steuerung (SPS) berwacht und steuert mit dem
S7- Programm eine Maschine oder einen Prozess. Die E/A-Baugruppen werden dabei im S7-
Programm ber die Eingangs- (E) und Ausgangsadressen (A) angesprochen.
Programmiert wird das System mit der Software STEP 7.
2.2
PROGRAMMIERSOFTWARE STEP 7 Die Software STEP 7 ist das Programmierwerkzeug fr die Automatisierungssysteme
SIMATIC S7-300
SIMATIC S7-400
SIMATIC WinAC
Mit STEP 7 knnen die folgenden Funktionen fr die Automatisierung einer Anlage genutzt werden:
Konfigurierung und Parametrierung der Hardware
Festlegung der Kommunikation
Programmierung
Test, Inbetriebnahme und Service
Dokumentation, Archivierung
Betriebs-/Diagnosefunktionen
Vorwort Hinweise Installation Schnittstelle Was ist eine SPS? Aufbau S7-300 Beispielaufgabe Projekt Programm Testen
Seite 7 von 48
3.
INSTALLATION DER SOFTWARE STEP 7 STEP 7 gibt es in drei Varianten: - STEP 7 Basisversion ermglicht den Einsatz von weiteren Optionspaketen wie S7- GRAPH oder S7- PLCSIM. Dieses Softwarepaket muss autorisiert werden. - STEP 7 Basis Software for Students beinhaltet das Optionspaket S7- PLCSIM. Dieses Softwarepaket muss autorisiert werden und ist dann 120 Tage lauffhig. - STEP 7 Mini als Einsteigerversion ohne Autorisierung. Hier knnen keine weiteren Optionspakete wie zum Beispiel S7- PLCSIM oder S7- GRAPH eingesetzt werden. STEP 7 wird auf CD-ROM ausgeliefert, wobei bei der Basisversion STEP 7 eine Diskette beiliegt,
die eine Autorisierung enthlt, die auf den PC bertragen werden muss und die Nutzung der
Basisversion von STEP 7 erst ermglicht.
Diese Autorisierung kann, um auf einem anderen PC genutzt zu werden, auch wieder auf die
Diskette zurckgeholt werden. Zum Thema Installation und bertragung der Autorisierungen sehen
Sie bitte auch Modul A2 Installation von STEP 7 V5.x / Handhabung der Autorisierung.
3.
Vorwort Hinweise Installation Schnittstelle Was ist eine SPS? Aufbau S7-300 Beispielaufgabe Projekt Programm Testen
Seite 8 von 48
4.
PROGRAMMIERSCHNITTSTELLE EINSTELLEN (PC- ADAPTER) Um vom PC oder PG aus eine SIMATIC S7-300 programmieren zu knnen, wird eine MPI-
Verbindung bentigt. MPI steht dabei fr Multi Point Interface (Mehrpunktfhige Schnittstelle) und ist
eine Kommunikationsschnittstelle fr bis zu 32 Teilnehmer, die zur Programmierung, zum
Bedienen & Beobachten mit HMI und zum Datenaustausch zwischen SIMATIC S7 CPUs verwendet
wird.
Jede CPU der SIMATIC S7-300 besitzt eine solche integrierte Schnittstelle.
Um den PC, das PG oder einen Laptop an MPI anzuschlieen gibt es verschiedene Mglichkeiten:
- Integrierter ISA- Kommunikationsprozessoren fr das PG
- ISA- Kommunikationsprozessoren fr den PC (z.B. MPI-ISA- Card)
- PCI- Kommunikationsprozessoren fr den PC (z.B. CP5611)
- PCMCIA- Kommunikationsprozessoren fr den Laptop (z.B. CP5511)
- Adapter fr die Kommunikation ber die serielle Schnittstelle des PC oder Laptop (z.B. PC-
Adapter) Hier wird nun in den folgenden Schritten die Einstellung und Parametrierung eines PC-Adapters fr einen PC beschrieben. 1. PG-PC-Schnittstelle einstellen aufrufen. ( Start SIMATIC Step7 PG-PCSchnittstelle einstellen)
Vorwort Hinweise Installation Schnittstelle Was ist eine SPS? Aufbau S7-300 Beispielaufgabe Projekt Programm Testen
Seite 9 von 48
2.
Die Baugruppe installieren die als MPI-Schnittstelle zur Verfgung steht. ( Installieren )
3.
Die gewnschte Baugruppe z.B. PC-Adapter auswhlen und installieren ( PC-Adapter (PC/MPI-Cable)Installieren).
Vorwort Hinweise Installation Schnittstelle Was ist eine SPS? Aufbau S7-300 Beispielaufgabe Projekt Programm Testen
Seite 10 von 48
4.
5.
Vorwort Hinweise Installation Schnittstelle Was ist eine SPS? Aufbau S7-300 Beispielaufgabe Projekt Programm Testen
Seite 11 von 48
6.
COM-Port
bertragungsgeschwindigkeit
Hinweis: Die berstragungsgeschwindigkeit muss auch an dem PC-Adapter passend eingestellt sein! Die PC-Adapter der alten Generation (sogenannte PC/MPI-Kabel) sind nur in der Lage eine langsamere bertragungsgeschwindigkeit von 19200 Bit/s zu verarbeiten. 7. MPI-Adresse, Timeout, bertragungsgeschwindigkeit und hchste Teilnehmeradresse festlegen.
Timeout!
Vorwort Hinweise Installation Schnittstelle Was ist eine SPS? Aufbau S7-300 Beispielaufgabe Projekt Programm Testen
Seite 12 von 48
9. Um die Einstellungen zu testen wird nun der SIMATIC Manager mit einem Doppelklick aufgerufen. ( SIMATIC Manager)
10. Dann wird der Stecker der von der MPI- Schnittstelle des PCs kommt auf die MPI- Schnittstelle der CPU gesteckt und die Spannungsversorgung der SPS eingeschaltet. Man findet die MPISchnittstelle in Form einer 9poligen D- Sub- Buchse hinter der Frontklappe der CPU.
11. Wenn man nun auf den Button Erreichbare Teilnehmer klickt, erscheint, wenn alle Parameter richtig gewhlt wurden, das folgende Bild mit einem Ordner fr die erreichte MPISchnittstelle. Dort steht auch die MPI-Adresse der CPU, die als Grundeinstellung 2 ist. ( )
Vorwort Hinweise Installation Schnittstelle Was ist eine SPS? Aufbau S7-300 Beispielaufgabe Projekt Programm Testen
Seite 13 von 48
5. 5.1
WAS IST EINE SPS UND WOFR WERDEN SPSEN VERWENDET? WAS BEDEUTET DER BEGRIFF SPS? SPS ist die Abkrzung fr Speicherprogrammierbare Steuerung. Dies beschreibt ein Gert das
einen Prozess ( z.B. eine Druckmaschine zum Drucken von Zeitungen, eine Abfllanlage zum
Abfllen von Zement, eine Presse zum Pressen von Kunststoffformteilen, etc ... ) steuert.
Dies geschieht entsprechend den Anweisungen eines Programms das in einem Speicher des
Gertes steht.
Programm geladen im Speicher der SPS......
Speicher
5.2
WIE STEUERT DIE SPS DEN PROZESS? Die SPS steuert den Prozess, indem sogenannte Aktoren von den als Ausgngen bezeichneten Anschlssen der SPS mit einer Steuerspannung von z.B. 24V beschaltet werden. Dadurch knnen Motoren ein- und ausgeschaltet, Ventile aus- und eingefahren oder Lampen ein- und ausgeschaltet werden.
M
Lampe leuchtet 24V Die Ausgnge der SPS steuern die Aktoren durch Schalten der Steuerspannung !
Ausgnge
0V SPS
Vorwort Hinweise Installation Schnittstelle Was ist eine SPS? Aufbau S7-300 Beispielaufgabe Projekt Programm Testen
Seite 14 von 48
5.3
WOHER BEKOMMT DIE SPS INFORMATIONEN BER PROZESSZUSTNDE? Informationen ber den Prozess erhlt die SPS von den sogenannten Signalgebern, die auf die Eingnge der SPS verdrahtet sind. Diese Signalgeber knnen z.B. Sensoren sein, die erkennen ob ein Werkstck an einer bestimmten Position liegt oder auch einfache Schalter oder Taster, die offen oder geschlossen sein knnen. Dabei wird noch zwischen ffnern, die unbettigt geschlossen, und Schlieern, die unbettigt offen sind, unterschieden. 24V Schalter geschlossen 24V Die Eingnge der SPS erfassen die Informationen ber Zustnde im Prozess !
Eingnge
0V SPS 24V
Schalter offen
5.4
WO LIEGT DER UNTERSCHIED ZWISCHEN FFNERN UND SCHLIEERN? Bei den Signalgebern wird zwischen ffnern und Schlieern unterschieden. Der hier gezeigte Schalter ist ein Schlieer, d.h. er ist genau dann geschlossen wenn er bettigt wurde.
Schlieer unbettigt
Schlieer offen
Schlieer bettigt
Schlieer geschlossen
Der hier gezeigte Schalter ist ein ffner, d.h. er ist genau dann geschlossen wenn er nicht bettigt wurde.
ffner unbettigt
ffner geschlossen
ffner bettigt
ffner offen
Vorwort Hinweise Installation Schnittstelle Was ist eine SPS? Aufbau S7-300 Beispielaufgabe Projekt Programm Testen
Seite 15 von 48
5.5
WIE SPRICHT DIE SPS EINZELNE EIN-/AUSGANGSSIGNALE AN? Die Angabe eines bestimmten Ein- oder Ausgangs innerhalb des Programms bezeichnet man als
Adressierung.
Die Ein- und Ausgnge der SPSen sind zumeist in 8er-Gruppen auf Digitaleingabe- bzw.
Digitalausgabebaugruppen zusammengefasst. Diese 8er- Einheit bezeichnet man als Byte. Jede
solche Gruppe erhlt eine Nummer als sogenannte Byteadresse.
Um nun einen einzelnen Ein- oder Ausgang innerhalb eines Bytes anzusprechen wird jedes Byte in
acht einzelne Bits zerlegt. Diese werden von Bit 0 bis Bit 7 durchnummeriert. So erhlt man die
Bitadresse.
Die hier dargestellte SPS hat nun die Eingangsbytes 0 und 1 sowie die Ausgangsbytes 4 und 5.
Um nun den z.B. fnften Eingang von oben anzusprechen gibt man die folgende Adresse an:
0.4
E kennzeichnet hier den Adresstyp als Eingang, 0 die Byteadresse und 4 die Bitadresse.
Byteadresse und Bitadresse sind immer durch einen Punkt getrennt. Hinweis: Fr die Bitadresse steht hier beim fnften Eingang eine 4, weil bei 0 begonnen wird zu zhlen.
Um nun den z.B. untersten Ausgang anzusprechen gibt man die folgende Adresse an:
5.7
A kennzeichnet hier den Adresstyp als Ausgang, 5 die Byteadresse und 7 die Bitadresse.
Byteadresse und Bitadresse sind immer durch einen Punkt getrennt. Hinweis: Fr die Bitadresse steht hier beim untersten Ausgang eine 7, weil bei 0 begonnen wird zu zhlen.
Vorwort Hinweise Installation Schnittstelle Was ist eine SPS? Aufbau S7-300 Beispielaufgabe Projekt Programm Testen
Seite 16 von 48
5.6
WIE WIRD IN DER SPS DAS PROGRAMM BEARBEITET? Die Programmbearbeitung in einer SPS geschieht zyklisch mit folgendem Ablauf: 1. Nachdem die SPS eingeschaltet wurde fragt der Prozessor, der praktisch das Gehirn der SPS darstellt, ab ob die einzelnen Eingnge Spannung fhren oder nicht. Dieser Status der Eingnge wird in dem Prozessabbild der Eingnge (PAE) gespeichert. Dabei wird fr die Spannung fhrenden Eingnge die Information 1 oder High, fr die keine Spannung fhrenden die Information 0 oder Low hinterlegt. 2. Dieser Prozessor arbeitet dann das im Programmspeicher hinterlegte Programm ab. Dies besteht aus einer Liste von logischen Verknpfungen und Anweisungen, die nacheinander abgearbeitet werden. Dabei wird fr die bentigte Eingangsinformation auf das bereits vorher eingelesene PAE zugegriffen wird und die Verknpfungsergebnisse in ein sogenanntes Prozessabbild der Ausgnge (PAA) geschrieben. Auch auf andere Speicherbereiche fr Zhler, Zeiten und Merker wird whrend der Programmbearbeitung gegebenenfalls vom Prozessor zugegriffen. 3. Im dritten Schritt wird nach Abarbeitung des Anwenderprogramms der Status aus dem PAA an die Ausgnge bertragen und diese ein- bzw. ausgeschaltet. Danach geht es weiter mit Punkt 1.. 1. Status der Eingnge im PAE speichern.
Programm der SPS im Programmspeicher 2. Abarbeiten des Programms Anweisung fr Anweisung mit Zugriff auf PAE und PAA, sowie Zeiten Zhler und Merker 1. Anweisung 2. Anweisung 3. Anweisung 4. Anweisung ...
letzte Anweisung
PAA
Hinweis: Die Zeit die der Prozessor fr diesen Ablauf bentigt nennt man Zykluszeit. Diese ist wiederum abhngig von Anzahl und Art der Anweisungen.
Vorwort Hinweise Installation Schnittstelle Was ist eine SPS? Aufbau S7-300 Beispielaufgabe Projekt Programm Testen
Seite 17 von 48
5.7
WIE SEHEN LOGISCHE VERKNPFUNGEN IM SPS- PROGRAMM AUS? Logische Verknpfungen werden dazu verwendet um Bedingungen fr das Schalten eines Ausgangs
festlegen zu knnen.
Im SPS- Programm knnen diese in den Programmiersprachen Kontaktplan (KOP), Funktionsplan
(FUP) oder Anweisungsliste (AWL) erstellt werden.
Der Anschaulichkeit halber wollen wir uns hier auf FUP beschrnken.
Es gibt eine Vielzahl verschiedener logischer Verknpfungen die in SPS- Programmen zur
Anwendung kommen knnen.
UND- sowie ODER- Verknpfung und die NEGATION eines Eingangs werden jedoch am hufigsten
verwendet und sollen deshalb hier kurz anhand von Beispielen erlutert werden.
Hinweis: Informationen zu weiteren logischen Verknpfungen knnen sehr schnell und bersichtlich
aus der Online- Hilfe bezogen werden.
5.7.1
UND- VERKNPFUNG Beispiel einer UND- Verknpfung: Eine Lampe soll leuchten, wenn gleichzeitig zwei Schalter als Schlieer bettigt sind. Schaltplan: 24V H1 S1 S2
M
Erluterung: Die Lampe leuchtet genau dann, wenn beide Schalter bettigt sind. Wenn also die Schalter S1 und S2 bettigt sind leuchtet die Lampe H1.
Vorwort Hinweise Installation Schnittstelle Was ist eine SPS? Aufbau S7-300 Beispielaufgabe Projekt Programm Testen
Seite 18 von 48
Eingnge
E 0.1
24V
Schalter S2
M
SPS
Ausgnge
A 4.0
UND- Verknpfung im FUP: Im Funktionsplan FUP wird die UND- Verknpfung durch bildliche Darstellung programmiert und sieht folgendermaen aus: Eingnge der UND-
Verknpfung.
Hier knnen auch mehr als 2 Eingnge stehen!
E 0.0 E 0.1
&
Bildliche Darstellung der logischen UNDVerknpfung!
A 4.0
=
Zuweisung des Ergebnisses der logischen Verknpfung!
Vorwort Hinweise Installation Schnittstelle Was ist eine SPS? Aufbau S7-300 Beispielaufgabe Projekt Programm Testen
Seite 19 von 48
5.7.2
ODER- VERKNPFUNG Beispiel einer ODER- Verknpfung: Eine Lampe soll leuchten, wenn einer oder beide von zwei Schaltern als Schlieer bettigt sind. Schaltplan: 24V S2 24V
S1
H1
M
Erluterung: Die Lampe leuchtet genau dann, wenn einer oder beide Schalter bettigt sind.
Wenn also der Schalter S1 oder S2 bettigt wird leuchtet die Lampe H1.
Beschaltung der SPS:
Um diese Logik in einem SPS- Programm umzusetzen, mssen natrlich beide Schalter an
Eingngen der SPS angeschlossen werden. Hier ist S1 an den Eingang E 0.0 und S2 an den
Eingang E 0.1 verdrahtet.
Auerdem muss die Lampe H1an einem Ausgang z.B. A 4.0 angeschlossen sein.
24V
Schalter S1 E 0.0
Eingnge
E 0.1
24V
Schalter S2
M
SPS
Ausgnge
A 4.0
Vorwort Hinweise Installation Schnittstelle Was ist eine SPS? Aufbau S7-300 Beispielaufgabe Projekt Programm Testen
Seite 20 von 48
ODER- Verknpfung im FUP: Im Funktionsplan FUP wird die ODER- Verknpfung durch bildliche Darstellung programmiert und sieht folgendermaen aus: Eingnge der ODER-
Verknpfung.
Hier knnen auch mehr als 2 Eingnge stehen!
E 0.0 E 0.1
>
Bildliche Darstellung der logischen ODERVerknpfung!
A 4.0
=
Zuweisung des Ergebnisses der logischen Verknpfung!
5.7.3
NEGATION In logischen Verknpfungen wird es fters bentigt abzufragen ob ein Schlieer NICHT bettigt
oder ob ein ffner bettigt wurde und somit keine Spannung an dem entsprechenden Eingang
anliegt.
Dies geschieht durch Programmierung einer Negation am Eingang der UND- bzw. ODER-
Verknpfung.
Im Funktionsplan FUP wird die Negation eines Eingangs an einer UND- Verknpfung durch die
folgende bildliche Darstellung programmiert:
Eingang der UND-
Verknpfung, der
negiert werden soll! Bildliche Darstellung der Negation!
E 0.0 E 0.1
&
A 4.0
Der Ausgang A 4.0 hat hier also genau dann Spannung anliegen, wenn E 0.0 nicht beschaltet und E 0.1 beschaltet ist.
Vorwort Hinweise Installation Schnittstelle Was ist eine SPS? Aufbau S7-300 Beispielaufgabe Projekt Programm Testen
Seite 21 von 48
5.8 SPS?
WIE WIRD DAS SPS- PROGRAMM ERSTELLT? WIE KOMMT ES IN DEN SPEICHER DER
Das SPS- Programm wird mit der Software STEP 7 auf einem PC erstellt und dort
zwischengespeichert.
Nachdem der PC mit der MPI- Schnittstelle der SPS verbunden wurde, kann das Programm mit
einer Lade- Funktion in den Speicher der SPS geladen werden.
1. SPSProgramm mit STEP 7 auf PC erstellen. PC mit STEP 7 2. PC mit MPISchnittstelle der SPS verbinden. 3. Programm von PC in Speicher der SPS laden. PC Adapter
SPS S7-300
Hinweis: Der genaue Ablauf wird Schritt fr Schritt in den Kapiteln 8 bis 10 beschrieben.
Vorwort Hinweise Installation Schnittstelle Was ist eine SPS? Aufbau S7-300 Beispielaufgabe Projekt Programm Testen
Seite 22 von 48
6.
AUFBAU UND BEDIENUNG DER SIMATIC S7-300 Baugruppenspektrum: Die SIMATIC S7-300 ist ein modulares Automatisierungssystem und bietet das folgende Baugruppenspektrum: Zentralbaugruppen (CPUs) mit unterschiedlicher Leistung, teilweise mit integrierten Ein /Ausgngen (z.B. CPU312IFM/CPU314IFM) oder integrierter PROFIBUS- Schnittstelle (z.B. CPU315-2DP) Stromversorgungsbaugruppen PS mit 2A, 5A oder 10A Erweiterungsbaugruppen IM fr mehrzeiligen Aufbau der SIMATIC S7-300 Signalbaugruppen SM fr digitale und analoge Ein- und Ausgnge Funktionsbaugruppen FM fr spezielle Funktionen (z.B. Schrittmotoransteuerung) Kommunikationsprozessoren CP fr Netzanbindung
Hinweis: Fr dieses Modul werden lediglich eine Stromversorgungsbaugruppe, eine beliebige CPU sowie eine Digitalein- und eine Digitalausgabebaugruppe bentigt.
Vorwort Hinweise Installation Schnittstelle Was ist eine SPS? Aufbau S7-300 Beispielaufgabe Projekt Programm Testen
Seite 23 von 48
MPI- Schnittstelle: Jede CPU besitzt eine MPI- Schnittstelle zum Anschluss der Programmierleitung (z.B. PC-Adapter). Diese befindet sich hinter einer Klappe an der Vorderseite der CPU. Betriebsartenschalter: Jede CPU besitzt einen Schlsselschalter zur Umschaltung der Betriebsarten. Je nach Stellung des Schlsselschalters sind bestimmte Programmier(PG)- Funktionen erlaubt. Folgende Betriebsarten sind mglich:
Vorwort Hinweise Installation Schnittstelle Was ist eine SPS? Aufbau S7-300 Beispielaufgabe Projekt Programm Testen
Seite 24 von 48
Urlschen: Urlschen lscht alle Anwenderdaten auf der CPU und sollte vor Beginn der Programmierung einmal durchgefhrt werden. Dies geschieht in den folgenden 3 Schritten:
Schritt
Ausfhrung
Drehen Sie den Schlssel in Stellung STOP. Drehen Sie den Schlssel in Stellung MRES und halten Sie ihn in dieser Stellung (ca. 3 Sekunden) bis die STOP- Anzeige wieder leuchtet Drehen Sie den Schlssel zurck in Stellung STOP und anschlieend innerhalb von 2 Sekunden erneut in Stellung MRES
Ergebnis
Anzeige STOP leuchtet
Die STOP-Anzeige erlischt und nach ca. 3 Sekunden leuchtet sie wieder Bei neunen CPUs warten bis die STOP-Anzeige zum zweitenmal aufleuchtet. Wichtig: Zwischen Schritt 2 und Schritt 3 drfen max. 3 Sekunden vergehen. Die STOP-Anzeige blinkt fr ca. 3 Sekunden und leuchtet danach wieder: alles o.k.; CPU ist urgelscht
Vorwort Hinweise Installation Schnittstelle Was ist eine SPS? Aufbau S7-300 Beispielaufgabe Projekt Programm Testen
Seite 25 von 48
7.
BEISPIELAUFGABE Fr unser erstes STEP 7- Programm soll eine einfache Aufgabe gelst werden. Eine Presse mit Schutzeinrichtung soll nur dann mit einem START- Taster S1 ausgelst werden,
wenn das Schutzgitter geschlossen ist. Dieser Zustand wird mit einem Sensor Schutzgitter BO
berwacht.
Ist dies der Fall wird ein 5/2 Wegeventil Y0 fr den Pressenzylinder genau 10 Sekunden
angesteuert damit eine Kunststoffform gepresst werden kann.
Aus Sicherheitsgrnden soll die Presse auch wieder hochfahren, wenn der Starttaster S1
losgelassen wird oder der Sensor Schutzgitter B0 nicht mehr anspricht.
Zuordnungsliste: Adresse E 0.0 E 0.1 A 4.0 Symbol B0 S1 Y0 Kommentar Sensor Schutzgitter Start- Taster 5/2 Wegeventil fr Pressenzylinder
5/2 Wegeventil steuert den Pressenzylinder. Der Zylinder ist genau so lange ausgefahren, wie der Ausgang Y0 angesteuert wird.
Vorwort Hinweise Installation Schnittstelle Was ist eine SPS? Aufbau S7-300 Beispielaufgabe Projekt Programm Testen
Seite 26 von 48
8.
STEP 7- PROJEKT ANLEGEN Die Dateiverwaltung erfolgt in STEP 7 mit dem SIMATIC Manager. Hier knnen z.B.
Programmbausteine kopiert oder zur Weiterbearbeitung mit anderen Werkzeugen durch Anklicken
mit der Maus aufgerufen werden. Die Bedienung entspricht den in WINDOWS
95/98/2000/ME/NT4.0 blichen Standards. (So hat man z.B. die Mglichkeit mit einem Klick der
rechten Maustaste das Auswahlmen zu jeder Komponente zu erhalten.
In den Ordnern SIMATIC 300 Station und CPU wird der Hardwareaufbau der SPS abgebildet.
Demzufolge ist ein solches Projekt auch immer hardwarespezifisch zu sehen.
In STEP 7 wird jedes Projekt in einer fest vorgegebenen Struktur angelegt. Die Programme sind in
den folgenden Verzeichnissen abgespeichert:
SIMATIC 300 Stationen: Hier werden die entsprechenden Hardwarekonfigurations 1 (Hardware/SC* )und CPU Daten abgespeichert. Quellen/SO* : Hier werden Quellen (z.B. SCL- Quellen) abgelegt, die durch bersetzen in ablauffhige Programme umgewandelt werden knnen.
1
Projekt: Dieses Verzeichnis enthlt die Hardware (z.B. SIMATIC 300 Stationen) und die Subnetze (z.B. MPI und PROFIBUS).
Bausteine/AP-off*1:
Hier werden die
Programmbausteine ( OB,
FB, FC, SFB, SFC, DB
etc. ) abgespeichert.
CPU: Hier wird das S7Programm und die vernetzten Verbindungspartner 1 (Verbindungen/CO* ) eingetragen.
S7-Programm: Hier werden die Anwenderprogramme 1 (Bausteine/AP-off* ), Symboltabellen 1 (Symbole/SY* ) und Quellen 1 (Quellen/SO* ) verwaltet.
Vorwort Hinweise Installation Schnittstelle Was ist eine SPS? Aufbau S7-300 Beispielaufgabe Projekt Programm Testen
Seite 27 von 48
Um ein Projekt unabhngig von der Hardwarekonfiguration zu erstellen gibt es jedoch die Mglichkeit ein Projekt anzulegen, dass diese Ordner nicht beinhaltet. Es hat dann die folgende Struktur: Projekt: Dieses Verzeichnis enthlt die Hardware (z.B. SIMATIC 300 Stationen) und die Subnetze (z.B. MPI und PROFIBUS).
Quellen/SO*1: Hier werden Quellen (z.B. SCL- Quellen) abgelegt, die durch bersetzen in ablauffhige Programme umgewandelt werden knnen.
Bausteine/AP-off*1:
Hier werden die
Programmbausteine ( OB,
FB, FC, SFB, SFC, DB
etc. ) abgespeichert.
Symbole/SY* : Hier werden die Symbollisten zur Symbolischen Adressierung gespeichert. S7-Programm: Hier werden die Anwenderprogramme 1 (Bausteine/AP-off* ), Symboltabellen 1 (Symbole/SY* ) und Quellen 1 (Quellen/SO* ) verwaltet.
Hinweis: Dieses Beispiel hier wird ohne Konfiguration der Hardware erstellt und somit knnen die Programme auf beliebige Konfigurationen der SIMATIC S7-300, S7-400 oder WinAC geladen werden. Lediglich die Adressen der Ein- und Ausgnge mssen von Fall zu Fall angepasst werden.
Vorwort Hinweise Installation Schnittstelle Was ist eine SPS? Aufbau S7-300 Beispielaufgabe Projekt Programm Testen
Seite 28 von 48
Folgende Schritte muss der Anwender ausfhren, um ein Projekt zu erstellen, in dem dann das Lsungsprogramm geschrieben werden kann. 1. Das zentrale Werkzeug in STEP 7 ist der SIMATIC Manager, der hier mit einem Doppelklick
2. STEP 7- Programme werden in Projekten verwaltet . Ein solches Projekt wird nun angelegt ( Datei Neu)
Vorwort Hinweise Installation Schnittstelle Was ist eine SPS? Aufbau S7-300 Beispielaufgabe Projekt Programm Testen
Seite 29 von 48
3.
Dem Projekt wird nun der Name startup gegeben. ( startup OK)
4. In dem Projekt startup wird dann ein neues S7-Programm eingefgt. ( startup Einfgen Programm S7-Programm)
Vorwort Hinweise Installation Schnittstelle Was ist eine SPS? Aufbau S7-300 Beispielaufgabe Projekt Programm Testen
Seite 30 von 48
5. Der Programmablauf wird in STEP 7 in sogenannten Bausteine geschrieben. Standardmig ist bereits der Organisationsbaustein OB1 vorhanden. Dieser stellt die Schnittstelle zum Betriebssystem der CPU dar und wird automatisch von diesem aufgerufen und zyklisch bearbeitet. Von diesem Organisationsbaustein aus knnen wiederum zur strukturierten Programmierung weitere Bausteine wie z.B. die Funktion FC1 aufgerufen werden. Dies dient dazu um eine Gesamtaufgabe in Teilprobleme zu zerlegen. Diese sind dann einfacher zu lsen und in ihrer Funktionalitt zu testen.
Organisationsbaustein OB1 Zyklisch vom Betriebssystem aufgerufener Baustein. Hier steht der Aufruf der Funktion FC1 CALL FC1 Funktion FC1 Beinhaltet in diesem Beispiel das eigentliche Programm fr die Pressen steuerung. Wird vom OB1 aufgerufen.
Vorwort Hinweise Installation Schnittstelle Was ist eine SPS? Aufbau S7-300 Beispielaufgabe Projekt Programm Testen
Seite 31 von 48
6.
Um einen weiteren Baustein FC1 in das Projekt einzufgen muss der Ordner Bausteine markiert werden. ( Bausteine)
Vorwort Hinweise Installation Schnittstelle Was ist eine SPS? Aufbau S7-300 Beispielaufgabe Projekt Programm Testen
Seite 32 von 48
7. Der S7- Baustein Funktion wird nun in den Ordner Bausteine eingefgt. ( Einfgen S7 Baustein Funktion)
8. Nun kann der Name der Funktion gewhlt und noch weitere Eintrge zur Bausteindokumentation vorgenommen werden. ( FC1 OK)
Vorwort Hinweise Installation Schnittstelle Was ist eine SPS? Aufbau S7-300 Beispielaufgabe Projekt Programm Testen
Seite 33 von 48
9. Im SIMATIC Manager stehen nun die beiden Bausteine OB1 und FC1 zur weiteren Programmierung zur Verfgung.
Vorwort Hinweise Installation Schnittstelle Was ist eine SPS? Aufbau S7-300 Beispielaufgabe Projekt Programm Testen
Seite 34 von 48
Home
Automatisierungs und Antriebstechnik- SCE
9.
STEP 7- PROGRAMM SCHREIBEN IN FUNKTIONSPLAN FUP Eine der Mglichkeiten ein STEP 7 Programm zu erstellen ist der Funktionsplan FUP, eine bildliche Darstellung der Steuerungsaufgabe durch Symbole mit Funktionskennzeichen. Auf der linken Seite des Symbols werden die Eingnge, auf der rechten Seite die Ausgnge angeordnet. 1. Als erster Baustein soll hier die Funktion FC1 bearbeitet werden. Dazu wird diese im SIMATIC Manager durch Doppelklick geffnet ( FC1)
Vorwort Hinweise Installation Schnittstelle Was ist eine SPS? Aufbau S7-300 Beispielaufgabe Projekt Programm Testen
Seite 35 von 48
2. In dem nun geffneten Editor KOP/FUP/AWL wird dann auf die Ansicht fr die Programmiersprache Funktionsplan FUP umgestellt.( Ansicht FUP)
Vorwort Hinweise Installation Schnittstelle Was ist eine SPS? Aufbau S7-300 Beispielaufgabe Projekt Programm Testen
Seite 36 von 48
3. Die Programmieroberflche fr die Programmierung im Funktionsplan (FUP) sieht dann folgendermaen aus: Hufig verwendete Befehle wie UND- Box, ODER- Box, Zuweisung, Binrer Eingang, Binren Eingang negieren, T-Abzweig, Verbindung ! Neues Netzwerk Baustein in einfgen ! CPU laden ! Katalog smtlicher Programmelemente
Baustein speichern !
Programmelemente knnen per DRAG and DROP mit der Maus in das Netzwerk geschoben werden.
Sie mssen dann nur noch mit den
richtigen Operanden versorgt werden !
Hinweis: Die Programme in den STEP 7- Bausteinen werden in einzelnen Netzwerken programmiert. Dadurch ergibt sich die Mglichkeit einer weiteren Strukturierung und der verbesserten Dokumentation in den Netzwerkberschriften.
Vorwort Hinweise Installation Schnittstelle Was ist eine SPS? Aufbau S7-300 Beispielaufgabe Projekt Programm Testen
Seite 37 von 48
4. Fr unser Beispiel bentigen wir einen Timer als Impuls. Dieser heit in STEP 7 S_IMPULS und kann in dem Katalog unter dem Punkt Zeiten.( Zeiten S_IMPULS)
Hinweis: Wenn eine Operation angewhlt wurde ist in der Fuzeile des Katalogs eine Kurzinformation zu dieser Operation angegeben.
Vorwort Hinweise Installation Schnittstelle Was ist eine SPS? Aufbau S7-300 Beispielaufgabe Projekt Programm Testen
Seite 38 von 48
5.
Fr eine genaue Beschreibung jeder Operation steht unter dem Symbol ? die Online-Hilfe zur Verfgung. Diese ist umfassend und erklrt jeden Befehl mit einem ausfhrlichen Beispiel. ( ?)
Hinweis: Die Zeit als Impuls S_IMPULS, die hier eingesetzt wird, gibt genau so lange wie die Zeitvorgabe ist und am Setzeingang S eine 1 ansteht, am Ausgang Q eine 1 aus. Ist die bei TW vorgegebene Zeit abgelaufen oder der Signalpegel am Setzeingang S wieder 0, so steht am Ausgang Q wieder eine0 an.
Vorwort Hinweise Installation Schnittstelle Was ist eine SPS? Aufbau S7-300 Beispielaufgabe Projekt Programm Testen
Seite 39 von 48
6. Die Operation S_IMPULS wird nun in das erste Netzwerk eingefgt, indem diese im Katalog angeklickt, die Maustaste festgehalten und dann im Netzwerk wieder losgelassen wird.( S_IMPULS)
Vorwort Hinweise Installation Schnittstelle Was ist eine SPS? Aufbau S7-300 Beispielaufgabe Projekt Programm Testen
Seite 40 von 48
7. Hufig bentigte Operationen wie z.B. die UND- Verknpfung findet man in der Menleiste. Diese wird eingefgt, indem zuerst auf den Eingang S am Timer und dann auf das Symbol geklickt wird ( S )
Vorwort Hinweise Installation Schnittstelle Was ist eine SPS? Aufbau S7-300 Beispielaufgabe Projekt Programm Testen
Seite 41 von 48
8. Nun muss der Timer noch mit T1 benannt werden und der Zeitwert von 10 Sekunden in dem S5Time- Format S5t#10s eingetragen werden. Auerdem werden die Eingnge E 0.0 und E 0.1 an der UND- Verknpfung eingetragen sowie das Netzwerk und der Baustein Kommentiert. ( T1 S5T#10s E0.0 E0.1 Kommentare)
Hinweis: Um einem Timer eine Zeit vorzugeben muss die folgende Syntax eingehalten werden:
S5T# 10s
Dabei gibt S5T# einfach das Format vor und dahinter kann direkt die Zeit (hier 10 Sekunden) eingegeben werden. Es knnen auch Millisekunden (MS), Minuten (M) und Stunden (H) vorgegeben werden. Diese Einheiten knnen auch gemeinsam (z.B. S5T#3M_3S) angegeben werden.
Vorwort Hinweise Installation Schnittstelle Was ist eine SPS? Aufbau S7-300 Beispielaufgabe Projekt Programm Testen
Seite 42 von 48
9. Als nchstes wird ein weiteres Netzwerk eingetragen, indem im Men auf das Symbol geklickt wird. ( )
Vorwort Hinweise Installation Schnittstelle Was ist eine SPS? Aufbau S7-300 Beispielaufgabe Projekt Programm Testen
Seite 43 von 48
11. Die Zuweisung soll hier fr den Ausgang A4.0 gelten und erfolgen solange der Timer T1 High- Signal hat. Diese beiden Operanden mssen jetzt noch eingefgt werden, bevor der FC1 gespeichert ) und in die SPS geladen werden kann. ( A4.0 T1
Hinweis:
Das Editor-Programm KOP/AWL/FUP nicht schliessen. Entweder in der Fuzeile auf den SIMATIC Manager umschalten ( Punkt 12 ) oder ber die Funktion FFNEN den OB1 aufrufen.
12. Zum Programmieren des FC- Aufrufs wird der OB1 im SIMATIC Manager mit Doppelklick geffnet ( SIMATIC Manager OB1)
Vorwort Hinweise Installation Schnittstelle Was ist eine SPS? Aufbau S7 300 Beispielaufgabe Projekt Programm Testen
Seite 44 von 48
13. Die Eigenschaften des OB1 werden beibehalten und mit OK bernommen ( OK)
14. Im Editor KOP/FUP/AWL wird dann auf die Ansicht fr die Programmiersprache Funktionsplan FUP umgestellt.( Ansicht FUP)
Vorwort Hinweise Installation Schnittstelle Was ist eine SPS? Aufbau S7-300 Beispielaufgabe Projekt Programm Testen
Seite 45 von 48
15. Aus dem Katalog kann hier unter dem Punkt FC Bausteine der FC1 per Doppelklick mit der Maus in Netzwerk1 vom OB1 eingetragen werden. Dann wird der OB1 gespeichert die SPS geladen . ( FC Bausteine FC1 ) und in
Vorwort Hinweise Installation Schnittstelle Was ist eine SPS? Aufbau S7-300 Beispielaufgabe Projekt Programm Testen
Seite 46 von 48
10.
STEP 7- PROGRAMM IN DER CPU TESTEN 1. Um das Programm im FC1 beobachten zu knnen muss in dem Editor KOP/FUP/AWL auf das Fenster vom FC1 umgeschaltet werden. ( Fenster FC1)
Vorwort Hinweise Installation Schnittstelle Was ist eine SPS? Aufbau S7-300 Beispielaufgabe Projekt Programm Testen
Seite 47 von 48
2. Durch einen Mausklick auf das Brillensymbol kann das Programm im FC1 nun beobachtet werden. Der Ablauf des Timers wird dann ebenso dargestellt wie der Signalzustand der Ein- und Ausgnge. ( )
Vorwort Hinweise Installation Schnittstelle Was ist eine SPS? Aufbau S7-300 Beispielaufgabe Projekt Programm Testen
Seite 48 von 48
Aufbau
Netz teil CPU Baugruppe Ausgabe Feldbus Eingabe Baugruppe Baugruoppe Baugruppe
Baugruppentrger
Programmierschnittstelle
Feldbusanschluss Profibus DP
CPU Baugruppe Programmspeicher: Steuerwerk Merker Variable Prozessabbild E/A Akku Zeitglieder/Zhler Bussystem Feldbussystem RAM batteriegepuffert oder PROM/ EPROM/ EEPROM/ FLASH
verschieden leistungsfhige Prozessoren,ASICs,Mikrocontroller
Speicher, in denen Signalzustnde zwischengespeichert werden
Speicher, in denen Signalzustnde zwischengespeichert werden
Speicherbereich zum Zwischenspeichern aller binren Ein, Ausgnge
Register zur Durchfhrung arithmetische und logischer Operationen
Speicher, in denen Zhlerzustnde und Zeitzustnde zwischengespeichert werden
Sammelleitungen zum Datenaustausch zwischen den einzelnen Einheiten
Zweidrahtanschluss fr externe Komponenten
Baugruppen
Digitale Eingnge 5/12/24 V DC, 100/220/240 V AC, 50/60 Hz, galvanisch entkoppelt
-Digitale Ausgnge 5/12/24 V DC, 100/220/240 V AC, 50/60 Hz, Transistor, Triac, Relais, galvanisch
entkoppelt Analoge Eingnge -10/+10V, -20/+20 mA, 4..20 mA, 0..20 mA, 12 Bit Analoge Ausgnge -10/+10V, -20/+20 mA, 4..20 mA, 0..20 mA, 12 Bit Regler Modems Serielle Schnittstellen Sprachausgabe Interrupteingnge Drucker-Interface Kommunikation CAN Positioniereinrichtung Zhler Zeitgeber
__________________________________________________________________________________
F. Graf 11.05.02
Step 7 (Siemens) wird als ein an die IEC 1131 angelehntes Programmiersystem klassifiziert.
Matsushita FPWIN Pro ist zertifiziert
ST
U E 32.0 U E 32.1
= A 32.0
&
__________________________________________________________________________________
F. Graf 11.05.02
Adressierung
BIT
BYTE
WORT
DOPPELWORT
Am Beispiel Eingang
E EB EW ED Adresse Bit 31 76543210 32.0 32 32 32 32 76543210 76543210 E 32.0 EB 32 MSB EW32 High Byte ED 32 Adressen bei der S7 33 76543210 34 76543210 35 76543210 36 76543210
__________________________________________________________________________________
F. Graf 11.05.02
PS CPU IM Ein-/ Ausgnge knnen mit dem Schlsselwort AT als Variable deklariert werden, z.B. VAR
Taster END_TYPE
Zeichen % I Q M Kein X B W D L .x Bedeutung
einleitendes Zeichen
Eingang
Ausgang
Merker
Bit
Bit (optional)
Byte
Wort
Doppelwort
Langwort
hierarchische Adresse
: BOOL AT %IX32.3
(*Symbolische Variable*)
__________________________________________________________________________________
F. Graf 11.05.02
X X X
X X X X
X X
X X X X X X X X X X X
VKE: Verknpfungsergebnis Erstabfrage Logische Operatoren IEC 1131 AND AND( ANDN ANDN( OR OR( ORN ORN( XOR XOR( XORN XORN( LD LDN ST STN UND-Verknpfung
UND-Verknpfung
UND-NICHT-Verknpfung (AND NOT)
UND-NICHT-Verknpfung (AND NOT)
ODER-Verknpfung
ODER-Verknpfung
UND-NICHT-Verknpfung (OR NOT)
UND-NICHT-Verknpfung (OR NOT)
EXCLUSIV-ODER-Verknpfung (EXCLUSIVE OR)
EXCLUSIV-ODER-Verknpfung (EXCLUSIVE OR)
EXCLUSIV-ODER-NICHT-Verknpfung (EXCLUSIVE OR NOT)
EXCLUSIV-ODER-NICHT-Verknpfung (EXCLUSIVE OR NOT)
Lade Akkumulator
Lade Akkumulator invertiert
Speichere Akkumulator (Store)
Speichere negiert (Store NOT)
__________________________________________________________________________________
F. Graf 11.05.02
Software S7
overflow
Reaktion
PAA an Ausgnge
Prozeabbild
einmalige Aktualisierung bei jedem Zyklus keine nderung whrend des Zyklus dadurch hohe Sicherheit synchrone Programmierung mit konstanter Zykluszeit Eingnge an PAE
Steuerungsprogramm abarbeiten alle Zugriffe auf Ein- und Ausgnge geschehen im Prozeabbild
Betriebssystem
Beispiele:
__________________________________________________________________________________
F. Graf 11.05.02
Automatisierungssysteme Kapitel 3: SPS Seite: 7 ______________________________________________________________________________ Beispiel: UND zwischen ODER E 32.0 E 32.2 A 32.0
+---] [---+---] [---+---------+---------+---------+---------+---------+--( )-
E 32.1 E 32.3
+---] [---+---] [---+
:U(
:O :O :) :U(
:O :O :) := :BE
E 32.0 E 32.1 E 32.2 E 32.3 A 32.0
01
01
01
01
01
01
Flankenbefehle S7
FP FN Achtung: Bit Bit Bit wird intern bentigt Bit darf nirgends sonst verwendet werden
__________________________________________________________________________________
F. Graf 11.05.02
__________________________________________________________________________________
F. Graf 11.05.02
Zustandsmaschinen mit RS FF
Zustandsgraf Start
Reaktion
Mit RS FF Reset
M(n+1) Ein (Flanke) M(n-1) Automatikbetrieb Weiterschaltbedingung Handbetrieb & >1 &
>1
M(n)
>1 S
__________________________________________________________________________________
F. Graf 11.05.02
rot
T0
Reset
M(0)
gelb
T1
Reset
M(1)
T2
weiter
rot
__________________________________________________________________________________
F. Graf 11.05.02
alt
T AW2
High
Low
AW0
Beispiel: Zeitwert
S5
L KT 686.2
L KF
L KM
L EW
L AW
L MW
S7
L S5T#1H54M20S0MS
L EW
L AW
L DBW
L MW
L LW
Darstellung:
Akku1
31 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 X X X X X X X X X X X X X X X X X X b b h h h h z z z z e e e e Einer: Zehner: Hunderter: Basis: eeee zzzz hhhh bb 00 0,01 01 0,1 10 11 1 10
Timer S7
Abfrage Timer
U/UN O/ON X/XN Tn Tn Tn
Zeitoperationen
sechs Zeitoperationen: Sl Impuls, SV Verlngerter Impuls, SE Einschaltverzgerung, SS Speichernde Einschaltverzgerung, SA Ausschaltverzgerung und R Rcksetzen einer Zeit Operation SI Operand VKE ab. T J VKE be. N VKE bg. J Beschreibung Eine Zeit (im AKKU 1 hinterlegt) als Impuls starten (Signalbegrenzung und verlngerung) SV T J N J Eine Zeit (im AKKU 1 hinterlegt) als verlngerten Impuls starten (Signalbegrenzung und -verlngerung) SE SS SA R T T T T J J J J N N N N J J J J Eine Zeit (im AKKU 1 hinterlegt) als einschaltverzogert starten Eine Zeit (im AKKU 1 hinterlegt) speichernd einschaltverzgernd starten Eine Zeit (im AKKU 1 hinterlegt) ausschaltverzgernd starten Eine Zeit rcksetzen
Zeitoperationen
t __________________________________________________________________________________
F. Graf 11.05.02
Beispiele:
Ein und Ausschaltverzgerung kombiniert Taktgenerator mit zwei Timern Taktgenerator mit einem Timer
__________________________________________________________________________________
F. Graf 11.05.02
Zhler S7
Abfrage Zhler
U/UN O/ON X/XN Zn Zn Zn
Zhleroperationen
vier Zhloperationen: ZV ZR S R Vorwrtszhlen eines Zhlers
Rckwrtszhlen
Setzen eines Zhlers
Rcksetzen eines Zhlers
Operand Z Z Z Z VKE ab. J J J J VKE be. N N N N VKE bg. Beschreibung J J J J Zhler zhlt um 1 vorwrts Zhler zhlt um 1 rckwrts Zhler auf Wert von Akku1 setzen Zhler rcksetzen
Operation ZV ZR S R
Zhlerwert laden
S5
L KZ 888
L KF
L KM
L EW
L AW
L MW
S7
L C#888
L EW
L AW
L DBW
L MW
L LW
Darstellung:
Akku1
31 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 X X X X X X X X X X X X X X X X X X X X h h h h z z z z e e e e Einer: Zehner: Hunderter: eeee zzzz hhhh
__________________________________________________________________________________
F. Graf 11.05.02
__________________________________________________________________________________
F. Graf 11.05.02
Arithmetische Operationen S5
Operation +F Operand VKE ab. N VKE be. N VKE bg. Beschreibung N Addieren Der Inhalt von Akku 1 und der Inhalt von Akku 2 werden addiert, das Ergebnis steht in Akku1 (Akku1=Akku2+Akku1) N Subtrahieren Der Inhalt von Akku 1 wird vom Inhalt von Akku 2 werden subtrahiert, das Ergebnis steht in Akku 1(Akku1=Akku2-Akku1)
-F
S7
Seite 104 117 in Handbuch Operationsliste
Trigonometrische Funktionen
Logarithmus
Addition mit Konstanten
Vergleichsoperationen S5
Operation !=F ><F >F >=F <F <=F Operand VKE ab. N N N N N N VKE be. J J J J J J VKE bg. Beschreibung N Vergleich auf gleich VKE=1 falls Akku2=Akku1 N Vergleich auf ungleich VKE=1 falls Akku2Akku1 N Vergleich auf grer VKE=1 falls Akku2>Akku1 N Vergleich auf grer gleich VKE=1 falls Akku2Akku1 N Vergleich auf kleiner VKE=1 falls Akku2<Akku1 N Vergleich auf kleiner gleich VKE=1 falls Akku2Akku1
S7
Seite 118 123 in Handbuch Operationsliste Beispiele: Zhler Komparator Zustandsmaschinen mit Zhlern (einfache Ampel)
Zusammengesetzte Datentypen S7
DT STRING ARRAY STRUCT 64 2032 max DT#00-06-13-12:55:13.333
Strings sind Text
wie in C
wie in C
Date and Time maximal 254 Zeichen maximal 6 Dimensionen unterschiedliche Typen
__________________________________________________________________________________
F. Graf 11.05.02
Sprungbefehle
__________________________________________________________________________________ F. Graf 11.05.02
VKE=1
VKE=1, VKE->BIE
VKE=0
VKE=0, VKE->BIE
BIE=1
BIE=0
do while (--Akku1) {}
Sprungverteiler
Springe < 0
Springe <= 0
Sprine <> 0
Springe Overflow
Springe > 0
Springe >= 0
Springe OS=1
Springe Ungltig
Springe = 0
Beispiel:
U SPB mark ende :NOP E mark
1
32.0
L W#16#FFFF
:T AW 0
LOOP ende
Bausteinbefehle
S7 CALL FC/FB
CC nur ohne Parameter
UC nur ohne Parameter
AUF DBx
IEC Funktionsbausteine
Bistabile Funktionsbausteine
SR
E_SR
RS
E_RS
Flankenerkennung
R_TRIG
E_R_TRIG
F_TRIG
E_F_TRIG
Zhler
CTU
E_CTU
S5
SPB FB/SB/PB
SPA
A DBx
__________________________________________________________________________________
F. Graf 11.05.02
END_ORGANIZATION_BLOCK
FUNCTION FC1
TITLE = <Beschreibung der FC>
AUTHOR: Graf
FAMILY: Vorlesun
NAME: Beispiel
VERSION: 1.0
VAR_INPUT
Sum1:INT
Sum2:INT
END_VAR
VAR_OUTPUT
Summe:INT
END_VAR
VAR_IN_OUT
END_VAR
VAR_TEMP
END_VAR
BEGIN
NETWORK //Nr.:1
TITLE = <berschrift von Netzwerk>
L #Sum1
L #Sum2
__________________________________________________________________________________
F. Graf 11.05.02
Es existieren 2 Adressregister AR1, AR2 LAR1 TAR1 Akku1 -> AR1 AR1 -> Akku1
31 Akku 1 Akku 2
31 AR 1 AR 2
15
Automatisierungssysteme Kapitel 3: SPS Seite: 23 ______________________________________________________________________________ Indirekte Adressierung: Beispiel Datenbaustein DATA_BLOCK DB1
TITLE = <Beschreibung des DBs>
AUTHOR: MHJTW
FAMILY: nb
NAME: nb
VERSION: 1.0
STRUCT
Teile:ARRAY [0..9] of STRUCT
Nummer:INT
Laenge:REAL
end_struct
END_STRUCT
BEGIN
Teile[0].Nummer:=1
Teile[0].Laenge:=1.210000e+01
Teile[1].Nummer:=2
Teile[1].Laenge:=1.210000e+01
Teile[2].Nummer:=3
Teile[2].Laenge:=1.210000e+01
Teile[3].Nummer:=4
Teile[3].Laenge:=1.210000e+01
Teile[4].Nummer:=5
Teile[4].Laenge:=1.210000e+01
Teile[5].Nummer:=6
Teile[5].Laenge:=1.210000e+01
Teile[6].Nummer:=7
Teile[6].Laenge:=1.210000e+01
Teile[7].Nummer:=8
Teile[7].Laenge:=1.210000e+01
Teile[8].Nummer:=9
Teile[8].Laenge:=1.210000e+01
Teile[9].Nummer:=10
Teile[9].Laenge:=1.210000e+01
END_DATA_BLOCK
L DBB [AR1,P#0.0] Lade Byte aus Datenbaustein mit Adresse AR1+P
Beispiel: Alle Minute soll ein Vorgang (Abschneiden, Stanzen) ausgelst werden. Es sollen 10 verschiedene Wekstcke gefertigt werden. Die Zuordnung soll ber einen Datenbaustein mit Nummer und Lnge erfolgen.
__________________________________________________________________________________
F. Graf 11.05.02
__________________________________________________________________________________
F. Graf 11.05.02
Sollwert
y(t) = KPR ( e(t) + KPR:
Istwert
1 de(t) e(t) dt + TV ) TN dt
Proportionalbeiwert
1 Ki = TN KPR KD TV = KPR
KPR e t TN
Reglerbausteine:
FB41 FB42 FB43
kontinuierlicher Regler
Schrittregler
__________________________________________________________________________________
F. Graf 11.05.02
Automatisierungssysteme Kapitel 3: SPS Seite: 26 ______________________________________________________________________________ Einbinden des PID Regler unter Simatic Manager
__________________________________________________________________________________
F. Graf 11.05.02
Automatisierungssysteme Kapitel 3: SPS Seite: 27 ______________________________________________________________________________ Aufruf durch call fb41, db41 (fb41 und db41 drfen nicht existieren)
CALL "CONT_C" , DB41 COM_RST := MAN_ON :=FALSE PVPER_ON:=TRUE P_SEL :=TRUE I_SEL :=TRUE INT_HOLD:= I_ITL_ON:= D_SEL :=TRUE CYCLE :=T#100MS SP_INT :=MD60 PV_IN := PV_PER :=PEW128 MAN := GAIN :=1.000000e+000 TI :=T#500MS TD :=T#200MS TM_LAG :=T#50MS DEADB_W := LMN_HLM :=5.923000e+001 LMN_LLM :=0.000000e+000 PV_FAC := PV_OFF := LMN_FAC :=1.000000e+000 LMN_OFF := I_ITLVAL:= DISV := LMN :=MD28 LMN_PER :=PAW256 QLMN_HLM:= QLMN_LLM:= LMN_P :=MD8 LMN_I :=MD12 LMN_D :=MD16 PV :=MD20 ER :=
//Stellwert Temperatur
__________________________________________________________________________________
F. Graf 11.05.02
Ausbildungsunterlage fr die durchgngige Automatisierungslsung Totally Integrated Automation (T I A) ANHANG C Grundlegende Programmierbefehle KOP/FUP/AWL in STEP 7
Seite 1 von 32
Diese Unterlage wurde von Siemens A&D FEA (Automatisierungs und Antriebstechnik Forschungs, Entwicklungs und Ausbildungssttten) zu Ausbildungszwecken erstellt. Siemens bernimmt bezglich des Inhalts keine Gewhr. Weitergabe sowie Vervielfltigung dieser Unterlage, Verwertung und Mitteilung ihres Inhalts ist innerhalb ffentlicher Aus- und Weiterbildungssttten gestattet. Ausnahmen bedrfen der schriftlichen Genehmigung durch Siemens A&D FEA ( Hr. Knust: E-Mail: michael.knust@hvr.siemens.de). Zuwiderhandlungen verpflichten zu Schadensersatz. Alle Rechte auch der bersetzung sind vorbehalten, insbesondere fr den Fall der Patentierung oder GM-Eintragung. Wir danken der Fa. Michael Dziallas Engineering und den Lehrkrften von beruflichen Schulen sowie weiteren Personen fr die Untersttzung bei der Erstellung der Unterlage.
Seite 2 von 32
SEITE: 1. 2. 2.1 2.2 2.3 2.4 2.5 2.6 2.7 2.8 2.9 2.9.1 2.9.2 2.10 2.10.1 2.10.2 2.11 2.11.1 2.11.2 2.11.3 2.11.4 2.11.5 2.11.6 2.11.7 2.11.8 2.11.9 2.11.10 2.11.11 2.12 Vorwort ................................................................................................................. Grundlegende Programmierbefehle .................................................................. Zuweisung.............................................................................................................. UND - Verknpfung ............................................................................................... ODER - Verknpfung............................................................................................. UND - vor ODER - Verknpfung............................................................................ ODER - vor UND - Verknpfung............................................................................ Abfrage auf Signalzustand 0.................................................................................. Exklusiv - ODER - Verknpfung ............................................................................ Abfrage von Ausgngen ........................................................................................ R- S - Speicherfunktionen...................................................................................... Vorrangiges Zurcksetzen..................................................................................... Vorrangiges Setzen ............................................................................................... Flankenoperationen............................................................................................. Steigende Flanke (FP)........................................................................................... Fallende Flanke (FN) ............................................................................................. Zeitfunktionen ...................................................................................................... Zeit freigeben (FR) nur in AWL.............................................................................. Zeit starten (SI/SV/SE/SS/SA)............................................................................... Zeitwert - Vorgabe (TW) ........................................................................................ Zeit rcksetzen (R) ................................................................................................ Zeitwert abfragen (L/LC)........................................................................................ Signalzustand der Zeit binr abfragen (Q) ............................................................ Zeit als Impuls (SI) ................................................................................................. Verlngerter Impuls (SV) ....................................................................................... Einschaltverzgerung (SE) .................................................................................... Speichernde Einschaltverzgerung (SS)............................................................... Ausschaltverzgerung (SA) ................................................................................... Taktgeber.............................................................................................................. 5 6 6 6 7 7 8 9 9 10 10 11 11 12 12 13 14 14 14 15 15 15 16 16 17 18 19 20 21
Seite 3 von 32
SEITE: 2.13 2.13.1 2.13.2 2.13.3 2.13.4 2.13.5 2.13.6 2.13.7 2.13.8 2.14 2.15 2.16 2.16.1 2.16.2 2.16.3 2.16.4 2.16.5 2.16.6 2.17 2.17.1 2.17.2 2.17.3 2.18 2.18.1 2.19 2.19.1 2.19.2 2.19.3 2.19.4 Zhloperationen ................................................................................................... Zhler freigeben (FR) nur in AWL ......................................................................... Vorwrtszhlen (ZV) .............................................................................................. Rckwrtszhlen (ZR) ........................................................................................... Zhler setzen (S) ................................................................................................... Zhlwert - Vorgabe (ZW) ....................................................................................... Zhler rcksetzen (R) ............................................................................................ Zhlwert abfragen (L/LC)....................................................................................... Signalzustand des Zhlers binr abfragen (Q)...................................................... Lade- und Transferoperationen (L/T) nur in AWL ............................................ Vergleichsfunktionen .......................................................................................... Programmorganisation ....................................................................................... Bausteinaufruf (CALL) ........................................................................................... Konditionierter Bausteinaufruf (CC)....................................................................... Unkonditionierter Bausteinaufruf (UC)................................................................... Datenbaustein aufschlagen (AUF) ........................................................................ Bausteinende bedingt (BEB) nur in AWL .............................................................. Bausteinende absolut (BEA) nur in AWL............................................................... Sprungoperationen.............................................................................................. Springe absolut (SPA) ........................................................................................... Springe bedingt (SPB/SPBN) ................................................................................ Programmschleife (LOOP) nur in AWL ................................................................. Nulloperationen.................................................................................................... Nulloperation 0/1 (NOP0/NOP1) nur in AWL......................................................... Bearbeitung des VKE .......................................................................................... Negieren des VKE (NOT) nur in AW72 ................................................................. Setzen des VKE (SET) nur in A72......................................................................... Rcksetzen des VKE (CLR) nur 72 AWL .............................................................. Sichern des VKE (SAVE) nur in 72L ..................................................................... 22 22 22 22 23 23 23 23 24 25 26 27 27 27 28 28 28 29 30 30 30 31 31 31 32 32 32 32 32
Seite 4 von 32
1.
VORWORT Anhang C wird bei der Bearbeitung smtlicher Module bentigt. Grundlagen der STEP 7- Programmierung 2 - 3 Tage Modul 1-7
Der Leser erhlt mit diesem Anhang eine Sammlung der wichtigsten Programmierbefehle, die zur Lsung der Programmieraufgaben in den Modulen 1-26 bentigt werden.
Voraussetzungen: Damit die Befehle und die Programmierweise verstanden werden kann wird folgendes Wissen vorausgesetzt: Grundlagen der SPS- Programmierung (z.B. Anhang A Grundlagen zur SPS - Programmierung mit SIMATIC S7-300)
2.
GRUNDLEGENDE PROGRAMMIERBEFEHLE Die folgenden Programmierbefehle sind fr die Grundlagen der Programmierung ausreichend. Dies ist jedoch keine vollstndige Auflistung aller Befehle. Information zu weiteren Befehlen in KOP/FUP/AWL finden Sie in den Handbchern oder am besten in der Online-Hilfe unter dem Stichpunkt Sprachbeschreibung KOP, FUP bzw. AWL.
2.1
ZUWEISUNG Die Zuweisung (=) kopiert das Verknpfungsergebnis (VKE) der vorhergehenden Operation und weist es dem nachfolgenden Operanden zu. Eine Verknpfungskette kann durch eine Zuweisung abgeschlossen werden.
KOP E 0.0 A0.0 AW L
||
FUP
( )
U E0.0 = A0.0
A 0.0 E 0.0
2.2
UND - VERKNPFUNG Die UND - Verknpfung entspricht einer Reihenschaltung von Kontakten im Stromlaufplan. Am Ausgang A 0.0 erscheint Signalzustand 1, wenn alle Eingnge gleichzeitig den Signalzustand 1 aufweisen. Wenn einer der Eingnge den Signalzustand 0 aufweist, bleibt der Ausgang im Signalzustand 0.
KOP
E 0.0 E 0.1
AWL ||
A 0.0
||
()
FUP
A 0.0 E 0.0 E 0.1
&
2.3
ODER - VERKNPFUNG Die ODER - Verknpfung entspricht einer Parallelschaltung von Kontakten im Stromlaufplan. Am Ausgang A 0.1 erscheint der Signalzustand 1, wenn mindestens einer der Eingnge den Signalzustand 1 aufweist. Nur wenn alle Eingnge den Signalzustand 0 aufweisen, bleibt der Signalzustand am Ausgang auf 0.
KOP
E 0.2
AWL
A 0.1
|| ||
()
E 0.3
FUP
E 0.2 E 0.3
A 0.1
>1
2.4
UND - VOR ODER - VERKNPFUNG Die UND- vor ODER- Verknpfung entspricht einer Parallelschaltung mehrerer in Reihe geschalteter Kontakte im Stromlaufplan. Bei diesen aus Reihen- und Parallelschaltung zusammengesetzten Zweigen fhrt der Ausgang 0.1 den Signalzustand 1, wenn in mindestens einem Zweig alle in Reihe geschalteten Kontakte geschlossen sind (den Signalzustand 1 haben). UND- vor ODER- Verknpfungen werden in der Darstellungsart AWL ohne Klammern programmiert, es mssen jedoch die parallelgeschalteten Zweige durch die Eingabe des Zeichens O (ODERFunktion) voneinander getrennt werden. Dabei werden zuerst die UND- Funktionen bearbeitet und aus Ihren Ergebnissen das Ergebnis der ODER- Funktion gebildet. Die erste UND- Funktion (E 0.0, E 0.1) wird von der zweiten UNDFunktion (E 0.2, E 0.3) durch das einzelne O (ODER- Funktion) getrennt.
KOP
E 0.0
FUP
E 0.1
||
|| ||
A 0.1
E 0.0 E 0.1
()
E 0.2
||
E 0.3
E 0.2 E 0.3
&
UND- Verknpfungen haben Vorrang und werden damit immer vor den ODER- Verknpfungen bearbeitet.
2.5
ODER - VOR UND - VERKNPFUNG Die ODER- vor UND- Verknpfung entspricht einer Reihenschaltung mehrerer parallelgeschalteter Kontakte im Stromlaufplan. Bei dieser aus Reihen- und Parallelschaltung zusammengesetzten Verknpfung hat der Ausgang 1.0 nur dann den Signalzustand 1, wenn in jedem der beiden Parallelzweige mindestens einer der Kontakte den Signalzustand 1 aufweisen.
KOP
FUP
E 1.0
E 1.0
E 1.2
A 1.0
||
E 1.1
||
E 1.3
()
E 1.1
A 1.0
||
||
E 1.2 E 1.3
>1
Damit ODER- Verknpfungen Vorrang vor UND- Verknpfungen haben mssen sie durch Klammern zusammengefat werden.
2.6
ABFRAGE AUF SIGNALZUSTAND 0 Die Abfrage auf Signalzustand 0 entspricht in einer kontaktbehafteten Schaltung einem ffner und ist in den Verbindungen UND NICHT (UN), ODER NICHT (ON) und EXKLUSIV ODER NICHT (XN) realisiert. Beispiel einer ODER NICHT - Verknpfung:
KOP
E 0.2
||
()
E 0.3
|/|
FP U
E 0.2 E 0.3
A 0.1 >1 =
2.7
EXKLUSIV - ODER - VERKNPFUNG Die Schaltung zeigt eine Exklusiv- ODER- Verknpfung (X), bei der der Ausgang 1.0 nur dann eingeschaltet ist (Signalzustand 1), wenn nur einer der Eingnge den Signalzustand 1 aufweist. In einer kontaktbehafteten Schaltung kann dies nur mit ffnern und Schlieern realisiert werden.
KOP
E 1.0
AWL
E 1.1
||
|/|
A 1.0
()
E 1.0
|/|
E 1.1
||
X X =
FUP
E 1.0 E 1.1
XOR
A 1.0
Hinweis: Die Exklusiv- ODER- Verknpfung darf nur mit genau zwei Eingngen verwendet werden.
2.8
ABFRAGE VON AUSGNGEN Fr das Einschalten der Ausgnge A 1.0 und A 1.1 gelten unterschiedliche Bedingungen. In diesen Fllen mu fr jeden Ausgang ein eigener Strompfad bzw. ein eigenes Verknpfungssymbol vorgesehen werden. Da das Automatisierungsgert nicht nur den Signalzustand von Eingngen, sondern auch den von Ausgngen, Merkern usw. abfragen kann, wird in der UND- Verknpfung fr den Ausgang A 1.1 der Ausgang A 1.0 abgefragt.
FUP
A 1.0 E 1.0 E 1.1
AWL
&
=
=
U U = U U =
&
KP O
E 1.0
||
E 1.1
|| ||
A 1.0
()
A A 1 1 0 ) || (1
2.9 R - S - SPEICHERFUNKTIONEN Nach DIN 40900 und DIN 19239 wird eine R-S- Speicherfunktion als Rechteck mit dem Setzeingang S und dem Rcksetzeingang R dargestellt. Kurzzeitiger Signalzustand 1 am Setzeingang S setzt die Speicherfunktion. Kurzzeitiger Signalzustand 1 am Rcksetzeingang R fhrt zum Rcksetzen der Speicherfunktion. Signalzustand 0 an den Eingngen R und S verndert den vorher eingestellten Zustand nicht. Sollte an beiden Eingngen R und S der Signalzustand 1 gleichzeitig anstehen, wird vorrangig gesetzt oder zurckgesetzt. Dieses vorrangige Rcksetzen oder Setzen mu bei der Programmierung bercksichtigt werden.
E 1.2
2.9.1
VORRANGIGES ZURCKSETZEN
KOP(1)
E 1.1 A 2.0
AWL (S)
A 2.0 U S U R E 1.1 A 2.0 E 1.0 A 2.0
||
E 1.0
|| KOP(2)
E 1.1
(R)
A 2.0
FUP
A 2.0
A 2.0
||
E 1.0
SR S R Q
()
E 1.1
S
A 2.0
||
E 1.0
Die zuletzt programmierten Anweisungen werden von der Steuerung mit Vorrang bearbeitet. Im Beispiel wird zunchst die Setzoperation ausgefhrt; der Ausgang A 2.0 wird wieder zurckgesetzt und bleibt fr den Rest der Programmbearbeitung zurckgesetzt. Dieses kurzzeitige Setzen des Ausgangs wird nur im Prozeabbild durchgefhrt. Der Signalzustand auf der dazugehrigen Peripheriebaugruppe wird whrend der Programmbearbei-tung nicht beeinflut. 2.9.2 VORRANGIGES SETZEN Gem Abschnitt 4.10.1. wird der Ausgang A 2.1 in diesem Beispiel mit Vorrang gesetzt.
KOP(1)
E 1.1 A 2.1
AWL (R)
A 2.1 U R U S E 1.1 A 2.1 E 1.0 A 2.1
||
E 1.0
|| KOP(2)
E 1.1
(S)
A 2.1
FUP
A 2.1
A 2.1
||
E 1.0
RS R S Q
()
E 1.1
R
A 2.1
||
E 1.0
2.10
FLANKENOPERATIONEN Die Flankenoperationen erfassen im Gegensatz zu einem statischen Signalzustand "0" und "1" die Signalnderung, z.B. eines Eingangs. Das Programm einer Flankenoperation entspricht einem flankenerkennenden Kontakt in einem Relaisschaltkreis.
2.10.1
STEIGENDE FLANKE (FP) Ist eine steigende (positive) Flanke (Wechsel von 0auf 1) an E 0.2 erkannt, so wird A 4.0 fr einen OB1-Zyklus auf 1 gesetzt. Dieser Ausgang kann wiederum verwendet werden um z.B. einen Merker zu setzen. Eine steigende Flanke wird erkannt, indem das Automatisierungssystem das VKE, das die Operation U geliefert hat, im Flankenmerker M 2.0 speichert, und es mit dem VKE des vorhergehenden Zyklus vergleicht. Der Vorteil der zweiten Darstellungsart in KOP/FUP ist, da hier am Eingang der Flankenoperation auch Verknpfungen stehen knnen.
KOP/FUP
E 0.2
POS A
AWL
A 4.0
( )
U FP =
M 2.0
M_BIT
oder:
M 2.0 E 0.2 P A 4.0 ()
Signalzustandsdiagramm
1 0 1 0 1 0
2.10.2
FALLENDE FLANKE (FN) Ist eine fallende (negative) Flanke (Wechsel von 1auf 0) an E 0.2 erkannt, so wird A 4.0 fr einen OB1-Zyklus auf 1 gesetzt. Dieser Ausgang kann wiederum verwendet werden um z.B. einen Merker zu setzen. Eine fallende Flanke wird erkannt, indem das Automatisierungssystem das VKE, das die Operation U geliefert hat, im Flankenmerker M 2.0 speichert, und es mit dem VKE des vorhergehenden Zyklus vergleicht. Der Vorteil der zweiten Darstellungsart in KOP/FUP ist, da hier am Eingang der Flankenoperation auch Verknpfungen stehen knnen.
KOP/FUP
E 0.2
NEG A
AWL
A 4.0
( )
U FN =
M 2.0
M_BIT
oder:
M 2.0 E 0.2 N A 4.0 ()
Signalzustandsdiagramm
1 0 1 0 1 0
2.11
ZEITFUNKTIONEN Fr die Realisierung von Steuerungsaufgaben mssen sehr hufig verschiedene Zeitfunktionen eingesetzt werden. Die Zeitfunktionen sind in der Zentralbaugruppe des Automatisierungsgerts integriert. Die Einstellung der gewnschten Laufzeit und das Starten der Zeitfunktion mu ber das Anwenderprogramm erfolgen. Die SIMATIC - Automatisierungsgerte stellen Ihnen eine bestimmte Anzahl von Zeitgliedern ( CPU abhngig ) mit unterschiedlichen Zeitfunktionen zur Verfgung. Jedem der Zeitglieder ist ein 16-BIT-WORT zugeordnet. Folgende Funktionen knnen bei einer Zeit programmiert werden:
2.11.1
ZEIT FREIGEBEN (FR) NUR IN AWL Ein positiver Flankenwechsel ( von 0 auf 1 ) im Verknpfungsergebnis der Operation Freigabe (FR) gibt eine Zeit frei. Zum Starten oder fr die normale Funktion einer Zeit wird die Freigabe nicht bentigt. Die Freigabe wird lediglich dazu verwendet, eine laufende Zeit nachzutriggern, d.h. sie wieder anlaufen zu lassen. Dieser Wiederanlauf ist nur dann mglich, wenn die Startoperation weiterhin mit dem VKE 1 bearbeitet wird.
2.11.2
ZEIT STARTEN (SI/SV/SE/SS/SA) Bei Signalwechsel am Starteingang ( positive Flanke ) wird das Zeitglied gestartet. Um eine Zeit zu starten, fgen Sie drei Anweisungen in Ihrem AWL- Programm ein:
Abfragen eines Signalzustandes Laden einer Startzeit in AKKU 1 Startoperation (wahlweise SI, SV, SE, SS oder SA)
2.11.3
ZEITWERT - VORGABE (TW) Ein Zeitglied soll immer eine bestimmte Zeit ablaufen. Die Zeitdauer TW kann entweder als vordefinierte Konstante im Programm fest vergeben werden oder als Eingangswort EW, als Ausgangswort AW, als Datenwort DBW/DIW, als Lokaldatenwort LW oder als Merkerwort MW vorgegeben werden. Das Aktualisieren der Zeit vermindert den Zeitwert um jeweils eine Einheit in einem Intervall, das von der Zeitbasis festgelegt wurde. Einen vordefinierten Zeitwert knnen Sie mit folgender Syntax laden:
L W#16#abcd - mit: a = Zeitbasis binr- codiert(d.h. Zeitintervall oder Auflsung; siehe unten) - bcd = Zeitwert im BCD- Format L S5T#aH_bbM_ccS_dddMS - mit: a = Stunden, bb = Minuten, cc = Sekunden und ddd = Millisekunden - Die Zeitbasis wird automatisch gewhlt
Zeitbasis: Die Zeitbasis definiert das Intervall, in dem der Zeitwert um eine Einheit vermindert wird. Werte die keine genaue Vielfache des Zeitintervalls sind werden abgeschnitten. Werte, deren Auflsung fr den gewnschten Bereich zu gro ist, werden abgerundet. Zeitbasis 10ms 100ms 1s 10s 2.11.4 Binrcode 00 01 10 11 Zeitbereich 10MS bis 9S_990MS 100MS bis 1M_39S_900MS 1S bis 16M_39S 10S bis 2H_46M_30S
ZEIT RCKSETZEN (R) Ein Signal am Rcksetzeingang beendet die Bearbeitung des Zeitgliedes. Der aktuelle Zeitwert wird gelscht, der Ausgang Q der Zeitzelle zurckgesetzt.
2.11.5
ZEITWERT ABFRAGEN (L/LC) Ein Zeitwert ist in einem Zeitwort binr- codiert gespeichert. Der im Zeitwort stehende Wert kann als Dualzahl (DUAL) oder als BCD- Zahl (DEZ) in den AKKU geladen und von dort in andere Operanden - bereiche transferiert werden. Bei der AWL-Programmierung haben Sie die Wahl zwischen L T1 fr die Abfrage der Dualzahl und LC T1 fr die Abfrage der BCD- Zahl.
2.11.6
SIGNALZUSTAND DER ZEIT BINR ABFRAGEN (Q) Eine Zeit kann auf ihren Signalzustand (0 oder 1) abgefragt werden. Die Signalzustnde knnen - wie gewohnt - mit U T1, UN T1, ON T1,etc... abgefragt und fr weitere Verknpfungen verwandt werden. Sie knnen unter fnf verschiedenen Zeiten auswhlen:
2.11.7
ZEIT ALS IMPULS (SI) Der Ausgang eines Zeitglieds, das als Impulsglied gestartet wird, fhrt nach dem Starten Signalzustand 1 (1). Der Ausgang wird zurckgesetzt, wenn die programmierte Zeitdauer abgelaufen ist (2), wenn das Startsignal auf Null zurckgesetzt wird (3) oder wenn am Rcksetzeingang des Zeitglieds Signalzustand 1 ansteht (4). Ein positiver Flankenwechsel ( von 0 auf 1 ) im Verknpfungsergebnis der Operation Freigabe (FR) startet die Zeit neu (5). Dieser Wiederanlauf ist nur dann mglich, wenn die Startoperation weiterhin mit dem VKE 1 bearbeitet wird.
AWL
T1 S_IMPULS E0.0 S5T#2S E0.1 S TW R DUAL DEZ Q MW0 MW2 A 4.0 U E 0.2 FR T1 U L SI U R L T LC T U = E 0.0 S5T#2S T1 E 0.1 T1 T1 MW0 T1 MW2 T1 A 4.0 Freigabe der Zeit T1 (nur in AWL) Lade Startzeit (2s) in AKKU 1 Starte Zeit T1 als Impuls Setze Zeit T1 zurck Lade Zeit T1 binr-codiert Lade Zeit T1 BCD-codiert Abfrage der Zeit T1
FUP
KOP
T1 E0.0 S5T#2S E0.1 S TW R S_IMPULS Q DUAL DEZ A 4.0 () MW0 MW2
1 0 1 0 1 0 1 0
-T2 3 4
-T5
-T-
2.11.8
VERLNGERTER IMPULS (SV) Der Ausgang eines Zeitglieds, das als verlngerter Impuls gestartet wird, fhrt nach dem Starten Signalzustand 1 (1). der Ausgang wird zurckgesetzt, wenn die vorgegebene Zeitdauer abgelaufen ist (2) oder der Rcksetzeingang der Zeitfunktion eingeschaltet wird (5). Ein Ausschalten des Starteingangs bewirkt, whrend die Zeit luft, kein Rcksetzen des Ausgangs (Selbsthaltung) (3). Tritt - whrend die Zeit noch luft - ein erneuter Signalwechsel auf 1 am Starteingang auf, wird das Zeitglied neu gestartet ( nachgetriggert ) (4).
FUP
T1 S_VIMP E0.0 S5T#2S E0.1 S TW R DUAL DEZ Q MW0 MW2 A 4.0
AWL
U L SV U R L T LC T U = E 0.0 S5T#2S T1 E 0.1 T1 T1 MW0 T1 MW2 T1 A 4.0 Lade Startzeit (2s) in AKKU 1 Starte Zeit T1 als Impuls Setze Zeit T1 zurck Lade Zeit T1 binr-codiert Lade Zeit T1 BCD-codiert Abfrage der Zeit T1
KOP
T1 E0.0 S5T#2S E0.1 S TW R S_VIMP Q DUAL DEZ A 4.0 () MW0 MW2
Signalzustandsdiagramm
-T2
-T3 4
-T5
1 0 1 0 1 0
2.11.9
EINSCHALTVERZGERUNG (SE) Der Ausgang eines Zeitgliedes, das als Einschaltverzgerung gestartet wird, fhrt nach dem Starten erst dann Signalzustand 1, wenn die programmierte Zeit abgelaufen ist und das VKE 1 am Starteingang noch ansteht (1). Das Einschalten des Starteingangs bewirkt also ein um die vorgegebene Zeitdauer verzgertes Einschalten des Ausgangs Q. Der Ausgang wird zurckgesetzt, wenn der Starteingang ausgeschaltet wird (2) oder wenn am Rcksetzeingang des Zeitgliedes Signalzustand 1 ansteht (3). Der Ausgang Q wird nicht eingeschaltet, falls noch whrend die Zeit luft der Starteingang ausgeschaltet wird, oder Signalzustand 1 am Rcksetzeingang des Zeitglieds anliegt.
FUP
T1 S_EVERZ E0.0 S5T#2S E0.1 S TW R DUAL DEZ Q MW0 MW2 A 4.0
AWL
U L SE U R L T LC T U = E 0.0 S5T#2S T1 E 0.1 T1 T1 MW0 T1 MW2 T1 A 4.0 Lade Startzeit (2s) in AKKU 1 Starte Zeit T1 als Impuls Setze Zeit T1 zurck Lade Zeit T1 binr-codiert Lade Zeit T1 BCD-codiert Abfrage der Zeit T1
KOP
T1 E0.0 S5T#2S E0.1 S TW R S_EVERZ Q DUAL DEZ A 4.0 () MW0 MW2
Signalzustandsdiagramm
-T-
-T3
1 0 1 0 1 0
2.11.10
SPEICHERNDE EINSCHALTVERZGERUNG (SS) Der Ausgang eines Zeitglieds, das als Speichernde Einschaltverzgerung gestartet wird, fhrt nach dem Starten erst dann Signalzustand 1, wenn die programmierte Zeit abgelaufen ist (1). Die Funktion bentigt nach dem Starten am Starteingang kein VKE 1 mehr, dieser kann also ausgeschaltet werden (Selbsthaltung) (3). Der Ausgang wird nur dann zurckgesetzt, wenn der Rcksetzeingang der Zeitfunktion eingeschaltet wird (2). Ein Aus- und erneutes Einschalten des Starteingangs bewirkt, solange die Zeit luft, da die Zeitfunktion neu gestartet (nachgetriggert) wird (4).
FUP
T1 S_SEVERZ E0.0 S5T#2S E0.1 S TW R DUAL DEZ Q MW0 MW2 A 4.0
AWL
U L SS U R L T LC T U = E 0.0 S5T#2S T1 E 0.1 T1 T1 MW0 T1 MW2 T1 A 4.0 Lade Startzeit (2s) in AKKU 1 Starte Zeit T1 als Impuls Setze Zeit T1 zurck Lade Zeit T1 binr-codiert Lade Zeit T1 BCD-codiert Abfrage der Zeit T1
KOP
T1 E0.0 S5T#2S E0.1 S TW R S_SEVERZ Q DUAL DEZ A 4.0 () MW0 MW2
Signalzustandsdiagramm
-T3 4
-T-
1 0 1 0 1 0
2.11.11
AUSSCHALTVERZGERUNG (SA) Bei einem Signalwechsel (positive Flanke) am Starteingang eines Zeitglieds, das als Ausschaltverzgerung gestartet wird, wird der Ausgang Q der Zeitfunktion eingeschaltet (1). Wird der Starteingang ausgeschaltet, liefert der Ausgang noch solange Signalzustand 1, bis die programmierte Zeit abgelaufen ist (2). Das Ausschalten des Starteingangs (fallende Flanke) bewirkt also ein, um die vorgegebene Zeitdauer, verzgertes Ausschalten des Ausgangs. Der Ausgang des Zeitglieds wird auch ausgeschaltet, wenn am Rcksetzeingang Signalzustand 1 ansteht (4). Ein erneutes Einschalten der Zeitfunktion bewirkt, whrend die Zeit luft, da die ablaufende Zeit angehalten und erst beim nchsten Ausschalten des Starteingangs neu gestartet wird (3). Fhren sowohl der Start- als auch der Rcksetzeingang der Zeitfunktion Signalzustand 1, wird der Ausgang des Zeitglieds erst gesetzt, wenn das dominierende Rcksetzen ausgeschaltet ist (5).
FUP
T1 S_AVERZ E0.0 S5T#2S E0.1 S TW R DUAL DEZ Q MW0 MW2 A 4.0
AWL
U L SA U R L T LC T U = E 0.0 S5T#2S T1 E 0.1 T1 T1 MW0 T1 MW2 T1 A 4.0 Lade Startzeit (2s) in AKKU 1 Starte Zeit T1 als Impuls Setze Zeit T1 zurck Lade Zeit T1 binr-codiert Lade Zeit T1 BCD-codiert Abfrage der Zeit T1
KOP
T1 E0.0 S5T#2S E0.1 S TW R S_AVERZ Q DUAL DEZ A 4.0 () MW0 MW2
Signalzustandsdiagramm
-T2 3
-T4 5
1 0 1 0 1 0
2.12
TAKTGEBER Taktgeber werden fr unterschiedliche Kontroll-, berwachungs- und Steuerungsaufgaben eingesetzt. In der Digitaltechnik werden sie als astabile Kippschaltungen bezeichnet. Hufig bentigt man in der Praxis fr Betriebs- oder Strmeldungen eine Blinkfrequenz.
In der CPU S7-300 existiert ein parametrierbarer Taktmerker, der mit dem Tool S7 Configuration eingestellt werden kann.
Taktmerker parametrieren: Taktmerker sind Merker innerhalb eines Taktmerkerbytes. Ein beliebiges Merkerbyte der CPU wird durch Parametrierung (Im Tool Configuration auf die Zeile CPU doppelklicken!) zum Taktmerkerbyte. Ein Taktmerker ndert seinen binren Wert periodisch. Wenn Sie Taktmerker aktivieren ( Kreuz im Kontrollkstchen ist sichtbar), dann mssen Sie auch die Nummer des Merkerbytes bestimmen. Das gewhlte Merkerbyte kann nicht fr die Zwischenspeicherung von Daten genutzt werden.
Periodendauer von Takten: Jedem Bit des Taktmerkerbytes ist eine Periodendauer/Frequenz zugeordnet. Es gilt folgende Zuordnung: Bit: Periodendauer (s): Frequenz (Hz): 7 2 0,5 6 1,6 0,625 5 1 1 4 0,8 1,25 3 0,5 2 2 0,4 2,5 1 0,2 5 0 0,1 10
2.13
ZHLOPERATIONEN In der Steuerungstechnik werden fr das Erfassen von Stckzahlen oder Impulsen, zur Auswertung von Zeiten und Entfernungen Zhlfunktionen bentigt. Bei der SIMATIC S7 sind Zhler bereits in der Zentralbaugruppe integriert. Diese Zhler besitzen einen eigenen reservierten Speicherbereich. Der Bereich des Zhlwertes liegt zwischen 0 und 999. Folgende Funktionen knnen bei einem Zhler programmiert werden:
2.13.1
ZHLER FREIGEBEN (FR) NUR IN AWL Ein positiver Flankenwechsel ( von 0 auf 1 ) im Verknpfungsergebnis der Operation Freigabe (FR) gibt einen Zhler frei. Weder fr das Setzen eines Zhlers, noch fr normale Zhloperationen wird eine Zhlerfreigabe bentigt. Will man jedoch ohne steigende Flanke vor der entsprechenden Zhloperation ( ZV, ZR oder S ) einen Zhler setzen bzw. Vorwrts - oder rckwrtszhlen , so kann dies mit einer Freigabe erfolgen. Dies ist jedoch nur mglich, wenn das VKE- Bit vor der entsprechenden Operation ( ZV, ZR oder S ) den Signalzustand 1 hat.
2.13.2
VORWRTSZHLEN (ZV) Der Wert des adressierten Zhlers wird um 1 erhht. Die Funktion wird nur bei einem positiven Flankenwechsel der vor ZV programmierten Verknpfung wirksam. Erreicht der Zhlwert die obere Grenze 999, wird er nicht mehr erhht. ( Ein bertrag wird nicht gebildet! )
2.13.3
RCKWRTSZHLEN (ZR) Der Wert des adressierten Zhlers wird um 1 verringert. Die Funktion wird nur bei einem positiven Flankenwechsel der vor ZR programmierten Verknpfung wirksam. Erreicht der Zhlwert die untere Grenze 0, wird er nicht mehr verringert. ( Nur positive Zhlwerte! )
2.13.4
ZHLER SETZEN (S) Um einen Zhler zu setzen, fgen Sie drei Anweisungen in Ihrem AWL- Programm ein: Abfragen eines Signalzustandes Laden eines Zhlwertes Setzen eines Zhlers mit dem geladenen Zhlwert Diese Funktion wird nur bei einem positiven Flankenwechsel der Abfrage bearbeitet. z.B.: U E 2.3 L C#5 S Z1
2.13.5
ZHLWERT - VORGABE (ZW) Wird ein Zhler gesetzt, so wird der Inhalt von AKKU 1 als Zhlwert verwendet. Sie haben die Mglichkeit den Zhlwert entweder binr- codiert oder BCD- codiert einzuladen. Als Operanden sind mglich: Eingangswort Ausgangswort Merkerwort Datenwort Lokaldatenwort Konstanten EW .. AW .. MW .. DBW/DIW .. LW .. C#5,
2#...etc.
2.13.6
ZHLER RCKSETZEN (R) Bei VKE 1 wird der Zhler auf Null gesetzt (rcksetzen). Bei VKE 0 bleibt der Zhler unbeeinflut. Das Rcksetzen eines Zhlers wirkt statisch. Bei erfllter Rcksetzbedingung kann weder gesetzt noch gezhlt werden.
2.13.7
ZHLWERT ABFRAGEN (L/LC) Ein Zhlwert ist in einem Zhlerwort binr- codiert gespeichert. Der im Zhler stehende Wert kann als Dualzahl (DU) oder als BCD- Zahl (DE) in den AKKU geladen und von dort in andere Operandenbereiche transferiert werden. Bei der AWL- Programmierung haben Sie die Wahl zwischen L Z1 fr die Abfrage der Dualzahl und LC Z1 fr die Abfrage der BCD- Zahl.
2.13.8
SIGNALZUSTAND DES ZHLERS BINR ABFRAGEN (Q) Der Zhler kann auf seinen Signalzustand abgefragt werden. Hierbei bedeutet: Signalzustand 0 Signalzustand 1 = = Zhler steht auf Wert 0; Zhler arbeitet, d.h. ist zhlbereit.
Die Signalzustnde knnen - wie gewohnt - mit U Z1, UN Z1, ON Z1,etc... abgefragt und fr weitere Verknpfungen verwandt werden.
FUP
E0.0 E0.1 E0.2 C#5 E0.3
Z1 ZAEHLER ZV ZR S ZW R Z1 ZAEHLER ZV Q ZR S ZW R DUAL DEZ AW2 AW4 A 0.0 () DUAL DEZ Q AW2 AW4 A 0.0
AWL
U FR U ZV U ZR U L S U R L T LC T U = E 0.7 Z1 E 0.0 Z1 E 0.1 Z1 E 0.2 C#5 Z1 E 0.3 Z1 Z1 AW2 Z1 AW4 Z1 A 0.0 Freigabe (nur in AWL)
Vorwrts zhlen Rckwrts zhlen Vorgabewert fr Zhler laden Zhler mit Vorgabewert setzen Setze Zhler Z1 zurck Lade Zhler Z1 binr-codiert Lade Zhler Z1 BCD-codiert Abfrage des Zhlers Z1
KOP
E0.0 E0.1 E0.2 C#5 E0.3
Signalzustandsdiagramm:
FR
ZV
ZR
A 0.0
2.14
LADE - UND TRANSFEROPERATIONEN (L/T) NUR IN AWL In der Programmiersprache STEP7 ermglichen Lade- und Transferoperationen den byte-, wort-, bzw. doppelwortweisen Austausch von Informationen zwischen Ein- und Ausgabebaugruppen, dem Prozeabbild der Ein- und Ausgnge, den Zeit-, Zhler - und Merkerspeichern sowie den Datenbausteinen. Dieser Informationsaustausch erfolgt nicht direkt, sondern immer ber den Akkumulator 1 (AKKU 1). Der AKKU 1 ist ein Register im Prozessor und dient als Zwischenspeicher. Der Informationsflu ist richtungsgebunden: LADEN: vom Quellspeicher in den AKKU 1 TRANSFERIEREN: vom AKKU in den Zielspeicher LADEN
QUELLSPEICHER 31
AKKU 1
16 15 0
TRANSFERIEREN
ZIELSPEICHER
Beim Laden wird der Inhalt des angesprochenen Quellspeichers kopiert und in den AKKU 1 geschrie-ben. Der bisherige Akkuinhalt wird dabei in ein AKKU 2 bertragen. Beim Transferieren wird der Inhalt von AKKU 1 kopiert und in den angesprochenen Zielspeicher geschrieben. Da der Akkuinhalt nur kopiert wurde, steht er fr weitere Transferoperationen zur Verfgung.
AWL: : L EW : T AW : L +5 : T AW : BE
*1: Prozeabbild der Eingnge *2: Prozeabbild der Ausgnger
0 4 PAE
(*1)
EW 0
AKKU AKKU
AW 4
PAA
(*2)
Konstante
+5
AW 6
PAA
Laden und Transferieren sind unbedingte Operationen, die unabhngig vom Verknpfungsergebnis in jedem zyklischen Umlauf ausgefhrt werden.
2.15
VERGLEICHSFUNKTIONEN Die Programmiersprache STEP7 bietet Ihnen die Mglichkeit, zwei Zahlenwerte direkt zu vergleichen und das Ergebnis des Vergleichs ( VKE ) sofort weiterzuschalten. Voraussetzung dafr ist , da beide Zahlen dasselbe Zahlenformat haben. Folgende Paare von Zahlenwerten knnen verglichen werden:
zwei Ganzzahlen ( 16 Bit zwei Ganzzahlen ( 32 Bit zwei Realzahlen ( Gleitpunktzahlen 32 Bit,
gleich ungleich grer oder gleich grer kleiner oder gleich kleiner
Mit den Vergleichsfunktionen werden zwei Werte, die in den AKKU s 1 und 2 stehen, direkt miteinander verglichen. Mit der ersten Ladeoperation wird der erste Operand (z.B. EW 0) in den AKKU 1 geladen. Mit der zweiten Ladeoperation wird zunchst der erste Operand vom AKKU 1 in den AKKU 2 umgeladen und dann der zweite Operand (z.B. EW 2) in den AKKU 1 geladen. Danach werden die in beiden Akkumulatoren stehenden Zahlenwerte im Arithmetikbaustein bitweise miteinander verglichen. Das Ergebnis des Vergleichs ist binr. Ist der gewnschte Vergleich erfllt, wird das Verknpfungsergebnis 1. Ist der gewnschte Vergleich nicht erfllt, so wird das VKE 0.
FUP / KOP
CMP >I
A 4.7
AWL
L EW 0 L EW 2 >I = A 4.7
AKKU 1 EW 0
AKKU 2 *** EW 0
( )
EW 0 EW 2
IN 1 IN 2
EW 2
Arithmetikbaustein VKE
2.16 2.16.1
PROGRAMMORGANISATION BAUSTEINAUFRUF (CALL) Mit dem Bausteinaufruf CALL knnen Sie Funktionen (FCs) und Funktionsbausteine (FBs) sowie Systemfunktionen (SFCs) und Systemfunktionsbausteine (SFBs) aufrufen. Gleichzeitig knnen Parameter transferiert, bzw. Variablen beschrieben sowie der dem FB oder SFB zugehrige lokale Datenbaustein geffnet werden (Siehe: Weiterfhrende Funktion Variablendeklaration in Codebausteinen). Sind in dem aufgerufenen Baustein keine Variablen deklariert, so entspricht dieser Befehl dem Befehl UC.
AWL CALLFB1, DB20 ZAHL := AUS := TEST := KOP/FUP EW 1 ZAHL (Formalparameter) wird EW 1 (Aktualparameter) zugeordnet. AUS (Formalparameter) wird kein Parameter zugeordnet. TEST (Formalparameter) wird kein Parameter zugeordnet.
2.16.2
KONDITIONIERTER BAUSTEINAUFRUF (CC) Mit dem Bausteinaufruf CC knnen Sie Funktionen (FCs) und Funktionsbausteine (FBs) sowie Systemfunktionen (SFCs) und Systemfunktionsbausteine (SFBs) aufrufen. Sie knnen jedoch keine Parameter transferieren bzw. Variablen beschreiben. Der Aufruf wird nur ausgefhrt, wenn das Verknpfungsergebnis 1 betrgt.
KOP/FUP
E 0.0 FC 1
AWL
U CC E 0.0 FC 1
| |
(CALL)
2.16.3
UNKONDITIONIERTER BAUSTEINAUFRUF (UC) Mit dem Bausteinaufruf UC knnen Sie Funktionen (FCs) und Funktionsbausteine (FBs) sowie Systemfunktionen (SFCs) und Systemfunktionsbausteine (SFBs) aufrufen. Sie knnen jedoch keine Parameter transferieren bzw. Variablen beschreiben. Der Aufruf wird unabhngig vom Verknpfungsergebnis ausgefhrt.
KOP/FUP
FC 1
AWL
UC FC 1
(CALL)
2.16.4
DATENBAUSTEIN AUFSCHLAGEN (AUF) Mit der Operation Aufschlagen Datenbaustein (AUF) knnen Sie einen Datenbaustein (DB) oder Instanz - Datenbaustein (DI) ffnen, um auf die enthaltenen Daten zugreifen zu knnen ( z.B. mit Lade- und Transferoperationen ).
KOP/FUP
DB 1
AWL ( OPN )
AUF L T DB 1 DBW 0 MW 1
2.16.5
BAUSTEINENDE BEDINGT (BEB) NUR IN AWL Abhngig vom Verknpfungsergebnis beendet diese Operation die Bearbeitung des aktuellen Bausteins und springt zurck in den Baustein, der den gerade Beendeten aufgerufen hat. Diese Operation erfolgt nur, wenn das Verknpfungsergebnis 1 betrgt.
AWL
U BEB E 0.0
2.16.6
BAUSTEINENDE ABSOLUT (BEA) NUR IN AWL Diese Operation beendet die Bearbeitung des aktuellen Bausteins und springt zurck in den Baustein, der den gerade Beendeten aufgerufen hat. Diese Operation erfolgt unabhngig vom Verknpfungsergebnis.
AWL
...(beliebige Anweisungen) BEA
2.17 2.17.1
SPRUNGOPERATIONEN SPRINGE ABSOLUT (SPA) Die Operation SPA unterbricht den normalen Ablauf des Programms und springt zu der, im Operanden angegebenen, Sprungmarke. Der Sprung erfolgt unabhngig vom Verknpfungsergebnis.
KOP/FUP
Netzwerk 1 SUP
AWL
Netzwerk 1
( JMP )
Netzwerk 4 SUP E 1.1 A 4.1
| |
2.17.2
SPRINGE BEDINGT (SPB/SPBN) Die bedingten Sprungoperationen unterbrechen den normalen Ablauf des Programms und initiieren einen Sprung zu der, im Operanden angegebenen, Sprungmarke. Der Sprung erfolgt in Abhngigkeit vom Verknpfungsergebnis. Folgende bedingte Sprungoperationen knnen Sie ausfhren:
SPB : SPBN :
KOP/FUP
Netzwerk 1 E 0.0 SUP1
| |
( JMP )
SUP2
(JMPN)
Netzwerk 4 SUP1 E 0.1 A 4.1
SUP1:
SUP1:
| |
Netzwerk 8 SUP2 E 0.2
SUP2:
SUP2:
A 4.2
| |
2.17.3
PROGRAMMSCHLEIFE (LOOP) NUR IN AWL Mit einer Programmschleife (LOOP) knnen Sie einen Programmteil mehrmals hintereinander bearbeiten. Dazu mssen Sie eine Konstante in das niederwertige Wort von AKKU 1 laden. Diese Zahl wird dann durch die Operation LOOP um 1 vermindert. Danach wird der Wert dieser Zahl auf <>0 berprft. Betrgt er nicht 0, dann wird ein Sprung zur Marke der Operation LOOP ausgefhrt; andernfalls wird die nchste Operation ausgefhrt. L NEXT:T 5 MB 10
L MB 10 LOOP NEXT
2.18 2.18.1
NULLOPERATIONEN NULLOPERATION 0 / 1 (NOP0/NOP1) NUR IN AWL Diese Operationen fhren keine Funktion aus und beeinflussen den Inhalt des Statuswortes nicht. Der bersetzer bentigt die Nulloperationen fr die Rckbersetzung, z.B. von AWL in den KOP.
2.19
BEARBEITUNG DES VKE In STEP7 gibt es Operationen mit denen das Verknpfungsergebnis (VKE) verndert werden kann. Da dabei das VKE direkt beeinflut wird, besitzen diese Operationen keine Operanden.
2.19.1
NEGIEREN DES VKE (NOT) NUR IN AWL Sie knnen mit der Operation NOT in ihrem Programm das aktuelle VKE negieren (umkehren). Ist das aktuelle VKE 0, dann ndert die Operation NOT es in 1; ist das aktuelle VKE 1, dann ndert NOT es in 0.
2.19.2
SETZEN DES VKE (SET) NUR IN AWL Sie knnen mit der Operation SET in ihrem Programm das VKE- Bit unkonditioniert auf 1 setzen.
2.19.3
RCKSETZEN DES VKE (CLR) NUR IN AWL Sie knnen mit der Operation CLR in ihrem Programm das VKE- Bit unkonditioniert auf 0 rcksetzen.
2.19.4
SICHERN DES VKE (SAVE) NUR IN AWL Sie knnen mit der Operation SAVE in ihrem Programm das VKE fr einen zuknftigen Gebrauch im Statusbit (BIE) des Statuswortes sichern. Das Statuswort enthlt Bits, auf die Sie im Operanden der Bit- und Wortverknpfungsoperationen zugreifen knnen. BIE z.B.: Bit8 A1 Bit7 A0 Bit6 OV Bit5 OS Bit4 OR Bit3 STA Bit2 VKE Bit1 /ER Bit0
Signalzustand: 1 1
Verknpfungsergebnis(VKE): 1
Heinrich-HertzBerufskolleg Dsseldorf
Automatisierungstechnik
SpA00201
Wagener, OStR
Mgliche Operanden AB, EB, AW, EW, AD, ED, K
VERKNPFUNGEN
Code U UN U( UN( O ON O( ON( X XN X( XN( ) Erluterung UND UND negiert UND mit VKE aus Klammer UND negiert mit VKE aus Klammer ODER
VERGLEICHS-Operationen
Code > >= == < <= <> Code SHL SHR ROL ROR Erluterung Grsser Grsser oder Gleich Gleich Kleiner Kleiner oder Gleich Ungleich
Code Erluterung Mgliche Operanden NOP Leeroperation FREI SPEICHER, ZHLER, ZEITGLIEDER = Zuweisung Code Erluterung Mgliche Operanden *** Netzwerkende S Setzeingang (Zhler, Flipflop, Timer) A, M, T, Z BE Bausteinende R Rcksetzeingang (Zhler, FF, Timer) A, M, T, Z BEB Bausteinende bedingt bei log. 1 FL Flankenerkennung BEZ Bausteinende bedingt bei log. 0 FLP Flankenerkennung positiv Operanden-Bereiche FLN Flankenerkennung negativ Code Bedeutung Verfgbar ZV Zhler vorwrts E Eingang Bit E1.1...E18.16 ZR Zhler rckwrts EB Eingang Byte EB1.1...EB18.16 ZVR Vor-/Rckwrts-Zhler EW Eingang Wort EW1.1...EW18.16 SI Zeitglied Impuls ED Eingang Doppelwort ED1.1...ED18.16 SV Zeitglied Verlngerter Impuls A Ausgang Bit A1.1...A18.16 SE Einschaltverzgerung AB Ausgang Byte AB1.1...AB18.16 SS Speichernde Einschaltverzgerung AW Ausgang Wort AW1.1...AW18.16 SA Ausschaltverzgerung AD Ausgang Doppelwort AD1.1...AD18.16 SPRNGE, BAUSTEINAUFRUFE M Merker Bit M1.1...M125..2 *) Code Erluterung Mgliche Operanden MB Merker Byte MB1...MB3970 SP Unbedingter Sprung MW Merker Wort MW1...MW1985 SPB Bedingter Sprung bei log. 1 MD Merker Doppelwort MD1...MD992 SPZ Bedingter Sprung bei log. 0 SM Systemmerker Bit SM1...SM50 BA Unbedingter Baustein-Aufruf E/A-Peripherie SM1.1...SM18.1 BAB Bedingter Baustein-Aufruf bei log. 1 SMB Systemmerker Byte SMB1...SMB20 BAZ Bedingter Baustein-Aufruf bei log 0 E/A-Peripherie SMB1.1...SMB18.1 LADE-/TRANSFER-Befehle SMW Systemmerker Wort SMW1...SMW10 Code Erluterung Mgliche Operanden SMD Systemmerker Doppelwort SMD1...SMD5 L Ladeanweisung K Konstante (dez.) K-32768...K32768 LBW Lade Bitspur Wort KO Konstante (oktal) KO100000...KO77777 TBW Transferiere Bitspur Wort KH Konstante (hexadez.) KH18000...KH7FFF LBB Lade Bitspur Byte T Timer T1...T567 TBB Transferiere Bitspur Byte TIW Timer-Istwert TIW1...TIW567 DBB Definiere Bitspur-Breite TSW Timer-Sollwert TSW1...TSW567 ANZ Anzahl der Bits Z Zhler Z1...Z794 LLD Lade Low Data ZIW Zhler-Istwert ZIW1...ZIW794 LHD Lade High Data ZSW Zhler-Sollwert ZSW1...ZSW794 TLD Transferiere Low Data THD Transferiere High Data *) 1.1 ... 1.32, 2.1 ... 2.32 etc.
ODER negiert ODER mit VKE aus Klammer ODER negiert mit VKE aus Klammer EXCLUSIV - ODER A, E, AB, EB, AW, EW, K EXOR negiert A, E EXOR mit VKE aus Klammer EXOR negiert mit VKE aus Klammer Abschlu Klammeroperation
SCHIEBE-/ROTATIONS-Befehle
Erluterung Schiebe nach links Schiebe nach rechts Rotiere nach Links Rotiere nach rechts
SONSTIGE
Mgliche Operanden K K K K
ARITHMETIK-Operationen
Code ADD SUB MUL DIV DEC INC Erluterung Addiere Subtrahiere Multipliziere Dividiere Erniedrige um 1 Erhhe um 1
Mgliche Operanden Je Programm AB, EB, AW, EW, AD, ED, K Je Baustein Je Netzwerk
Grenzwerte
genau ein Organisations-Baustein max. 499 Pbs oder Fbs (PB1...PB999 bzw. FB1...FB999) 2000 Netzwerke max. 999 Netzwerke max. 255 AWL-Zeilen, max. 24 Sprungmarken max. 13 geffnete Klammern
Heinrich-HertzBerufskolleg Dsseldorf
Automatisierungstechnik
SpA00301
Wagener, OStR
EingangsSignal Zeitablauf ResetSignal AusgangsSignal
Zeit E2.2
A3.2
A3.2
A3.2
A3.2
A3.2
A3.2
A3.2
A3.2
A3.2
A3.2
Die Zeitglieder werden fortlaufend numeriert (T1, T2, T3, ...). Die Zeitbasis 100 MS kann verndert werden (10 oder 1000 MS). Der Sollwert kann statt durch eine Konstante (z. B. K30 =30 x 100 ms =3 s) auch durch ein Merkerwort, Ausgangswort usw. eingestellt werden.
Beispiel "Strung"
Aufgabenstellung: 1. Drei Pumpen bilden eine Wasserversorgung. Wenn eine ausfllt soll Alarm gegeben werden. 2. Aufgrund einer betrieblichen Umstellung ist es nun notwendig, da erst Alarm ausgelst wird wenn zwei Pumpen
ausgefallen sind.
Lsung:
Aufgabe 1: NETZWERK 1 Stoerungsanzeige bei einem Ausfall 0000 :ON E 33.0 0001 :ON E 33.1 0002 :ON E 33.2 0003 := A 33.0 0004 :BE
Aufgabe 2: NETZWERK 1 Stoerungsanzeige bei zwei Ausfaellen 0005 :O( 0006 :UN E 32.0 0007 :UN E 32.1 0008 :U E 32.2 0009 :) 000A :O(
000B :UN E 32.0 000C :U E 32. 000D :UN E 32.2 000E :) 000F :O( 0010 :U E 32.0 0011 :UN E 32.1 0012 :UN E 32.2 0013 :) 0014 := A 32.0 0015 :BE
<<Zurck
Beispiel "Pumpensteuerung"
Das Programm:
NETZWERK 1 0000 :O( 0001 :UN E 32.0 0002 :UN E 32.1 0003 :U E 32.2 0004 :U E 32.3 0005 :) 0006 :O( 0007 :UN E 32.0 0008 :U E 32.1 0009 :U E 32.2 000A :U E 32.3 000B :) 000C :O( 000D :U E 32.0 000E :UN E 32.1 000F :U E 32.2 0010 :U E 32.3 0011 :) 0012 :O( 0013 :U E 32.0 0014 :U E 32.1 0015 :UN E 32.2
0016 :U E 32.3 0017 :) 0018 :O( 0019 :U E 32.0 001A :U E 32.1 001B :U E 32.2 001C :U E 32.3 001D : 001E := M 1.0
<<Zurck
Beispiel: Flankenauswertung und Toggle FF Flankenauswertung Eine positive Flanke am Eingang 32.0 soll abgefragt werden. Der Ausgang 32.0 soll fr einen Zyklus auf 1 gesetzt werden, falls die positive Flanke kommt. Toggle FF Mit diesem Ausgang 32.0 soll nun ein Toggle FF angesteuert werden, dessen Ausgang auf 32.7 liegt
ORGANIZATION_BLOCK OB1
TITLE = "Zyklisches Hauptprogramm" AUTHOR: Graf FAMILY: Flankenauswertung und RS FF NAME: Vorlesung VERSION: 1.0 VAR_TEMP OB1_EV_CLASS:BYTE OB1_SCAN_1:BYTE OB1_PRIORITY:BYTE OB1_OB_NUMBR:BYTE OB1_RESERVED_1:BYTE OB1_RESERVED_2:BYTE OB1_PREV_CYCLE:INT OB1_MIN_CYCLE:INT OB1_MAX_CYCLE:INT OB1_DATE_TIME:DATE_AND_TIME END_VAR BEGIN NETWORK //Nr.:1 TITLE = Flankenauswertung S5 U E 32.0 UN M 32.0 = A 32.0 UN E 32.0 UN M 32.1 = A 32.1
//Bits 0-3 = 1 (Coming event), Bits 4-7 = 1 (Event class 1) //1 (Cold restart scan 1 of OB 1), 3 (Scan 2-n of OB 1) //1 (Priority of 1 is lowest) //1 (Organization block 1, OB1) //Reserved for system //Reserved for system //Cycle time of previous OB1 scan (milliseconds) //Minimum cycle time of OB1 (milliseconds) //Maximum cycle time of OB1 (milliseconds) //Date and time OB1 started
U = UN =
E M E M
U S R U S R
A A A A A A
NETWORK //Nr.:3
TITLE =
Flankenauswertung S7 E M A E M A A A A A A A 33.0 0.0 33.0 33.0 0.1 33.1 33.0 33.2 33.3 33.1 33.3 33.2
U FP = U FN = U S R U S R
END_ORGANIZATION_BLOCK
Beispiel: RS Speicher fr Pumpensteuerung mit Vorrang und Verriegelung 3 Pumpen sollen mit 6 Tastern ein und ausgeschaltet werden. Aus hat jeweils Vorrang. Pumpe 2 und 3 sollen gegeneinander verriegelt sein. Pumpe 1 (A0.0) Pumpe 1 (A0.2) Pumpe 1 (A0.4) Ein Aus Ein Aus Ein Aus (E0.0) (E0.1) (E0.2) (E0.3) (E0.4) (E0.5)
ORGANIZATION_BLOCK OB1
TITLE = "Zyklisches Hauptprogramm" AUTHOR: MHJTW FAMILY: nb NAME: nb VERSION: 1.0 VAR_TEMP OB1_EV_CLASS:BYTE OB1_SCAN_1:BYTE OB1_PRIORITY:BYTE OB1_OB_NUMBR:BYTE OB1_RESERVED_1:BYTE OB1_RESERVED_2:BYTE OB1_PREV_CYCLE:INT OB1_MIN_CYCLE:INT OB1_MAX_CYCLE:INT OB1_DATE_TIME:DATE_AND_TIME END_VAR BEGIN NETWORK //Nr.:1 TITLE = U E 0.0 S A 0.0 U E 0.1 R A 0.0 U UN S U R U UN S U R E A A E A E A A E A 0.2 0.4 0.2 0.3 0.2 0.4 0.2 0.4 0.5 0.4
//Bits 0-3 = 1 (Coming event), Bits 4-7 = 1 (Event class 1) //1 (Cold restart scan 1 of OB 1), 3 (Scan 2-n of OB 1) //1 (Priority of 1 is lowest) //1 (Organization block 1, OB1) //Reserved for system //Reserved for system //Cycle time of previous OB1 scan (milliseconds) //Minimum cycle time of OB1 (milliseconds) //Maximum cycle time of OB1 (milliseconds) //Date and time OB1 started
//Pumpe 1
//Pumpe 2
//Pumpe 3
END_ORGANIZATION_BLOCK
Beispiel: kombinierte Ein- Ausschaltverzgerung Eine kombinierte Ein- Ausschaltverzgerung soll programmiert werden. Ausgang 0.0 wird mit Eingang 0.0 ein und ausgeschaltet, und zwar beim Einschalten um 2s und beim Ausschalten ebenfalls um 2s verzgert.
ORGANIZATION_BLOCK OB1
TITLE = "Ein und Ausschaltverzgerung kombiniert" AUTHOR: Graf FAMILY: SS 2000 NAME: einaus VERSION: 1.0 VAR_TEMP OB1_EV_CLASS:BYTE //Bits 0-3 = 1 (Coming event), Bits 4-7 = 1 (Event class 1) OB1_SCAN_1:BYTE //1 (Cold restart scan 1 of OB 1), 3 (Scan 2-n of OB 1) OB1_PRIORITY:BYTE //1 (Priority of 1 is lowest) OB1_OB_NUMBR:BYTE //1 (Organization block 1, OB1) OB1_RESERVED_1:BYTE //Reserved for system OB1_RESERVED_2:BYTE //Reserved for system OB1_PREV_CYCLE:INT //Cycle time of previous OB1 scan (milliseconds) OB1_MIN_CYCLE:INT //Minimum cycle time of OB1 (milliseconds) OB1_MAX_CYCLE:INT //Maximum cycle time of OB1 (milliseconds) OB1_DATE_TIME:DATE_AND_TIME //Date and time OB1 started END_VAR BEGIN NETWORK //Nr.:1 TITLE = Zeitwert laden L S5T#2S NETWORK //Nr.:2 TITLE= Einschaltverzgerung U E 0.0 SE T 0 U T 0 = M 0.0 NETWORK //Nr.:3 TITLE= Auschaltverzgerung der Einschaltverzgerung U M 0.0 SA T 1 U T 1 = A 0.0 END_ORGANIZATION_BLOCK
Beispiel: Taktgenerator mit einem Timer Ein Taktgenerator soll programmiert werden, der den Ausgang 0.0 mit einer Frequenz f = 1Hz ansteuert. Der Takt soll mit dem Eingang 0.0 ein- und ausgeschaltet werden knnen. Programmieren Sie den Taktgenerator mit 2 Timern. ORGANIZATION_BLOCK OB1
TITLE = "Taktgenerator mit 2 Timern" AUTHOR: Graf FAMILY: SS 2000 NAME: takt_2t VERSION: 1.0 VAR_TEMP OB1_EV_CLASS:BYTE //Bits 0-3 = 1 (Coming event), Bits 4-7 = 1 (Event class 1) OB1_SCAN_1:BYTE //1 (Cold restart scan 1 of OB 1), 3 (Scan 2-n of OB 1) OB1_PRIORITY:BYTE //1 (Priority of 1 is lowest) OB1_OB_NUMBR:BYTE //1 (Organization block 1, OB1) OB1_RESERVED_1:BYTE //Reserved for system OB1_RESERVED_2:BYTE //Reserved for system OB1_PREV_CYCLE:INT //Cycle time of previous OB1 scan (milliseconds) OB1_MIN_CYCLE:INT //Minimum cycle time of OB1 (milliseconds) OB1_MAX_CYCLE:INT //Maximum cycle time of OB1 (milliseconds) OB1_DATE_TIME:DATE_AND_TIME //Date and time OB1 started END_VAR BEGIN NETWORK //Nr.:1 TITLE = Zeitwert laden L S5T#500MS NETWORK //Nr.:2 TITLE= Timer 0 starten wenn Timer 1 =0 und Ein U E 0.0 UN T 1 SI T 0 NETWORK //Nr.:3 TITLE= Timer 1 starten wenn Timer 0 = 0 UN A 0.0 SI T 1 NETWORK //Nr.:4 TITLE= Timer 0 ausgeben U T 0 = A 0.0 END_ORGANIZATION_BLOCK
Beispiel: Taktgenerator mit 2 Timern Ein Taktgenerator soll programmiert werden, der den Ausgang 0.0 mit einer Frequenz f = 1Hz ansteuert. Der Takt soll mit dem Eingang 0.0 ein- und ausgeschaltet werden knnen. Programmieren Sie den Taktgenerator mit 1 Timer. ORGANIZATION_BLOCK OB1
TITLE = "Taktgenerator mit einem Timer" AUTHOR: Graf FAMILY: SS 2000 NAME: takt_1t VERSION: 1.0 VAR_TEMP OB1_EV_CLASS:BYTE OB1_SCAN_1:BYTE OB1_PRIORITY:BYTE OB1_OB_NUMBR:BYTE OB1_RESERVED_1:BYTE OB1_RESERVED_2:BYTE OB1_PREV_CYCLE:INT OB1_MIN_CYCLE:INT
//Bits 0-3 = 1 (Coming event), Bits 4-7 = 1 (Event class 1) //1 (Cold restart scan 1 of OB 1), 3 (Scan 2-n of OB 1) //1 (Priority of 1 is lowest) //1 (Organization block 1, OB1) //Reserved for system //Reserved for system //Cycle time of previous OB1 scan (milliseconds) //Minimum cycle time of OB1 (milliseconds)
OB1_MAX_CYCLE:INT //Maximum cycle time of OB1 (milliseconds) OB1_DATE_TIME:DATE_AND_TIME //Date and time OB1 started T_Merker:BOOL //Timer Merker ist alle S = 0 Toggle_Merker:BOOL //Toggle Merker END_VAR BEGIN NETWORK //Nr.:1 TITLE = Zeitwert setzen L S5T#1S NETWORK //Nr.:2 TITLE= T_Merker alle s fuer einen Zyklus auf 0 U E 0.0 UN #T_Merker SV T 0 U T 0 = #T_Merker NETWORK //Nr.:3 TITLE= Ruecksetzen falls Ausgang 1 U A 0.0 UN #T_Merker U E 0.0 R #Toggle_Merker NETWORK //Nr.:4 TITLE= Setzen falls Ausgang 0 UN A 0.0 UN #T_Merker U E 0.0 S #Toggle_Merker NETWORK //Nr.:5 TITLE= Ausgang je nach Togglemerker U #Toggle_Merker = A 0.0 END_ORGANIZATION_BLOCK
Beispiel: Ampel als Zustandsmaschine mit RS FF Eine vereinfachte Ampelanlage soll gesteuert werden. Die Zustnde sind Rot (3s), Gelb (1s) und Grn (2s). Ein Reset ist vorzusehen, bei dem alle Zustnde auf Aus gehen. Mit einem Ein Taster geht die Ampel in den Zustand Rot. Die einfache Ampel ist als Zustandsmaschine mit RS FF auszufhren. Es soll symbolisch programmiert werden. Symbolic Datei
Einschalter Restschalter Rot Merker Gelb Merker Gruen Merker Rot Gelb Gruen Timer Rot Timer Gelb Timer Grn E E M M M A A A T T T 0.0 0.1 0.0 0.1 0.2 0.0 0.1 0.2 0 1 2 BOOL BOOL BOOL BOOL BOOL BOOL BOOL BOOL TIMER TIMER TIMER Ein Reset Merker Rot Merker Gelb Merker Gelb Rot Gelb Grn Timer Rot Timer Gelb Timer Grn
ORGANIZATION_BLOCK OB 100
TITLE = "Complete Restart" AUTHOR: Graf FAMILY: Ampel einfach NAME: Vorlesungsbeispiel VERSION: 1.0 VAR_TEMP OB100_EV_CLASS:BYTE logged in diagnostic buffer OB100_STRTUP:BYTE OB100_PRIORITY:BYTE OB100_OB_NUMBR:BYTE OB100_RESERVED_1:BYTE OB100_RESERVED_2:BYTE OB100_STOP:WORD OB100_STRT_INFO:DWORD OB100_DATE_TIME:DATE_AND_TIME END_VAR BEGIN NETWORK //Nr.:1 TITLE = SET R "Rot Merker" R "Gruen Merker" R "Gruen Merker" BE END_ORGANIZATION_BLOCK
//16#13, Event class 1, Entering event state, Event //16#81/82/83/84 Method of startup //27 (Priority of 1 is lowest) //100 (Organization block 100, OB100) //Reserved for system //Reserved for system //Event that caused CPU to stop (16#4xxx) //Information on how system started //Date and time OB100 started
ORGANIZATION_BLOCK OB1
TITLE = "Zyklisches Hauptprogramm" AUTHOR: Graf FAMILY: Ampel einfach NAME: Vorlesungsbeispiel VERSION: 1.0 VAR_TEMP OB1_EV_CLASS:BYTE OB1_SCAN_1:BYTE OB1_PRIORITY:BYTE OB1_OB_NUMBR:BYTE OB1_RESERVED_1:BYTE OB1_RESERVED_2:BYTE OB1_PREV_CYCLE:INT OB1_MIN_CYCLE:INT
//Bits 0-3 = 1 (Coming event), Bits 4-7 = 1 (Event class 1) //1 (Cold restart scan 1 of OB 1), 3 (Scan 2-n of OB 1) //1 (Priority of 1 is lowest) //1 (Organization block 1, OB1) //Reserved for system //Reserved for system //Cycle time of previous OB1 scan (milliseconds) //Minimum cycle time of OB1 (milliseconds)
OB1_MAX_CYCLE:INT //Maximum cycle time of OB1 (milliseconds) OB1_DATE_TIME:DATE_AND_TIME //Date and time OB1 started Ein_Flankenmerker:BOOL END_VAR BEGIN NETWORK //Nr.:1 TITLE = Flankenerkennung U "Einschalter" //Ein FP M 1.0 = #Ein_Flankenmerker NETWORK //Nr.:2 TITLE= Rot L S5T#3S O "Restschalter" //Reset O "Gelb Merker" //Merker Gelb R "Rot Merker" //Merker Rot O #Ein_Flankenmerker O( U "Gruen Merker" //Merker Gelb UN "Timer Grn" //Timer Grn ) S "Rot Merker" //Merker Rot SV "Timer Rot" //Timer Rot NETWORK //Nr.:3 TITLE= Gelb L S5T#1S O "Restschalter" //Reset O "Gruen Merker" //Merker Gelb R "Gelb Merker" //Merker Gelb U "Rot Merker" //Merker Rot UN "Timer Rot" //Timer Rot S "Gelb Merker" //Merker Gelb SV "Timer Gelb" //Timer Gelb NETWORK //Nr.:4 TITLE= Grn L S5T#2S O "Restschalter" //Reset O "Rot Merker" //Merker Rot R "Gruen Merker" //Merker Gelb U "Gelb Merker" //Merker Gelb UN "Timer Gelb" //Timer Gelb S "Gruen Merker" //Merker Gelb SV "Timer Grn" //Timer Grn NETWORK //Nr.:5 TITLE= Anzeige U "Rot Merker" //Merker Rot S "Rot" //Rot R "Gelb" //Gelb R "Gruen" //Grn U R S R U R R S "Gelb Merker" "Rot" "Gelb" "Gruen" "Gruen Merker" "Rot" "Gelb" "Gruen" //Merker Gelb //Rot //Gelb //Grn //Merker Gelb //Rot //Gelb //Grn //Merker Rot //Merker Gelb //Merker Gelb //Rot //Gelb //Grn
UN "Rot Merker" UN "Gelb Merker" UN "Gruen Merker" R "Rot" R "Gelb" R "Gruen" END_ORGANIZATION_BLOCK
Beispiel: Ampel als Zustandsmaschine mit Zhlern Eine vereinfachte Ampelanlage soll gesteuert werden. Die einfache Ampel ist als Zustandsmaschine mit Zhler auszufhren. Die Zustnde sind Rot (6s, A0.0), Gelb (1s, A0.1) und Grn (3s, A0.2). Ein Reset (E0.1) ist vorzusehen, bei dem die Ampel in den Zustand Rot geht und dort verharrt. Mit einem Ein Taster (E0.0) geht die Ampel ebenfalls in den Zustand Rot, jedoch wird zustzlich der Zhler gestartet. Es soll symbolisch programmiert werden. Die Zhlergrenzen sind als Variable auszufhren, damit eine nderung leicht erfolgen kann. Smbolic Datei
Start Stop Timer0 Timer1 Zhler0 rot gelb gruen Zaehlerwert E E T T Z A A A AB 0.0 0.1 0 1 0 0.0 0.1 0.2 1 BOOL BOOL TIMER TIMER COUNTER BOOL BOOL BOOL BYTE Starttaste Stoptaste Timer 0 Timer 1 Zhler 0 rot gelb gruen Zaehlerwert
ORGANIZATION_BLOCK OB1
TITLE = "einfache Ampel mit Zhler AUTHOR: Graf FAMILY: nb NAME: nb VERSION: 1.0 VAR_TEMP OB1_EV_CLASS:BYTE OB1_SCAN_1:BYTE OB1_PRIORITY:BYTE OB1_OB_NUMBR:BYTE OB1_RESERVED_1:BYTE OB1_RESERVED_2:BYTE OB1_PREV_CYCLE:INT OB1_MIN_CYCLE:INT OB1_MAX_CYCLE:INT OB1_DATE_TIME:DATE_AND_TIME Takt:BOOL rot_grenze:INT gruen_grenze:INT reset_wert:INT END_VAR BEGIN NETWORK //Nr.:1 TITLE= Grenzen setzen L 5 T #rot_grenze L 7 T #gruen_grenze L 10 T #reset_wert NETWORK //Nr.:2 TITLE = Takt L S5T#500MS U UN SI UN SI "Start" "Timer1" "Timer0" #Takt "Timer1" //Starttaste //Timer 1 //Timer 0 "
//Bits 0-3 = 1 (Coming event), Bits 4-7 = 1 (Event class 1) //1 (Cold restart scan 1 of OB 1), 3 (Scan 2-n of OB 1) //1 (Priority of 1 is lowest) //1 (Organization block 1, OB1) //Reserved for system //Reserved for system //Cycle time of previous OB1 scan (milliseconds) //Minimum cycle time of OB1 (milliseconds) //Maximum cycle time of OB1 (milliseconds) //Date and time OB1 started //Taktvariable //bis hier rot //ab hier grn //ab hier Zhler rcksetzen
//Timer 1
U "Timer0" = #Takt NETWORK //Nr.:3 TITLE= zhlen U #Takt ZV "Zhler0" NETWORK //Nr.:4 TITLE= rot L "Zhler0" L #rot_grenze <=I = "rot" NETWORK //Nr.:5 TITLE= gelb L "Zhler0" L #rot_grenze >I U( L "Zhler0" L #gruen_grenze <I ) = "gelb" NETWORK //Nr.:6 TITLE= grn L "Zhler0" L #gruen_grenze >=I = "gruen" NETWORK //Nr.:7 TITLE= Zhler rcksetzen L "Zhler0" L #reset_wert ==I R "Zhler0" NETWORK //Nr.:8 TITLE= Anzeige Zhlerwert L "Zhler0" T "Zaehlerwert" END_ORGANIZATION_BLOCK
//Timer 0
//Zhler 0
//Zhler 0
//rot
//Zhler 0
//Zhler 0
//gelb
//Zhler 0
//gruen
//Zhler 0
//Zhler 0
//Zhler 0 //Zaehlerwert
Beispiel: Pulsgenerator mit OB33 und Netzausfallanzeige Ein Pulsgenerator soll ber den OB33 programmiert werden. Ausgang A0.0 soll im Takt von 1Hz ein und ausgeschalten werden. Ausgang A0.7 soll anzeigen fals die Spannung ausgefallen ist.
OB101
ORGANIZATION_BLOCK OB 101 TITLE = "Restart" BEGIN NETWORK //Nr.:1 TITLE = SET S A 0.7 END_ORGANIZATION_BLOCK
OB100
ORGANIZATION_BLOCK OB 100 TITLE = "Complete Restart" BEGIN NETWORK //Nr.:1 TITLE = SET R A 0.7 END_ORGANIZATION_BLOCK
OB33
ORGANIZATION_BLOCK OB 33 TITLE = "Cyclic Interrupt" BEGIN NETWORK //Nr.:1 TITLE = UN A 0.0 = A 0.0 END_ORGANIZATION_BLOCK
Beispiel: Analogeingabe, Wandlung und Anzeige der Spannung als BCD Wert Auf dem ersten Steckplatz soll ein Analogeingangsmodul gesteckt werden. Der erste Kanal soll eingelesen werden. Die Konfiguration ist 10 V. Auf Ausgang AW0 soll der Analogwert als 4 Digit BCD Wert dargestellt werden. Negative Werte sollen durch Ausgang A2.0 dargestellt werden
ORGANIZATION_BLOCK OB1 TITLE = "Zyklisches Hauptprogramm" AUTHOR: MHJTW FAMILY: nb NAME: nb VERSION: 1.0 VAR_TEMP . // negativ:BOOL END_VAR BEGIN NETWORK //Nr.:1 TITLE = U #negativ R #negativ L PEW 256 L W#16#9000 <D POP SPB pos INVI S #negativ pos :NOP 1 DTR L 2.764800e+04 /R L *R T L *R RND DTB T U =
//falls vorher negativ //vorbelegt positiv //Analogwert einlesen //kleister negativer Wet //positiv //Analogwert zurck in Akku1 //weitere Bearbeitung //1 Komplement Akku1_L //negativ merken //double to real //6C00 = 10V = 27648 //93FF = -10V //normieren auf 1
1.000000e+01 //Real Darstellung 10V = 10 MD 0 1.000000e+02 //Real Darstellung 10V = 1000 //Real nach Double //Double nach BCD AW #negativ A 0 //positiv oder negativ 2.0
END_ORGANIZATION_BLOCK