Upload
duonghanh
View
257
Download
4
Embed Size (px)
Citation preview
Grundlagen der SPS-Programmierung /
Prozessinformatik
Skriptum zum weiterbildenden Kurs im Rahmen des Projekts
OTH mind
2017
Prof. Dr. Wolfgang Bock
OTH mind – BMBF Verbundprojekt
GRUNDLAGEN DERSPS-PROGRAMMIERUNG /
PROZESSINFORMATIK
Skriptum zum weiterbildenden Kurs
im Rahmen des Projekts
OTHmind
PROF. DR. W. BOCK
OSTBAYERISCHE TECHNISCHE HOCHSCHULE REGENSBURG
FAKULTAT MASCHINENBAU
MAILTO: [email protected]
STAND: 9. JANUAR 2018
Copyright: Dieses Skriptum wird im Rahmen des Projekts OTHmind als kostenlose Lehrun-
terlage zur Verfugung gestellt.
Grundlagen der SPS Programmierung /Prozessinformatik Prof. Dr. W. Bock
Inhaltsverzeichnis
1 Einfuhrung und Grundbegriffe 2
1.1 Technischer Prozess . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
1.1.1 Begriffsbestimmung . . . . . . . . . . . . . . . . . . . . . . . . . 2
1.1.2 Typisierung von technischen Prozessen . . . . . . . . . . . . . . . 3
1.2 Automatisierung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
1.2.1 Begriffsdefinition . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
1.2.2 Grundfunktionen . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
1.2.3 SPS als Steuerungsgerat der Industrieautomatisierung . . . . . . . . 9
1.2.4 Verteilte Automatisierung . . . . . . . . . . . . . . . . . . . . . . 11
1.3 Ubersicht zu Normen und Programmiersprachen . . . . . . . . . . . . . . . 16
1.3.1 IEC 61131 - Grundlagen . . . . . . . . . . . . . . . . . . . . . . . 17
1.3.2 IEC 61131 - Modelle . . . . . . . . . . . . . . . . . . . . . . . . . 20
1.3.3 IEC 61131 - Programmiersprachen . . . . . . . . . . . . . . . . . 29
2 Beschreibungsmittel der Prozessinformatik 34
2.1 Algebraisch-logische Beschreibungsmittel . . . . . . . . . . . . . . . . . . 34
2.1.1 Elementare Verknupfungen boolscher Variablen . . . . . . . . . . . 35
2.1.2 Zusammengesetzte Verknupfungen . . . . . . . . . . . . . . . . . 39
2.1.3 Boolsche Anweisungen in AWL, FUP und KOP . . . . . . . . . . . 44
2.1.4 Logische Verknupfungen von Bitstrings . . . . . . . . . . . . . . . 47
2.1.5 Arithmetik und Analogwertverarbeitung . . . . . . . . . . . . . . . 51
2.1.6 Typkonvertierungen . . . . . . . . . . . . . . . . . . . . . . . . . 56
2.1.7 Vergleichsausdrucke . . . . . . . . . . . . . . . . . . . . . . . . . 57
2.1.8 Bedingte und unbedingte Programmverzweigung . . . . . . . . . . 63
2.1.9 Schleifen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
2.2 Schaltwerkprogrammierung . . . . . . . . . . . . . . . . . . . . . . . . . 69
2.2.1 Zustandsautomaten . . . . . . . . . . . . . . . . . . . . . . . . . . 70
2.2.2 Datenspeicherung . . . . . . . . . . . . . . . . . . . . . . . . . . . 74
2.2.3 Flipflop als Speicher fur 1 Bit . . . . . . . . . . . . . . . . . . . . 81
2.2.4 Flankenauswertung . . . . . . . . . . . . . . . . . . . . . . . . . . 87
2.2.5 RS-Flipflops als Zustandsspeicher . . . . . . . . . . . . . . . . . . 91
2.2.6 Zeitgeber (Timer) . . . . . . . . . . . . . . . . . . . . . . . . . . . 94
2.2.7 Zahler (Counter) . . . . . . . . . . . . . . . . . . . . . . . . . . . 97
3 Programmstrukturierung und Programmorganisation 102
3.1 Funktion-POE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102
3.1.1 Allgemeine Eigenschaften der Funktionen . . . . . . . . . . . . . . 102
3.1.2 Deklaration einer Funktion . . . . . . . . . . . . . . . . . . . . . . 102
3.1.3 Aufruf von Funktionen . . . . . . . . . . . . . . . . . . . . . . . . 104
3.1.4 Standardfunktionen . . . . . . . . . . . . . . . . . . . . . . . . . . 108
II
Grundlagen der SPS Programmierung /Prozessinformatik Prof. Dr. W. Bock
3.2 Funktionsbaustein-POE . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108
3.2.1 Allgemeine Eigenschaften von Funktionsbausteinen . . . . . . . . 108
3.2.2 Deklaration eines Funktionsbausteins . . . . . . . . . . . . . . . . 109
3.2.3 Instanziierung und Aufruf von Funktionsbausteinen . . . . . . . . . 111
3.2.4 Standardisierte Funktionsbausteine . . . . . . . . . . . . . . . . . 116
3.3 Programm-POE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117
3.3.1 Allgemeine Eigenschaften von Programm-POEs . . . . . . . . . . 117
3.3.2 Deklaration eines Programms . . . . . . . . . . . . . . . . . . . . 117
3.3.3 Taskverwaltung . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118
4 Programmiertechniken 120
4.1 Schrittkettenprogrammierung . . . . . . . . . . . . . . . . . . . . . . . . . 120
4.1.1 Normelemente der grafischen Darstellung . . . . . . . . . . . . . . 120
4.1.2 Realisierung von Schrittketten . . . . . . . . . . . . . . . . . . . . 124
4.1.3 Programmbeispiele . . . . . . . . . . . . . . . . . . . . . . . . . . 129
4.2 Strukturierte Hochsprachenprogrammierung . . . . . . . . . . . . . . . . . 130
4.2.1 Struktogramme . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131
4.2.2 Strukturblock Verarbeitung . . . . . . . . . . . . . . . . . . . . . . 132
4.2.3 Strukturblock Auswahl . . . . . . . . . . . . . . . . . . . . . . . . 132
4.2.4 Strukturblock Wiederholung . . . . . . . . . . . . . . . . . . . . . 133
4.2.5 Kombination von Strukturblocken . . . . . . . . . . . . . . . . . . 134
4.2.6 Ausdrucke und Anweisungen . . . . . . . . . . . . . . . . . . . . 135
4.2.7 Auswahl- und Fallunterscheidung . . . . . . . . . . . . . . . . . . 136
4.2.8 Schleifen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137
4.2.9 Aufruf von POEs . . . . . . . . . . . . . . . . . . . . . . . . . . . 139
5 Kommunikationstechniken 141
5.1 Dezentralisierung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142
5.1.1 Bussysteme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143
5.1.2 Das ISO/OSI-Modell . . . . . . . . . . . . . . . . . . . . . . . . . 146
6 Visualisierungstechniken 148
6.1 Visualisierung mit OPC . . . . . . . . . . . . . . . . . . . . . . . . . . . . 148
6.1.1 OPC Unified Architecture . . . . . . . . . . . . . . . . . . . . . . 149
6.2 Visualisierungslosungen am Beispiel von CoDeSys . . . . . . . . . . . . . 150
6.2.1 Visu-Projektvarianten . . . . . . . . . . . . . . . . . . . . . . . . . 150
6.3 Erstellen einer Visualisierung . . . . . . . . . . . . . . . . . . . . . . . . . 153
III
Grundlagen der SPS Programmierung /Prozessinformatik Prof. Dr. W. Bock
Thema
Die Prozessinformatik ist eine Disziplin der angewandten Informatik. Sie versteht sich als
ein Bindeglied zwischen der Kern-Informatik und der Außenwelt. Das Ziel besteht in der
Analyse von technischen Prozessen und in deren Einflussnahme, soweit das im technischen
Rahmen moglich ist.
Die am haufigsten vertretene Hardware-Plattform zur Steuerung von technischen Prozessen
in der Industrie ist die Speicherprogrammierbare Steuerung (SPS). Im Prinzip handelte es
sich um einen robusten industriellen Computer mit einem hersteller-spezifischen Betriebssy-
stem.
In diesem Kurs werden nicht nur typisch informatorische Dinge wie universelle sowie spe-
zielle Algorithmen und deren Hardware-Realisierung vermittelt, sondern auch Kenntnisse
uber die Prozesse, die als Objekt dienen.
Die Lehrveranstaltung ist umfasst auch die Beschreibung von Hard- und Softwarekompo-
nenten fur SPSen und einen Ausblick auf Datenkommunikation uber Bussysteme und Pro-
zessdatenvisualisierung.
Ziele
Lernziele:
• Erwerb von Grundkenntnissen der SPS- und Automatisierungstechnik.
• Umgang mit Begriffen aus dem Bereich der technischen Prozesse.
• Informationsverarbeitung in Prozessrechnern: Zeitliche Koordination, Echtzeitsyste-
me, Taskkonzept.
• Kennenlernen der standardisierten Programmiersprachen fur SPSen gemaß IEC
61131-3
• Beschreibungsmethoden der Automatisierung: Netzwerke, Schaltwerke, Ablauf- und
Zustandssteuerungen
• Organisation von Steuerungsprogrammen: Programme, Funktionsbausteine, Funktio-
nen
• Prozessvisualisierung
• Buskommunikation
Kompetenzen:
• Fahigkeit zur Abstraktion und Analyse einer Automatisierungsproblemstellung und
Umsetzung in SPS-Programme mit geeigneten Entwurfsmethoden
IV
Grundlagen der SPS Programmierung /Prozessinformatik Prof. Dr. W. Bock
• Fahigkeit zur Programmierung eines Steuerungsalgorithmus in den Sprachen Anwei-
sungsliste, Funktionsbausteinsprache, Strukturierter Text und Ablaufsprache
• Aufstellung von Wahrheitstabellen, Zustandsfolgetabellen, Ablauf- und Zustandsgra-
fen fur Steuerungsaufgaben
1
Grundlagen der SPS Programmierung /Prozessinformatik Prof. Dr. W. Bock
1 Einfuhrung und Grundbegriffe
Die Automatisierungstechnik hat als wesentliche Aufgabe die Steuerung und Uberwachung
von technischen Systemen. Ein System ist wiederum wie folgt (DIN 19226) charakterisiert:
”Ein System ist eine in einem betrachteten Zusammenhang gegebene Anordnung von Ge-
bilden, die miteinander in Beziehung stehen. Diese Anordnung wird auf Grund bestimmter
Vorgaben gegenuber ihrer Umwelt abgegrenzt.“
Wesentliches Charakteristikum eines (technischen) Systems sind die darin ablaufenden
(technischen) Prozesse.
1.1 Technischer Prozess
1.1.1 Begriffsbestimmung
Unter einem technischen Prozess versteht man den Vorgang einer Zustandsanderung in ei-
nem technischen System.
Technischer Prozess
Zustandsänderung
Zustandserfassung Zustandsbeeinflussung
Steuerungssystem
Zielzustand Zielvorgabe
(a) Gewunschte Kennzeichen
• Die Prozesse laufen zielgerichtet und nicht zufallig bzw. unkontrolliert ab.
• Ein Zielzustand wird gemaß Vorgabe durch das Uberwachungs- bzw. Projektier-
personal erreicht.
2
Grundlagen der SPS Programmierung /Prozessinformatik Prof. Dr. W. Bock
• Zeit- und Qualitatsvorgaben werden eingehalten.
(b) Ziele
• Entlastung des Menschen
• Produktivitatssteigerung
• Qualitatsverbesserung, Erhohung der Zuverlassigkeit
• Neuartige Losungen
(c) Probleme
• Prozessbeschreibung ist nicht vollstandig
• Unvollstandige Erfassung von Einflussparametern
• Fehlerfreiheit des Steuerungsprogrammes
Ein technisches System umfasst alle technischen Prozesse in einem abgegrenzten Raum.
Technisches System
(Anlage)
Zufluss des
Verarbeitungsgutes
Abfluss des
Verarbeitungsgutes
Ste
llen
Mes
sen
Technischer Prozess
im System
Eingangs-
größen
Bee
infl
usse
n
Vis
uali
sier
en
Ausgangs-
größen
Syst
emgr
enze
n
1.1.2 Typisierung von technischen Prozessen
Folgende Unterscheidungskriterien lassen sich heranziehen:
(a) Art des Verarbeitungsgutes
Man unterscheidet beim Verarbeitungsgut reale (massebehaftete) Materialien, Stoffe
als Energietrager und abstrakte Informationen.
3
Grundlagen der SPS Programmierung /Prozessinformatik Prof. Dr. W. Bock
• Materialprozesse
– Forderprozesse: Produkte werden von Position A nach Position B befordert,
z.B. Paketverteilung
– Verfahrenstechnische Prozesse: Mehrere Ausgangsstoffe (Edukte) werden in
Form und Substanz verandert und zu neuen Produkten veredelt, z.B. chemi-
sche Prozesse
– Fertigungsprozesse: Produkte werden gefertigt und bearbeitet, z.B. Montage
• Energieprozesse
– Verbrauchsprozesse: Energieumwandlung, z.B. elektrische Antriebe
– Verteilungsprozess: Energietransport, z.B. Ventilgesteuerte Druckluftbereit-
stellung
• Informationsprozesse
– Kommunikationprozess: Informationstransport, z.B. Netze, Wireless-
kommunikation
– Rechenprozess: Informationsverarbeitung, z.B. digitaler Regler
– Speicherprozess: Informationshaltung, z.B. Videoaufzeichnung
(b) die Verarbeitungsart
Unabhangige vom Verarbeitungsgut ist die Art der Verarbeitung zu unterscheiden:
• Transport
• Umformung
• Speicherung
(c) Verlauf von Zustanden und Ereignissen
Hier wird nach der Art der zu erfassenden Zustandsgroße unterschieden.
• Kontinuierlicher (stetiger) Prozess
– Die Zustandsgroße ist verandert sich in Zeit und/oder Ort kontinuierlich.
Beispiele: Druck, Temperatur oder Konzentration in Verfahrenstechnischen
Anlagen.
– Beschreibung mit mathematisch-analytischen Modellen zur Regelung der
Zustandsgroßen
• Diskreter (unstetiger) Prozess
– Folge von Einzelereignissen, die nacheinander oder parallel ablaufen,
z.B. Stuckprozesse, Folgeprozesse, abgrenzte Fertigungsschritte
4
Grundlagen der SPS Programmierung /Prozessinformatik Prof. Dr. W. Bock
– Beschreibung mit logischen Gleichungen (Schaltnetzen), Zeit- und Spei-
chergliedern (Schaltwerken) sowie Ablaufplanen
• Hybride Prozesse
Die Mehrzahl der technischen Prozesse stellt eine Mischform dar. In diskreten
Zeitabstanden laufen kontinuierliche Prozesse ab.
(d) Art des Auftretens von Zustandsveranderungen
Relevant ist hier der Zeitpunkt der Erfassung einer Zustandsgroße
• Deterministische Prozesse
Zeitliche Abfolge ist fest und vorhersagbar, z.B. Fertigungsprozess
• Stochastische Prozesse
Zeitliche Abfolge ist nicht vorhersagbar. Prozesse gehorchen den Gesetzen der
Statistik, z.B. Straßenverkehr
In der Praxis liegen haufig Kombinationen von Elementarprozessen vor, die zu komplexen
Gesamtsystem fuhren. Die Steuerung der Elementarprozesse ist am Grundtyp auszurichten.
Ein Automatisierungssystem ist i. d. R. hierarchisch aufgebaut und umfasst mehrere Pro-
zessabstraktionsebenen.
Hierarchiestufen:
• Elementarprozess: Es liegt genau eine Verarbeitungsart und ein Verarbeitungsgut vor.
Alternativ spricht man auch von einem Prozessbaustein.
• Einzelprozess: Kleinste geschlossene Prozesseinheit, zusammengesetzt aus Elemen-
tarprozessen.
• Verbundprozesse: Zusammenfassung verschiedener Verarbeitungsbereiche in einem
Betrieb oder einer Anlage.
• Betriebsprozess: Umfasst alle Verarbeitungsbereiche in einem Unternehmen oder Un-
ternehmensteil
Als Beispiel sei eine industrielle Waschmaschine fur genannt. Ein Verbundprozess wurde
alle moglichen Einzelprozesse umfassen:
• Waschen
• Spulen
• Schleudern
• Heißtrocknen
Der Einzelprozess”Waschen“ setzt sich nach Fullen der Waschtrommel wiederum aus den
Elementarprozessen zusammen:
5
Grundlagen der SPS Programmierung /Prozessinformatik Prof. Dr. W. Bock
• Wasser zufuhren
• Waschmittel zufuhren
• Waschvorgang (Trommelrotation) uber bestimmte Zeit
• Wasserablassen
Betriebsprozess
Verbundprozess
Einzelprozess Einzelprozess
Verbundprozess
Einzelprozess Einzelprozess
Verbundprozess
Einzelprozess Einzelprozess
1.2 Automatisierung
1.2.1 Begriffsdefinition
Unter dem Begriff Automatisierungstechnik versteht man die Disziplin, die sich mit der
Uberwachung und Steuerung von technischen Systemen befasst.
In der industriellen Praxis wird mit dem Begriff Automatisierung allgemein das Umstellen
von fertigungs- und verfahrenstechnischen Prozessen auf selbsttatig ablaufende Vorgange
verstanden.
Das technisches System wird durch eine aufgabenspezifischen Fertigungs- oder Prozessan-
lage (kurz: Anlage) gebildet, die mit einem oder mehreren Automatisierungsgeraten (Au-
tomatisierungseinrichtung) verbunden wird. Dazu sind Schnittstellenkomponenten zwi-
schen Anlage und Automatisierungsgerat einzurichten. Diese Schnittstellen bilden Sensoren,
Akt(uat)oren und Kommunikationseinrichtungen.
6
Grundlagen der SPS Programmierung /Prozessinformatik Prof. Dr. W. Bock
Automatisierungs - gerät
IO - Baugruppen
Sensorik Aktuatorik
Fertigungsanlage Prozessanlage
Stellen
Aufnehmen
Mikrocontrollerboards Motorsteuerung
SPS ( IPC ) Verteilte Steuerung
Warenausgabeautomat Verbrennungsmotor im Automobil
Flaschenabfüllanlage Fertigungsstraße
Automatisierungsprinzip
Beispiele
Je niedriger die geplante Anzahl an Exemplaren einer automatisierten Anlage desto spezifi-
scher ist das Automatisierungsgerat ausgelegt. Bei hoher Anzahl werden die Hard- und Soft-
ware des Automatisierungsgerates exakt auf die Notwendigkeiten begrenzt, standardisierte
Komponenten kommen nur begrenzt zum Einsatz.
Mit steigender Komplexitat der Prozessanlagen wird auf frei programmierbare Steuerungen
mit modularen Funktionsbaugruppen und standardisierten Programmiertechniken zuruckge-
griffen.
Im Nachfolgenden werden industrieubliche Standardautomatisierungsgerate wie Speicher-
programmierbare Steuerungen (SPS/PLC) oder Industrie-PCs (IPC) und deren Funktionser-
weiterungen behandelt.
1.2.2 Grundfunktionen
Als Grundfunktionen eines Automatisierungssystems lassen sich folgende Begriffe nennen:
Steuern - Regeln - Visualisieren - Kommunizieren
(a) Steuern
• Kennzeichen ist der offene Wirkungsablauf (open loop) uber eine nicht in Echt-
zeit ruckgekoppelte Wirkungsstrecke
7
Grundlagen der SPS Programmierung /Prozessinformatik Prof. Dr. W. Bock
Automatisierung
Steuerung Anlage
Ereignisse
Zustände
Stell -
signal
Funktion
Zustände
• Die Eingangsgroßen stellen Ereignisse dar, die nach festgelegter Gesetzmaßig-
keit die Funktion der Anlage bestimmen.
• Steuerungen kommen hauptsachlich bei unstetigen Systemen zum kontrollierten
Ablauf eines Bearbeitungs- oder Prozessschrittes vor.
• Mogliches Problem: Die Auswirkung einer nicht vorhersagbaren Storgroße wird
nicht oder nicht schnell genug ausgeglichen.
(b) Regeln
• Kennzeichen ist eine Ruckfuhrung mindestens einer Anlagenzustandsgroße auf
das Automatisierungsgerat und die Realisierung eines geschlossenen Wirkungs-
ablaufs (closed loop). Diese Ruckfuhrung erfolgt in einem deterministischen
Zeitraster, d.h. der Zeitrahmen ist vorhersagbar bzw. vorbestimmt.
• Die Regelgroße (Messgroße, Istwert) muss fortlaufend erfasst werden und mit
einem Sollwert verglichen werden.
Automatisierung
Regelung Anlage
Ereignisse
Zustände
Stell -
signal
Funktion
Zustände
• Mogliches Problem: Da eine Stellsignalanderung an der Anlage meist erst
verzogert zu einer Istwertanderung am Anlagenausgang fuhrt, besteht durch die
Ruckkopplung uber das Automatisierungsgerat eine Schwinggefahr.
(c) Visualisieren
• Unter Visualisierung versteht man in der Automatisierungstechnik Bedien- und
Beobachtungsbaugruppen zur Uberwachung und zum Eingriff wahrend eines
laufenden automatisierten Prozesses.
8
Grundlagen der SPS Programmierung /Prozessinformatik Prof. Dr. W. Bock
• Man unterscheidet mehrere Ebenen, ausgehend von Bedientableaus uber Text-
und Grafikdisplays bis zu komplexen PC-gestutzten Anlagendatenerfassungssy-
stemen (SCADA - Supervisory Control And Data Acquisition)
(d) Kommunizieren
• Bei komplexen Anlagen wird die Automatisierungsaufgabe an einzelne autark
arbeitende Komponenten (Prinzip der verteilten Automatisierung) ubertragen,
die allerdings untereinander Informationen austauschen mussen. Standardisierte
Kommunikationssysteme erlauben einen Datenaustausch auch zwischen Geraten
unterschiedlicher Hersteller.
• Die auszutauschenden Informationen umfasst die Ubermittlung von Signalen
zwischen Sensoren und Aktuatoren und dem Steuergerat, die Einbringung der
Steuerprogramme von Programmiergeraten in die frei-programmierbaren Steue-
rungen sowie die Ubermittlung von Statusmeldungen und Diagnoseinformatio-
nen in die ubergeordnete Anlagenuberwachung.
• Fur eine hohe Flexibilitat werden weniger Punkt-zu-Punktverbindungen realisiert
als vielmehr digitale BUS-Systeme (Binary Unit System) mit festgelegten Daten-
telegrammstrukturen. Im prozessnahen Bereich findet man sogenannte Feldbusse
mit Master-Slave- oder Multi-Master- Kommunikation vor.
Daneben sind auch weitere Anforderungen durch das Automatisierungsystem zu erfullen.
Als besonders wichtig gelten:
• Zuverlassigkeit und hohe Verfugbarkeit
• Sicherheit (Safety); Vermeidung von Gefahren bzw. Schutz vor Verletzungen
• Sicherheit (Security); Datenintegritat und Ausschluss unerlaubter Zugriffe
• Gleichmaßigkeit und Reproduktionsqualitat
• Wirtschaftlichkeit und okonomische Fragen
• Umweltschutz und okologische Fragen
1.2.3 SPS als Steuerungsgerat der Industrieautomatisierung
Obwohl die Varianten der Speicherprogrammierbaren Steuerungen (SPS) sich stark ausdiffe-
renziert haben, sind einige grundlegende Gemeinsamkeiten zu nennen. Als wichtiges Steue-
rungselement dient die Zentraleinheit (CPU / Resource), einem speziellen Mikrocomputer
mit optimierten Eigenschaften fur Automatisierungsaufgaben
9
Grundlagen der SPS Programmierung /Prozessinformatik Prof. Dr. W. Bock
Zentralbaugruppe
Steuer- und Rechenwerk
Speicherbereiche
Lade-
und Pro-
grammspeicher
Code- und
Daten-
bausteine
(POE)
Daten-
speicher
Prozess-
abbild
Variab-
len
System-
speicher
Betriebs-
system
Schnitt-
stellen
EingängeS
ignal
e (a
nal
og
/dig
ital
)Ausgänge
Sig
nal
e (a
nal
og
/dig
ital
)
Programmier-, Bus, HMI-Schnittstellen
Es sind drei Speicherarten zu unterscheiden:
(a) Ladespeicher: Anwenderprogrammcode in Form von ausfuhrbarem Objektcode. Als
Speichermedium kommen entweder RAM oder FlashEPROM (Speicherkarten) in Fra-
ge.
(b) Arbeitsspeicher: Er enthalt im RAM das aktuelle Prozessabbild sowie die unterschied-
lichen Variablen.
(c) Systemspeicher: Hier befindet sich Betriebssystem und Systemprogramme; als Medi-
um dient i.d.R. eine FlashPROM; ein Uberschreiben oder Andern ist nur in Form von
Firmware-Updates moglich.
Als Besonderheit fur SPSen ist der zyklische Programmablauf zu nennen. Mindestens ein
Programmmodul lauft kontinuierlich, meistens ohne Wartezeit zwischen den Durchlaufen
ab. Es gilt das sogenannte EVA- Prinzip:
• E: Eingange (Sensoren) auslesen und ins Eingangsabbild kopieren; dies geschieht zu
einem fixen Zeitpunkt
• V: Verarbeiten bzw. Abarbeiten des Programmcodes; das Eingangsabbild bleibt
wahrend dieses Prozesses eingefroren. Manipulierte Ausgangssignale werden ins Aus-
gangsabbild geschrieben und konnen dabei uberschrieben werden. Der letzte Schreib-
vorgang ist dominant. Der Programmcode darf keine Endlosschleifen enthalten; die
maximale Zykluszeit kann begrenzt werden.
• A: Ausgangssignale werden durch Ubernahme des Ausgangsabbildes auf die Aus-
gangssschnittstellen uberschrieben.
In Erganzungen kommen noch Funktion zur Initialisierung, zur Kommunikation uber Daten-
busse sowie interne Uberwachungenprozesse hinzu.
10
Grundlagen der SPS Programmierung /Prozessinformatik Prof. Dr. W. Bock
Initialisierung
Prozessorfunktionen
Eingangsabbilderstellen
Anwenderprogrammabarbeiten
1. Anweisung
2. Anweisung
Letzte Anweisung
Ausgangsabbildausgeben
Kommunikation
Hardware-Register
Analoge u. dig.E-Variablen
Ladespeicher
Datenspeicher
Analoge und dig.A-Variablen
SonderbaugruppenDatenbusse
Wie jeder Mikrocomputer verarbeitet eine SPS intern ausschließlich binare Daten.
Grundsatzlich wird dabei unterschieden:
• Bit - digital: kleinste Informationseinheit; Unterscheidung von zwei Alternativen
• Bitstring - digital: Zusammensetzung einer bestimmen Anzahl aus mehreren Bits mit
festgelegter Stellenzahl (4/8/16/32/...) zu einer handhabbaren Einheit
• Analogwert: Bitstring der Lange 16 Bit, die einem A/D-Wandler entstammt oder ei-
nem D/A-Wandler zugefuhrt wird; direkt Zuordnung zu Signalspannung, Strom o. an-
derer Messgroße. Auch Analogdaten werden CPU-intern digital verarbeitet!
1.2.4 Verteilte Automatisierung
Automatisierungsgerate werden durch spezielle Mikrocomputer dargestellt, die sowohl in
ihren Hardware- als auch Softwarekomponenten auf die geforderten Eigenschaften angepasst
sind.
11
Grundlagen der SPS Programmierung /Prozessinformatik Prof. Dr. W. Bock
Mikrocomputer
Betriebssystem Anwendungs- programme
Datenverarbeitungsperipherie
Prozessein - und ausgabemodule ( IO -Baugruppen)
Prozessanlage (Sensorik, Aktuatorik )
Automatisierungsgerät
• Betriebssystem und Rechnerkern sind herstellerspezifisch. Steuerungsaufgaben erfor-
dern Echtzeitbetriebssysteme.
• Bei der Datenverarbeitungsperipherie werden zunehmende Standardbaugruppen aus
dem Bereich der allgemeinen DV eingesetzt.
• Die Prozessein- und ausgabebaugruppen sind insoweit standardisiert, als dass ein An-
schluss von ublichen Sensoren und Aktuatoren mit gangigen Schnittstellen moglich
ist.
• Das Anwendungsprogramm beschreibt die Automatisierungsfunktionen und ist an-
wendungsspezifisch.
(a) Verteilung zwischen Automatisierungsgeraten
Bei einem verteilten Automatisierungssystem werden die Automatisierungsfunktionen
haufig auf mehr als ein Automatisierungsgerat verteilt.
12
Grundlagen der SPS Programmierung /Prozessinformatik Prof. Dr. W. Bock
Mikrocomputer
Betriebssystem Anwendungs- programme
Datenverarbeitungsperipherie
IO -Baugruppen
Prozessanlage 1 (Sensorik, Aktuatorik )
Automatisierungsgerät 1
Datenbusmodul
Mikrocomputer
Betriebssystem Anwendungs- programme
Datenverarbeitungsperipherie
Datenbusmodul
Prozessanlage n (Sensorik, Aktuatorik )
Automatisierungsgerät n
IO -Baugruppen
Datenbus
Fur die Datenkommunikation sind Busknoten (Kommunikationsprozessoren) und
Busmedien notwendig. Das Betriebssystem muss Kommunikationsroutinen zur
Verfugung stellen. Die Kommunikation uber den Datenbus unterteilt sich in folgen-
de Bereiche:
• Prozessdatenubertragung
• Programmubertragung und Betriebsartenwahl
• Ubertragung von Speicherbereichen
Damit Steuergerate und Peripheriegerate unterschiedlicher Anbieter miteinander ver-
netzt werden konnen, werden bevorzugt genormte und offengelegte Bussystem einge-
setzt.
Beispiele:
• AS-Interface (ASI)
• PROFIBUS
• CANOpen, Devicenet
• PROFINET, Ethercat, Powernet
In der Praxis ist die Verteilung einer Automatisierungsaufgabe auf mehrere Steue-
rungsrechner (Steuergerate) durchaus komplex, da die Abarbeitung der Aufgaben in
den einzelnen Steuergeraten zu synchronisieren ist. (Einen Ansatz dazu bietet die IEC
61499; s. S. ??).
13
Grundlagen der SPS Programmierung /Prozessinformatik Prof. Dr. W. Bock
(b) Verteilung zwischen einzelnen Prozessen
Das Anwendungsprogramm in einem Automatisierungsgerat ist abgesehen von ein-
fachsten Steuerungsaufgaben ebenfalls in mehrere Teilprozesse aufgeteilt.
Parameterübergabe
Echtzeitbetriebssystem
Anwendungsprozess 1 Anwendungsprozess n
Automatisierungsgerät
Die einzelnen Prozesse (Applikationen) setzen auf dem Betriebsystem auf und sind
mit diesem uber Parameteraustausch verbunden. Da die Prozesse haufig gleichzeitig
ablaufen muss das Betriebsystem eine Prioritatssteuerung und eine Multitaskingfahig-
keit beinhalten.
(c) Modularisierung
Ubersteigt die Komplexitat einer Steuerungsaufgabe oder die raumliche Ausdehnung
einer Prozessanlage die Leistungsfahigkeit eines einzelnen Automatisierungsgerates
mussen die Automatisierungsfunktionen modularisiert werden. Im Bereich der indu-
striellen Steuerungen wird bevorzugt eine hierarchische Struktur in der Modularisie-
rung zu Grunde gelegt.
Es ergeben sich Ebenen im Sinne der Aufrufhierarchie der Module. Zu jedem Modul
gehort eine Modulbeschreibung, die Auskunft uber Daten und Funktion des Moduls
gibt. Zweckmaßigerweise wird die Modulbeschreibung in der Vorbereitung der Auto-
matisierungsaufgabe erstellt.
AF 1
AF 2.1 AF 2.2 AF 2.3
AF 3.1 AF 3.2 AF 3.3 AF 3.3
Ebene 1
Ebene 2
Ebene 3
14
Grundlagen der SPS Programmierung /Prozessinformatik Prof. Dr. W. Bock
Eigenschaften von Software-Modulen:
Kennzeichen:
• genau abgegrenzte Funktionalitat
• moglichst wenig Abhangigkeit und Querverbindungen (Kapselung)
• Zugriff uber eine eindeutig definierte Schnittstelle
Zweck:
• Hilfsmittel zur Standardisierung
• Entkopplung paralleler Software-Entwicklungsprozesse
• Erhohung der Transparenz und Verstandlichkeit
Besonderheiten im Bereich Automatisierung:
• Modulgrenzen orientieren sich an der Anlage oder am technischen Prozess
Vorgehen zur Modularisierung:
• Prinzip Dekomposition bei neuen Aufgaben: Top→ Down
• Entwicklung von Varianten: haufig Bottom→ UP
(d) Vertikale Integration
Automatisierte Prozesse stellen heute das Ruckgrat in Fertigungsanlagen dar. Eine
wettbewerbsfahige Geschaftsfuhrung erfordert einen homogenen Informationsfluss
uber alle Unternehmensebenen hinweg. Unter der”Vertikalen Integration“ wird ein
homogener Informationsfluss von der Feldebene bis zur Unternehmensleitebene ver-
standen. In modernen Unternehmen sind daher heute integrierte Gesamtlosungen ge-
fragt, die einen durchgangigen Informationsfluss von der Automatisierungsebene bis
zur Unternehmensleitebene und umgekehrt ermoglichen.
ERP
MES
P& F Control
15
Grundlagen der SPS Programmierung /Prozessinformatik Prof. Dr. W. Bock
ERP: Enterprise Resource Planing (Unternehmens- und Betriebsleitebene)
MES: Manufacturing Execution System (Produktionsleitebene)
PC&FC: Process & Field Control (Prozess- und Feldebene)
Bussysteme, Visualisierung und Prozesssteuerung sind uber mehrere Ebenen hierar-
chisch angeordnet. Technische Prozesse sind jedoch im Wesentlichen auf die Prozess-
und Feldebene beschrankt.
Prozessführungsebene
Steuerungsebene
Sensoren & Aktoren
Prozess- leitebene
Feld- ebene
P& F - Control
Die Feldebene wird durch die Sensorik und Aktorik sowie durch Sensor-Aktor-
Kommunikation gebildet. In der Prozessebene kann wiederum zwischen zwei Untere-
benen unterschieden werden.
1. Prozessfuhrungsebene gebildet durch Anlagen zur Prozessdatenbereitstellung
und -verwaltung sowie die Prozessvisualisierung
2. Steuerungsebene bestimmt durch die SPS-Technik
3. Sensor-/Aktorebene, Feldebene bestimmt durch Sensoren und Aktoren und deren
signaltechnische Anbindung.
1.3 Ubersicht zu Normen und Programmiersprachen
Die Automatisierung beinhaltet einen Integrationsprozess, in dem Steuerung und Anlage,
Sensoren und Aktuatoren zu einem wechselwirkenden Organismus zusammengefasst wer-
den mussen.
Um dies zu gewahrleisten mussen zumindest die Schnittstellen zwischen den Komponenten
gewissen Standards genugen. Primar notwendig ist eine exakte Definition der elektrischen
Signalparameter zur Datenein- und -ausgabe an den Anschlussports der Steuerung.
Besonders anwenderrelevant ist die Programmiersoftware bei freiprogrammierbaren Steue-
rungen. Das Erlernen der Programmiertechniken ist kosten- und personalintensiv. Ursprung-
lich existierten nur proprietare Systeme die spater zu nationalen und heute zu internationalen
Standards weiterentwickelt wurden.
Zunehmend dienen Steuerungen auch zur Anlagen- und Betriebsdatenerfassung. Notwendig
sind dazu die Implementation gangiger Schnittstellen zu den wichtigsten Softwarepaketen,
die in der Produktions- und Fertigungsplanung eingesetzt werden.
16
Grundlagen der SPS Programmierung /Prozessinformatik Prof. Dr. W. Bock
Kontinuierlich wichtiger werden sicherheitstechnische Systeme. Diese sollen gewahrleisten,
dass sicherheitstechnische Funktionen im Storfall einen zu uberwachenden Prozess in einen
sicheren Zustand bringen. Dazu existieren mehrere nationale und internationale Normen.
1.3.1 IEC 61131 - Grundlagen
Wahrend bei freiprogrammierbaren Steuerungen ursprunglich die Steuerungshardware im
Vordergrund stand, wurde in den letzten Jahren hauptsachlich die Software mit immer neuen
Funktionen und Moglichkeiten ausgestattet.
Dies ist verbunden mit steigenden Anspruchen an die Ausbildung und die Fahigkeiten des
Programmierpersonals. Die Benutzung mehrerer unterschiedlicher Programmiersysteme in
einer Arbeitsgruppe sind damit kaum moglich. Auf Druck der Anwender kam es 1979 zur
Implementierung einer Arbeitsgruppe zur Erarbeitung einer herstellerubergreifenden Nor-
mung fur industrielle Steuerungen.
Es resultierte die mehrteilige Norm IEC 61131, die in den 90-er Jahren des 20-ten Jahrhun-
derts in Abschnitten verabschiedet wurden.
Die Norm IEC 61131 (DIN EN 61131) stellt eine Zusammenfassung und Fortschreibung
verschiedener nationaler und internationaler Normen dar. Aus deutscher Sicht sind die In-
dustrienormen DIN 40719-6 (Funktionsplane) und DIN 19239 (SPS-Programmierung) zu
nennen.
Bestandteile: Weitere Informationen: Link oder direkt unter www.plcopen.org
• Teil 1: Allgemeine Informationen
– Begriffsbestimmung und Funktionsmerkmale fur SPS
– Standardeigenschaften einer SPS
– Aufteilung der Automatisierungskomponenten
• Teil 2: Betriebsmittelanforderungen und Prufungen
– Festlegung der mechanischen und elektrischen Anforderungen
– Umgebungsbedingungen und Beanspruchungsklassen
– Typprufungen
• Teil 3: Programmiersprachen
– Festlegung von mehreren moglichen Programmiersprachen
– Harmonisierung durch ein sprachenubergreifendes Konzept
– Formale Definitionen, lexikalische und syntaktische Beschreibungen, Beispiele
• Teil 4: Anwenderrichtlinien
17
Grundlagen der SPS Programmierung /Prozessinformatik Prof. Dr. W. Bock
– Leitfaden fur den Anwender
– Praxisgerechte Hinweise von der Systemanalyse uber die Geratewahl bis zur
Wartung.
• Teil 5: Kommunikation
– Kommunikation zwischen Steuerungen unterschiedlicher Hersteller und mit an-
deren Geraten
– Definition von Konformitatsklassen, zur Kommunikation uber Netzwerke
• Teil 6: Funktionale Sicherheit
– Aspekte der Funktionalen Sicherheit einer Safety-SPS in Verbindung mit der IEC
61508-1, -2 and -3
– Beschreibung der Anforderungen an Hardware und Software fur Safety-SPS
– Test- und Uberprufungsmethoden fur sicherheitsrelevante Kenngroßen und Para-
meter
– Regeln fur Auswahl und Anwendung von Safety-SPSen
• Teil 7: Fuzzy Steuerungen
– Fuzzy Steuerungen mit und ohne Ruckfuhrung fur lineare und nichtlineare Sy-
steme
– Festlegung der Steuerungsparameter
– Muster- und Fehlererkennung, Echtzeitverzweigungen
• Teil 8: Anwender- und Implementationsrichtlinien fur Programmiersprachen
– Festlegung der Anforderungen an Programmiersprachen
– Teil 3 (Programmiersprachen) ist mit enthalten
• Teil 9: Kommunikationsinterface”IO-Link“
Die Norm wird von der PLCopen kontinuierlich weiter entwickelt, Erganzungen und Kor-
rekturen sind bereits erschienen bzw. auch weiterhin zu erwarten.
Der Begriff PLCopen steht fur eine internationale Organisation von SPS-Herstellern, Soft-
warehausern und unabhangigen Instituten mit dem Ziel der Forderung der Entwicklung und
des Einsatzes von kompatibler Software fur SPSen.
Programmiersprachen, die den Anspruch nach Kompatibilitat zur IEC 61131-3 haben,
mussen sich zertifizieren lassen. Dazu wird das Produkt, fur die ein Zertifizierung beantragt
wird, separat untersucht und bei vorhandener Konformitat in eine der folgenden Klassen
eingeteilt:
18
Grundlagen der SPS Programmierung /Prozessinformatik Prof. Dr. W. Bock
(a) Base Level (BL)
• Mit dem Programmiersystem erzeugte Programme mussen im Grundaufbau IEC
61131-3 vertraglich sein.
• Wesentlichen Sprachelemente einer Programmiersprache mussen vorhanden
sein.
• Zertifizierungstest nur offline!
(b) Conformity Level (CL)
• Alle zur Verfugung gestellten Funktionen mussen normkompatibel sein, es
mussen aber nicht alle moglichen Funktionen realisiert sein.
• Da nicht jede Hardware alle spezifizierten Datentypen unterstutzt, muss die Kom-
patibilitat nur bzgl. der tatsachlich deklarierbaren Daten erfullt sein.
(c) Reusability Level (RL)
• Mit dem System erzeugt Software muss zwischen zertifizierten Programmiersy-
stemen austauschbar sein.
• Zertifizierungstest auch online, mit angeschlossener SPS!
In der Realitat stehen einer weitgehenden Portabilitat einige begrenzende Faktoren ge-
genuber:
• Die Hardware-Eigenschaften der herstellerspezifischen SPSen haben Einfluss auf die
Programmarchitektur.
• Die hohe Funktionalitat, die in der IEC 61131-3 beschrieben ist, ist nicht vollstandig
mit den Betriebssystemen insbesondere von Klein- und Kompakt-SPSen abdeckbar.
• Im Vordergrund steht nicht eine uneingeschrankte Portierbarkeit, sondern die Gewahr-
leistung einer Grundfunktionalitat.
• Die Anwender und Kunden der Systemhersteller fordern eine gewisse Kompatibilitat
mit den Vorgangersystemen.
Aktueller Stand:
Derzeit sind die meisten Programmiersysteme mit Zertifikat BL Base Level fur eine oder
mehrere Sprachen am Markt. Am weitesten entwickelt ist die Sprache ST. Sie ist vereinzelt
bereits bzgl. CL oder sogar RL zertifiziert.
Software im Labor fur Automatisierungssysteme
CoDeSys -(Wago, Beckhoff TwinCat, usw): IL & ST zertifiziert nach BL
Simatic STEP7, TiA-Portal - ST & SFC zertifiziert nach BL
19
Grundlagen der SPS Programmierung /Prozessinformatik Prof. Dr. W. Bock
1.3.2 IEC 61131 - Modelle
In der IEC 61131 sind Modell fur die Hardware und die Software fur Industrieautomatisie-
rungsgerate festgehalten:
(a) Hardware-Modell der IEC 61131
Im Hardwaremodell der IEC 61131 wird die Gesamtfunktion eines kompatiblen Au-
tomatisierungsgerates in drei logische Funktionen aufgeteilt:
Kommunikation
Prog / Debug
HMI
Speicherver - waltung
Anwend - ungen
Betriebs- system
Anwend - ungs -
programm - ausführ -
ung
Prozessschnittstelle
Stro
m- u
nd S
pann
ungs
vers
orgu
ng
Peripherie
Programmierer
Bedienpersonal
Prozessanlage
• Signalverarbeitungsfunktion
Sie stellt den zentralen Funktionsblock der SPS dar. Hier werden in Abhangigkeit
vom Anwendungsprogramm die Eingangsdaten mit Speichervariablen verknupft
und neue Ausgangsdaten erzeugt. Das Anwendungsprogramm stutzt sich dabei
auf den internen Speicher, das Betriebssystem sowie auf die Taskverwaltung
• Prozessschnittstellenfunktion
Die Prozessschnittstelle transportiert die Ein- und Ausgangsdaten von der inter-
nen Signalverarbeitung zu den Sensor/Aktuator- Baugruppen. Dabei werden die
Signalparameter entsprechend angepasst.
• Kommunikationsfunktion
20
Grundlagen der SPS Programmierung /Prozessinformatik Prof. Dr. W. Bock
Die Kommunikationsfunktion dient dem Signalaustausch mit anderen Automati-
sierungsgeraten. Die HMI- (Human Machine Interface)- Schnittstelle stellt eine
Bedienerschnittstelle dar. Am PROG/DEBUG- Port erfolgt der Download des
Anwendungsprogramms bzw. die Programmverifizierung.
(b) Software-Modell der IEC 61131
Die in Kap.1.2.4 angesprochene verteilte Struktur hat ihre Konsequenzen fur die Kom-
plexitat des Softwaremodells. Die Norm IEC 61131 beschreibt ein Modell mit unter-
schiedlichen Niveaus.
PRG 1
I / O -Variablen
FBx
Var- local
FCx
Var- local
PRG k
I / O -Variablen
FBx
Var- local
FCx
Var- local
Task 1_ n mit Priorität
Task i _ n mit Priorität
RESOURCE n
PRG x
I / O -Variablen
FBx
Var- local
FCx
Var- local
PRG z
I / O -Variablen
FBx
Var- local
FCx
Var- local
Task 1_ m mit Priorität
Task j _ m mit Priorität
RESOURCE m
CONFIGURATION
Globale Variablen
Konkrete Steuerungsaufgaben werden in Funktionsbausteine (FB) und Funktionen
(FC) aufgeteilt. Mehrere dieser Bausteine, die strukturell zusammenwirken, bilden ein
Programm (PRG). Den Auftrag uber die zum jeweiligen Zeitintervall aktiven Program-
me bilden die Tasks. Automatisierungsgerate bilden die Ressourcen fur die Aufnahme
und die Abarbeitung von Tasks mit den dazugehorigen Programmen. Der Zugriff auf
die Ein- und Ausgabeperipherie erfolgt auf der Ebene PRG. Wird die Automatisie-
rungsaufgabe auf mehrere Ressourcen verteilt spricht man von einer Konfiguration.
Innerhalb einer Konfiguration werden Daten uber Variablen vom Typ GLOBAL aus-
getauscht. Innerhalb eines Programmes werden Variablen entweder direkt oder uber
Bausteinparameter ubergeben.
Beispiel: Automatisierung einer Fertigungszelle
21
Grundlagen der SPS Programmierung /Prozessinformatik Prof. Dr. W. Bock
Modellebene Realisierung Funktion
CONFIGURATION z.B. SPS Rack mit allen Bau-
gruppen
Automatisierungsschrank fur
die Fertigungszelle
RESOURCE Eine Prozessorbaugruppe
(CPU); es konnen mehrere
vorhanden sein
Zentralbaugruppe auf der das
Programm fur den Teileein-
und ausgang ablauft. Auf an-
deren CPUs werden z.B. die
Prozessschritte gesteuert
TASK Ein zusammenhangender
Programmbereich dem eine
Laufzeit zugeordnet ist,
z.B.: zyklisch wiederholend,
ereignisgesteuert, usw.
Eine Task konnte beispiels-
weise zur Herstellung einer
Grundeinstellung dienen; Ab-
lauf nur einmal zu Beginn des
Prozesses
PROGRAM Kleinste bereits ausfuhrbare
Softwareeinheit
Enthalt alle Anweisungen zur
dazugehorigen Task
FUNCTION_BLOCK
(FB), FUNCTION
(FC)
Programmbausteine die spe-
ziell fur die Aufgabe ge-
schrieben wurden oder aus
Bibliotheken stammen
z.B. eine Zahlfunktion
Von den meisten Programmiersystemen wird dieses Modell nicht vollstandig abgebil-
det. Im Programmpaket SIMATIC STEP7 treten z.B. anstelle der Ebene TASK und
PRG sogenannte Organisationsbausteine OBx. Anhand der Nummer x ist automatisch
auch das Zeitverhalten des Bausteins bestimmt.
Ein Steuerungsprogramm ist eine in Programm-Organisationseinheiten (POE) geglie-
derte Einheit.
Eine Programm-Organisationseinheit ist ein fur sich abgeschlossenes Modul, das vom
Compiler unabhangig von anderen Programmteilen ubersetzt werden kann. Um dies zu
gewahrleisten mussen die Aufruf- und Ruckgabeparameter mit Hilfe eines Prototypen
in Anzahl, Reihenfolge und Typ genau festgelegt sein.
Die POEs sind selbstandig und konnen mehrfach wiederverwendet werden. Bei jeder
Verwendung muss jedoch mit Hilfe eines eindeutigen und nur einmal vorkommenden
Bezeichners (Name) eine individuelle Instanz des Moduls gebildet werden.
Jede einmal deklarierte (s.u.) POE ist im gesamten Projekt sichtbar, d.h. aufrufbar
bzw. instanziierbar.
In der IEC 61131-3 sind drei POE-Typen mit unterschiedlicher Komplexitat und Hier-
archie definiert.
22
Grundlagen der SPS Programmierung /Prozessinformatik Prof. Dr. W. Bock
Program
Hauptprogramm
Function Block
Funktionsbaustein
Function
Funktion
Grundlegende Unterscheidungsmerkmale:
Funktion (FUN oder FC) Parametrierbare POE ohne statische Variablen, die bei
gleichen Eingangsparametern stets dasselbe Ergebnis als Funktionswert zuruck-
gibt. Moglich sind ein oder mehrere Eingangsparameter, zuruckgegeben wird der
Funktionswert.
Funktionsbaustein (FB) Parametrierbare POE mit statischen Variablen. Ein FB
liefert bei gleichen Eingangswerten Ergebnisse, die vom Zustand seiner internen
(Typ VAR) und externen (Typ VAR_EXTERNAL) Variablen abhangen konnen,
die zwischen Bausteinaufrufen erhalten bleiben.
Programm (PRG) Dieser POE-Typ stellt ein Hauptprogramm dar. Alle Variablen
des Gesamtprogramms, denen physikalische Adressen (z.B. Ein- und Ausgange
der SPS) zugewiesen sind, mussen in dieser POE oder oberhalb (global) dekla-
riert werden.
Hierarchie der POEs:
Die machtigste POE ist das Programm gefolgt vom Funktionsbaustein. Die schwachste
POE ist die Funktion. Jede POE einer Hierarchie-Stufe kann Instanzen von POEs der-
selben oder einer schwacheren Stufe aufrufen.
23
Grundlagen der SPS Programmierung /Prozessinformatik Prof. Dr. W. Bock
Programm A Programm B
Funktions- baustein 1
Funktions- baustein 2
Funktion I Funktion II Funktion III
Elemente einer POE
Jede POE besitzt einen projektweit bekannten und nur einmal vorkommenden Namen.
Der Typ FUNCTION hat zugleich einen Datentyp, der mit dem Typ des zuruckgegeben
Wertes ubereinstimmt.
Schnittstellen-variablen
lokale Variablen
Anweisungen
(POE-Rumpf)
FUNCTION_BLOCKPROGRAM FUNCTION
Deklarationsteil
Anweisungsteil
END_FUNCTIONEND_FUNCTION_BLOCKEND_PROGRAM
24
Grundlagen der SPS Programmierung /Prozessinformatik Prof. Dr. W. Bock
In vielen Programmiersystemen kann die”END“-Anweisung entfallen bzw. wird am
Datei-Ende als”automatisch vorhanden“ betrachtet.
1. Deklarationsteil
Die Deklarationen dienen zur Festlegung samtlicher von der POE verwendeten
Variablen. Variablen sind bestimmt durch den Bezeichner, Datentyp und Attribut.
Die Deklaration der Variablen erfolgt blockweise getrennt nach Variablenarten.
Die Reihenfolge der Blocke ist beliebig, je nach POE Typ konnen jedoch nicht
alle Arten verwendet werden.
Variablenart PROG- FUNCTION FUNC- Schnittstellenart
RAM _BLOCK TION
VAR ja ja ja intern, statisch
VAR_INPUT ja ja ja formal, call-by-value
VAR_OUTPUT ja ja ja formal, return-by-value
VAR_IN_OUT ja ja ja call-by-reference
VAR_TEMP ja ja nein intern, temporar
VAR_EXTERNAL ja ja nein global
VAR_GLOBAL ja nein nein global
VAR_ACCESS ja nein nein global
Fur die Formalparameter und Ruckgabewerte einer POE sind unterschiedliche
Zugriffsarten definiert:
• call-by-value
Die Aktualparameter werden der POE als Werte ubergeben und an die For-
malparameter weitergereicht. Die Eingangsvariablen konnen so von der POE
nicht uberschrieben werden.
• call-by-reference
Beim Aufruf der POE werden an Stelle der Werte die Adressen dieser Va-
riablen ubergeben. Die Variableninhalte konnen sowohl gelesen als auch be-
schrieben werden. Es handelt sich um die in hoheren Programmiersprachen
benutzten Zeiger (Pointer).
• return-by-value
Ruckgabewerte stehen als Werte zum Lesen zur Verfugung. Die entspre-
chenden Variablen konnen nur in der POE selbst, aber nicht von außen be-
schrieben werden.
2. Anweisungsteil
Der Anweisungsteil (Rumpf) einer POE folgt dem Deklarationsteil und enthalt
die von der SPS auszufuhrenden Anweisungen. Zur Formulierung der Steue-
rungsaufgabe stehen mehrere Programmiersprachen zur Verfugung.
25
Grundlagen der SPS Programmierung /Prozessinformatik Prof. Dr. W. Bock
Da die Art der Programmierung zwischen den einzelnen Sprachen stark vonein-
ander abweicht, eignen sich diese fur unterschiedliche Aufgaben und Anwen-
dungsbereiche.
(c) Variablendeklaration
Bevor eine Variable zum ersten Mal verwendet wird, muss eine Deklaration stattfinden.
Damit werden folgende Dinge vorgenommen:
• Festlegung eines Bezeichners oder Symbols. Die Variable erhalt einen Namen.
Hierzu wird unterschiedlich verfahren:
– Prinzip”Clean Code“: Als
”sauber“ bezeichnen Software-Entwickler Quell-
code, aber auch Dokumente, Konzepte, Regeln und Verfahren, die intuitiv
verstandlich sind. Als intuitiv verstandlich gilt alles, was mit wenig Auf-
wand und in kurzer Zeit richtig verstanden werden kann. Vorteile von Clean
Code sind stabilere und effizient wartbarere Programme.
–”Ungarische Notation“: Aus dem Anfang eines Bezeichners kann auf den
Typ oder seinen Verwendungszweck geschlossen werden.
• Festlegung des Datentyps an Hand der Liste der elementaren oder zusammenge-
setzten Typen.
• Festlegung eines Geltungsbereiches (s.u.)
• Optional eine Anfangswertzuweisung.
Bei der Deklarationen von Variablen wird die Vergabe der Adresse im Speicherbereich
dem Compiler uberlassen, soweit es sich nicht um eine direkten Zugriff auf einen
Peripherieport oder den (historisch begrundeten) Merkerbereich handelt.
1. Deklarationssyntax von absolut adressierten Variablen
Die Ein- und Ausgange an einer SPS haben eine vorgegeben Adresse, die nach
Konfiguration einer Steuerungsanlage in hierarchischer Form als eine Folge
durch Punkt getrennte Ziffern vorliegt. Der Programmierer muss sich uber die
Bedeutung dieser Adresse absolut im Klaren sein.
26
Grundlagen der SPS Programmierung /Prozessinformatik Prof. Dr. W. Bock
Direkte Adresse Erlauterung
% Kennzeichen fur direkte Adresse
I, E∗ Eingang
Q, A∗ Ausgang
M∗ Merker
(leer) Bit
X Bit
B Byte
W Wort
D Doppelwort
L Langwort
y.z hierarchische Adresse, Bytenummer, Bitnummer (nur bei
Bitadresse)
Beispiele
% I X 4.3 Bit 3 am Eingangsbyte 4
% Q 0.0 Bit 0 am Ausgangsbyte 0
% I W 7 Eingangswort 7
M∗ B 1 Merker-Byte 1
A∗ 5.2 Bit 2 am Ausgangsbyte 5∗: Zum Vergleich Siemens STEP7, nicht nach IEC 61131-3 Norm.
2. Deklaration in allgemeiner Form
Die Deklaration der Variablen erfolgt immer am Anfang eines Programms (oder
eines Programmbausteins) und wird durch das Schlusselwort VAR eingeleitet.
Die allgemeine Form einer Deklaration hat folgenden Aufbau:
[Bezeichner] [AT %Operand]: Datentyp [:= Vorbelegung] ;
Die Angabe entweder des Bezeichners oder einer direkten Variablen nach dem
Schlusselwort AT ist immer notwendig. Ebenso muss der Datentyp immer spezi-
fiziert werden. Eine Vorbelegung ist optional moglich.
Beispiel:
VAR
Flag1 AT %IX0.2: BOOL;
DatStr1 AT %QW2: WORD:=16#2EF0;
InputPin AT %IX0.0: BOOL;
FunctionFail: BOOL:= FALSE;
CountValue: INT :=0;
END_VAR
Mit dem einleitenden Schlusselwort VAR wird eine Liste von lokalen Variablen
mit statischer Gultigkeit eroffnet. Bei der Verwendung von Unterprogrammen ist
27
Grundlagen der SPS Programmierung /Prozessinformatik Prof. Dr. W. Bock
eine weitere Unterscheidung nach Lebensdauer und Zugriffsrechten von Varia-
blen notwendig.
Variablenklassen und Attribute
Variablenklasse RETAIN CONSTANT Gebrauch
VAR ja ja lokale Gultigkeit, mit statischer Le-
bensdauer
VAR_TEMP nein nein lokale Gultigkeit, mit temporarer Le-
bensdauer
VAR_INPUT nein nein nur lesbar
VAR_OUTPUT ja nein beschreibar
VAR_IN_OUT nein nein lesbar und beschreibbar, jedoch nicht
vorbelegbar!
VAR_EXTERNAL nein nein extern als global deklariert, beliebiger
Zugriff, nicht vorbelegbar!
VAR_GLOBAL ja ja Variable wird auch anderen Modulen
zur Verfugung gestellt. (Bei Siemens
STEP7 Deklarationen in der Symbol-
tabelle)
VAR_ACCESS nein nein Zugriff uber Netzwerk auf Hardware
der Gesamtkonfiguration
• Mit RETAIN werden Variablen gekennzeichnet, deren Werte akkugepuffert
werden sollen, d.h. nach Spannungsunterbrechung erhalten bleiben mussen.
• Mit CONSTANT legt man eine Variable als nicht-veranderbar fest, es handelt
sich also um die Definition von Konstanten.
Beispiele:
VAR CONSTANT
ZoomFaktor: REAL:= 25.5;
END_VAR
VAR RETAIN
Message: STRING[50]:= ’OK’;
END_VAR
VAR_INPUT
MeasValue: INT:= 10;
END_VAR
VAR_OUTPUT
Start AT %QX0.7: BOOL:= FALSE;
END_VAR
3. Deklaration in Tabellenform
Zur Vereinfachung der Eingabe ist bei vielen Programmiersystemen auch eine
tabellarische Variablendeklaration moglich. Die Tabelle enthalt Spalten fur den
28
Grundlagen der SPS Programmierung /Prozessinformatik Prof. Dr. W. Bock
Bezeichner, die Adresse, Art, Typ und Anfangswert sowie eine optionale Kom-
mentierung.
Beispiel:
Nr. Name Art Adresse Typ Startwert Kommentar
001 InputPin IN %IX0.0 BOOL . . .
002 OutputPin OUT %QX0.0 BOOL TRUE . . .
003 Temperature IN %IW1 INT Motortemperatur. . .
004 Message OUT STRING ’OK’ . . .
. . .
Sollen Attribute oder zusammengesetzte Datentypen verwendet werden, ist dies
in Tabellen meist nur eingeschrankt moglich. Außerdem geht dann die Ubersicht-
lichkeit verloren.
Realisierung:
1.3.3 IEC 61131 - Programmiersprachen
Die Norm sieht die alternative Verwendung von funf Programmiersprachen vor: Zwei textu-
elle Fachsprachen (AWL, ST), zwei grafische Fachsprachen (KOP, FBS) sowie die uberge-
ordnete Ablaufsprache (AS), die grafische und textuelle Elemente enthalt. Zusatzlich wird
in den letzten Jahren der freigrafische Funktionsplan (Continuous Flow Chart - CFC) mehre
und mehr eingesetzt.
29
Grundlagen der SPS Programmierung /Prozessinformatik Prof. Dr. W. Bock
SPS -Programmiersprachen
Textsprachen Grafische Sprachen
Ablaufsprache AS ( SFC )
Anweisungsliste AWL ( IL )
Strukturierter Text ST [ SCL ]
Funktionsbausteinsprache FBS [ FUP ] ( FBL )
Kontaktplan KOP ( LD )
Freigrafischer Plan ( CFC )
Englische Bezeichnung in runden Klammern (. . . ), Bezeichnung bei SIMATIC in eckigen Klammern
[. . . ]
Einordnung:
KOP: Hat ihren Ursprung bei den verbindungsorientierten Steuerungen (VPS). Sie sym-
bolisiert ein Netzwerk aus Schaltern, Tastern und elektromechanischen Relais. Die
Sprache ist weitgehend auf die Bearbeitung boolscher Signale beschrankt.
FBS: Hat ihren Ursprung im Bereich der digitalen Signalverarbeitung. Die Grafik orientiert
sich an den Schaltplansymbolen der Digitalelektronik. Wegen der Moglichkeit, Unter-
funktionen in neu Funktionsbausteine zu packen, ist die Sprache universeller einsetz-
bar als KOP.
30
Grundlagen der SPS Programmierung /Prozessinformatik Prof. Dr. W. Bock
AWL: Sie stellt als zeilenorientierte Programmiersprache eine maschinennahe, universell
einsetzbar Programmiersprache dar. Eine Vielzahl von Schusselworten und das fehlen
von machtigen Sprachkonstrukten erschweren den Uberblick. Sie wird haufig als ge-
meinsame Zwischensprache verwendet, auf die die ubrigen Sprachen abgebildet wer-
den konnen.
ST: Es handelt sich um eine Pascal-ahnliche Hochsprache, die ein sehr kompakte Formu-
31
Grundlagen der SPS Programmierung /Prozessinformatik Prof. Dr. W. Bock
lierung der Programmieraufgabe zulasst. Anweisungsblocke erlauben einen ubersicht-
lichen Aufbau von Programmen.
AS: Die Ablaufsprache erlaubt die Zerlegung einer komplexen Aufgabe in uberschaubare
Einheiten. Die Einheiten selbst mussen mit einer der vier anderen Sprachen erzeugt
werden. Die AS-Strukturierung eignet sich besonders fur Prozesse mit schrittweisem
Zustandsverhalten.
CFC: Im freigrafischen Funktionsplaneditor konnen Elemente frei positioniert werden. Ein-
32
Grundlagen der SPS Programmierung /Prozessinformatik Prof. Dr. W. Bock
und Ausgange dieser Elemente werden uber Linien verbunden. Ruckkopplungen sind
moglich. Die Liste der Elemente umfasst Bausteine, Ein- und Ausgange, Sprung,
Marken, usw.. Zur Festlegung einer Ausfuhrungssequenz erhalten die Elemente Ab-
arbeitungsnummern. Diese wird durch die topologische Anordnung implizit vergeben,
bzw. explizit zugewiesen.
33
Grundlagen der SPS Programmierung /Prozessinformatik Prof. Dr. W. Bock
2 Beschreibungsmittel der Prozessinformatik
Die Beschreibungsmittel spielen eine zentrale Rolle bei der Automatisierung von Prozessen.
Sie dienen der Beschreibung und Abbildung von Struktur und Eigenschaften der zu steue-
renden Prozesse.
Folgende allgemeine Anforderungen gelten:
• Zurverfugungstellung von Fein- und Grobstruktur zur schrittweisen Detaillierung ei-
ner Steuerungsaufgabe
• Modellierung von kausalen und temporalen Zusammenhangen
• Beschreibung von seriellen und nebenlaufigen Aktivitaten
• Kompatibilitat zu anlagen- und geratetechnischen Gegebenheiten
• Okonomische Aspekte und personale Aspekte der Erlernbarkeit
• Normkonformitat und Wiederverwendbarkeit von Teillosungen
2.1 Algebraisch-logische Beschreibungsmittel
Algebraisch-logische Beschreibungsmittel erlauben die Codierung von logischen Aussagen,
die auf den Begriffen”wahr (true)“ und
”falsch (false)“ beruhen. Diese Aussagen enthal-
ten keine direkte Zeitabhangigkeit und liefern bei gegebener Eingangsbedingung immer das
selbe Ergebnis.
In der Praxis liegt eine endliche Anzahl von Aussagen vor, die mit einander durch Junktoren
verknupft werden und zu neuen Aussagen fuhren. Die Endlichkeit der Aussagen und die Be-
grenzung der Aussageinhalte auf zwei Werte erlaubt eine Darstellung des Zusammenhangs
in Form von Wahrheitstabellen.
Zur Verkurzung der Schreibweise wird in diesen Tabellen haufig nicht die boolschen Werte
”false“ und
”True“ verwendet, sondern der Ziffernsatz fur die Dualzahlen (0 und 1) oder in
Anlehnung an elektrische Signalparameter ein”L(ow)“ und
”H(igh)“.
Boolscher Wert Dualzahl Logikpegel
false 0 L
true 1 H
In den gangigen Programmiersprachen sind spezielle Variablentypen vorgesehen, denen
boolsche Werte zugewiesen werden konnen, bzw. die bei logischen Anweisungen als Ope-
randen dienen.
Ubersicht: Darstellung boolscher Variablen in Programmiersprachen
34
Grundlagen der SPS Programmierung /Prozessinformatik Prof. Dr. W. Bock
Programmiersprache Typ (Key) Besonderheit
C int (C);
bool (C++)
Die Sprache C kennt (im Unterschied zu C++
keinen einschlagigen Datentyp; es gilt ersatz-
weise: Zahlenwert”0“ entspricht logisch
”false“
und Zahlenwert”1“ gleich logisch
”true“)
SPS-Prog.-Sprache BOOL ubliche Wertemenge ist”true“ u.
”false“; fur
Darstellungszwecke wird jedoch auch”0“ und
”1“ verwendet.
Basic, Pascal, Java, PHP boolean Zulassige Werte:”true“ u.
”false“
Beispiel: Binar-nach-Siebensegment-Dekoder
Eingange Segmente
I3 I2 I1 I0 A B C D E F G0 0 0 0 1 1 1 1 1 1 0
0 0 0 1 0 1 1 0 0 0 0
0 0 1 0 1 1 0 1 1 0 1
0 0 1 1 1 1 1 1 0 0 1
0 1 0 0 0 1 1 0 0 1 1
0 1 0 1 1 0 1 1 0 1 1
0 1 1 0 0 0 1 1 1 1 0
0 1 1 1 1 1 1 0 0 0 0
1 0 0 0 1 1 1 1 1 1 1
1 0 0 1 1 1 1 0 0 1 1
1 0 1 0 0 0 0 1 1 0 1
1 0 1 1 0 0 1 1 0 0 1
1 1 0 0 0 1 0 0 0 1 1
1 1 0 1 1 0 0 1 0 1 1
1 1 1 0 0 0 0 1 1 1 1
1 1 1 1 0 0 0 0 0 0 0
F
E
B
C
A
G
D
Jedem Halbbyte, das durch die 4 Eingange bestimmt wird, ist genau ein Satz von aktivierten
Segmenten einer 1-stelligen 7-Segmentanzeige zugeordnet.
2.1.1 Elementare Verknupfungen boolscher Variablen
Die Verknupfung boolscher Variablen stellt die Grundfunktionen eines Steuerungspro-
gramms dar. Boolsche Eingangssignale werden miteinander logisch verknupft, um zu ein-
deutigen Ausgangssignalen zu kommen. Bei Schaltnetzen sind keine Speichereffekte zu
berucksichtigen, fruhere Zustande an Eingangen und Ausgangen spielen keine Rolle.
Es stellt sich heraus, dass alle noch so komplizierten Verknupfungen aus wenigen Grund-
funktionen zusammengesetzt werden konnen.
35
Grundlagen der SPS Programmierung /Prozessinformatik Prof. Dr. W. Bock
Fur die nachfolgenden Grundverknupfungen ist jeweils eine Wahrheitstabelle, der schaltal-
gebraische Ausdruck, das Funktionssymbol sowie eine beispielhafte Codierung in Anwei-
sungsliste (Assembler-ahnlich) und in Hochsprache (Strukturierter Text oder C) dargestellt.
Wahrheitstabelle: Die Wahrheitstabelle stellt fur alle denkbaren Kombinationen an unter-
schiedlichen Eingangszustanden die entsprechenden Ausgangszustande dar. Ublich ist
die Verwendung von 0 und 1 fur die beiden moglichen binaren Zustande und bei Be-
darf ein X (fur don’t care), falls es an dieser Stelle nicht auf einen bestimmten Zustand
ankommt.
Schaltalgebraischer Ausdruck: Er eine mathematische Darstellungsweise fur den lo-
gischen Zusammenhang und wird auch als Logikfunktion bezeichnet. Aufgrund von
unterschiedlichen nationalen Normen und einer historischen Entwicklung werden ver-
schiedene Verknupfungszeichen verwendet.
Funktionssymbol: Die Funktionssymbole entsprechen denen, die in der grafischen Pro-
grammiersprache Funktionsplan und in den Schaltplanen der digitalen Elektronik ver-
wendet werden. Typisch ist eine rechteckige Box mit wenigen Zeichen im Inneren
zu Kennzeichnung der vorliegenden Funktion. Die Eingangssignalanschlusse befin-
den sich an der linken und die Ausgangen an der rechten Seite. Die Anschlusse fur die
Energieversorgung sind nicht angegeben.
Codierung in Anweisungsliste: Die Programmiersprache Anweisungsliste (Instructi-
on List) ist von Assembler-Sprachen abgeleitet und stellt eine formatierte Abfolge
von Operatoren mit keinem, einem oder mehreren Operanden dar. Charakteristisch ist
die Verwendung eines zentralen Arbeitsregisters, das nach Ausfuhrung der Anweisung
das Ergebnis der Operation enthalt.
Codierung in Hochsprache: Logische Instruktion sind Bestandteil aller Hochsprachen.
In den nachfolgenden Tabellen ist jeweils die Codierung in der Sprache C sowie in der
SPS-Sprache Strukturierter Text (in STEP7: SCL) angegeben.
(a) Die NOT-Verknupfung
• Eigenschaften:
Bei der NOT-Verknupfung wird eine Signal in seinen komplementaren Wert ge-
wandelt. Man spricht auch von Invertierung oder Negation.
• Wahrheitstabelle:
I Q
0 1
1 0
• Funktion und Darstellung:
Logische Gleichung
Q = I ← bevorzugt
Q = ¬I ← Norm
IEC Anweisungsliste STEP7
LDN I UN I
ST Q = Q
36
Grundlagen der SPS Programmierung /Prozessinformatik Prof. Dr. W. Bock
Funktions- oder Schaltplan
1 I Q
1 I Q
ST Hochsprache C
Q := NOT(I); Q = !I;
Im Schaltsymbol wird die Negation durch einen kleinen Kreis an Ein- oder Aus-
gang angezeigt. Im Funktionskasten selbst ist nur die Identitat enthalten.
(b) Die AND-Verknupfung
• Eigenschaften:
Die AND-Verknupfung aus zwei oder mehreren Eingangssignalen liefert nur
dann eine”1“, wenn alle Eingange den
”1“-Pegel fuhren.
• Wahrheitstabelle:
I1 I0 Q
0 0 0
0 1 0
1 0 0
1 1 1
• Funktion und Darstellung:
Logische Gleichung
Q = I0 ∧ I1 ← Norm
Q = I0&I1 ← bevorzugt
IEC Anweisungsliste STEP7
LD I0 U I0
AND I1 U I1
ST Q = Q
Funktions- oder Schaltplan
I0 Q
I1 &
& ST Hochsprache C
Q:= I0 AND I1; Q = I0 && I1;
Die AND-Verknupfung wird auch Disjunktion genannt.
(c) Die OR-Verknupfung
• Eigenschaften:
Eine”1“ als Ergebnis einer OR-Verknupfung erhalt man, wenn mindestens ein
Eingangssignale den”1“-Pegel fuhrt.
• Wahrheitstabelle:
I1 I0 Q
0 0 0
0 1 1
1 0 1
1 1 1
37
Grundlagen der SPS Programmierung /Prozessinformatik Prof. Dr. W. Bock
• Funktion und Darstellung:
Logische Gleichung
Q = I0 ∨ I1 ← Norm
Q = I0 + I1
IEC Anweisungsliste STEP7
LD I0 O I0
OR I1 O I1
ST Q = Q
Funktions- oder Schaltplan
I0 Q
I1 1 > =
1 > =
ST Hochsprache C
Q:= I0 OR I1; Q = I0 || I1;
Die OR-Verknupfung wird auch als Konjunktion bezeichnet.
(d) Die XOR-Verknupfung
• Eigenschaften: Die XOR- Verknupfung liefert eine”1“, wenn die Anzahl der Ein-
gangssignale mit Pegel”1“ ungerade ist. Die XOR-Verknupfung wird alternativ
auch als EXOR-Glied oder Antivalenz bezeichnet.
• Wahrheitstabelle:
I1 I0 Q
0 0 0
0 1 1
1 0 1
1 1 0
• Funktion und Darstellung:
Logische Gleichung
Q = I0↔| I1 ← Norm
Q = I0⊕ I1 ← bevorzugt
Q = I0 6= I1
IEC Anweisungsliste STEP7
LD I0 X I0
XOR I1 X I1
ST Q = Q
Funktions- oder Schaltplan
I0 Q
I1 XOR
I0 Q
I1 =1
ST Hochsprache C
Q:= I0 XOR I1; Q =(!I0&&I1)
||(I0&&!I1);
Die XOR-Verknupfung wird auch als Antivalenz (oder antivalente Verknupfung)
bezeichnet. Sie steht nicht in jeder Programmiersprache zur Verfugung, lasst sich
aber aus AND-, OR- und NOT- Verknupfung darstellen.
38
Grundlagen der SPS Programmierung /Prozessinformatik Prof. Dr. W. Bock
2.1.2 Zusammengesetzte Verknupfungen
In einem steuerungstechnischen Zusammenhang kommen nicht nur die elementaren Ver-
knupfungen NOT, OR, AND und XOR vor. Jedes Schaltnetzwerk ist jedoch aus Kombina-
tionen dieser Verknupfungsfunktionen zusammensetzbar.
(a) Die Negation einer Verknupfung
Jedes Signal kann vor oder nach einer Verknupfung zusatzlich noch invertiert werden.
Kennzeichen im Schaltbild ist ein kleiner Kreis an der Stelle der Negation.
Beispiele:
• NAND-VerknupfungWahrheitstabelle Symbolische Darstellung Schaltalgebraischer Ausdruck
I1 I0 Q
0 0 1
0 1 1
1 0 1
1 1 0
I0 Q
I1 & Q = I1&I0
• NOR-VerknupfungWahrheitstabelle Symbolische Darstellung Schaltalgebraischer Ausdruck
I1 I0 Q
0 0 1
0 1 0
1 0 0
1 1 0
I0 Q
I1 1 > = Q = I1 ∨ I0
• NOT-XOR-VerknupfungWahrheitstabelle Symbolische Darstellung Schaltalgebraischer Ausdruck
I1 I0 Q
0 0 1
0 1 0
1 0 0
1 1 1
I0 Q
I1
=1 Q = I1⊕ I0
Die NOT-XOR-Verknupfung wird auch als Aquivalenz bezeichnet. Sie liefert
eine”1“, wenn die Anzahl der Eingangssignale mit
”1“ gerade ist.
• Mehrere Negationen
39
Grundlagen der SPS Programmierung /Prozessinformatik Prof. Dr. W. Bock
Wahrheitstabelle Symbolische Darstellung Schaltalgebraischer Ausdruck
I2 I1 I0 Q
0 0 0 0
0 0 1 0
0 1 0 1
0 1 1 0
1 0 0 0
1 0 1 0
1 1 0 0
1 1 1 0
I0 Q
I1
I2
1 > =
Q = I2 ∨ I1 ∨ I0
(b) AND-vor-OR-Verknupfung
Bei kombinierten Verknupfungen kann der Zusammenhang nach einem festgelegten
Verfahren immer in die Form aus eingangsseitiger AND- und ausgangsseitiger OR-
Verknupfung zuruckgefuhrt werden.
Man spricht in diesem Fall von einer disjunktiven Form, nach einem Minimalisie-
rungsvorgang von der disjunktiven Normalform (DNF).
Beispiel:
Wahrheitstabelle Symbolische Darstellung
I2 I1 I0 Q0
0 0 0 0
0 0 1 1
0 1 0 0
0 1 1 1
1 0 0 1
1 0 1 1
1 1 0 1
1 1 1 1
&
& 1 > =
I0
I1
I2
I0
I1
I2
Q0
Schaltalgebraischer Ausdruck:
Q0 = (I0&I1&I2) ∨ (I0&I1) ∨ I2
Die AND-Verknupfung hat gegenuber der OR-Verknupfung die hohere Prioritat. Die
Klammern um die AND-Terme sind deshalb nicht unbedingt notwendig, aber empfeh-
lenswert.
(c) OR-vor-AND-Verknupfung
Alternativ ist auch eingangsseitig eine OR-Verknupfung und ausgangsseitig eine
AND-Verknupfung darstellbar.
40
Grundlagen der SPS Programmierung /Prozessinformatik Prof. Dr. W. Bock
Man spricht in diesem Fall von einer konjunktiven Form, nach einem Minimalisie-
rungsvorgang von der konjunktiven Normalform (KNF).
Beispiel:
Wahrheitstabelle Symbolische Darstellung
I2 I1 I0 Q1
0 0 0 0
0 0 1 0
0 1 0 0
0 1 1 0
1 0 0 1
1 0 1 1
1 1 0 1
1 1 1 0
I0
I1
I2
I0
I1
I2
Q1 1 > =
1 > =
&
Schaltalgebraischer Ausdruck:
Q1 = (I0 ∨ I1 ∨ I2)&(I0 ∨ I1)&I2
Die AND-Verknupfung hat eine hohere Prioritat als die OR-Verknupfung. Im schal-
talgebraischen Ausdruck der konjunktiven Form mussen deshalb die OR-verknupften
Terme in Klammern gesetzt werden.
(d) Finden der Verknupfungsfunktion
• Ausgangspunkt: Gegeben sei eine Wahrheitstabelle
• Ziel: – Fur jedes Ausgangssignal ist dessen Verknupfungs-
funktion in Abhangigkeit von den Eingangssignalen
zu suchen.
– Die Verknupfungsfunktion enthalt nur mehr elemen-
tarer Verknupfungen.
• Losung: – Die Form der Verknupfungsfunktion ist nicht eindeu-
tig.
– Fur ein systematisches Vorgehen werden Normalfor-
men herangezogen.
Man unterscheidet die oben erwahnten disjunktiven Normalformen (DNF) und die
konjunktiven Normalformen (KNF). Die Erstellung dieser Formen lasst sich am ein-
fachsten an Hand eines Beispiels erklaren.
41
Grundlagen der SPS Programmierung /Prozessinformatik Prof. Dr. W. Bock
A B C Z NF
0 0 0 0 K
1 0 0 1 D
0 1 0 0 K
1 1 0 0 K
0 0 1 0 K
1 0 1 0 K
0 1 1 1 D
1 1 1 1 D
DNF: Z = (A&B&C) ∨ (A&B&C) ∨ (A&B&C)
KNF: Z = (A ∨ B ∨ C)&(A ∨B ∨ C)&
(A ∨B ∨ C)&(A ∨ B ∨ C)&(A ∨ B ∨ C)
Durch Anwendung des Normalformschemas erhalt man die Verknupfungsfunktion in
Form von OR–verknupften AND– Termen bei der DNF bzw. AND–verknupften OR–
Termen bei der KNF.
(e) Vereinfachung der Verknupfungsfunktion
Die aus der Wahrheitstabelle gewonnenen Normalformen sind fur die beiden Ablei-
tungsverfahren stark unterschiedlich in der Erscheinungsform, sie stellen aber dennoch
die selbe Funktion fur das Ausgangssignal dar.
Die Normalformen lassen sich haufig noch weiter vereinfachen. Dazu werden die
wichtigsten Beziehungen der boolschen Algebra benotigt.
A ∨ A = 1 A&A = 0
A&(B ∨ C) = A&B ∨ A&C A = A
A&B = A ∨B A ∨B = A&B
A&1 = A A&0 = 0
A ∨ 1 = 1 A ∨ 0 = A
A ∨ A = A A&A = A
Anwendung zur Vereinfachung der Logikfunktion im obigen Beispiel:
Z = A&B&C ∨ A&B&C ∨ A&B&C == A&B&C ∨ (A ∨ A)&B&C = (A&B&C) ∨ (B&C)
(f) Finden der Minimalform mit Hilfe der KV–Tafel
Die Aufstellung der Logikfunktion in DNF bzw. KNF zeigt, dass rein formal ein großer
Unterschied in der Komplexitat der speziellen Form besteht. Wunschenswert ist meist
eine minimalisierte Form in der Art, dass die Zahl der auftretenden Variablen und
Verknupfungszeichen ein Minimum darstellt. Die gesucht Minimalform kann in einem
Kastchenschema (Karnaugh-Veitch- oder KV- Diagramm) abgeleitet werden.
Vorgehensweise:
42
Grundlagen der SPS Programmierung /Prozessinformatik Prof. Dr. W. Bock
• Aufstellen der Verknupfungsfunktion in disjunktiver Normalform.
• Fur jeden MIN– Term der Verknupfungsfunktion wird eine 1 in das entsprechen-
de Feld der zu der Anzahl der vorkommenden Eingangssignale passenden KV–
Tafel eingetragen.
• Benachbarte 1–Felder werden zu moglichst großen, rechteckigen Vereinfa-
chungsblocken zusammengefasst. Einzelne Felder durfen sich dabei uberschnei-
den. Wegen der zeichentechnisch bedingten Beschranktheit auf zwei Dimensio-
nen konnen Felder durch Tafelgrenzen optisch geteilt erscheinen!
• Die minimalisierte Schaltfunktion erhalt man durch OR– Verknupfung der ein-
zelnen Blocksymbole.
• Durch Vertauschen aller Verknupfungszeichen und Ersetzen von logisch 1 durch
0 kann die minimalisierte Verknupfungsfunktion auch unter Zugrundelegung der
KNF– Form gefunden werden.
Beispiel: Gegeben ist die folgende Wahrheitstabelle
A B C Z
0 0 0 0
1 0 0 1
0 1 0 1
1 1 0 1
0 0 1 0
1 0 1 1
0 1 1 0
1 1 1 1
DNF
A A
B
B
C C C
KNF
A A
B
B
C C C
(g) KV-Tafel-Schemata
• 2 Eingangssignale
A A
B
B
43
Grundlagen der SPS Programmierung /Prozessinformatik Prof. Dr. W. Bock
• 3 Eingangssignale
A A
B
B
C C C
• 4 Eingangssignale
A A
B
B
C C C
D
D
D
2.1.3 Boolsche Anweisungen in AWL, FUP und KOP
(a) Funktionsplan (FUP)
Die Funktionsbausteinsprache (Englisch: FBL fur Function Block Language) verwen-
det Schaltplansymbole, die aus Organisationsgrunden bestimmten Regeln unterworfen
sind:
• Untergliederung in Netzwerken
• Signalfluss von links (Eingange) nach rechts (Ausgange); Ruckfuhrungen im
Netzwerk sind nicht moglich
• Operatoren bestehen aus rechteckigen Boxen, die mit einem Namen und/oder mit
einem Symbol gekennzeichnet sind.
• Die Liste der Operatoren ist umfangreich; enthalt aber immer alle elementaren
Verknupfungen gemaß den Angaben in Kap. 2.1.1.
Umsetzung am Beispiel fur die Logische Gleichung:
Q1 = I1&( I2 ∨ I3)&( I4⊕ I5)
44
Grundlagen der SPS Programmierung /Prozessinformatik Prof. Dr. W. Bock
(b) Kontaktplan (KOP)
Der Kontaktplan (Englisch: LD fur Ladder Diagram) stellt eine grafische Sprachober-
flache dar, die an die Relaistechnik aus Zeiten der verdrahtungsprogrammierten Steue-
rungen angelehnt ist. Ursprunglich war ausschließlich eine Binarsignalverarbeitung
moglich.
Kennzeichen sind sprossenartig ubereinander angeordnete Netzwerke zwischen zwei
Stromschienen, links der Pluspol und rechts der Minuspol.
Als die wesentlichen grafischen Elemente fur die Netzwerke zwischen den Schienen
sind zu nennen:
• Kontakte
Ein Kontakt leitet den linken Verbindungszustand entsprechend seiner Variante
an das rechte Verbindungselement weiter. Der Kontaktzustand kann die Werte
TRUE oder FALSE, je nach Zustand der zugehorigen Variablen annehmen. Man
unterscheidet Offner und Schließer. Die Invertierung der Logik erfolgt uber den
NOT-Operator
Offner −|/|− Kontakt leitet bei FALSE
Schließer −| |− Kontakt leitet bei TRUE
Invertierung −|NOT|− Signalinvertierung (bei STEP7)
• Verbindungselemente
Verbindungselemente werden durch Striche symbolisiert. Horizontale Verbinder
leiten den Zustand von links nach rechts weiter. Zwei horizontal verbundene Si-
gnale sind AND-verknupft. Vertikale Verbinder munden immer in horizontale
Verbinder. Der Kreuzungspunkt definiert an seiner Stelle eine OR-Verknupfung
aller von links oder vertikal von oben oder unten kommenden Zustande.
• Spulen
Spulen erhalten den linken Zustand entsprechend ihrer Variante als Ausgangs-
wert zugewiesen. Man unterscheidet die positive und die negierte Spule:
Spule −( )− Variable hat den Wert”1“ im Fall TRUE
neg. Spule −(/)− Variable hat den Wert”1“ bei FALSE
45
Grundlagen der SPS Programmierung /Prozessinformatik Prof. Dr. W. Bock
Umsetzung am Beispiel fur die Logische Gleichung:
Q2 = I1&( I2 ∨ I3)&( I4⊕ I5) mit A⊕ B = A&B ∨ A&B
(c) Anweisungsliste (AWL)
Die Anweisungsliste (Englisch: IL fur Instruction List) ist eine textbasierte, maschi-
nennahe Programmiersprache mit festem Format.
Kennzeichen:
• Aufbau aus zwei Spalten: Linke Spalte enthalt je Zeile einen Operator in Form
eines Schlusselwortes, die zweite Spalte listet die dazugehorigen Operanden (0,
1, ...) auf.
• Lade (LD)- und Speicher ( ST)-Befehle zum Kopieren in und aus dem Akkumu-
lator (Akku, Arbeitsregister)
• Schlusselworter AND, OR und XOR fur die elementaren Verknupfungen; da-
bei wird der angegebene Operand mit dem Inhalt des Akkus verknupft und das
Ergebnis wieder in den Akku geschoben. Ein angehangtes N fuhrt zur Invertie-
rung des Boolschen Werts der Variablen.
• Der Klammer-Operator ist notwendig, wenn Teilverknupfungen vorrangig erfol-
gen sollen. Ein Klammer-Ende”)“ steht immer als singularer Operator ohne Ope-
rand.
Umsetzung am Beispiel fur die Logische Gleichung:
Q3 = I1&( I2 ∨ I3)&( I4⊕ I5)
46
Grundlagen der SPS Programmierung /Prozessinformatik Prof. Dr. W. Bock
(d) Ubersicht zu AWL in STEP7
In der Sprache Anweisungsliste stellt STEP7 die umfangreichste Liste an Operatoren
bereit. Auflistung und Kurzerklarung siehe unter: SIMATIC Manager→OB1→Hilfe
→ Hilfe zu AWL→ Index
• Die Sprache AWL beruht auf dem Laden, schrittweisen Modifizieren und endli-
chem Speichern des aktuellen Verknupfungsergebnisses (VKE, stellt den Daten-
inhalt eines binaren Akkumulators in der SPS-CPU dar).
• Zur Programmierung von Schaltnetzen werden nur Operatoren benotigt die Ope-
randen vom Typ BOOL erwarten.
• Operatoren fur elementare Verknupfungen
STEP7- Modifi- Funktion
Operator zierer
U, O, X N Steht einer dieser Operatoren am Beginn eines neuen
Netzwerks, wird nur eine Ladevorgang des Operan-
den bzw. dessen Komplements (bei vorhandenem N)
in das VKE durchgefuhrt.
= Speichert das VKE bzw. sein Komplement im Ope-
randen.
U N, ( AND-Verknupfung (des Kompliments) des Operan-
den oder des nachfolgenden Klammerausdrucks mit
dem VKE und Zuweisung des Ergebnisses an das
VKE.
O N, ( OR-Verknupfung (des Komplements) des Operanden
oder des nachfolgenden Klammerausdrucks mit dem
VKE und Zuweisung des Ergebnisses an das VKE.
X N, ( Exklusiv-OR-Verknupfung (des Komplements) des
Operanden oder des nachfolgenden Klammeraus-
drucks mit dem VKE und Zuweisung des Ergebnisses
an das VKE.
NOT Bildung des Einerkomplements des VKE.
) Ermittlung des Zwischenergebnisses fur den Klam-
merausdruck
CLR, SET VKE auf”0“ zurucksetzen bzw. auf
”1“ setzen
2.1.4 Logische Verknupfungen von Bitstrings
In digitalen Steuerungen sind letztendlich alle Daten, Signale, Zustande und Informationen
durch Ketten von Bits (Dualzahlen) dargestellt. Fur Dualzahlen mit festgelegter Stellenzahl
(Bitstrings) sind Bezeichnungen ublich:
47
Grundlagen der SPS Programmierung /Prozessinformatik Prof. Dr. W. Bock
Anzahl Beispiel fur Bezeichnung der
der Stellen Bitstring Informationseinheit
1 (=20) 0 1 Bit
2 (=21) 10 2 Bit
4 (=22) 0110 1 Halbbyte = 4 Bit
8 (=23) 1011 0011 1 Byte = 8 Bit
16 (=24) 1000 0101 1010 0110 1 Wort = 2 Byte
32 (=25) 1000 0101 1101 0101 0111 0000 1010 0110 1 Doppelwort = 4 Byte
64 (=26) */* 1 Langwort = 8 Byte
Um zu einer ubersichtlichen Darstellung zu kommen, verwendet man bevorzugt das hexa-
dezimale Zahlensystem zur Angabe von Bitstring-Literalen. Ein Halbbyte ist dabei immer
eindeutig durch eine hexadezimale Ziffer reprasentiert:
Dezimalzahl Halbbyte Hex.-Ziffer Dezimalzahl Halbbyte Hex.-Ziffer
0 0000 0 8 1000 8
1 0001 1 9 1001 9
2 0010 2 10 1010 A
3 0011 3 11 1011 B
4 0100 4 12 1100 C
5 0101 5 13 1101 D
6 0110 6 14 1110 E
7 0111 7 15 1111 F
Eine Groß- und Kleinschreibung der Ziffern”A,. . . ,F“ wird dabei nicht unterschieden.
Aus Grunden der Unterscheidbarkeit von Bezeichnern allgemein und hexadezimalen Litera-
len ist ein Anfangsziffer aus der Menge”A,. . . ,F“ in Programmiersprachen nicht moglich.
Dasselbe gilt fur die Reprasentation von Zahlenwerten im dualen Format.
Program.- Literalformat, Kennzeichen
sprache dual oktal dezimal hexadezimal
C, C++ - 0. . . aus (0,. . . ,7) . . . aus (0,. . . ,9) 0x. . . aus (0,. . . ,9,A,. . . ,F)
SPS-PrgS 2#. . . aus (0,1) - . . . aus (0,. . . ,9) (W#)†16#. . . aus (0,. . . ,F)†: In STEP7 ist bei Bitstrings in Hexadezimaldarstellung vorab die Lange in der Form W#
bei WORD bzw. DW# bei DWORD zu kennzeichnen.
Fur Bitstrings werden folgende Datentypen verwendet:
Lange SPS-Datentyp C (16-Bit) C (32-Bit)
8 Bit BYTE unsigned char, short unsigned char
16 Bit WORD unsigned int unsigned short
32 Bit DWORD unsigned long unsigned int, long
64 Bit LWORD - unsigned long long
48
Grundlagen der SPS Programmierung /Prozessinformatik Prof. Dr. W. Bock
Eine logische Verknupfung von Bitstrings ist moglich, soweit die Datentypen der Operanden
sich entsprechen. Falls dies nicht der Fall ist, sind implizite oder explizite Typumwandlungen
notwendig.
(a) Die Komplementbildung eines Bitstrings
• Funktionsplan und Beispiel
Funktionsplan
NOT ibs qbs
Beispiel
ibs := (W#)16#2BE7
qbs := (W#)16#D418
Hinweis: W# nur bei STEP7
• Anweisungsliste
IEC-Norm
Struktur alternativ
LD ibs
NOT
ST qbs
STEP7
Struktur alternativ
L #ibs
INVI INVD
T #qbs
In STEP7 ist eine direkte Komplementbildung nur fur Bitstrings der Lange 16
(INVI) bzw. der Lange 32 (INVD) moglich.
• Hochsprache
ST
qbs := NOT(ibs);
C
qbs = ˜ibs;
(b) Bitweises logisches Verknupfen
Beim bitweisen logischen Verknupfen werden die boolschen Operatoren fur die an
einander entsprechenden Positionen sich befindenden Bits angewendet.
• Funktionsplan und Beispiel
Funktionsplan
AND ibs1 qbsa
ibs2
OR ibs1 qbso
ibs2
XOR ibs1 qbsx
ibs2
Datenbeispiel
ibs1 := (W#)16#2BE7
ibs2 := (W#)16#59A4
qbsa := (W#)16#09A4
qbso := (W#)16#7BE7
qbsx := (W#)16#7243
49
Grundlagen der SPS Programmierung /Prozessinformatik Prof. Dr. W. Bock
• Anweisungsliste
IEC-Norm
Struktur alternativ
LD ibs1
AND ibs2 OR, XOR
ST qbsa qbso, qbsx
STEP7
Struktur alternativ
L #ibs1
L #ibs2
UW OW, XOW
T #qbsa qbso, qbsx
In STEP7 ist der Datentyp exakt zu beachten. Bei DWORD sind UW, OW und XOW
durch UD, OD und XOD zu ersetzen.
• Hochsprache
ST
qbsa := ibs1 AND ibs2;
qbso := ibs1 OR ibs2;
qbsx := ibs1 XOR ibs2;
C
qbsa = ibs1 & ibs2;
qbso = ibs1 | ibs2;
qbsx = (ibs1 & ˜ibs2)|
(˜ibs1 & ibs2);
(c) Bitweises Verschieben und Rotieren
• Funktionsplan und Beispiel
Funktionsplan
SHL ibs qbsl
n
SHR ibs qbsr
n
ROL ibs qbrl
n
ROR ibs qbrr
n
Datenbeispiel
ibs := (W#)16#5BE7
n := 1
qbsl := (W#)16#B7CE
qbsr := (W#)16#2DF3
qbrl := (W#)16#B7CE
qbrr := (W#)16#ADF3
• Anweisungsliste
50
Grundlagen der SPS Programmierung /Prozessinformatik Prof. Dr. W. Bock
IEC-Norm
Struktur alternativ
LD ibs
SHL n SHR, ROL, ROR
ST qbsl qbsr, qbrl, qbrr
STEP7
Struktur alternativ
L #ibs
SLW #n SRW
//RLD #n RRD
T #qbsl qbsr, qbrl, qbrr
In STEP7 ist der Datentyp exakt zu beachten. Bei DWORD sind SLW und SRW
durch SLD und SRD zu ersetzen. Die Operatoren fur die bitweise Rotation RLD
und RRD gibt es nur auf 32-Bit Basis.
• Hochsprache
ST
qbsl := SHL(ibs, n);
qbsr := SHR(ibs, n);
qbrl := ROL(ibs, n);
qbrr := ROR(ibs, n);
C
qbsl = ibs << n;
qbsr = ibs >> n;
Die Sprache C kennt nur die Bitschiebebefehle, nicht die Bitrotation!
2.1.5 Arithmetik und Analogwertverarbeitung
Mit den Operatoren und Funktionen der Arithmetik wird der Umgang mit Zahlenwer-
ten ermoglicht. Zahlen werden in numerischen Binarcodes dargestellt. Man unterscheidet
grundsatzlich Ganzzahltypen und Gleitpunkttypen. Da die Codierung in Bitstrings feste
Lange erfolgt, ergibt sich fur jede Codierungsart ein fest definierter Wertebereich.
Datentypen und Literale fur arithmetische Konstanten in SPS-Programmiersprachen:
Datenart Datentyp, Key-Wort Große Kennung Wertebereich o. Beispiel
SINT†, USINT † 8 Bit -128 . . . 127; 0 . . . 255
Ganze INT, (UINT†) 16 Bit -32768 . . . 32767; (0 . . . 65535)
Zahl DINT, 32 Bit (L#)∗ -2 147 483 648 . . . 2 147 483 647
(UDINT†) (0 . . . 4 294 967 295)
LINT 64 Bit −263 . . . 263 − 1Gleitpunkt- REAL 32 Bit 567.82, -0.05, 3.2E-6
Zahl LREAL 64Bit 1.0,-99.567895, +4.e27∗: Speziell bei Siemens STEP7, nicht nach IEC 61131-3 Norm.
†: implementationsabhangig, nicht bei STEP7
Analoge Daten werden uber Wandlerbaugruppen innerhalb der Steuerung als Bitfolgen vom
Typ WORD behandelt. Unabhangig von der Wandlerauflosung werden 16 Bit fur eine Ana-
logwert verwendet. Die Codierung erfolgt im 2-Komplement, wobei damit das erste Bit das
Vorzeichen angibt und anschließend linksbundig die entsprechenden Bits aufgefullt werden.
51
Grundlagen der SPS Programmierung /Prozessinformatik Prof. Dr. W. Bock
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
Wert VZ 214 213 212 211 210 29 28 27 26 25 24 23 22 21 20
Aufl. Belegung
8 X X X X X X X X X 0 0 0 0 0 0 0
9 X X X X X X X X X X 0 0 0 0 0 0
10 X X X X X X X X X X X 0 0 0 0 0
12 X X X X X X X X X X X X X 0 0 0
15 X X X X X X X X X X X X X X X X
Die theoretische relative Signalauflosung betragt rth = 100%2n
bei n-Bit Wandlerauflosung,
wobei fur n das Vorzeichen in Datenblattern manchmal nur dann mitgezahlt wird, wenn
auch”negative Werte“ gewandelt werden konnen. In der weiteren Betrachtung sei bei n das
Vorzeichen jeweils mitberucksichtigt! In der Praxis ist aufgrund von systematischen und
zufalligen Fehlern bei der Abschatzung die reale Auflosung mit np < n, z.B. nP = n− 1,5abzuschatzen.
rth =100%
2n; rp =
100%
2np
Fur den gesamten Wertebereich des Wandlungsergebnisses wADC = 65536 = 216 gilt wegen
der Verwendung des Typs WORD:
16#8000 . . . 16#FFFF, 16#0 . . . 16#7FFF (hex.) oder -32768 . . . 32767 (dez.)
Daraus ergibt sich ein Quantisierungsintervall qADC fur das Wandlungsergebnis gemaß
qADC =wADC
2n= 2(16−n)
(Falls das Vorzeichen-Bit nicht berucksichtigt wurde, ware wADC durch 2 zu dividieren und
von n der Wert 1 zu subtrahieren. Fur qADC wurde sich dennoch nichts andern!) Das Quan-
tisierungsintervall qADC stellt die Ganzzahldifferenz dar, um die sich zwei ungleiche Wand-
lungsergebnisse mindestens unterscheiden.
Zu beachten ist außerdem, dass neben dem Nennbereich des Wandlers noch Uber- bzw. Un-
terlaufbereich innerhalb des zur Verfugung stehenden Bitbereichs untergebracht werden. Fur
die Analogwertverarbeitung bei SIMATIC-S7 gilt fur den Nennwertebereich nADC :
W#16#9400 . . . W#16#FFFF, W#16#0 . . . W#16#6C00 (hex.) oder -27648 . . . 27648 (dez.)
−→ nADC = 27648− (−27648) = 55296 (= 215,755)
Im Allgemeinen ist damit ein auflosungsrelevanter Messbereichsfaktor mADC bestimmt:
52
Grundlagen der SPS Programmierung /Prozessinformatik Prof. Dr. W. Bock
mADC =wADC
nADC
=Wandlungsbereich
Nennbereich
Die theoretische Auflosung eines Analogsignals ist dann schließlich:
rs,th = mADC · rth =wADC
nADC
·100%
2n=
qADC
nADC
· 100%
Zusammenfassung Analogwertverarbeitung:
Kenngroße Symbol Werte Beispiel fur Wert
Bit-Auflosung n 8 . . . 16(m./o.VZ) n = 10
Wandler-Auflosung rth100%2n
n = 10; rth = 0,098
Wertebereich Wandlungsergebnis wADC 216(WORD) 65536Nennwertebereich nADC OGW − UGW 55296
Messbereichsfaktor mADCwADC
nADC
6553655296
= 1,185
Quantisierungsinterall qADCwADC
2n= n16−n n = 10; qADC = 64
UGW/OGW: unterer bzw. oberer Grenzwert; m./o.VZ: mit oder ohne Vorzeichen
Arithmetische Funktionen und Operatoren:
(a) Addition und Subtraktion
• Darstellung und Parameter
Funktionsplan Formalparametertypen
ADD nv1
nv2 qnv1
SUB nv3
nv4 qnv2
1. Eingange: Alle numerischen
Datentypen, wobei speziell in
STEP7 alle Operanden vom
selben oder vergleichbaren
Typ sein mussen. Vielen Pro-
grammiersysteme lassen aber
auch gemischte Datentypen
zu, da vor der Operation ei-
ne implizite Typenwandlung
stattfindet.
2. Ausgang: umfangreichster
Datentyp
• Beschreibung
Das Ergebnis entspricht der arithmetischen Summe bzw. der Differenz von zwei
ubergebenen Eingangsparametern. Bei den meisten Programmiersystemen kann
die Anzahl der Eingangsparameter beim ADD-Operator auch großer als 2 sein.
53
Grundlagen der SPS Programmierung /Prozessinformatik Prof. Dr. W. Bock
– ADD Alternativsymbol: +
– SUB Alternativsymbol: −
• Anweisungsliste
IEC-Norm
Struktur alternativ
LD nv1
ADD nv2 (evtl. weitere Sum.)
ST qnv1
LD nv3
SUB nv4
ST qnv2
STEP7
Struktur alternativ
L #nv1
L #nv2
+I +D, +R
T #qnv1
L #nv3
L #nv4
-I -D, -R
T #qnv2
In STEP7 sind bei den arithmetischen Operatoren die Datentypen der Operanden
zu beachten. Beispielsweise sind an Stelle von +I bei abweichendem Datentyp
alternativ +D und +R zu verwenden.
• Hochsprache
ST
qnv1 := nv1 + nv2;
gnv2 := nv3 - nv4;
C
qnv1 = nv1 + nv2;
gnv2 = nv3 - nv4 ;
(b) Multiplikation und Division
• Darstellung und Parameter
Funktionsplan Formalparametertypen
MUL nv1
nv2 qnv1
DIV nv3
nv4 qnv2
1. Eingange: Alle numerischen
Datentypen, wobei speziell in
STEP7 alle Operanden vom
selben oder vergleichbaren
Typ sein mussen. Vielen Pro-
grammiersysteme lassen aber
auch gemischte Datentypen
zu, da vor der Operation ei-
ne implizite Typenwandlung
stattfindet.
2. Ausgang: umfangreichster
Datentyp
• Beschreibung
Das Ergebnis entspricht dem arithmetischen Produkt bzw. dem Quotienten von
54
Grundlagen der SPS Programmierung /Prozessinformatik Prof. Dr. W. Bock
zwei ubergebenen Eingangsparametern. Bei den meisten Programmiersystemen
kann die Anzahl der Eingangsparameter beim MUL-Operator auch großer als 2
sein.
– MUL Alternativsymbol: ∗
– DIV Alternativsymbol: /
• Anweisungsliste
IEC-Norm
Struktur alternativ
LD nv1
MUL nv2 (evtl. weitere Sum.)
ST qnv1
LD nv3
DIV nv4
ST qnv2
STEP7
Struktur alternativ
L #nv1
L #nv2
*I *D, *R
T #qnv1
L #nv3
L #nv4
/I /D, /R
T #qnv2
In STEP7 sind bei den arithmetischen Operatoren die Datentypen der Operanden
zu beachten. Beispielsweise sind an Stelle von *I bei abweichendem Datentyp
alternativ *D und *R zu verwenden.
• Hochsprache
ST
qnv1 := nv1 * nv2;
gnv2 := nv3 / nv4;
C
qnv1 = nv1 * nv2;
gnv2 = nv3 / nv4;
(c) Modulo-Division
• Darstellung und Parameter
Funktionsplan Formalparametertypen
MOD nv1
nv2 qnv1
1. Eingange: Die Modulo-
Funktion lasst nur ganzzahli-
ge Eingange zu.
2. Ausgang: ganzzahlig
• Beschreibung
Das Ergebnis der Modulo-Funktion ist der ganzzahlige Rest bei der Ganzzahldi-
vision.
– MOD Alternativsymbol: %
• Anweisungsliste
55
Grundlagen der SPS Programmierung /Prozessinformatik Prof. Dr. W. Bock
IEC-Norm
Struktur alternativ
LD nv1
MOD nv2
ST qnv1
STEP7
Struktur alternativ
L #nv1
L #nv2
MOD
• Hochsprache
ST
qnv1 := nv1 MOD nv2;
C
qnv1 = nv1 % nv2;
2.1.6 Typkonvertierungen
Um Daten unterschiedlichen Typs mit einander zu verknupfen muss i.d.R eine Konvertie-
rung auf einen gemeinsamen Type erfolgen. Bei den meisten Sprachen erfolgt dies implizit.
Die SPS-Sprache STEP7 hingegen erfordert einen peniblen Umgang mit unterschiedlichen
Datentypen.
(a) Explizite Typumwandlung Alle Sprachen bieten aber auch explizite Typumwand-
lungen an. Alle Funktionen zur Typkonversion besitzen ein Schlusselwortkonzept mit
dem Element <Typ1>_TO_<Typ2>. Dabei beschreibt Typ 1 den umzuwandelnden
Datentyp und Typ 2 den Zieltyp. Generell sind nur Wandlungen von kleinerem zum
großeren Datentyp implizit moglich. Fur die umgekehrte Wandlung ist der Aufruf einer
Wandelfunktion notwendig, das Ergebnis ist haufig stark implementierungsabhangig.
Einige Beispiele:
Funktion Konvertierung Eigenschaften
INT_TO_DINT INT→ DINT Wandlung auch implizit moglich; Wand-
lung ist prinzipiell immer moglich.
INT_TO_REAL INT→ REAL Wandlung auch implizit moglich; die Ge-
nauigkeit kann sich verringern.
REAL_TO_INT REAL→ INT Rundung (s.u.) auf die nachste Ganzzahl;
Vorzeichen bleibt erhalten aber keine all-
gemeine Festlegung fur den Fall, dass
die Wandlung bei zu hoher Betragsgroße
nicht moglich ist.
DINT_TO_INT DINT→ INT I.d.R. werden die oberen 16 Bit einfach
abgeschnitten.
INT_TO_BCD ∗ INT→ BCD Wandlung von und nach BCD-codierten
Zahlen
BCD_TO_INT ∗ BCD→ INT
∗: Speziell in STEP7, nicht nach IEC61131-3!
56
Grundlagen der SPS Programmierung /Prozessinformatik Prof. Dr. W. Bock
In STEP7/AWL existierten eine Vielzahl von Umwandlungsoperatoren, die in ublicher
Form mit Lade- und Transferbefehl verwendet werden.
Beispiele:
BTI, BTD BCD nach Ganzzahl ITB, DTB Ganzzahl nach BCD
RND, RND+, RND- REAL nach INT TRUNC REAL nach Doppel-Int.
ITD INT nach DINT DTR DINT nach REAL
(b) TRUNC-Funktion
Darstellung und Parameter
Grafische Darstellung Formalparametertypen
TRUNC ANY _REAL ANY _ INT
1. Eingang: beliebiger Gleit-
punkttyp, z.B. REAL
2. Ausgang: Ganzzahltyp der
notwendigen Lange z.B.
INT.
Beschreibung
Liefert nicht den ganzzahlig gerundeten Wert (wie REAL_TO_INT, s.o.), sondern den
ganzzahligen Anteil der Gleitpunktzahl durch Abschneiden der Nachkommastellen.
Programmsyntax
AWL ST
LD <IN>
TRUNC
ST <Out>
<Out> := TRUNC(<In>)
2.1.7 Vergleichsausdrucke
Mit Vergleichsausdrucken werden Zahlenwerte bzgl. Gleichheit oder Ungleichheit ge-
genubergestellt. das Ergebnis ist jeweils ein boolscher Wert.
(a) Vergleich auf Großer oder Großer-Gleich
• Darstellung und Parameter
57
Grundlagen der SPS Programmierung /Prozessinformatik Prof. Dr. W. Bock
Funktionsplan Formalparametertypen
GT nv1
nv2 qnv1
GE nv3
nv4 qnv2
1. Eingange: Alle Datentypen,
wobei im konkreten Falle
alle Parameter vom selben
oder vergleichbaren Typ sein
mussen. Die Anzahl der Ein-
gangsparameter ist systems-
pezifisch.
2. Ausgang: Typ BOOL fur die
Aussage TRUE oder FALSE
• Beschreibung
Die GT- oder GE- Funktion liefert am Ausgang eine Aussage bzgl. einer verglei-
chenden Wertereihenfolge. Der Ausgang liefert den Wert TRUE, wenn die Ver-
gleichsrelation zwischen alle benachbarten Eingangsparametern zu einer wahren
Aussage fuhrt.
– GT Relation: großer als Alternativsymbol: >
– GE Relation: großer gleich Alternativsymbol: >=
• Anweisungsliste
IEC-Norm
Struktur alternativ
LD nv1
GT nv2 (evtl. weitere Op.)
ST qnv1
LD nv3
GE nv4 (evtl. weitere Op.)
ST qnv2
STEP7
Struktur alternativ
L #nv1
L #nv2
>I >D, >R
= #qnv1
L #nv3
L #nv4
>=I >=D, >=R
= #qnv2
In STEP7 sind bei den arithmetischen Operatoren die Datentypen der Operanden
zu beachten. Beispielsweise sind an Stelle von *I bei abweichendem Datentyp
alternativ *D und *R zu verwenden.
• Hochsprache
ST
qnv1 := nv1 > nv2;
gnv2 := nv3 >= nv4;
C
qnv1 = nv1 > nv2;
gnv2 = nv3 >= nv4;
In ST gibt es zwei Moglichkeiten, die Vergleichsfunktion aufzurufen. In der
Funktionsform werden die Operanden nach dem Operatorsymbol (GT oder GE)
58
Grundlagen der SPS Programmierung /Prozessinformatik Prof. Dr. W. Bock
in Klammern ubergeben. In der Operaturform stehen die Operanden vor und nach
dem Operatorsymbol (> oder >=).
(b) Vergleich auf Kleiner oder Kleiner-Gleich
• Darstellung und Parameter
Funktionsplan Formalparametertypen
LT nv1
nv2 qnv1
LE nv3
nv4 qnv2
1. Eingange: Alle Datentypen,
wobei im konkreten Falle
alle Parameter vom selben
oder vergleichbaren Typ sein
mussen. Die Anzahl der Ein-
gangsparameter ist systems-
pezifisch.
2. Ausgang: Typ BOOL fur die
Aussage TRUE oder FALSE
• Beschreibung
Die LT- oder LE- Funktion liefert am Ausgang eine Aussage bzgl. einer verglei-
chenden Wertereihenfolge. Der Ausgang liefert den Wert TRUE, wenn die Ver-
gleichsrelation zwischen alle benachbarten Eingangsparametern zu einer wahren
Aussage fuhrt.
– LT Relation: kleiner als Alternativsymbol: <
– LE Relation: kleiner gleich Alternativsymbol: <=
• Anweisungsliste
IEC-Norm
Struktur alternativ
LD nv1
LT nv2 (evtl. weitere Op.)
ST qnv1
LD nv3
LE nv4 (evtl. weitere Op.)
ST qnv2
STEP7
Struktur alternativ
L #nv1
L #nv2
<I <D, <R
= #qnv1
L #nv3
L #nv4
<=I <=D, <=R
= #qnv2
In STEP7 sind bei den arithmetischen Operatoren die Datentypen der Operanden
zu beachten. Beispielsweise sind an Stelle von *I bei abweichendem Datentyp
alternativ *D und *R zu verwenden.
• Hochsprache
59
Grundlagen der SPS Programmierung /Prozessinformatik Prof. Dr. W. Bock
ST
qnv1 := nv1 < nv2;
gnv2 := nv3 <= nv4;
C
qnv1 = nv1 < nv2;
gnv2 = nv3 <= nv4;
In ST existieren wieder zwei Darstellungsmoglichkeiten analog zu (a).
(c) Vergleich auf Gleichheit oder Ungleichheit
• Darstellung und Parameter
Funktionsplan Formalparametertypen
EQ nv1
nv2 qnv1
NE nv3
nv4 qnv2
1. Eingange: Alle Datentypen,
wobei im konkreten Falle
alle Parameter vom selben
oder vergleichbaren Typ sein
mussen. Die Anzahl der Ein-
gangsparameter ist systems-
pezifisch.
2. Ausgang: Typ BOOL fur die
Aussage TRUE oder FALSE
• Beschreibung
Die EQ- oder NE- Funktion liefert am Ausgang eine Aussage bzgl. einer verglei-
chenden Wertereihenfolge. Der Ausgang liefert den Wert TRUE, wenn die Ver-
gleichsrelation zwischen alle benachbarten Eingangsparametern zu einer wahren
Aussage fuhrt.
– EQ Relation: gleich Alternativsymbol: =
– NE Relation: ungleich Alternativsymbol: <>
• Anweisungsliste
IEC-Norm
Struktur alternativ
LD nv1
EQ nv2 (evtl. weitere Op.)
ST qnv1
LD nv3
NE nv4
ST qnv2
STEP7
Struktur alternativ
L #nv1
L #nv2
==I ==D, ==R
= #qnv1
L #nv3
L #nv4
<>I <>D, <>R
= #qnv2
In STEP7 sind bei den arithmetischen Operatoren die Datentypen der Operanden
zu beachten. Beispielsweise sind an Stelle von *I bei abweichendem Datentyp
alternativ *D und *R zu verwenden.
60
Grundlagen der SPS Programmierung /Prozessinformatik Prof. Dr. W. Bock
• Hochsprache
ST
qnv1 := nv1 = nv2;
gnv2 := nv3 <> nv4;
C
qnv1 = nv1 == nv2;
gnv2 = nv3 != nv4;
In ST existieren wieder zwei Darstellungsmoglichkeiten analog zu (a).
(d) Auswahl-Funktionen
MAX/MIN/LIMIT -Funktion
Darstellung und Parameter
Grafische Darstellung Formalparametertypen
ANY
ANY
MAX
ANY
ANY
ANY
MIN
ANY
ANY
ANY LIMIT
ANY
ANY
MN
MX
IN
1. Eingang: Alle einfachen be-
wertbaren Datentypen wie
BYTE, WORD, DWORD, INT
TIME usw..
2. Ausgang: grundsatzlich er-
scheint immer einer der Ein-
gangsparameter wieder am
Ausgang. Der Ausgangstyp
entspricht dann diesem Ein-
gangstyp.
Beschreibung
• Die MAX- oder MIN- Funktion liefert am Ausgang den Eingangsparameter
mit dem großten bzw. dem kleinsten Wert. Die Anzahl der Eingangsparame-
ter ist je nach System nach oben beschrankt.
• Die Funktion LIMIT liefert den Wert MN zuruck, falls der Eingangsparame-
ter IN kleiner als MN ist, bzw. den Wert MX falls IN großer als MX ist. In
allen anderen Fallen wird der Wert IN zuruckgegeben.
Programmsyntax
61
Grundlagen der SPS Programmierung /Prozessinformatik Prof. Dr. W. Bock
IEC61131-3 AWL ST
(*Beispiel: MAX-Syntax*)
LD <In1>
MAX <In2>,<In3>,...
ST <Out>
<Out_Max> :=
MAX(<In1>,<In2>,...);
(*oder:*)
<Out_Limit> :=
LIMIT(MN:=<In1>,
IN:=<In2>,MX:=<In3>);
STEP7/AWL und C kennen keine entsprechenden Instruktionen.
SEL -Funktion
Darstellung und Parameter
Grafische Darstellung Formalparametertypen
BOOL
ANY
SEL
ANY
ANY
G
IN1
IN0
1. Eingang G: Typ BOOL
2. Eingange IN0 und IN1: Belie-
bige Datentypen, aber sinn-
voller Weise nur beide gleich
3. Ausgang: Der Ausgangstyp
entspricht dem Eingangstyp
von IN0 u. IN1.
Beschreibung
Gibt abhangig vom Wert des boolschen Eingangs G den Parameter IN0 bzw. IN1
zuruck.
Programmsyntax
IEC61131-3 AWL ST
LD <G>
SEL <In0>,<In1>
ST <Out>
<Out> :=
SEL(G:=<G>,IN0:=<In1>,
IN1:=<In2>);
STEP7/AWL und C kennen keine entsprechenden Instruktionen.
MUX -Funktion
Darstellung und Parameter
62
Grundlagen der SPS Programmierung /Prozessinformatik Prof. Dr. W. Bock
Grafische Darstellung Formalparametertypen
INT
ANY
MUX
ANY
ANY
K
1. Eingang K: Ganzzahliger Typ
z.B. INT
2. alle anderen Eingange: Be-
liebige Datentypen aber sinn-
voller Weise alle gleich
3. Ausgang: Der Ausgangstyp
entspricht dem Eingangstyp
Beschreibung
Der Multiplexer wahlt denjenigen Eingangsparameter aus, der durch K bezeich-
net wird, und gibt diesen zuruck. Die Zahlung beginnt bei Null.
Programmsyntax
IEC61131-3 AWL ST
LD <K>
MUX <In0>,<In1>,...
ST <Out>
<Out> :=
MUX(K:=<K>,<In1>,
<In2>,...);
STEP7/AWL und C kennen keine entsprechenden Instruktionen.
2.1.8 Bedingte und unbedingte Programmverzweigung
Programmverzweigungen in Programmiersprachen dienen folgenden Zwecken:
• Unterbrechung der sequenziellen Abfolge der Programmschritte und Fortsetzung an
anderer Stelle der augenblicklichen Programmeinheit.
• Auswahl des auszufuhrenden Programmcodes an Hand einer Variablenabfrage.
• Vorzeitiges Abbrechen von Funktionen und Funktionseinheiten (Programmorganisati-
onseinheiten) durch bedingte oder unbedingte Rucksprunge.
(a) Sprunge
Sprunge sind innerhalb eines Programmoduls moglich. Eine Bedingung kann durch
den Wert einer boolschen Variablen festgelegt werden. Hat diese den Wert TRUE, wird
ein Sprung zu der Stelle ausgefuhrt, die durch eine Markierung (Netzwerkbezeichner)
gekennzeichnet ist. Die Verwendung einer Konstanten mit Wert TRUE erlaubt dann
die Definition eines unbedingten Sprunges.
Zu einer Sprunganweisung gehort die Angabe eines Sprungziels (Sprungmarke, La-
bel).
63
Grundlagen der SPS Programmierung /Prozessinformatik Prof. Dr. W. Bock
• Sprunge im Funktionsplan
Grafikobjekt Sprungtyp Bemerkung
TRUE Sprungmarke unbedingter
Sprung
Das Steuerungsprogramm
fahrt fort mit den Anweisun-
gen hinter der angegebenen
Marke
Boolscher Ausdruck
Sprungmarke
bedingter Sprung Ein Sprung erfolgt nur,
wenn der Ausdruck vor dem
Sprungsymbol den Wert
TRUE hat.
RETURN TRUE
unbedingter
Rucksprung
Das Netzwerk wird sofort
verlassen und zum aufru-
fenden Programm zuruckge-
sprungen. Bei Verwendung
im Hauptprogramm lasst sich
damit ein vorzeitiges Pro-
grammende und ein Ruck-
sprung zum Anfang erreichen
RETURN Boolscher
Ausdruck bedingter Ruck-
sprung
Ein Rucksprung erfolgt nur,
wenn der Ausdruck vor dem
Sprungsymbol den Wert
TRUE hat.
Besonderheiten bei CoDeSys- Programmiersystemen
In CoDeSys kann ein Programmmodul in einzelne separat ubersetzbar Abschnitte
zerlegt werden. Ein fehlerfrei kompiliertes Modul findet man in der Liste der
einfugbaren Bausteine unter dem Menupunkt”Definierte Programme“. Es kann
in einem Netzwerk wie ein Operator oder Baustein eingefugt werden.
• Sprunge in Anweisungsliste
Die Programmiersprache Anweisungsliste kennt mehrere Sprungbefehle. Der
Aufruf von Funktionsbausteinen wie Zahlern, Zeitglieder oder RS-Flipflops mit
Hilfe der Instruktion CAL wurde bereits vorgestellt. Ein Funktionsbaustein der in
der Sprache AWL geschrieben ist, muss zur Anzeige des Rucksprung die Anwei-
sung RET enthalten.
Sprunge innerhalb des Moduls werden durch das Schlusselwort JMP ausgelost.
64
Grundlagen der SPS Programmierung /Prozessinformatik Prof. Dr. W. Bock
IEC-Operator STEP7 Sprungtyp Bemerkung
JMP label SPA label unbedingter
Sprung
Das Steuerungsprogramm fahrt
fort mit der nachsten Anweisun-
gen hinter der angegebenen Mar-
ke (label)
JMPC label SPB label bedingter
Sprung
Das Steuerungsprogramm ver-
zweigt nur zur angegebenen
Marke, wenn die letzte Auswer-
tung vor dem Sprungbefehl den
Wert TRUE ergeben hat
JMPCN label SPBN label bedingter
Sprung
Das Steuerungsprogramm ver-
zweigt nur zur angegebenen
Marke, wenn die letzte Auswer-
tung vor dem Sprungbefehl den
Wert FALSE ergeben hat
RET BE, BEA unbedingter
Rucksprung
Das Programmmodul wird so-
fort beendet
RETC BEB bedingter
Rucksprung
Das Programmmodul wird been-
det bei Wert TRUE in der letzten
Anweisung vor dem Sprungope-
rator
RETCN - bedingter
Rucksprung
Das Programmmodul wird been-
det bei Wert FALSE in der letz-
ten Anweisung vor dem Sprung-
operator
Besonderheiten bei Siemens STEP7
– Sprungmarken (label) bestehen aus Bezeichnern mit max. 4 Zeichen.
– In AWL steht eine große Vielfalt von bedingten Sprungoperatoren zur
Verfugung, die vom Zustand einzelner Bits des Statuswortes abhangen.
– Mit dem Operator Sprungleiste SPL lasst sich die aus Hochsprachen bekann-
te Fallunterscheidung (case) fur die Auswahl eines aus mehreren Sprung-
zielen realisieren.
• Sprunge in Hochsprachen
In Hochsprachen existiert die Anweisung GOTO. In den Lehrbuchern wird von
der deren Verwendung haufig abgeraten, da bei intensiver Anwendung eine ge-
wisse Unubersichtlichkeit entstehen kann. Ein Rucksprung aus einer Programm-
organisationseinheit erfolgt mit der RETURN-Anweisung
Verwendung GOTO- und RETURN-Anweisung:
65
Grundlagen der SPS Programmierung /Prozessinformatik Prof. Dr. W. Bock
ST
GOTO mylabel;
. . .
mylabel: . . .
. . .
RETURN;
C
goto mylabel;
. . .
mylabel: . . .
. . .
return ...;
In CoDeSys wird die GOTO-Anweisung nicht unterstutzt. In C wird bei der Ruckga-
be ein Wert an ubergeordnete Programmteile zuruckgegeben. Nach return ist ein
bewertbarer Ausdruck anzufugen.
(b) IF-Anweisung
Die IF-Anweisung ist eine in Hochsprachen sehr haufig vorkommende Instruktion, mit
der sich . . .
• ein Programmcodebereich unter Angabe einer Bedingung ausfuhren oder uber-
springen lasst
• oder aus zwei sich gegenseitig ausschließende Programmteilen ausgewahlt wird.
Die IF-Anweisung ist ineinander verschachtelbar, d.h. ein Auswahlzweig kann selbst
wieder eine IF-Anweisung enthalten.
ST
IF <BOOL> THEN
...; (*Anw. 1*)
ELSIF <BOOL> THEN
...; (*Anw. 1a, optional*)
ELSE
...; (*Anw. 2*)
END_IF;
C
if (<bool>)
{...} //Anw. 1
else
{...} //Anw. 2
In den SPS-Sprachen AWL und FUP ist die IF-Anweisung uber bedingte Sprunge
funktional ersetzbar.
(c) Auswahlanweisung
Auswahlanweisungen stellen eine weitere typische Moglichkeit zur Fallunterschei-
dung in Hochsprachen dar. In der Praxis werden abhangig vom Inhalt einer ganzzah-
ligen Variablen 1 bis n Falle unterschieden. Die einzelnen Falle werden durch eine
Vergleichswert fur diese ganzzahlige Variable mit einem nachfolgenden Doppelpunkt
eingeleitet. Optional ist eine Anweisung festlegbar, die dann ausgefuhrt wird, wenn
keine Ubereinstimmung vorliegt.
66
Grundlagen der SPS Programmierung /Prozessinformatik Prof. Dr. W. Bock
ST
CASE <INT-Wert> OF
1: ...; (*Anw. 1*)
2: ...; (*Anw. 2*)
3..5: ...; (*Anw. 3*)
ELSE: ...; (*altern. Anw.*)
END_CASE;
C
switch (<int-Wert>)
{
case 1: ...; break; //Anw. 1
case 2: ...; break; //Anw. 2
case 3: case 4: //mehr. Falle
case 5: ...; break; //Anw. 3
default:...; //altern. Anw.
}
Mit Einschrankungen im Detail steht auch in STEP7-AWL eine Auswahlanweisung
unter dem Schlagwort Sprungleiste (s. unter (a))zur Verfugung.
2.1.9 Schleifen
Schleifen werden benutzt um eine Anweisung (auch Blockanweisung) mehrfach aus-
zufuhren. Die Anzahl der Wiederholungen hangt von der Erfullung einer Bedingung ab,
die entweder am Anfang oder am Ende einer Schleife uberpruft wird.
(a) WHILE-Schleife
Die WHILE-Schleife dient zur Wiederholung einer Folge von Anweisungen, solange
eine Durchfuhrungsbestimmung (Typ BOOL) erfullt ist.
ST
WHILE <BOOL> DO
...; (*Anw.*)
END_WHILE;
C
while (<bool>)
{
...; //Anw.
}
(b) REPEAT/DO-Schleife
Die REPEAT- (in ST) oder do-while- (in C) Schleife dient zur Wiederholung einer
Folge von Anweisungen, bis eine Abbruchbedingung (Typ BOOL) erfullt ist.
ST
REPEAT
...; (*Anw.*)
UNTIL <BOOL>
END_REPEAT;
C
do
{
...; //Anw.
}
while (<bool>);
(c) FOR-Schleife
Die FOR-Schleife dient zur Wiederholung einer Folge von Anweisungen, solange eine
ganzzahlige Laufvariable innerhalb eine angegebenen Wertebereichs liegt.
67
Grundlagen der SPS Programmierung /Prozessinformatik Prof. Dr. W. Bock
ST
FOR <INT-Var>:=... TO ...
BY ... (*optional*)
DO
...; (*Anw.*)
END_FOR;
C
for
(<int-Var.>=...;<bool>;...)
{
...; //Anw.
}
(d) Verlassen einer Schleife
Schleifen werden mit Erreichen der Abbruchbedingung verlassen. Sie konnen daruber
hinaus auch vorzeitig verlassen werden. Dabei unterscheidet man den Abbruch des ak-
tuellen Schleifendurchlaufs mit anschließender Uberprufung der Schleifenabbruchsbe-
dingung oder den abrupten, sofortigen und bedingungslosen Abbruch einer Schleife.
Art des Abbruchs ST C
Aktueller Schleifendurchlauf CONTINUE continue
Abbruch der Gesamtschleife EXIT break
Beispiel in ST:
In einem Statuswort (Bitstring vom Typ WORD) soll die Anzahl der true-Bits ermittelt
werden.
VAR
status: WORD; (*Statuswort*)
i: INT := 0; (*ganzzahlige Laufvariable*)
bitpos: WORD:= 2#1; (*Positionsmarke*)
bitsum: INT; (*Bitzaehler*)
END_VAR
(* Schleifenalgorithmus *)
WHILE (i < 16) DO
IF ((status AND SHL(bitpos,i)) = SHL(bitpos,i)) THEN
bitsum := bitsum + 1;
END_IF;
i := i + 1;
END_WHILE;
68
Grundlagen der SPS Programmierung /Prozessinformatik Prof. Dr. W. Bock
2.2 Schaltwerkprogrammierung
Mit algebraisch-logischen Beschreibungsmitteln lassen sich logische Zusammenhange sowie
funktionale Zusammenhange (Funktionen) zwischen Konstanten und Variablen beschreiben.
Im Bereich der logischen Zusammenhange werden diese Beziehungen auch als Schaltnetze
bezeichnet.
Im Bereich der Prozessinformatik bestehen aber haufig auch Abhangigkeiten gegenuber zeit-
lich vorhergehender Situationen und Zustanden. Z.B. enthalten Steuerungsprogramme viel-
fach Zeitglieder um Start- und Stoppzeitpunkte oder Bearbeitungsdauern festzulegen. Ein
fixer Zeitpunkt lasst nicht durch einen Logikpegel sondern nur durch eine Pegelflanke festle-
gen. Soll ein Vorgang mehrfach wiederholt werden, ist die Definition von Zahlern notwendig.
All diesen Anforderungen ist gemeinsam, dass neben den augenblicklichen logischen Zu-
standen auch vorhergehende Signalzustande einen Einfluss haben. Man spricht in diesem
Fall von einem Schaltnetz mit Gedachtnis oder allgemein von einem Schaltwerk.
Schaltwerk Q 1
St k
St 1
Eingänge Ausgänge Rückkopplung
I 1
I n Q m
Ein Schaltwerk erzeugt aus den Eingangen I (Input) und den gespeicherten Zustanden St(States) in jedem Zyklus die Ausgange Q (Output) neu.
Die Ruckkopplung erfordert eine zeitliche Diskretisierung bzw. einen zeitsequenziellen Pro-
zessablauf. Das System befindet sich zu jeder Zeit in einem definierten Zustand, der durch
eine Aktion (Ausgangssignale) gekennzeichnet ist. Optional kann mit Eintritt und Verlassen
des Zustandes eine Eingangs- und Ausgangsaktion verbunden sein.
Beispiel: Motor mit 3 Betriebszustanden:”Stopp“,
”Laufrichtung links“ und
”Laufrichtung
rechts“; zwischen den Zustanden existieren Ubergangsbedingungen die mit”Start links“,
”Start rechts“ sowie
”Stopp“ dargestellt sind. Mit
”Start“ ist der Ubergang in den Initialzu-
stand verbunden.
69
Grundlagen der SPS Programmierung /Prozessinformatik Prof. Dr. W. Bock
St0
St1
St2
Start links
Stopp
Start
Motor links
Stopp
Start rechts
Motor rechts
Motor stopp
2.2.1 Zustandsautomaten
Schaltwerke konnen mit klassischen Automatenmodellen theoretisch beschrieben werden.
Kennzeichen ist ein zeitsequenzieller Betrieb, wobei besonders die Folge der Zustande in
aufeinander folgenden Takten interessiert. Generell sind Automaten durch folgendes Verhal-
ten charakterisiert:
• Dem Automaten wird von außen eine Eingabe als Folge von Zeichen (Signalen) vor-
gelegt.
• Der Automat hat einen Zustand.
• Zu jedem Programmzyklus kann sich abhangig von den Eingabezeichen und dem ge-
genwartigen Zustand ein neuer Zustand, der Folgezustand, einstellen (Zustandsuber-
gang oder Transition).
• Man kann die Menge der moglichen Zustandsubergange, die das Verhalten des Auto-
maten definiert, als das Programm des Automaten verstehen.
Der zeitsequenzielle Ablauf ergibt sich software-technisch durch Abarbeiten in einer Endlos-
schleife mit zyklischer Programmabarbeitung. Beim Moore-Automaten hangt die Ausgabe
70
Grundlagen der SPS Programmierung /Prozessinformatik Prof. Dr. W. Bock
(Aktion) ausschließlich vom augenblicklichen Zustand ab. Beim Erreichen eines Zustandes
wird eine Ausgabe erzeugt, welche unabhangig vom Ubergang in diesen Zustand ist.
Eingangsschaltnetz
E(Ii(k),St
i(k-1))
Zustandsspeicher
St(Ei(k))
Ausgangsschaltnetz
Q(Sti(k))
Rückkopplung
zeitlich entkoppelt
Sti(k-1) St
i(k)
Ii(k) Q
i(k)St
i(k)
i Signalindex
k Taktzähler
Ei(k)
Ein fur Automatisierungsaufgaben angepasster Automat kann in vier Teilbereiche struktu-
riert werden:
Zustandsspeicher: Mit Hilfe von Selbsthaltefunktionen wird ein Set von Zustanden
wahrend einer Zyklusdauer festgehalten. Der Speicherinhalt wird durch die jeweili-
ge Eingangsinformation E(k) (k Zykluszahler) bestimmt.
Eingangsschaltnetz: An Hand der aktuellen Eingangszustande und der augenblicklichen
Speicherzustande St(k) ergibt sich die Steuerungsinformation fur den Zustandsspei-
cher.
Ausgangsschaltnetz: Es ermittelt aus dem aktuellen Zustandsset die prozessrelevanten
Ausgangssignale Q(k).
Ruckkopplung: Die Ruckkopplung fuhrt die aktuellen Speicherzustande auf das Ein-
gangsschaltnetz zuruck. Diese Ruckfuhrung ist erfolgt nicht in augenblicklich, sondern
wird erst in einem Folgezyklus wirksam.
Die praktische Beschreibung eines Zustandsautomaten erfolgt in Form von Tabellen oder mit
Hilfe von Grafiken.
(a) Zustandsfolgetabellen
Die Zustandsfolgetabelle beschreibt die Halteglieder im Automatenmodell. Sie ist eine
Wahrheitstabelle (Schaltnetz), die neben den zugefuhrten Eingangssignalen auch die
Ausgange des vorherigen Zyklus enthalt.
Ii St−j Stj Qk
0 0 . . . . . .
1 0 . . . . . .
0 1 . . . . . .
1 1 . . . . . .Version mit
”vorhergehendem“
Zustand
Ii Stj St+j Qk
0 0 . . . . . .
1 0 . . . . . .
0 1 . . . . . .
1 1 . . . . . .Version mit
”nachfolgendem“
Zustand
71
Grundlagen der SPS Programmierung /Prozessinformatik Prof. Dr. W. Bock
Die Indizes i, j, k signalisieren, dass die Anzahl der Einzelsignale I , St und Q großer
als eins sein kann. Die Anzahl der Spalten der Tabellen betragt i + k + 2 · j und die
der Zeilen 2i+j . Die zwei Versionen zeigen, dass die zeitliche Entkopplung entweder
durch die Betrachtung von vorhergehenden oder nachfolgenden Zustanden beruck-
sichtigt werden kann.
(b) Zustandsubergangstabellen
Die Zustandsubergangstabelle beschreibt die Bedingungen und moglichen Ubergange
zwischen Zustanden
Zustand Ubergangsbedingung Folgezustand Aktion
Beispiele
”Bedingung 1 erfullt“ St2
”Ausgange 4 und 5 auf H-Pegel“
St1”Bedingung 2 erfullt“ St3
”Zahler 2 um 1 erhohen“
”Timer 2 abgelaufen“ St4 . . .
St2 . . . St1 . . .
. . . . . . . . . . . .
Wie das Beispiel zeigt, sind je nach Ubergangsbedingung Verzweigungen von einem
Zustand zu mehreren anderen Zustanden moglich. Ebenso sind Rucksprunge definier-
bar.
(c) Zustandsgraph
Der Zustandsgraph stellt die Zustandsubergangstabelle in einem Schaubild dar.
St0
St2
St1
St3
tc21
tc02
tc01
tc10
tc30
tc13tc0
Aktion
72
Grundlagen der SPS Programmierung /Prozessinformatik Prof. Dr. W. Bock
Alle definierten Zustande werden in einen Kreis eingetragen. Zwischen den Kreisen
werden mogliche Ubergange durch Pfeile dargestellt. Ein Ubergang wird durch die
Erfullung einer Transitionsbedingung tcxx freigeschaltet. Ein Zustand muss als Initial-
oder Anfangszustand definiert werden. Er wird durch die Anfangsbedingung tc0 (Neu-
start) erreicht. In Erweiterung kann zu jedem Zustand in einer angebundenen Box eine
dazugehorige Aktion spezifiziert werden.
Beispiel: Ampelsequenz (Einzelgerat)
• Beschreibung: Im eingeschalteten Zustand eine Verkehrsampel sind 5 Phasen zu unter-
scheiden: GelbBlink (St0), Rot (St1), RotGelb (St2), Gruen (St3) und Gelb (St4). Die
Phasen wechseln auf Anforderung (AUS/EIN-Signal) bzw. in einer zeitlichen Abfolge.
• Zustandsubergangstabelle
Zustand Ubergangsbedingung Folgezust. Aktion
St0, EIN (tc01) Rot Oszillator fur Blinken starten
Blink (Init) Gelbe L. an Oszillator
St1, EIN & Trg (tc12) RotGelb Rot. L. an, EVZ Trg
Rot AUS (tc0) Blink Reset Trg , rote L. aus
St2, EIN & Tgruen Gruen Gelbe L. an, EVZ Tgruen
RotGelb AUS (tc0) Blink Reset Tgruen , rot. u. gelbe L. aus
St3, EIN & Tgelb Gelb Gelbe. u. rote L. aus, grune an;
(tc34) EVZ Tgelb
Gruen AUS (tc0) Blink Reset Tgelb , grune L. aus
St4, EIN & Trot aktiv (tc41) Rot EVZ Trot, grune L. aus, gelbe L. an
Gelb AUS (tc0) Blink Reset Trot , gelbe L. aus
EVZ: Einschaltverzogerung, Start mit Eintritt in den Zustand
Txy: Signalisierung des Ablaufs der Verzogerungszeit fur xy-Phase
L.: Lampe
• Zustandsgraph
Die Aktionen in den jeweiligen Zustanden sind nicht dargestellt.
73
Grundlagen der SPS Programmierung /Prozessinformatik Prof. Dr. W. Bock
St0 Blink
St1 ROT
St2 RotGelb
St4 Gelb
EIN & Trg
EIN
EIN & Tgruen
St3 Grün
EIN & Tgelb
EIN & Trot
AUS
AUS
AUS
AUS
2.2.2 Datenspeicherung
Kennzeichen der Schaltwerke ist der Ruckgriff auf gespeicherte Daten. Dies wird in Pro-
grammiersystemen einerseits mit der Zuweisung einer Speicherklasse an Variablen oder an-
dererseits mit der Ablage auf Datentrager und Speichermedien ermoglicht. Eine Datenspei-
cherung erfordert die Moglichkeit zur Zusammenfassung von Daten in Feldern und Struktu-
ren, so dass der Zugriff auf Datenblocke (Datenbausteine) effektiv dargestellt werden kann.
(a) Speicherklasse
Im Allgemeinen wird in Programmiersprachen mindestens zwischen drei Speicher-
klassen unterschieden: lokale, statische und globale Speicherklasse.
• lokale Speicherklasse: Eine lokale Variable ist ausschließlich innerhalb eines
Programmblocks oder eines Programmbausteins bekannt. Mit Eintritt in den
Programmblock wird die Variable im Arbeitsspeicher angelegt, mit Verlassen
des Programmblocks wird der dazu reservierte Speicherbereich wieder freigege-
ben. In den SPS-Programmiersprachen wird die lokale Speicherklasse mit dem
Schlusselwort TEMP (temporar), in C hingegen mit dem Schlussel auto (auto-
matisch) gekennzeichnet.
74
Grundlagen der SPS Programmierung /Prozessinformatik Prof. Dr. W. Bock
ST
VAR
... (*bei FUNCTION*)
END_VAR
VAR_TEMP
... (*allgemein*)
END_VAR
C
{
... //lokale Var.
}
{
auto ... //temp. Var.
}
Die lokalen Variablen stellen die Standardspeicherklasse dar, so dass eine De-
klaration ohne Spezifizierer automatisch eine Zuordnung zum lokalen Typ be-
dingt. In bestimmten Fallen ist jedoch auch eine explizite Festlegung der lokalen
Speicherklasse sinnvoll oder notwendig.
Achtung! Bei ubereinstimmenden Bezeichner (Namen) einer lokalen und einer
globalen Variable, wird mit dem Aufruf die lokale Variable adressiert.
• globale Speicherklasse: Global deklarierte Variablen sind innerhalb eines Pro-
gramms an jeder Stelle bekannt. Fur globale Variablen ist dauerhaft Speicher-
platz reserviert. Sie sollten deshalb nur insoweit angelegt werden, wie tatsachlich
Bedarf dazu besteht. Globale Variablen sind außerhalb von Programmblocken
(POEs) zu deklarieren.
ST
VAR_GLOBAL
... (*Var.-Liste*)
END_VAR
---------------
VAR_EXTERNAL
... (*expli. Zugriff*)
END_VAR
C
... //Deklaration
---------------
{
... //direkter Aufr.
extern ...
//indir. Aufruf
}
Der Aufruf einer globalen Variablen innerhalb eines Programmblocks erfolgt
i.d.R. ohne weitere Kennzeichnung. Eine wiederholte Deklarierung im Pro-
grammblock mit dem Schlusselwort EXTERNAL (SPS-Sprachen) bzw. extern
(C) ist moglich, meist jedoch uberflussig.
• statische Speicherklasse: Statische Variablen sind mit globalen Variablen im
Speicherverhalten vergleichbar, wobei sie allerdings nur in dem Programmblock
bekannt sind, in dem sie deklariert werden. Bei einem wiederholten Eintritt in
einem Programmblock sind statische Variablen mit dem zuletzt zugewiesenen
Wert belegt.
75
Grundlagen der SPS Programmierung /Prozessinformatik Prof. Dr. W. Bock
ST
PROGRAM ...
(*oder*)
FUNCTION_BLOCK ...
-------------------
VAR
... (*statisch*)
END_VAR
C
static ... //Funktions-
... //kopf
{
static ... //in Funktion
...
}
In SPS-Sprachen sind innerhalb der POEs PROGRAM oder FUNCTION_BLOCK
Variablen standardmaßig vom Typ”statisch“, lokal Variablen mussen mit
VAR_TEMP deklariert werden. In POEs vom Typ FUNCTION hingegen sind Va-
riablen immer nur lokal und nie statisch.
(b) Zeichenfolgen
Neben Zahlenwerten werden auf Rechnern auch Textinformationen (CHAR-Typen
oder String-Typen) verarbeitet. Abgesehen von einer Vielzahl von Zeichen (Buchsta-
ben in Groß- und Kleinschreibung, Satzzeichen, Formelzeichen und Sonderzeichen),
die sich international in verschiedenen Sprachraumen unterscheiden, sind auch noch
Steuerzeichen zur formatierten Darstellung, wie Zeilenumbruch, Tabulator oder Leer-
zeichen zu codieren.
Ein Minimalset eines international genormten alphanumerischen Zeichencodes stellt
der ASCII-Code (American-Standard-Code for Iinformation-Interchange) dar.
7-Bit ASCII-Code
Hex 0 1 2 3 4 5 6 7
0 NUL DLE SP 0 @ P ‘ p
1 SOH DC1 ! 1 A Q a q
2 STX DC2 “ 2 B R b r
3 ETX DC3 # 3 C S c s
4 EOT DC4 $ 4 D T d t
5 ENQ NAK % 5 E U e u
6 ACK SYN & 6 F V f v
7 BEL ETB ’ 7 G W g w
8 BS CAN ( 8 H X h x
9 HT EM ) 9 I Y i y
A LF SUB * : J Z j z
B VT ESC + ; K [ k {C FF FS , < L \ l |D CR GS − = M ] m }E SO RS . > N ∧ n ∼F SI US / ? O o DEL
76
Grundlagen der SPS Programmierung /Prozessinformatik Prof. Dr. W. Bock
Ist in der Tabelle an einem Platz mehr als ein Zeichen angegeben, handelt es sich um
eine Abkurzung fur ein nichtdarstellbares Sonderzeichen.
Bedeutung einiger nichtdarstellbarer Sonderzeichen:
ACK Acknowledge, positive Ruckmeldung
BEL Bell, Klingelzeichen
CR Carriage return, Wagenrucklauf
DEl Delete, Loschen
ESC Escape, Codeumschaltung
FF Form feed, Formularvorschub
HT Horizontal Tabulation, Tabulator
LF Line feed, Zeilenvorschub
SP Space, Leerzeichen
VT Vertical Tabulation, Vertikaltabulator
Der ASCII-Code dient zum Hardware- und Format-unabhangigen Austausch von
Nachrichten, Daten und Programmquelldateien.
Wie man erkennt sind die im Deutschen verwendeten Umlaute nicht enthalten. Es exi-
stieren daher unterschiedliche normierte Erweiterungen auf eine 8 Bit-Code (Binarbe-
reich: 128 . . . 255) mit denen bis zu 128 Sonderzeichen codiert werden.
Im westeuropaischen Sprachraum wird die latin1-Erweiterung (ISO 8859-1) verwen-
det, mit der u.a. die Sonderzeichen”ß, a, o, u, A, O, U, . . .“ definiert sind.
Zeichenfolgen in SPS-Programmiersprachen
Datenart Datentyp, Key-Wort Große Beispiele
Zeichenfolge (1 Byte je Zeichen) STRING‡ variabel ’Dies ist ein Text’
Zeichenfolge (2 Byte je Zeichen) WSTRING†‡ variabel “Dies ist ein Text“
Einzelzeichen CHAR∗ 8 Bit ’A’∗: Speziell bei Siemens STEP7, nicht nach IEC 61131-3 Norm.
†: implementierungsabhangig
‡: Standardlange ist 80 Zeichen, ansonsten ist die Zeichenzahl in Klammern [..] anzugeben
String-Konstanten mussen durch Hochkommata ’ ’ begrenzt werden. Das $-Zeichen
hat in Zeichenfolgen eine besondere Bedeutung. Es ermoglicht die Einbindung von
Sonderzeichen in String-Ausdrucken.
77
Grundlagen der SPS Programmierung /Prozessinformatik Prof. Dr. W. Bock
$-Kombination ASCII-Code Bedeutung
$nn nn = 00 . . . FF nn Zeichen mit ASCII-Code
$$ 24 Dollarzeichen
$’ 27 Hochkomma (einfaches Anfuhrungszeichen)
$L, $l 0A Zeilenvorschub (line feed)
$P, $p 0C Neue Seite (form feed)
$R, $r 0D Wagenrucklauf (carriage return)
$T, $t 09 Tabulator (horizontal tabulation)
(c) Typen und Literale fur Datum und Zeit
Variablen zur Aufnahme von Informationen fur Datum und Zeit stellen eine Beson-
derheit der SPS- Programmiersprachen dar. Sie sind in dieser Form bei anderen Hoch-
sprachen nicht vorhanden.
Datenart Datentyp, Key-Wort Große Kennung Wertebereich, Beispiel
TIME 32Bit TIME# -24d20h31m0s0ms . . .
Zeitdauer T# . . . 24d20h31m0s0ms
S5TIME∗ 16Bit S5T# 0ms . . . 9990s
Uhrzeit TIME OF DAY 32Bit TOD# 12:16:28.44
Datum DATE 16Bit DATE#, D# 2016-12-10
Datum u. Zeit DATE AND TIME 32Bit DT# 2017-01-30-13:01:12∗: Speziell bei Siemens STEP7, nicht nach IEC 61131-3 Norm.
Fur die unterschiedlichen Zeit- und Datumsvariablen existieren in der IEC 61131-3
Konversionsfunktionen zum Herausseparieren von Datum oder Uhrzeit aus einer kom-
binierten Angabe bzw. zur Wandlung in Millisekunden.
Beispiele:
• DATE_AND_TIME_TO_TIME_OF_DAY bzw. DT_TO_TOD
• DATE_AND_TIME_TO_DATE bzw. DT_TO_D
• TIME_TO_DINT
In der Sprache C verwendet man ersatzweise Ganzzahlvariablen zur Darstellung von
Zeiten, wobei bei der Betrachtung kurzer Zeitintervalle meist Millisekunden, bei
langeren Zeitraumen haufig Sekunden gezahlt werden. Haufig verwendet wird bei-
spielsweise die UNIX-Zeit, bei der mit Hilfe einer long int-Variablen die aktuelle
Zeit in Form der verstrichenen Sekunden seit dem 1. Januar 1970 dargestellt werden.
(d) Feld-Typ
In Feldern werden Daten gleichen Typs zusammengefasst. Die einzelnen Komponen-
ten werden uber einen ganzzahligen Index identifiziert. Die Indexnummerierung wird
separat festgelegt bzw. beginnt bei der Sprache C.
Beispiel fur SPS-Sprachen:
78
Grundlagen der SPS Programmierung /Prozessinformatik Prof. Dr. W. Bock
MyIntField: ARRAY[1..25] OF INT := 10(1), 10(2), 5(3);
(* bedeutet: 10 x 1, 10 x 2 und 5 x 3 *)
MyRealData: ARRAY[1..10] OF REAL;
• Mit MyIntField und MyRealData wurden zwei Felder definiert, die jeweils
aus einer indizierten Liste von Daten eines Types aufgebaut sind.
• Der Inhalt der Klammer nach dem Schlusselwort ARRAY gibt den Indexbereich
an.
• Der Datentyp der Feldelemente kann ebenfalls ein anwenderspezifischer (s.u.)
oder zusammengesetzter Typ sein. Damit ist eine Verschachtelung moglich.
Mehrdimensionale Felder:
Will man mit Tabellen oder Matrizen umgehen, sind eindimensionale Felder nicht aus-
reichend. Ist der Datentyp fur alle Feldelemente gleich, erfolgt einfach eine Erganzung
der eben angegebenen Syntax um eine oder mehrere weitere Dimension(en).
(* SPS-Programmier-Sprache*)
MyDbIntField: ARRAY[1..10, 1..5] OF INT;
(*zweidimensionales Feld mit 10*5 Ganzzahlen*)
/*Sprache C*/
int matrix[3][3];
/*Zweidimensionales Feld mit 3*3 Ganzzahlelementen */
Zugriff auf Feldkomponenten:
Der Zugriff auf eine einzelne Feldkomponente erfolgt uber den Feldbezeichner und
der Angabe des Indexes in der eckigen Klammer.
(*Beispiel fuer SPS-Programmier-Sprache*)
LD MyDbIntField[3, 2];
ST aktint;
(* Eine Feldkomponente wird in den Akku geladen und
der Variablen aktint zugewiesen*)
(e) Struktur-Typ
Beim Struktur-Typ konnen eine explizit aufgefuhrte Zahl von Komponenten auch un-
terschiedlichen Datentyps zu einem neuen Typ zusammengefasst werden. Haufig wird
mit einer Struktur auch ein anwenderspezifischer Datentyp eingefuhrt.
Beispiel fur SPS-Sprache:
79
Grundlagen der SPS Programmierung /Prozessinformatik Prof. Dr. W. Bock
TYPE
UDField:
STRUCT
MyRealField: ARRAY[1..9] of REAL;
END_STRUCT
END_TYPE
TYPE
MeasurementData:
STRUCT
Meas1: INT;
Meas2: REAL;
MeasField: UDField;
(*Verwendung eines anwenderspezifischen Datentyps*)
Moment: TIME_OF_DAY;
END_STRUCT
END_TYPE
• Der Typ MeasurementData ist aus vier Komponenten aufgebaut, wobei die
dritte Komponente selbst wieder einen zusammengesetzten Typ darstellt.
• Der Bezeichner eines Typs wird durch den nachfolgenden Doppelpunkt gekenn-
zeichnet.
• Als Typen fur Komponenten sind die elementaren Typen oder bereits definierte
Typen zugelassen.
• Das TYPE-Tag wird allgemein zur Definition eines”eigenen“ Datentyps verwen-
det werden.
Zugriff auf Komponenten einer Struktur:
Auf die Komponenten einer Struktur wird mit dem Punktoperator”.“ zugegriffen. Bei
geschachtelten Strukturen erfolgt ein Zugriff durch wiederholte Anwendung des Punk-
toperators von außen nach innen.
(f) Zeiger (Pointer) auf Daten
Mit Zeigervariablen oder POINTER-Variablen speichert man die Adresse von Daten
wahrend der Programmlaufzeit. Die Zeigervariable wird durch den Datentyp oder die
Datenstruktur, auf den oder die sie zeigt, naher spezifiziert.
Eng verbunden mit der Verwendung von Zeigervariablen sind der Adressoperator ADR,
der Dereferenzierungsoperator”
“ und der SIZEOF- Operator.
Deklaration:
<Bezeichner> : POINTER TO <Datentyp>;
Beispiel: (s. CoDeSys - Hilfe)
80
Grundlagen der SPS Programmierung /Prozessinformatik Prof. Dr. W. Bock
VAR
pti: POINTER TO INT;
ivar1: INT := 5;
ivar2: INT;
ianzb: UINT;
END_VAR
pti := ADR(ivar1);
ivar2:= ptiˆ; (* ivar2 hat damit den Wert 5 *)
ianzb:= SIZEOF(ptiˆ); (* ianzb hat den Wert 2,
da der Datentyp INT 2 Byte umfasst *)
Ubungsaufgabe: Im CoDeSys-Projekt GenRandIntF ist eine Funktion geschrieben,
die ein Ganzzahlfeld mit mit (Pseudo-)Zufallszahlen auf Basis eines kurzen Textfeldes
zuruckgibt.
• Machen Sie sich klar, warum in der Funktion mit Zeigern gearbeitet werden
muss!
• Testen Sie das Projekt, in dem Sie das Textfeld und die Feldlange variieren.
• Machen Sie sich den Algorithmus fur die Zeigerarithmetik klar.
2.2.3 Flipflop als Speicher fur 1 Bit
Der elementare Speicher hat nur 1 Bit als Kapazitat. Im Automatenmodell (s.o. 2.2.1) dient
er als Speicher fur ein Zustandsflag. In der Elektrotechnik spricht man allgemein von einem
Flipflop. Es existieren verschiedene Typen, die sich durch die Art des Schreibvorgangs un-
terscheiden. Allgemein sind aber immer zwei unterscheidbare Eingange und ein Ausgang
vorhanden.
Da bei einer Speicherfunktion der Speicherzustand vom vorausgehenden Schreibvorgang
abhangt, wird an Stelle der Wahrheitstabelle des Schaltnetzes die Zustandsfolgetabelle des
Schaltwerks betrachtet.
(a) RS-Flipflop
Die Buchstaben S und R stehen fur eine Set- bzw. Reset- Funktion fur den Speicherzu-
stand. Ist keines der beiden Signale aktiviert, bleibt der Ausgangszustand erhalten. Fur
den Fall das beide Eingange gleichzeitig aktiviert werden, gibt es zwei unterscheidba-
re Varianten: Speicherfunktion mit vorrangigem (dominantem) Setzen bzw. Speicher-
funktion mit vorrangigem Rucksetzen.
• Aufbau aus elementaren Verknupfungen
81
Grundlagen der SPS Programmierung /Prozessinformatik Prof. Dr. W. Bock
&
1 > =
R
S Q &
1 > =
Q R
S
SET dominant RESET dominant
Q = S ∨ (R&Q−); Q = R&(S ∨Q−)
• Umsetzung in textuellen Programmiersprachen
Als Beispiel sie hier die Umsetzung des SET-dominanten Flipflops gezeigt. Um
bei wiederholtem Programm durchlauf den Wert zu behalten mussen in C Varia-
blen global oder statisch deklariert werden.
ST
FUNCTION_BLOCK SR
VAR_INPUT
S: BOOL;
R: BOOL;
END_VAR
VAR_OUTPUT
Q: BOOL;
END_VAR
(*---------------*)
Q:= S OR (NOT(R) AND Q);
C
//globale Variable
int Q
//----------
//Funktion
int sr(int S, int R, int Q);
{
Q = S || (!R && Q);
return Q;
}
• Zustandsfolgetabelle
R S Q− Q Kommentar
0 0 0 0 Bit”0“ oder
0 0 1 1 Bit”1“ speichern
1 0 X 0 Rucksetzen
0 1 X 1 Setzen
1 1 X 0 im Fall RESET dominant
1 1 X 1 im Fall SET dominant
Das Signal Q− steht fur den ursprunglichen Wert von Q. Typisch fur den Aufbau
eines Flipflops ist die Ruckkopplung des Ausgangssignals auf einen Eingang.
Wegen der X (don‘t care) in der Tabelle spielt diese Ruckkopplung nur im Spei-
cherfall eine Rolle. Da dort Q− = Q gilt, ergibt sich ein stabiler Ausgangszu-
stand.
82
Grundlagen der SPS Programmierung /Prozessinformatik Prof. Dr. W. Bock
• Funktion und Darstellung
Schaltsymbol Timing-Diagramm
S
R Q
S
Q
R �
Das karierte Feld in der Zeile”Q“ im Timing-Diagramm stellt einen
”0“-Pegel
bei Dominant-RESET und einen”1“-Pegel bei Dominant-SET dar.
Im allgemeinen Schaltsymbol sind die zwei Varianten mit unterschiedlicher Do-
minanz nicht zu unterscheiden. In Programmiersystemen geschieht diese Unter-
scheidung durch zusatzliche Merkmale. Gemaß IEC 61131-3 sind zwei unter-
scheidbare Bausteintypen definiert:
– Typ SR∗ Flipflop mit vorrangigem Setzen
– Typ RS∗ Flipflop mit vorrangigem Rucksetzen
SR S1
R
Q1
RS S
R1
Q1
∗: Genau umgekehrt bei Siemens S7; SR vorr. Rucksetzen u.u.
(b) Verriegelung von Speichern
Das Verriegeln von Speichern ist in der Steuerungstechnik ein haufig vorkommendes
Prinzip. Fur die nachfolgenden Verknupfungen werden RS-Flipflops mit Dominant-
RESET zugrunde gelegt.
Man unterscheidet:
• Verriegelung uber den RESET-Eingang
S
R1 Q 1 > =
Q1 Q2
I2
I1 S
R1 Q 1 > = Q2
Q1
I4
I3 RS RS
Ein gesetzter Ausgang Q1 oder Q2 aktiviert uber den RESET-Eingang des je-
weils anderen RS-Flipflops die Rucksetzfunktion und erzwingt (bei Dominant-
RESET) einen LOW-Zustand. Bei einer Programmierung ist die Reihenfolge der
83
Grundlagen der SPS Programmierung /Prozessinformatik Prof. Dr. W. Bock
Speichernetzwerke im Programmablauf exakt zu beachten, da nach Setzen des
zuerst behandelten Ausgangs der andere verriegelt ist.
• Verriegelung uber den SET-Eingang
S
R1 Q Q1
Q2
I2
I1 S
R1 Q Q2
Q1
I4
I3 & & RS RS
Die Verriegelung uber den SET-Eingang liefert dasselbe Ergebnis, mit dem Un-
terschied, dass ein gesetzter Ausgang durch die Verriegelungsbedingung selbst
nicht zuruckgesetzt werden kann. Die Verriegelung uber den RESET-Eingang
stellt den Standardfall dar und wird weitaus haufiger eingesetzt.
(c) Programmierbeispiel
Behalterfullanlage
Drei Tanks mit je einem Sensor fur die Zustande”voll“ und
”leer“ werden uber
drei Ablassventile mit unbestimmter Zeitfunktion entleert. Nach Erreichen des Leer-
Zustands soll jeder Tank bis zum Ansprechen des Voll-Zustandgebers gefullt werden.
Ein Steuerungsprogramm soll bewirken, dass nur jeweils ein Ventil freigegeben wird.
BL1 BL3 BL5
BL4 BL6BL2
MM3MM2MM1
1. Variablenliste
84
Grundlagen der SPS Programmierung /Prozessinformatik Prof. Dr. W. Bock
Symbol Datentyp Funktionale Beschreibung I/O-Parameter
BL1 BOOL BL1=TRUE, wenn Tank 1 voll IX0.0
BL2 BOOL BL2=TRUE, wenn Tank 1 leer IX0.1
BL3 BOOL BL3=TRUE, wenn Tank 2 voll IX0.2
BL4 BOOL BL4=TRUE, wenn Tank 2 leer IX0.3
BL5 BOOL BL5=TRUE, wenn Tank 3 voll IX0.4
BL6 BOOL BL6=TRUE, wenn Tank 3 leer IX0.5
MM1 BOOL MM1=TRUE, Ventil 1 offen QX1.0
MM2 BOOL MM2=TRUE, Ventil 2 offen QX1.1
MM3 BOOL MM3=TRUE, Ventil 3 offen QX1.2
2. Setzbedingungen
Bedingung fur das
Signal Setzen Rucksetzen
MM1 BL2=TRUE BL1=TRUE OR MM2=TRUE OR MM3 =TRUE
MM2 BL4=TRUE BL3=TRUE OR MM1=TRUE OR MM3 =TRUE
MM3 BL6=TRUE BL5=TRUE OR MM1=TRUE OR MM2 =TRUE
3. Variablendeklaration
Zusatzlich zu den binaren Ein- und Ausgangssignalen muss in der Liste der Va-
riablen fur jedes RS-Flipflop, allgemein fur jeden aufzurufenden Funktionsbau-
stein, eine Instanz gebildet werden.
Die allgemeine Form dazu lautet:
[eindeutiger Bezeichner] : [Bezeichner fur Bausteinmodell] ;
Zu beachten ist, dass der Bezeichner fur die Instanz eindeutig ist. Im konkreten
Fall mussen also fur das dreifach verwendete RS-Flipflop drei unterschiedliche
symbolische Namen gefunden werden.
(* Variablendeklaration gemaess IEC 61131-3*)
VAR
BL1 AT %IX0.0: BOOL; (*Eingaenge*)
BL2 AT %IX0.1: BOOL;
BL3 AT %IX0.2: BOOL;
BL4 AT %IX0.3: BOOL;
BL5 AT %IX0.4: BOOL;
BL6 AT %IX0.5: BOOL;
MM1 AT %QX1.0: BOOL; (*Ausgaenge*)
MM2 AT %QX1.1: BOOL;
MM3 AT %QX1.2: BOOL;
85
Grundlagen der SPS Programmierung /Prozessinformatik Prof. Dr. W. Bock
FF1: RS; (*Instanz zum Flipflop*)
FF2: RS;
FF3: RS;
END_VAR
4. Programmierung in FUP (FBS)
Ublicherweise ist das RS-Flipflop in jedem Programmiersystem als vordefinierter
Baustein vorhanden. Die Verwendung in FUP erfordert eine gewisse Vertrautheit
mit dem grafischen Editor.
Alternativ zu den bistabilen Flipflops konnen Bitvariablen am Ausgang einer Ver-
knupfung uber die Set- (S) oder Reset-Funktion (R) bei logisch TRUE gesetzt
oder zuruckgesetzt werden.
Setz- und Rucksetzfunktion in FUP
S R
??.? ??.?
Obiges Beispiel realisiert mit FUP und AWL
5. Programmierung in AWL und KOP
Der Aufruf einer Funktion oder eines Funktionsbausteins in AWL erfolgt mit
dem Schlusselwort CAL. Die Werteubergabe an die Formalparameter des Funkti-
onsbausteins erfolgt entweder durch vorhergehende Zuweisung oder durch Auf-
ruf mit formaler Parameterliste.
86
Grundlagen der SPS Programmierung /Prozessinformatik Prof. Dr. W. Bock
Eine Parameterliste steht in einer runden Klammer nach dem Instanzbezeichner;
der Bezeichner eines einzelnen Formalparameters wird durch Punkt getrennt an
den Instanzbezeichner angehangt.
Alternativ sind sowohl mit AWL als auch mit KOP nur Setz- oder Rucksetz-
vorgange an boolschen Variablen programmierbar.
Direktes Setzen und Rucksetzen in AWL
Operator Funktion
S nachfolgender Operand wird bei positiven VKE gesetzt
R nachfolgender Operand wird bei positiven VKE zuruckgesetzt
Direktes Setzen und Rucksetzen in KOP
Spule setzen −(S)− Spule bleibt dauerhaft”1“ im Fall TRUE
Spule rucksetzen −(R)− Spule bleibt dauerhaft”0“ bei TRUE
Der Aufruf von Funktion wird im KOP von vielen Programmiersystemen un-
terstutzt. Da sich jedoch Funktionen selbst nicht mit Kontakten beschreiben las-
sen, erscheinen diese dort mit Funktionssymbolen. Das zu Grunde liegende Pro-
grammierprinzip wird aber damit in Frage gestellt. Im Weiteren wird dadurch auf
die Darstellung von Funktionen in KOP weitgehend verzichtet.
Die Grafik zeigt nur eines der drei Flipflop-Netzwerke.
2.2.4 Flankenauswertung
Mit einer Flankenauswertung wird die Anderung eines Signalzustandes erfasst. Ein anstei-
gender Ubergang (Pegelwechsel von”0“ nach
”1“) wird als positive Flanke und ein abfallen-
der Ubergang (Pegelwechsel von”1“ nach
”0“) als fallende Flanke bezeichnet.
(a) Schaltwerke zur Flankendetektion
Zur Detektion einer Flanke ist es erforderlich den augenblicklichen Zustand eines
Signals mit dem vorhergehenden (bezogen auf die Zykluszeit der Steuerung) zu
vergleichen. Realisiert wird dies i.d.R. durch eine AND-Verknupfung und ein RS-
Speicherglied.
87
Grundlagen der SPS Programmierung /Prozessinformatik Prof. Dr. W. Bock
• Positive Flanke
S
R1 Q & CLK Q
M
RS CLK Q− M Q0 X 0 0
1 0 0 1
1 1 1 0
• Negative Flanke
S1
R Q
& CLK
Q M
SR CLK Q− M Q1 X 1 0
0 0 1 1
0 1 0 0
Zu beachten ist in beiden Fallen, dass wegen der Speicherwirkung des RS-Flipflops
im ersten Zyklus nach einem Warmstart die Speichervariable M eventuell undefiniert
ist und somit die erste Flanke deshalb nicht sicher detektiert werden kann.
(b) Flankendetektion in Hochsprache
Als Beispiel soll hier nur der Detektor fur die positive Flanke unter Heranziehen des
Beispieles aus Kap. 2.2.3 gezeigt werden.
88
Grundlagen der SPS Programmierung /Prozessinformatik Prof. Dr. W. Bock
ST
FUNCTION_BLOCK R_TRIG
VAR_INPUT
CLK: BOOL;
END_VAR
VAR_OUTPUT
Q: BOOL;
END_VAR
VAR M: BOOL;
FF1: RS;
END_VAR
(*---------------*)
M:= FF1(SET:= Q, RESET1:= NOT(CLK)));
Q:= CLK AND NOT(M);
C
//globale Variablen
int Q, M
//----------
//Funktion
int r_trig(int CLK, int M, int Q);
{
M = RS(int Q, int CLK, int M);
Q = !M && CLK;
return Q;
}
(c) Funktionsbausteine zur Flankendetektion
• Positive Flanke
CLK
Q
t
R_TRIG
CLK Q
XX
• Negative Flanke
89
Grundlagen der SPS Programmierung /Prozessinformatik Prof. Dr. W. Bock
CLK
Q
t
F_TRIG
CLK Q
XX
In den Diagrammen wird deutlich, dass die Flankendetektoren nur fur einen Zy-
klus nach dem Ereignis”1“-Pegel fuhren.
• Generierung eines Initialisierungsimpulses
Haufig werden im zyklisch ausgefuhrten SPS-Programm fur den 1. Zyklus sin-
gulare Anweisungen benotigt. Dies kann beispielsweise uber einen Richtimpuls
durch AND-Verknupfung geschehen. Das obige Netzwerk erzeugt diesen Rich-
timpuls durch eine Flankendetektion im 1. Zyklus.
(d) Programmierbeispiel
Bei einer Treppenhausschaltung soll mit zwei oder mehreren Tastern die Beleuchtung
abwechselnd ein und ausgeschaltet werden. Ein Tastendruck soll dabei unabhangig
von der Betatigungsdauer jeweils einen Zustandwechsel verursachen.
Idee:
• Das EIN-Signal aller Taster wird ODER-verknupft und davon ein Flankensignal
abgeleitet.
• Mit Hilfe eines RS-Flipflops soll bei jeder Flanke das Ausgangssignal den Pegel
wechseln!
• Losung:
90
Grundlagen der SPS Programmierung /Prozessinformatik Prof. Dr. W. Bock
2.2.5 RS-Flipflops als Zustandsspeicher
Der zentrale Teil des Zustandsautomaten ist die Selbsthaltung (Speicherung) der Zustandsva-
riablen (s. 70). In der Praxis wird jeder Zustand durch ein oder mehrere RS-Flipflops aktiviert
und deaktiviert. Dazu werden die Flipflops durch Setz- und Rucksetzbedingungen bedient
Da immer nur ein Zustand aktiv sein darf, ist eine gegenseitige Verriegelungen (s.S. 83) zu
realisieren.
Eine RS-Tabelle ist ein Ubersichtsschema, dass die Entwicklung des Steuerprogramms er-
leichtern kann. Ublicherweise verwendet man fur jede Speichervariable eine Zeile, in der die
Variablen fur die Setz- und Rucksetzbedingungen aufgelistet sind.
(a) RS-Tabelle:
91
Grundlagen der SPS Programmierung /Prozessinformatik Prof. Dr. W. Bock
Bezeichner fur Liste der Setzvariablen Liste der Rucksetzvariablen
das Speicherglied (meist AND-verknupft) (meist OR-verknupft)
1 St1 S1&S2&S3,. . . R1 ∨R2 ∨R3,. . .
2 St2 S4 ↓ &S5,. . . (R1 ∨R2) ↑,. . .
3 . . . . . . . . .
. . . .
. . . .
. . . .
Sind mehrere S- oder R- Variablen vorhanden, wird deren logische Verknupfung mit
angegeben. Ein zusatzlicher Pfeil nach unten oder oben symbolisiert, dass eine fallende
oder steigende Flanke ausgewertet wird.
(b) Umsetzung
Im Steuerprogramm sind die Setzvariablen i.d.R. AND-verknupft und die Rucksetz-
variablen OR-verknupft. Die erste Zeile in der dargestellten Tabelle liefert damit die
nachfolgende Verknupfung.
Netzwerk1:
RSS
R1
Q1
&S1
S2
S3
R1
R2
R3
St1
xx
Netzwerk2:
RSS
R1
Q1
&S4
S5
R1
R2
St2
F_TRIG
CLK Q
R_TRIG
CLK Q
it1
it2
it3
Die RS-Tabellen sind in Erganzung und Konkretisierung zu Zustandsgraph und Zu-
standsubergangstabelle zu sehen. Nur in einfachen Fallen sind sie allein ausreichend
92
Grundlagen der SPS Programmierung /Prozessinformatik Prof. Dr. W. Bock
um eine Steuerungsaufgabe zu strukturieren und anschließend direkt in Programmcode
umzusetzen.
Weiterhin sind die RS-Tabellen sinnvoll einzusetzen um in einem Steuerungspro-
gramm uber Halteglieder bestimmte Hilfsvariablen aufzulisten. Insbesondere ist dies
bei Tastereingangen wichtig.
(c) Beispiel 1: Umsetzung des Zustandsspeicher
Viele Steuerungsaufgaben konnen in einer Ablaufstruktur dargestellt werden. Dabei
handelt es sich um die Realisierung eines Zustandsautomaten (s. 70).
Ein Netzwerk fur eine Zustandsflipflop hat dann folgenden prinzipiellen Aufbau:
RS S
R1 Q1
&
tci
Stj
Sti
Stk
FFj
Netzwerk für Zustandsspeicher j
Netzwerk für Aktion i (Wartezeit dt)
TON
Ti
tci
Sti
dt
(d) Beispiel 2: Basisalgorithmus fur doppelt-wirkenden Antrieb
Haufig sind Antriebe doppelt wirkend, d.h. es sind zwei entgegengesetzte Wirkrich-
tungen vorhanden, die sich gegenseitig ausschließen. Folgender Algorithmus deckt
die grundlegende Steuerfunktionen ab:
Bewegliches
Objekt
ES_links ES_rechts
Slsl Slsr
Bli Bre StopBlink
Error
Mli Mre
Generischer doppelt-wirkender Antrieb mit Endschaltern
VARBli : BOOL; (∗Bedieneranf.
”links“(Schliesser)∗)
93
Grundlagen der SPS Programmierung /Prozessinformatik Prof. Dr. W. Bock
Bre : BOOL; (∗Bedieneranf.”rechts“(Schliesser)∗)
Stop : BOOL; (∗Bedieneranf.”Stoppen“(Oeffner)∗)
Slsl : BOOL; (∗Endschalter”links“(Oeffner)∗)
Slsr : BOOL; (∗Endschalter”rechts“(Oeffner)∗)
Mli : BOOL; (∗Antriebnachlinks∗)Mre : BOOL; (∗Antriebnachrechts∗)
Blink : BOOL; (∗SignalisierungAntriebein∗)Error : BOOL; (∗Fehlererkannt∗)
END VAR
Vorschlag fur RS-Tabelle:
Nr. Speicherglied Setzbedingung Rucksetzbedingung
1 AnfRe Bre Bli ∨ Stop ∨ Slsr
2 AnfLi Bli Bre ∨ Stop ∨ Slsl
3 Mre AnfRe (ggf. verzogert) Mli ∨ Stop ∨ Slsr ∨ Error
4 Mli AnfLi (ggf. verzogert) Mre ∨ Stop ∨ Slsl ∨ Error
5 Error Mli ∨ Mre um Maximaldauer verz. geeignete Fehlerquittierung
Zur Ubung und Anwendung empfohlen: CoDeSys-Projekt Tuerantrieb roh.pro
2.2.6 Zeitgeber (Timer)
Unter einem Zeitgeber versteht man eine Timer-Funktion, die kontinuierlich im Hinter-
grund mit begrenzter Zeitauflosung ablauft. Kommt eine Steuerungsprogramm an eine Stel-
le, an der eine Timer-Funktion aufgerufen wird, konnen dort Bausteinparameter verandert,
Zeitzahlfunktionen gestartet und aktuelle Ruckgabedaten ausgelesen werden.
Die Ruckgabedaten sind von daher immer zeitlich veraltet. Im ungunstigsten Fall verzogert
sich die Auswertung eines Pulsendes um eine komplette Steuerprogrammperiode.
Die Darstellung von Zeitliteralen fur den Datentyp TIME ist auf S. 78 vorgestellt.
(a) Timer-Funktionsbausteine
• Zeitimpuls
94
Grundlagen der SPS Programmierung /Prozessinformatik Prof. Dr. W. Bock
TPIN
PT
Q
ET
Signal Typ Funktion
IN BOOL Start bei steigender Flanke
PT TIME Pulsdauervorgabe
Q BOOL Pulsausgang
ET TIME verstrichene Zeit seit Start
– Mit steigender Flanke an IN wird an Q ein nicht unterbrechbarer Puls der
Dauer PT gestartet.
– Der Zeitausgang ET liefert die verstrichene Zeit seitdem IN=TRUE ist, min-
destens jedoch die Zeit seitdem Q=TRUE ist.
ET
Q
IN
PT
• Einschaltverzogerung
TONIN
PT
Q
ET
Signal Typ Funktion
IN BOOL Start bei steigender Flanke,
Stopp mit FALSE
PT TIME Verzugsdauer
Q BOOL Pulsausgang folgt IN
um PT zeitverzogert
ET TIME verstrichene Zeit seit IN=TRUE
– Mit steigender Flanke an IN beginnt die Zeit, die mit PT vorgegeben ist,
unterbrechbar zu verstreichen. Ein FALSE an IN bedingt in jedem Fall einen
Stopp und eine Rucksetzen dieser Uhr.
– Der Ausgang Q kann erst nach Ablauf der Zeit PT nach Beginn des TRUE-
Zustands an IN den Pegel TRUE annehmen.
– Der Zeitausgang ET liefert die verstrichene Zeit seitdem IN=TRUE ist.
95
Grundlagen der SPS Programmierung /Prozessinformatik Prof. Dr. W. Bock
ET
Q
IN
PT
• Ausschaltverzogerung
TOFIN
PT
Q
ET
Signal Typ Funktion
IN BOOL Start bei fallender Flanke,
Stopp mit TRUE
PT TIME Verzugsdauer
Q BOOL Pulsausgang folgt IN bei FALSE
um PT zeitverzogert
ET TIME verstrichene Zeit seit IN=FALSE
• Mit fallender Flanke an IN beginnt die Zeit, die mit PT vorgegeben ist, unter-
brechbar zu verstreichen. Ein TRUE an IN bedingt in jedem Fall einen Stopp und
eine Rucksetzen dieser Uhr.
• Der Ausgang Q ist immer TRUE, solange IN=TRUE gilt. Ein Ubergang nach
FALSE erfolgt erst nach Ablauf der Zeit PT nachdem IN den Pegel FALSE an-
genommen hat.
• Der Zeitausgang ET liefert die verstrichene Zeit seitdem IN=FALSE ist.
ET
Q
IN
PT
(b) Programmierbeispiele fur Normoszillator
An einem Digitalausgang soll ein Rechtecksignal mit 12Hz Frequenz und variablen
Puls-Pausenverhaltnis erzeugt werden.
Grundsatzlich sind damit zwei Zeitbausteine notwendig. Einer zur Erzeugung der
Grundfrequenz, der andere zur Festlegung der Pulsdauer.
96
Grundlagen der SPS Programmierung /Prozessinformatik Prof. Dr. W. Bock
• Losung in AWL
• Losung in FBS
Wie das Beispiel zeigt, ist ein Einschaltverzogerungsglied mit Ruckkopplung des in-
vertierten Ausgangssignals auf den Timereingang geeignet um periodisch Nadelim-
pulse zu erzeugen. Die Nadelimpulse wiederum konnen als Startsignal fur Pulse mit
Zeitdauern kleiner der Gesamtperiodendauer verwendet werden.
2.2.7 Zahler (Counter)
Zahlerbausteine dienen zum Detektieren von wiederholt auftretenden Ereignissen. Die ma-
ximale detektierbare Frequenz ergibt sich aus der Abtastzeit (TSC - Scan Time) an den
Eingangen.
Als Standardfunktionen sieht die IEC 61131-3 den Aufwarts-, Abwarts- sowie den Auf-
und Abwartszahler vor. Als Anfangsbedingungen sind Start- bzw. Zielwert festlegbar. Der
97
Grundlagen der SPS Programmierung /Prozessinformatik Prof. Dr. W. Bock
Zahlerzustand steht als Ganzzahl (INT) bzw. als Flag fur eine Endwertuberschreitung
(BOOL) zur Verfugung.
(a) Zahlerfunktionsbausteine
• Aufwartszahler
CTU
PV
QR
CU
CV
Signal Typ Funktion
CU BOOL CV=CV+1 bei steigender Flanke
R BOOL Nullstellung von CV
PV WORD Grenzwert fur Signalisierung
Q BOOL Zahlerstand CV≥PV
CV WORD Zahlerstand (Count Value)
• Abwartszahler
CTD
PV
QLD
CD
CV
Signal Typ Funktion
CD BOOL CV=CV-1 bei steigender Flanke
LD BOOL Ladt den Wert von PV nach CV
PV WORD Grenzwert fur Signalisierung
Q BOOL Zahlerstand CV=0
CV WORD Zahlerstand (Count Value)
• Auf- und Abwartszahler
CTUD
PV
QU
LD
CD
CV
R
CU
QD
Signal Typ Funktion
CU BOOL CV=CV+1 bei steigender Flanke
CD BOOL CV=CV-1 bei steigender Flanke
R BOOL Nullstellung von CV
LD BOOL Ladt den Wert von PV nach CV
PV WORD Grenzwert fur Signalisierung
QU BOOL Zahlerstand CV≥PV
QD BOOL Zahlerstand CV=0
CV WORD Zahlerstand (Count Value)
(b) Programmierbeispiele
Mit Hilfe eines Anlagenmodells sollen eine kleine Automatisierungsaufgabe gelost
werden. Fur das Beispiel wird die Software CoDeSys (Fur den Nachvollzug findet
man eine ausreichende Demoversion unter: www.3s-software.com) und Virtuelle Pro-
zessmodelle (VirModUni) vertrieben durch die Firma DELTALOGIC (www.delta-
logic.de) verwendet.
98
Grundlagen der SPS Programmierung /Prozessinformatik Prof. Dr. W. Bock
Das Bild zeigt eine Presse die von einem Hydraulikzylinder angetrieben wird. Der Zy-
linder sei einfachwirkend, bei aktiviertem Ventil fahrt er aus, bei deaktiviertem Ventil
wieder ein.
Fur alle gelb und lila markierten Adressen erfolgt ein Datenaustausch zwischen dem
aktuellen Prozessmodell und einem gestartetem CoDeSys-Steuerungsprojekt. Dazu
muss auf Seiten von CoDeSys als Zielsystemeinstellung der Eintrag”3S CoDeSys SP
RTE“ ausgewahlt und gleichzeitig der Simulationsmodus aktiviert werden. Im Start-
projekt StartVirMod.pro sind bereits alle notwendigen Voreinstellungen gemacht.
In dem Menu”Einstellungen“ zum Paket Virtuelle Prozessmodelle sollen im Weiteren
die Eingangs- und Ausgangsbytes die Adressen 0. . . 3 bzw. 4. . . 7 belegen und die
Eingangs- und Ausgangsworte die Adressen 10. . . 29 bzw. 30. . . 49.
Als Programmiersystem muss die Wahl IEC-Programmiersystem ausgewahlt werden.
In Bezug zur SPS sind folgende Variablen definiert (Bezeichner sind frei wahlbar, im
Beispiel werden Kennbuchstaben gemaß IEC 81346-2 verwendet, s. Seite ??):
Sensorik:
99
Grundlagen der SPS Programmierung /Prozessinformatik Prof. Dr. W. Bock
Symbol Adresse Variablentyp Funktionale Beschreibung
SF1StEin %IX0.1 BOOL Steuerung ein, Schließer
SF2StAus %IX0.0 BOOL Steuerung aus, Offner
SF3Start %IX0.2 BOOL Starttaster, Schließer
SF4NotAus %IX0.3 BOOL Notausschalter, Offner
SF5Reset %IX0.4 BOOL Reset, Schließer
BG1KolOben %IX1.0 BOOL Kolben oben, Schließer
BG2KolWerk %IX1.1 BOOL Kolben auf Werkstuck, Schließer
BG3KolUnten %IX1.6 BOOL Kolben unten, Schließer
BG4WerkOpt %IX1.4 BOOL Werkstuck optisch, Schließer
BG5WerkInd %IX1.5 BOOL Werkstuck induktiv, Schließer
SF6TuerSchl %IX1.2 BOOL Schutztur 1, Schließer
SF7TuerOeff %IX1.3 BOOL Schutztur 2, Offner
BP1DrSens %IW8 WORD Drucksensor, Wertebereich 0. . . 27647
Aktorik:
Symbol Adresse Variablentyp Funktionale Beschreibung
MM1VenKol %QX4.1 BOOL Ventil Zyl., TRUE↔ ein
PF1LamSt %QX4.0 BOOL Lampe Steuerung, TRUE↔ ein
PF2LamGrenz %QX4.2 BOOL Lampe Grenztaster, TRUE↔ ein
PF3LamZeit %QX4.3 BOOL Lampe Zeituberlauf, TRUE↔ ein
DI1Meldung %Q5 BYTE Zeilennummer Meldetext
1. Vorbereitung:
• Wird Start gedruckt, ist die Ture geschlossen und befindet sich der Zylinder
nicht in Stellung unten soll der Zylinder solange ausfahren, bis er sein un-
teres Ende (Erreichen der Werkstuckposition oder untere Position) erreicht
hat. Anschließend soll der Zylinder wieder einfahren.
• Losung dieser Aufgabe in Projekt VM21 PraegePresseVL.pro.
2. Aufgabe:
• Zur Automatisierung des Prozesses wird ein RS-Flipflop (FF1) angelegt,
dass ein allgemeines AutoOn-Signal und die entsprechende Meldelampe
aktiviert.
• Zum Zweck des Ein- und Ausfahrens wird ein weiteres RS-Flipflop (FF2)
zur Steuerung des Kolbens angelegt, das mit Start bei zugleich vorhande-
nem AutoOn-Signal gesetzt wird. Eine Rucksetzung erfolgt bei NotAus,bei Wegfall des AutoOn-Signals und bei Offnen der Schutzture.
100
Grundlagen der SPS Programmierung /Prozessinformatik Prof. Dr. W. Bock
• Ein Reset des FF2 soll nun zusatzlich bei Erreichen der Werkstuckposition
des Kolbens und Ablauf von 3 Sekunden erfolgen. Dazu ist ein boolsche
Hilfsvariable PraegeEnde heranzuziehen.
• Optional: Mit einer Counter-Instanz Counter1 wird ein Standard-
Abwartszahlers eingesetzt. Er wird bei Drucken von Reset oder Start mit
der ganzen Zahl 5 vorbelegt. Nach Abwartszahlen und Erreichen von Null
bleibt die Anlage stehen. Die Lampe LamZeit wird aktiviert, um diesen Zu-
stand zu signalisieren.
101
Grundlagen der SPS Programmierung /Prozessinformatik Prof. Dr. W. Bock
3 Programmstrukturierung und
Programmorganisation
3.1 Funktion-POE
3.1.1 Allgemeine Eigenschaften der Funktionen
Kennzeichen der POE vom Typ FUNCTION ist der mit der Funktion verbundene Ruckgabe-
wert. Funktionen der IEC 61131-3 sind in gewisser Weise mit mathematischen Funktionen
vergleichbar.
Funktionen dienen der sinnvollen Strukturierung einer Steuerungsapplikation. Unterschieden
werden Anwenderfunktionen und Systemfunktionen der Standardbibliotheken. Hauptaspekt
ist die Wiederverwendbarkeit und eine Erweiterung des Operationsvorrates.
Kennzeichen des Funktion-Typs
• Interne Variablen sind zulassig, die Inhalte gehen aber nach Beendigung der Funktion
verloren. Die Variablen vom Typ VAR haben bei Funktionen keine statische sondern
nur temporare Eigenschaften!
• Die Verwendung von direkten (%-Variablen), globalen oder gepufferten (RETAIN)
Variablen ist nicht moglich.
• Es gilt das Prinzip: Gleiche Eingangswerte liefern immer gleiche Ausgangswerte.
• Funktionen sind aus allen POEs heraus aufrufbar und konnen sich gegenseitig, aber
nicht rekursiv, aufrufen. Deklarierte Funktionen sind im ganzen Projekt sichtbar.
• Die Namen und das Verhalten der Standardfunktionen ist in der Norm definiert, der
Anwender eines konformen Programmiersystems kann eigene Funktionen definieren.
3.1.2 Deklaration einer Funktion
Die Deklaration erfolgt in der oben (Kap. 2a) beschriebenen Form. Die beiden Teile Va-
riablendeklaration und Funktionsrumpf werden durch die Schlusselworte FUNCTION und
END_FUNCTION eingeschlossen.
FUNCTION <FunktionsName> : <Datentyp des Rueckgabewertes>
VAR_INPUT
...
END_VAR
VAR
...
102
Grundlagen der SPS Programmierung /Prozessinformatik Prof. Dr. W. Bock
END_VAR
<Funktionsanweisungen>
END_FUNCTION
Name und Ruckgabewert:
• Fur den Funktionsnamen sind alle Bezeichner erlaubt, die projektweit noch nicht
verwendet werden.
• Der Ruckgabewert muss einem bekanntem Datentyp elementarer oder zusam-
mengesetzter Art entsprechen.
• Ein Aufruf der Funktion liefert an der entsprechenden Stelle einen Ruckgabe-
wert, der dem Datentyp der Deklaration entspricht.
Funktionsanweisungen:
• Die Funktionsanweisung beschreibt die Wirkung der Funktion. Zur Erstellung
sind die Programmiersprachen AWL, FBS, KOP und ST sowie sonstige Hoch-
sprachen zulassig.
• Bei Hochsprachen muss im Anweisungsblock mindestens einmal eine Zuwei-
sung des Ruckgabewertes an eine Variable mit dem Funktionsnamen als Bezeich-
ner erfolgen.
• Die IEC 61131-3 sieht eine umfangreiche Liste von Standardfunktionen vor, bei
denen es sich in der Mehrzahl um arithmetische oder logische Operatoren han-
delt. In den meisten Fallen werden WORD- oder Bitstring- Datentypen verarbei-
tet.
Rucksprung:
• Ein Rucksprung in das aufrufende Programm erfolgt automatisch bei Erreichen
des Endes des Funktionsrufs oder bei Erreichen einer Rucksprunganweisung.
• Bei bedingten Rucksprunganweisungen kann die mehrfache Verwendung eines
Rucksprungbefehls sinnvoll sein.
• Rucksprunganweisungen in AWL:
Operator STEP7 Sprungtyp Bemerkung
RET BE, BEA unbedingter
Rucksprung
Das Programmmodul wird sofort been-
det
RETC BEB bedingter
Rucksprung
Das Programmmodul wird beendet bei
Wert TRUE in der letzten Anweisung
vor dem Sprungoperator
RETCN - bedingter
Rucksprung
Das Programmmodul wird beendet bei
Wert FALSE in der letzten Anweisung
vor dem Sprungoperator
103
Grundlagen der SPS Programmierung /Prozessinformatik Prof. Dr. W. Bock
Programmierbeispiel:
• In Abhangigkeit von den logischen Zustanden von 4 binaren Eingangen I0, I1, I2
und I3 soll eine BYTE-Variable unterschiedliche Werte annehmen.
I0 I1 I2 I3 DigiLevel
0 0 0 0 10
1 0 0 0 30
1 1 0 0 50
1 1 1 0 70
1 1 1 1 90
0 1 X X 0
X 0 1 X 0
X X 0 1 0
• Losung in ST
In Beispiel wurde die Tabelle direkt in ST-Code umgesetzt. Eine Realisierung
mit grafischen Sprachen ist meist ungeeignet, jedoch prinzipiell moglich.
• Losung in FUP oder AWL
Ubungsaufgabe: Programmieren Sie den Algorithmus in FUP oder AWL
3.1.3 Aufruf von Funktionen
Funktionsaufrufe konnen in grafischer oder textueller Form erfolgen. Alle anwenderspezifi-
schen Funktionen besitzen feste Namen und eine feste Reihenfolge in der Deklarationsliste
fur die Eingangsvariablen (Formalparameter). Bei den normkonformen Standardfunktionen
besitzen die Eingangsvariablen haufig keinen speziellen Bezeichner. Bei einigen Funktio-
nen mit mehreren Formalparameter unterscheidbaren Typs ist beim Aufruf auf die richtige
Zuordnung zu achten.
Funktionsaufruf in AWL:
104
Grundlagen der SPS Programmierung /Prozessinformatik Prof. Dr. W. Bock
• Der Funktionsname ist wie ein Operator zu verwenden. Der erste (immer vorhan-
dene) Eingangsparameter wird geladen und anschließend der Funktionsopera-
tor mit den restlichen Ubergabeparametern aufgerufen. Der Ruckgabewert steht
dann zur Weiterverarbeitung zur Verfugung.
• Allgemeine Syntax
LD <InVar1>
<FunktionsName> <InVar2>,<InVar3>,...
ST <OutVar>
Da die Ubergabeparameter ohne Bezeichner aufgefuhrt werden ist auf die Rei-
henfolge exakt zu achten.
• Beispiel
Verwendung der Funktion DigiLevel aus dem Deklarationsbeispiel (s.o.).
Funktionsaufruf in ST:
• Der Funktionsaufruf in ST erfolgt durch die Angabe des Funktionsnamens ge-
folgt von einer in runden Klammern gesetzten Parameterubergabe. Die Schreib-
weise entspricht der einer mathematischen Funktion.
• Allgemeine Syntax
(a) Ohne Angabe der Bezeichner der Formalparameter
<OutVar>:=<Funktionsname>(<InVar1>,<InVar2>,...)
Die Reihenfolge der Parameter muss der in der Deklaration entsprechen.
105
Grundlagen der SPS Programmierung /Prozessinformatik Prof. Dr. W. Bock
(b) Mit Angabe der Bezeichner der Formalparameter
<OutVar>:=<Funktionsname>(<Formparam1>:=<InVar1>,
<Formparam2>:=<InVar2>,...)
Die Reihenfolge der Parameter ist wegen der Eindeutigkeit durch Anfuhren
der Parametersymbole bei den meisten Programmiersystemen beliebig. Die
Liste der Eingangsparameter kann unvollstandig sein, wenn innerhalb der
Funktions-POE die Formalparameter initialisiert, d.h. mit einem passenden
Wert vorbelegt sind.
• Beispiel
Verwendung der Funktion DigiLevel aus dem Deklarationsbeispiel (s.o.).
Funktionsaufruf in FUP:
• Zur grafischen Darstellung einer Funktion wird ein Rechteck verwendet, auf des-
sen linker Seite die Anschlusse fur die Eingangsparameter und auf dessen rechter
Seite die Anschlusse fur die Ausgangsparameter plaziert sind. Daraus ergibt sich
ein Signalfluss von links nach rechts.
• Allgemeine Syntax:
(a) Der Funktionsname oder das Funktionssymbol muss innerhalb des Recht-
ecks (i.d.R. oben mittig) erscheinen.
(b) Sind die Eingange unterscheidbar, mussen an den Anschlussen Namen ver-
geben werden. Bei Standardfunktionen konnen die Namen fehlen. Der Funk-
tionswert, d.h. der Ausgangsparameter besitzt bei Funktionen nie einen Na-
men, da er ja durch den Funktionsnamen selbst reprasentiert wird.
(c) Die Verbindung zu anderen Bausteinen erfolgt mit Signalflusslinien.
Ausgange mussen nicht unbedingt weiter verdrahtet werden.
(d) Bei grafischen Programmiersprachen sieht die Norm zwei optional zu ver-
wendende binare Freigabeparameter EN und ENO vor. Mit dem Freigabesi-
gnal EN ist eine separate Aktivierung der Funktion uber ein boolsches Si-
gnal moglich. Uber ENO kann eine korrekte Ausfuhrung der Funktion durch
TRUE, andernfalls durch FALSE, signalisiert werden.
106
Grundlagen der SPS Programmierung /Prozessinformatik Prof. Dr. W. Bock
• Beispiel:
Funktionsaufruf in KOP:
• Der Funktionsaufruf in der Normsprache Kontaktplan ist dem der Sprache FBS
sehr ahnlich
• Allgemeine Syntax:
(a) Fur die grafische Darstellung gelten dieselben Regeln wie fur FBS.
(b) Die Verwendung des Freigabesignals EN ist in KOP obligatorisch, das Signal
ENO steht zur optionalen Verwendung zur Verfugung.
Kontrollfluss:
– EN=FALSE
Der Anweisungsteil der Funktion wird nicht ausgefuhrt. Der Ausgang
ENO wird beim Verlassen der Funktion ebenfalls mit FALSE belegt.
– EN=TRUE
Der Anweisungsteil wird normal ausgefuhrt. ENOwird mit TRUE vorbe-
legt. Bei Auftreten eines Fehlers kann dieser mit einem FALSE an ENO
signalisiert werden.
• Beispiel:
Ubungen:⇒ .../CoDeSysUeb/FC U01.pro
Ubungen:⇒ .../CoDeSysUeb/FC U03.pro
107
Grundlagen der SPS Programmierung /Prozessinformatik Prof. Dr. W. Bock
3.1.4 Standardfunktionen
Standardfunktionen werden vom Hersteller der Programmierumgebung in Form von Biblio-
theken in unterschiedlichem Umfang mitgeliefert. Die Schnittstellen und das Funktionsver-
halten entspricht den Vorgaben der IEC 61131-3 Norm. Grundsatzlich ist eine Verwendung
in allen Sprachen moglich. Da fur die Eingangsparameter i.d.R. keine Bezeichner vergeben
sind, ist bei einigen Funktionen exakt auf die Reihenfolge der Parameter zu achten.
Beispiele fur Systemfunktionen:
(a) Funktionen zur String-Bearbeitung
In CoDeSys sind diese Funktionen in der Standard-Library enthalten.
1. CONCAT(STR1, STR2) : STRING;→ Addieren von zwei String-Variablen.
2. DEL(STR,LEN,POS) : STRING; → Loscht im String Zeichen der Anzahl
LEN ab Position POS.
3. FIND(STR1, STR2) : INT; → Ermittelt die Position (Stellennummer des Zei-
chens) von STR2 in STR1.
4. INSERT(STR1, STR2,POS) : STRING; → String 2 wird in String 1 ab der
angegebenen Position eingefugt.
5. LEFT(STR, SIZE) : STRING;→ Linksbundig wird die Anzahl SIZE von Zei-
chen aus dem String entfernt.
6. RIGHT(STR, SIZE) : STRING; → Rechtsbundig wird die Anzahl SIZE von
Zeichen aus dem String entfernt.
7. LEN(STR) : INT;→ Liefert die Anzahl der Zeichen des Strings.
8. MID(STR,LEN,POS) : STRING; → Extrahiert Zeichen der Anzahl LEN ab
Position POS aus dem String.
9. REPLACE(STR1, STR2,L,P) : STRING; → Ersetzt L Zeichen im String 1
ab der angegebenen Position durch den String 2.
Ubungen:⇒ .../CoDeSysUeb/Strings.pro
Erganzen Sie das Projekt mit weiteren String-Funktionen und analysieren Sie deren
Ruckgabeergebnisse.
3.2 Funktionsbaustein-POE
3.2.1 Allgemeine Eigenschaften von Funktionsbausteinen
Der POE-Typ FUNCTION_BLOCK (FB) ist in Vielem dem Typ FUNCTION ahnlich, aber in
Bezug auf die moglichen Variablentypen und die Moglichkeiten bei den Ubergabeparame-
tern deutlich machtiger als der POE-Typ Funktion.
108
Grundlagen der SPS Programmierung /Prozessinformatik Prof. Dr. W. Bock
Wesentlicher Unterschied ist die Verwendbarkeit von statischen Variablen, d.h. von Varia-
blen, die auch nach Beendigung des Programmablaufs in diesem Baustein ihre Werte erhal-
ten. Eng verbunden mit dieser Moglichkeit ist das Konzept der Instanziierung von FBs, das
sich aus der Moglichkeit des Mehrfachaufrufs von Funktionsbausteinen zwangsweise ergibt.
Das zweite wesentliche Unterscheidungsmerkmal ist die Verwendbarkeit von globalen Daten
und die Festlegung von mehreren (implementierungsabhangig) Ruckgabeparametern.
Kennzeichen des Funktionsbaustein-Typs
• Statische Variablen behalten nach Beendigung der Programmabarbeitung ihren Daten-
inhalt.
• Ebenso wie bei dem POE-Typ Funktion konnen FB-intern nur symbolische, nicht di-
rekt adressierte Variablen verwendet werden.
• Ein einmal deklarierter FB liegt ist im gesamten Projekt als eine Art Prototyp sichtbar
und wird durch Vergabe eines Namens instanziiert.
• Funktionsbausteine bzw. deren Instanzen sind aus allen POEs außer von Funktionen
aufrufbar.
• Funktionsbausteine selbst konnen wiederum Funktionen oder andere Funktionsbau-
steine aufrufen, wobei Instanzen des eigenen Typs (Rekursivaufrufe) nicht aufgerufen
werden konnen.
• Die Programmierung von FBs kann in einer beliebigen normkonformen oder auch in
einer anderen Programmiersprache erfolgen.
3.2.2 Deklaration eines Funktionsbausteins
Die Deklaration erfolgt in der in Kap. 2a beschriebenen Form. Die beiden Teile Variablen-
deklaration und Funktionsrumpf werden durch die Schlusselworte FUNCTION_BLOCK und
END_FUNCTION_BLOCK eingeschlossen.
FUNCTION_BLOCK <FB_Name>
(*IO-Variablen, optional gepuffert oder flankengetriggert*)
VAR_INPUT
...
END_VAR
VAR_OUTPUT
...
END_VAR
VAR_IN_OUT
...
END_VAR
109
Grundlagen der SPS Programmierung /Prozessinformatik Prof. Dr. W. Bock
(*interne Variablen, optional gepuffert*)
VAR
...
END_VAR
VAR_EXTERNAL
...
END_VAR
<Funktionsblock Anweisungen>
END_FUNCTION_BLOCK
FB Name und Datenruckgabe:
• Fur den Namen des Funktionsbausteins sind alle Bezeichner erlaubt, die projekt-
weit noch nicht verwendet werden.
• Ein Ruckgabewert ist nicht explizit spezifiziert. Es kann vielmehr auf alle
*OUT*-Variablen zugegriffen werden.
• Der Name des Funktionsbausteins wird bei der Instanziierung benotigt, um ein
konkretes Set der verwendeten Variablen im Arbeitsspeicher der CPU anzulegen.
Funktionsanweisungen:
• Der Anweisungsblock des FBs beschreibt die Wirkung des Funktionsbausteins.
Zur Erstellung sind die Programmiersprachen AWL, FBS, KOP und ST sowie
sonstige Hochsprachen zulassig.
• Im Anweisungsblock werden die Formalparameter in den *INPUT*-Variablen
untereinander verknupft und die Ruckgabewerte fur die *OUTPUT*-Variablen
ermittelt.
• Die IEC 61131-3 sieht eine umfangreiche Liste von Standard-
Funktionsbausteinen vor, von denen die wichtigsten bereits in Kap.2.2
besprochen wurden.
Programmierbeispiel:
• In Kap.2.2.3 wurden die RS-Flipflops mit vorrangigem Setzen und Loschen be-
sprochen.
SRSET1
RESETQ1
xx
RSSET
RESET1
Q1
xx
Dabei handelt es sich bereits um Standardfunktionsbausteine. Wegen der Spei-
chereigenschaft der Flipflops ist eine Realisierung mit einer Funktions-POE nicht
moglich.
110
Grundlagen der SPS Programmierung /Prozessinformatik Prof. Dr. W. Bock
• Programmierung in ST
Der nachfolgende Code zeigt, wie ein SR-Flipflop programmiert sein konnte.
FUNCTION_BLOCK SR
(* Variablendeklaration*)
VAR_INPUT
SET1: BOOL;
RESET:BOOL;
END_VAR
VAR_OUTPUT
Q1: BOOL;
END_VAR;
(* Bausteinrumpf*)
Q1 := (NOT RESET AND Q1) OR SET1;
END_FUNCTION_BLOCK
3.2.3 Instanziierung und Aufruf von Funktionsbausteinen
Wie bereits mehrfach genannt, ist die Deklaration eine FBs nicht ausreichend, um diesen in
der POE zu verwenden. Eine Reservierung von Speicherplatz fur die im FB verwendeten
Variablen erfolgt erst nach Instanziierung des Bausteins. Dies ist am ehesten vergleichbar
mit der Deklarierung einer Strukturvariablen (s. Kap.5).
Instanzbildung:
Die Instanzbildung erfolgt durch Vergabe eines Namens (Bezeichners) fur eine spezi-
elle Kopie des Funktionsbausteins.
Beispiel:
VAR
FF1: RS; (*RS-Flipflop*)
Zaehler: CTU; (*Aufwaertszaehler*)
END_VAR
Damit wurden die zwei Variablenblocke FF1 und Zaehler deklariert, denen
der Variablensatz der Standardfunktionsbausteine RS-Flipflop (s. Kap.2.2.3) bzw.
Aufwartszahler (s. Kap.2.2.7) zugrunde liegt.
Beispiel fur Datenstruktur einer Instanz
TYPE CTU:
STRUCT
(*Eingaenge*)
111
Grundlagen der SPS Programmierung /Prozessinformatik Prof. Dr. W. Bock
CU: BOOL (*Zaehlimpuls*)
R: BOOL (*Nullstellung*)
PV: INT (*Grenzwert*)
(*Ausgaenge*)
Q: BOOL (*Grenzwert erreicht*)
CV: INT (*Zaehlerstand*)
END_STRUCT;
END_TYP
Diese Datenstruktur wurde implizit bei der Deklaration des Funktionsbausteins er-
zeugt. Die Instanzvariable Zaehler aus dem obigen Beispiel besteht also aus
Sicht des Anwenders aus insgesamt funf Komponenten, wobei auf Grund der FB-
Deklaration drei Komponenten als Eingangs- und zwei als Ausgangsparameter zu ver-
wenden sind.
Aufruf und Verwendung der Ruckgabewerte:
Aufruf und Parameterubergabe fur FBs wurde bereits in Kap. 2.2 praktiziert. Im Ge-
gensatz zum POE-Typ Funktion mussen bei FBs alle Formalparameter Namen besit-
zen. Ubergabe- und Ruckgabeelemente sind durch Adressierung der Strukturkompo-
nenten anzusprechen, wobei ein Aufruf mit unvollstandigen Parametern erfolgen kann.
(a) Beispiel
Ein Aufwartszahler CountUP vom Standardtyp CTU soll mit dem Grenzwert
8 vorbelegt und abhangig vom Eingangssignal %IX1.0 gestartet werden. Ein
Rucksetzen ist mit dem Signal %IX1.1 zu ermoglichen. Das Erreichen des
Grenzwertes soll an %QX2.5 signalisiert werden und der augenblickliche Zahler-
stand in die Variable CountLevel kopiert werden.
Fur alle Sprachen gemeinsam ist folgende Variablen- und FB-Deklaration denk-
bar:
Mit CountUp wurde eine Instanz des Standardfunktionsbausteins CTU gebildet.
(b) Losung in AWL
112
Grundlagen der SPS Programmierung /Prozessinformatik Prof. Dr. W. Bock
In Anweisungsliste erfolgt der Aufruf des FB mit dem Schlusselwort CAL. Es
handelt sich dabei um einen unbedingten FB-Aufruf. Alternativ ist der Aufruf
auch vom zuletzt geladenen Wert abhangig zu machen. Insgesamt gibt es folgen-
de drei Moglichkeiten:
...
CAL <FB_Inst_Name> (*unbedingter Aufruf*)
LD <BOOL-Variable>
CALC <FB_Inst_Name> (*Aufruf bei TRUE*)
CALCN <FB_Inst_Name> (*Aufruf bei FALSE*)
...
(c) Losung in FBS
In der Funktionsbausteinssprache spiegelt sich der FB als ein grafisches Symbol
exakt wieder.
Links befindet sich die Signalzufuhrung fur die Eingangsparameter, auf der rech-
ten Seite stehen die Ausgangsparameter zur Verfugung. Der Funktionsbaustein-
typ erscheint innerhalb des Symbols, wahrend der Bezeichner fur die Instanz
außerhalb angefuhrt wird.
Negierte Ein- oder Ausgange sowie flankenerkennende Eingange werden uber
spezielle zusatzliche Zeichen gekennzeichnet.
113
Grundlagen der SPS Programmierung /Prozessinformatik Prof. Dr. W. Bock
(d) Losung in KOP
Die Verwendung von FBs in KOP ist wegen der ursprunglich anderen Intention
der Sprache i.d.R. etwas umstandlich. Charakteristisch ist auch hier, der schon
vom POE-Typ Funktion (s. Kap.3.1.3) her bekannte, zusatzlich notwendige Frei-
gabeeingang EN.
(e) Losung in ST
Die Ubergabe der Eingangsparameter erfolgt entweder in Form einer mehr oder
weniger vollstandigen Argumentenliste oder durch Einzelzuweisung an die Kom-
ponenten, bei Bedarf auch in gemischter Form.
114
Grundlagen der SPS Programmierung /Prozessinformatik Prof. Dr. W. Bock
Die Abarbeitung der Bausteinanweisungen erfolgt sequenziell nach Aufruf mit
Angabe des Instanznamens.
Ubungen:⇒ .../CoDeSysUeb/FB U01.pro
Ubungen:⇒ .../CoDeSysUeb/FB U02.pro
Ubungen:⇒ .../CoDeSysUeb/FB U03.pro
Vorlesungsubung: Retriggerbarer, rucksetzbarer Pulstimer
Zu programmieren ist ein Pulstimer TPRR , der im Unterschied zu TP wahrend eines
gestarteten Pulses ohne Unterbrechung neu gestartet und auch ruckgesetzt werden kann.
Die Eingangssignale seien: IN u. RES sowie die Pulsdauer PT.
Die folgende Signalfolge zeigt den Unterschied im Vergleich mit dem Standard-Pulstimer.
PT
IN
RES
Q(TPRR)
Q(TP)
t
Erstellen Sie einen Funktionsbaustein, der die genannten Anforderungen erfullt und testen
Sie dessen korrekte Funktion.
Idee zur Umsetzung: Ein TOF-Timer mit Flanken-getriggertem Eingangssignal, verhalt sich
wie ein Pulstimer und ist retriggerbar! Eine Reset-Funktion lasst sich durch Verknupfung mit
einem Flipflop erreichen.
Losungsbeispiel: −→ CoDeSys-Projekt FB− TPRR
115
Grundlagen der SPS Programmierung /Prozessinformatik Prof. Dr. W. Bock
3.2.4 Standardisierte Funktionsbausteine
Die wesentlichen Standardfunktionsbausteine wurden bereits im Kap.2.2 vorgestellt.
Zusatzlich zu nennen ist eine Gruppe von FBs fur die Kommunikation uber Feldbussysteme
(IEC 61131-5). Da die Implementierung stark von der jeweiligen Programmierumgebung
abhangig ist, wird hier auf die Vorstellung dieser FBs verzichtet.
116
Grundlagen der SPS Programmierung /Prozessinformatik Prof. Dr. W. Bock
3.3 Programm-POE
3.3.1 Allgemeine Eigenschaften von Programm-POEs
Der POE-Typ PROGRAM stellt eine Art Hauptprogramm dar, von dem aus Funktionsbaustei-
ne und Funktionen aufgerufen werden konnen. In einer PROGRAM-POE wird die Anbindung
zur Peripherie durch Verwendung direkter Adressen festgelegt.
Eine klassische SPS enthalt als gesamte Steuerungssoftware genau eine POE vom Typ
PROGRAM. Bei leistungsfahigen Steuerungen mit Multitasking-Fahigkeit sind PROGRAM-
POEs ahnlich wie Funktionsbausteine zu betrachten. Die Steuerungssoftware besteht dann
aus einer oder mehreren TASKen, denen Programme durch Instanziierung zugeordnet sind.
Eine PROGRAM-Instanz kann dann als eine einfache autarke Kompakt-SPS aufgefasst wer-
den.
Kennzeichen einer Programm-POE
• Kennzeichen ist der Zugriff auf die I/Os uber direkte Variablen oder deren Symbole.
• Der Zugriff und die Zurverfugungstellung von Daten uber die Variablenklassen
VAR_GLOBAL (globale Deklaration) und VAR_EXTERNAL (Expliziter Import einer
global deklarierten Variablen) ist moglich. Uber die Variablenklasse VAR_ACCESS
sind auch Zugriffspfade uber unterschiedliche Bussystem zu anderen Konfigurationen
moglich.
• Programm-POEs rufen i.d.R. Funktionsbausteine und Funktionen auf, konnen jedoch
selbst keine POEs vom Typ Programm aufrufen (Hinweis: beim Programmiersystem
CoDeSys kann der Code eines Programms in einzelne Abschnitte aufgeteilt werden,
die mir einer CAL-Anweisung eingebunden werden).
• Die Programmierung von POEen vom Typ PROGRAM kann in einer beliebigen norm-
konformen Sprache erfolgen.
3.3.2 Deklaration eines Programms
Die beiden Teile Variablendeklaration und Programmrumpf werden durch die Schlusselwor-
te PROGRAM und END_PROGRAM eingeschlossen.
PROGRAM <PRG_Name>
(* Expliziter Import globaler Variablen*)
VAR_EXTERNAL
...
END_VAR
(* Import von Variablen aus anderen Konfigurationen*)
VAR_ACCESS
117
Grundlagen der SPS Programmierung /Prozessinformatik Prof. Dr. W. Bock
...
END_VAR
(*IO-Variablen, optional gepuffert oder flankengetriggert*)
VAR_INPUT
...
END_VAR
VAR_OUTPUT
...
END_VAR
VAR_IN_OUT
...
END_VAR
(*interne Variablen, optional gepuffert*)
VAR
...
END_VAR
<Programm Anweisungen>
END_PROGRAM
PRG-Name und Parameterubergabe:
• Fur den Namen des Programms sind alle Bezeichner erlaubt, die projektweit noch
nicht verwendet werden.
• An den I/Os konnen nur globale oder direkt dargestellte Variablen verwendet
werden.
• Der Name des Programms wird bei einer evtl. Instanziierung benotigt, um das
Programm einer Task zuzuordnen.
Programmanweisungen:
• Der Programmrumpf enthalt ein Steuerprogramm das zyklisch wiederholt
bzw. ereignis- oder zeitgesteuert aufgerufen wird.
• Eine saubere Programmierung im Sinne der IEC 61131-3 fordert eine ausschließ-
lich symbolische Programmierung mit einer Anbindung an die Peripherie uber
formale Parameter. Damit lassen sich komplexe Programme ebenso hardware-
unabhangig erzeugen, wie es bei Funktionen und Funktionsbausteinen system-
bedingt ist.
3.3.3 Taskverwaltung
Zur optionalen Instanzbildung einer PROGRAM-POE ist zunachst die Einfuhrung des Begriffs
Task notwendig.
118
Grundlagen der SPS Programmierung /Prozessinformatik Prof. Dr. W. Bock
Eine Task fasst innerhalb einer Resource (s. Softwaremodell 2) ein oder mehrere Programme
sowie weitere eingebundene POEs zu einem Softwareblock mit gemeinsamen Zeitverhalten
zusammen. Sie ist durch mehrere Parameter charakterisiert:
• Name
Bezeichner fur eindeutige Kennzeichnung
• Typ
Festlegung der Bedingung fur den Start der Task, entweder durch Zeitvorgaben (zy-
klisch mit Intervall, freilaufend) oder durch interne oder externe Ereignisse gesteuert.
• Prioritat
Regelung des Vorrangs bei mehreren Tasks, die gleichzeitig ablaufen konnen.
Prioritat in CoDeSys: eine Zahl zwischen 0 und 31, wobei 0 die hochste, 31 die nied-
rigste Prioritat darstellt
Die auslosenden Ereignisse fur eine aperiodische Task werden durch einen positiven Flan-
kenwechsel am Task-Eingang dargestellt. Haufig werden dazu auch Systemvariablen heran-
gezogen. Beispiel dazu:
• Kalt- oder Warmstart erfolgt
• Zykluszeit einer Task uberschritten
• Kommunikationsfehler (Fehler im Feldbus)
• Division durch Null
• Pufferbatterieausfall
• usw.
Die erreignisgesteuerte Task ist mit einer Interruptsteuerung vergleichbar.
Ebenso wie die POEen ist die eine Task in genormten Format textuell vereinbar.
TASK <Task_Name> (SINGLE:= <Ereignisvariable>,
INTERVAL:= <Zeitangabe>, PRIORITY:= <PrioWert>)
(*Ereignisvariable: interne oder externe oder direkte Variable
Zeitangabe: Variable oder Konstante
Priowert: 0...15, 0 hat hoechste Prioritaet
*)
Bei der klassischen SPS-Programmierung wird auf die explizite Festlegung von Tasks ver-
zichtet. In diesem Fall sind alle Programme einer impliziten Hintergrundtask zugeordnet, die
mit niedrigster Prioritat standardmaßig vorhanden ist. In diesem Fall wird anhand des Pro-
grammnamens das zyklisch ausgefuhrte Programm definiert. Im Paket CoDeSys ist z.B. die
POE PLC_PRG derart zu interpretieren.
Ubungen:⇒ PT U01.pro
119
Grundlagen der SPS Programmierung /Prozessinformatik Prof. Dr. W. Bock
4 Programmiertechniken
Zum Losen von umfangreichen Steuerungsproblemen ist ein systematische Vorgehen not-
wendig. Dazu sind grundsatzlich Kenntnisse auf folgenden Gebieten notwendig:
• Kenntnisse uber Aufbau, Funktion und Konfigurierung der zur Verfugung stehenden
Hardware (s. Kap. 1)
• Guter Uberblick zu den verwendbaren Datentypen (s. Kap. 2.1)
• Grundlegende Programmiererfahrung (s. Kap. 3)
• Kenntnisse uber strukturierte Programmierung und systematische Entwurfsverfahren
(s.u.)
4.1 Schrittkettenprogrammierung
Schrittketten oder Ablaufsteuerungen kommen dort zum Einsatz, wo eine feste Ablaufstruk-
tur erkennbar ist. Merkmal ist eine Zerlegung des gesamten Steuerungsprogrammes in ein-
zelne uberschaubare Schritte mit exakt definierten Ubergangsbedingungen zwischen den
Schritten.
Eine Programmierung ist grundsatzlich mit jeder Art von Programmiersprache moglich, be-
sonders ubersichtlich und gut geeignet sind jedoch grafische Sprachen zur Erstellung von
Ablauf-Funktionsplanen. In der IEC 61131-3 stellt die Normsprache Sequential Flow Chart
(SFC), in deutsche Ubersetzung Ablaufsprache (AS) eine problemorientierte grafische Pro-
grammiersprache dar, die speziell zur Schrittketten-Programmierung geeignet ist.
4.1.1 Normelemente der grafischen Darstellung
Die grafische Darstellung einer Schrittkette erfolgt mit Hilfe von Ablauffunktionsplanen.
Der Plan besteht aus einer Aneinanderreihung von Blocken die im Programm sequenziell,
parallel oder alternativ durchlaufen werden.
(a) Darstellung von Schritten
• Schritte in einem Ablauf-Funktionsplan stellen mogliche Zustande dar, die wahr-
end des Programmablaufs entweder aktiv oder inaktiv sind. Ein Schritt wird gra-
fisch durch einen Block dargestellt und durch einen Bezeichner eindeutig be-
stimmt.
• Eine Sonderrolle spielt der Anfangsschritt (Initialschritt). Dieser stellt den nach
dem Programmstart zuerst angenommenen Zustand dar. Grafisch ist er durch eine
doppelte Umrandung gekennzeichnet.
120
Grundlagen der SPS Programmierung /Prozessinformatik Prof. Dr. W. Bock
• I.d.R. beinhaltet jeder Schritt mindestens eine Aktion, die, solange der Schritt
aktiv ist, wiederholt ausgefuhrt wird.
Start
S_1
Anfangsschritt mit Bezeichner
Init
Schritt (Aktion) mit Bezeichner S_1
Übergang (Transition)
• Ein Ubergang zwischen zwei Schritten erfolgt nur bei vorhandener Transition.
In den grafischen Planen ist bei nicht vorhandenen Pfeilen die grundsatzliche
Richtung immer vertikal von oben nach unten.
(b) Ubergange und Ubergangsbedingungen
• Ubergange werden durch kurz horizontale Striche auf Verbindungslinien zwi-
schen Schritten symbolisiert.
• Ein Schritt wird verlassen und ein neuer wird erreicht, falls die dazwischen lie-
gende Ubergangsbedingung TRUE liefert.
S_ n
S_ m
Schritt n
Schritt m
tc _ nm
• Die Ubergangsbedingung ist eine boolsche Variable oder das Ergebnis einer lo-
gischen Verknupfung. Optional wird diese Verknupfung in einem separaten Pro-
grammkonstrukt angegeben.
(c) Strukturen der Ablaufkette
121
Grundlagen der SPS Programmierung /Prozessinformatik Prof. Dr. W. Bock
• Grundsatzlich stellen alle Ablauf-Funktionsplane Schleifen dar, d.h. vom letzten
Schritt erfolgt ein bedingter Sprung zuruck zum Anfangsschritt.
• Zeichentechnisch werden Sprunge haufig nur durch abgehende bzw. ankommen-
de Pfeile nebst Transitionsymbol dargestellt.
Init
S_2
Anfangsschritt
Schritt 2
tc _12
tc _23
S_3 Schritt 3
tc _31
Init
Beispiel:
Kette mit 3 Schritten
• Neben einfachen Ubergangen zwischen Schritten sind auch Verzweigungen mog-
lich. Man unterscheidet Alternativ- und Simultanverzweigungen. In der grafi-
schen Darstellung ist erstere durch eine einfache, die zweite Art durch eine Dop-
pellinie dargestellt.
122
Grundlagen der SPS Programmierung /Prozessinformatik Prof. Dr. W. Bock
S_ n
S_ m1
Schritt n
Schritt m1
tc _ mk _ i
tc _ m12 S_ k Schritt k
tc _ mk _ o
S_ m2 Schritt m2
S_ n
S_ m1
Schritt n
Schritt m1
tc _ m _ i
tc _ m12 S_ k Schritt k
t _ m _ o
S_ m2 Schritt m2
tc _ k _ i
tc _ k _ o
Simultanverzweigung
Alternativverzweigung
• Simultanverzweigung:
Die Anfangsschritte von zwei oder mehreren Kettenstrangen werden gleichzeitig
aktiviert. Vor Beginn der Verzweigung und nach der Zusammenfuhrung existiert
jeweils nur eine gemeinsame Transitionsbedingung.
• Alternativverzweigung:
Es erfolgt die Aktivierung des Anfangsschrittes in genau einem von zwei oder
mehreren Kettenstrangen. Jeder Strang hat am Anfang und am Ende eine eigene
Transitionsbedingung. Am Verzweigungspunkt am Anfang muss sicher gestellt
sein, dass nur eine Transitionsbedingung den Wert TRUE haben kann. I.d.R. ist
deshalb eine gegenseitige Verriegelung notwendig.
(d) Aktionen und Schritte
Sinnvoller Weise gehort zu jedem Schritt eine Aktion, d.h. ein Programmkonstrukt,
das solange ausgefuhrt wird, solange der Schritt aktiv ist. Bei manchen Software- Ent-
wicklungssystemen hat man eine beliebige Auswahl unter den Programmiersprachen
zur Definition von Aktionen.
123
Grundlagen der SPS Programmierung /Prozessinformatik Prof. Dr. W. Bock
S_ n Aktion
(programmiert mit
IL , LAD , FBL , ST ,AS)
tc _ n _ i
T _ n _ o
In einfachen Dialekten der Ablaufsprache (AS/SFC) ist eine Aktion immer direkt mit
einem Schritt verbunden. Die IEC 61131-3 definiert einen Aktionsblock als grafisches
Element zur Darstellung von Aktionen, der im praktischen Fall mit einem Schritt
verknupft wird. Moglich ist jedoch auch die Realisierung einer Ablaufsteuerung mit
grundlegenden Programmiersprachen.
4.1.2 Realisierung von Schrittketten
(a) Ohne Verwendung von Ablaufsprachen
In den Programmiersprachen AWL, KOP, FUP oder ST kann eine Schrittkette mit
Hilfe von Zustandsmerkern oder Schrittzahlern realisiert werden. Es handelt sich um
einen Zustandsautomaten (s. Kap. 2.2.1) mit besonderer sequenzieller Abfolge der
Zustande.
• Zu jedem Schritt wird ein Reset-dominantes RS-Flipflop deklariert, das den je-
weils aktiven Schritt anzeigt. Ein Setzen erfolgt durch AND-Verknupfung der
Transitionsbedingung und des Vergangerschrittmerkers. Das Rucksetzen wird
durch den nachfolgenden Schrittmerker ausgelost.
124
Grundlagen der SPS Programmierung /Prozessinformatik Prof. Dr. W. Bock
S_2
tc _12
tc _23
S_1
S_3
&
S
R Q
tc_12
S_1
S_3 S_2
Aktion
FF _S_2
• Der Anfangsschritt muss durch eine geeignete Initialisierungsroutine beim Start
des Programmablaufs sicher erreicht werden. Dies ist z.B. durch Initialwertzu-
weisung der Schrittmerker in der Deklarationstabelle oder durch Generierung
eines Flankenauswerteimpulses moglich.
• Das Programm sollte die Segmente Transitionslogik, Schrittspeicher oder -zahler
und Aktionen als strukturierte Blocke enthalten. Die Reihenfolge dieser Blocke
ist wegen des zyklischen Ablaufs nicht allgemein festgelegt.
• Haufig ist noch eine Betriebsartenwahl vorzusehen. Dies ist am besten mit eine
POE vom Typ FUNCTION_BLOCK zu realisieren. Typische Betriebsartensignale
sind:
– Manueller←→ Automatischer Betrieb
– Start←→ Ende←→ Initialschrittanwahl
– Notaus- und Sicherheitsfunktion
– Schrittweiterschaltung mit←→ ohne Bedingung
– Aktionsfreigabe ja←→ nein
125
Grundlagen der SPS Programmierung /Prozessinformatik Prof. Dr. W. Bock
(b) Vereinfachte Ablaufsprachen
Bei gegenuber der Norm (IEC 61131-3) vereinfachten Sprachen bilden Schritt und
Aktion einen gemeinsamen Block. Im Beispiel des Systems CoDeSys (s.S. 2) ist dies
der Fall, zur Erhohung der Flexibilitat ist die Aktion jedoch in bis zu drei Teilaktionen
aufteilbar.
• Aktion
Sie kann eine Folge von Instruktionen in textuellen oder eine Folge von Netz-
werken in grafischen Sprachen enthalten oder selbst wieder eine Ablaufstruktur
enthalten. Sie wird solange ausgefuhrt, wie der Schritt aktiv ist.
• Eingangs- und Ausgangsaktion
Diese konnen jedem Schritt optional zugeordnet werden. Sie werden beide nur
einmal ausgefuhrt, beim Eintritt bzw. beim Verlassen des Schrittes.
• Schrittattribute
Haufig konnen zu den einzelnen Schritten weitere Festlegungen erfolgen. Insbe-
sondere kann uber eine Mindest- und Maximalzeitdauer eine zeitliche Kontrolle
der Aktionsdauern ohne direkte Verwendung von Timern erfolgen. Die Minimal-
zeit legt die Mindestdauer des Schrittes fest, wahrend die Maximalzeit fur Fehler-
auswertungen zur Erkennung von nicht erfolgten Transitionsfreigaben verwendet
werden kann.
126
Grundlagen der SPS Programmierung /Prozessinformatik Prof. Dr. W. Bock
Beispiel fur Ampelsteuerung in Ablaufsprache mit CoDeSys (s. Ampel AS.pro)
(c) Normkonforme Ablaufsprachen
Kennzeichen bei IEC 61131-3 kompatiblen Ablaufsprachdialekten ist die Verwen-
dung von Aktionsblocken. Sie ersetzen weitgehend textuellen Programmcode und sind
grundsatzlich selbstandige Einheiten, die in der Praxis jedoch meist an Aktionen ge-
koppelt sind.
• Darstellung des Aktionsblocks
Beschreibung der Aktion
BZ Prozessvariable
Prozessparameter
127
Grundlagen der SPS Programmierung /Prozessinformatik Prof. Dr. W. Bock
Ein Aktionsblock stellt eine Steuerungsaktion weitgehend ohne Programmcode
dar. In einer Uberschrift wird eine kurze Beschreibung der Aktion angegeben.
Zur Definition des auszufuhrenden Aktion werden Bestimmungszeichen (Quali-
fier) mit den dazugehorigen Operanden (Variablen) verwendet. Manche Opera-
tionen verlangen zusatzliche Parameter, fur die weitere Felder vorgesehen sind.
• Liste der Bestimmungszeichen (Qualifier)
Die Qualifier bestehen aus einzelnen Buchstaben, die meist zugleich den An-
fangsbuchstaben des dazugehorigen englischen Begriffs darstellen.
Zeichen Bedeutung
N nichtgespeichertes Aktivieren einer boolschen Variablen
oder eines separaten Aktionsblockes
P nur einmaliges Ausfuhren bei aktivem Schritt
S Setzen einer boolschen Variablen
R Zurucksetzen einer boolschen Variablen
L zeitbegrenzte Aktivierung
D zeitverzogerte Aktivierung
DS zeitverzogertes Setzen falls Schritt noch aktiv
SD zeitverzogertes Setzen (auch wenn Schritt nicht aktiv)
SL Aktion ist fur bestimmte Zeit aktiv
Die letzten drei Zeilen zeigen, dass auch die Kombination von Bestimmungszei-
chen moglich ist.
N
R
P
S
L
D
DS
SD
t
tStep
tcycle
SL
tsp1
tsp2
128
Grundlagen der SPS Programmierung /Prozessinformatik Prof. Dr. W. Bock
• Steuerung des Ablaufs
Die Steuerung des Ablaufs erfolgt uber implizit definierte Variablen, die be-
schrieben und gelesen werden konnen. Beispiele dafur sind:
– Flags, die die Aktivierung eines bel. Schrittes oder die Dauer dessen Akti-
vierung anzeigen.
– Boolsche Signale zur manuellen Schrittweiterschaltung bzw. zur Verzwei-
gung in den Initialzustand.
– Fehlermeldungen, z.B. bei Zeitlimituberschreitungen
4.1.3 Programmbeispiele
(a) Ampelsteuerung mit CoDeSys-SFC
(b) Prageprozess mit Step7-SFC
129
Grundlagen der SPS Programmierung /Prozessinformatik Prof. Dr. W. Bock
4.2 Strukturierte Hochsprachenprogrammierung
Die Programmiersprache Strukturierter Text, im Englischen mit Structured Text (ST) oder
Structured Control Language (SCL) bezeichnet, orientiert sich an hoheren Programmierspra-
chen wie Pascal oder C. Die Sprache eignet sich besonders gut fur Steuerungsaufgaben, die
mit Hilfe vom imparativer Programmierung umgesetzt werden konnen. Dabei handelt es sich
um eine Programmiermethode, die durch die Anordnung von Befehlen eine Aktivitatsreihen-
folge vorgibt.
Das strukturierte Programmieren stellt eine Weiterentwicklung der imperativen Pro-
grammiertechnik insofern dar, dass auf absolute Sprunganweisungen weitgehend ver-
zichtet wird und stattdessen Kontrollstrukturen, wie zum Beispiel”if... then...“,
”case... of...“,
”while... do...“,
”repeat... until...“ verwendet
werden. Als die klassische strukturierte Programmiersprache gilt Pascal.
Viele Funktionen aus dem Bereich Arithmetik und Logik aus der Liste der Standardfunktio-
nen eines SPS-Programmiersystems lassen sich mit der Sprache ST recht kurz und unkom-
pliziert darstellen.
Vergleicht man mit der”maschinennahen“ Sprache AWL ergeben sich Vor- und Nachteile:
(a) Vorteile:
• Machtige Konstrukte
• Kompakter Quellcode
130
Grundlagen der SPS Programmierung /Prozessinformatik Prof. Dr. W. Bock
• Ubersichtlicher Programmaufbau
• Meist direkt in (unkommentierten) AWL-Code wandelbar.
(b) Nachteile:
• Maschinencode nur begrenzt optimierbar, da Compiler nur wenig beeinflussbar
ist.
• Die hohere Abstraktionsstufe kann zu unnotig langem Code und damit langerer
Zyklusdauer fuhren.
• Viele Steuerungsaufgaben lassen sich nicht einfach in einer strengen Ablauf-
struktur darstellen.
Ein Quelltext in ST ist grundsatzlich formatfrei. Groß- und Kleinschreibung wird nicht
unterschieden. Die Variablendeklaration und die zur Verfugung stehenden Datentypen
entsprechen denen der weiteren SPS-Programmiersprachen. Kommentare werden durch
die Kommentarklammern (* ... *) eingeschlossen. In manchen Programmiersystemen
wird auch der aus C bekannte Zeilenendekommentar beginnend mit dem Doppelvorwarts-
schragstrich”//“ (bei STEP7) akzeptiert.
4.2.1 Struktogramme
Struktogramme dienen der moglichst ubersichtlichen und kompakten Darstellung funktio-
naler Einheiten in Programmen. Struktogramme bestehen aus Sinnbildern (entwickelt 1972
von I. Nassi u. B. Shneidermann) und dazu gehorigem Beschreibungstext.
Struktogramme ersetzen die veralteten Ablaufdiagramme nach DIN 66001. Sie sind mit den
Aktivitatsdiagrammen der UML ?? verwandt.
Ein konkreter Programmablauf wird durch die Auswahl passender Sinnbilder und deren Ver-
schachtelung dargestellt. Die Sinnbilder werden als Strukturblocke bezeichnet. Zur Detail-
lierung kann ein Strukturblock in mehrere Verarbeitungsteile aufgeteilt werden, die selbst
wieder durch Strukturblocke reprasentiert werden. Der gesamte Programmablauf ergibt sich
somit durch Schachtelung von Strukturblocken.
Die Eigenschaften und Bedeutung eines Strukturblocks lassen sich in drei Punkten zusam-
menfassen:
• Ein Block ist eine in sich abgeschlossene Einheit mit definiertem Ein- und Ausgang
• Ein Block umschreibt eine klar definierte Aufgabe.
• Der Steuerfluss in einem Block lauft immer von oben nach unten.
131
Grundlagen der SPS Programmierung /Prozessinformatik Prof. Dr. W. Bock
4.2.2 Strukturblock Verarbeitung
Strukturblocke werden immer durch Rechtecke dargestellt. Die obere Begrenzungslinie stellt
den Blockanfang dar, die untere Linie den Ausgang. Innerhalb des Rechtecks sind nur gerade
Linien sowie Text bzw. Symbole zugelassen. Symbole werden außerhalb des Blocks naher
erlautert.
A Symbol oder
Beschreibung der Aktion A:
A1
A2
Symbol oder
Beschreibung der Operation 1 A1 :
Symbol oder
Beschreibung der Operation 2 A2 :
Elementarblock :
Blocksequenz :
Zum Vergleich DIN 66001
Start Grenzpunkt
Operation Aktion
Verbindungspfeil
Struktogrammelemente
Ende Grenzpunkt
Operation 1
Operation 2
Verbindungspfeil
Der Elementarblock Verarbeitung besteht nur aus einem Rechteck in dem die Verarbeitung
beschrieben ist, bzw. symbolisiert ist. Ist die zur Realisierung vorgesehene Programmierspra-
che festgelegt, wird in einfachen Fallen gleich der Programmiercode fur diese Verarbeitung
angegeben. Fur eine Folge von Verarbeitungsschritten werden Elementarblocke einfach an-
einandergefugt.
Die Struktogramme nach Nassi/Shneidermann erlauben eine sehr kompakte Darstellung von
Ein- und Mehrfachauswahlanweisungen sowie von Schleifen. Die stellte einen wesentlichen
Vorteil gegenuber den einfacheren Flussdiagrammen nach DIN 66001 dar.
4.2.3 Strukturblock Auswahl
Der Block Auswahl kommt bei Vorliegen von Verzweigungsmoglichkeiten zum Einsatz. Die
Verzweigungsbedingung ist entweder ein logischer Ausdruck oder ein Vergleichsausdruck.
Je nach Zahl der moglichen Falle gibt es unterschiedliche Falle.
132
Grundlagen der SPS Programmierung /Prozessinformatik Prof. Dr. W. Bock
(a) Ein- oder Zweifachauswahl
Der Strukturblock besteht aus einem Steuerungsteil und einem Verarbeitungsteil.
ja nein
Operation 1 Operation 2
Aussage ?
Struktogrammelement : Zum Vergleich: DIN 66001
Operation 1 Operation 2
ja
nein Aussage ?
Die Bedingung B bestimmt welcher Verarbeitungsteil zum Ausfuhrung kommt. Beim
Sonderfall Einfachauswahl ist einer der beiden Verarbeitungsblocke leer.
(b) Mehrfachauswahl
Sind mehr als zwei Falle moglich spricht man von einer Fallunterscheidung. Der Struk-
turblock enthalt im Steuerungsteil die gleiche Anzahl an unterscheidbaren Fallen wie
verschiedene Anweisungen im Verarbeitungsteil.
Fallabfrage
B1 B2 B3
A1 A2 A3 A4
sonst
Ist nicht gewahrleistet, dass die aufgefuhrten Bedingungen alle denkbaren Falle ab-
decken, wird ein Fall”sonst“ verwendet, der dann zur Auswahl kommt.
4.2.4 Strukturblock Wiederholung
Der Strukturblock Wiederholung dient zur Darstellung von Programmschleifen. Unterschie-
de ergeben sich bei der Position der Ausfuhrungsbedingung.
(a) Keine Bedingungsabfrage
Liegt keine Ausfuhrungsbedingung vor, handelt sich um eine Endlosschleife. Der
Block wird endlos ausgefuhrt und nicht mehr verlassen.
133
Grundlagen der SPS Programmierung /Prozessinformatik Prof. Dr. W. Bock
A
(b) Vorausgehende Bedingungsabfrage
Der Block besteht aus einem Ausfuhrungs- und einem Steuerungsteil. Der Steuerungs-
teil gibt eine zyklisch zu uberprufende Bedingung an, die vor einer Ausfuhrung des
Verarbeitungsteil durchgefuhrt wird.
A
Ausführungsbedingung
Es ist moglich, dass bereits beim Eintritt in den Block die Ausfuhrungsbedingung nicht
erfullt ist. Damit wird der Verarbeitungsteil uberhaupt nicht ausgefuhrt.
(c) Nachfolgende Bedingungsabfrage
Der Block besteht neben dem Ausfuhrungsteil aus einem Steuerungsteil mit Abbruch-
bedingung fur den zyklischen Schleifendurchlauf.
A
Abbruchbedingung
Die Abbruchbedingung wird zum ersten Mal nach Abarbeit des Ausfuhrungsteils uber-
pruft. Die Ausfuhrungsanweisungen werden also mindestens einmal abgearbeitet.
4.2.5 Kombination von Strukturblocken
Einzelne Strukturblocke werden miteinander verknupft, in dem sie senkrecht aneinanderge-
reiht werden. Es ergibt sich damit ein einzelner großer Strukturblock, der selbst aus kleineren
elementaren Blocken besteht.
134
Grundlagen der SPS Programmierung /Prozessinformatik Prof. Dr. W. Bock
Wegen der direkten Verbindung vom Ausgang des einen Subblocks zum Eingang des
nachsten Subblocks sind keine Sprunge aus der Mitte eines Blockes zu einem oder meh-
reren anderen Blocken darstellbar.
Die Blockanordnung bedingt zunachst die Festlegung einer Grobstruktur mit einzelnen
Strukturblocken mit eindeutig definierten Anfangs- und Endzustand. Zum Zwecke der Co-
dierung mussen diese Blocke schrittweise immer mehr verfeinert und in innere Subblocke
unterteilt werden. Es entsteht somit ein hierarchische Aufbau, der zur Uberschaubarkeit der
Programmlogik beitragt.
4.2.6 Ausdrucke und Anweisungen
Ein Ausdruck ist ein Grundkonstrukt, zusammengesetzt aus Operatoren und Operanden, das
nach seiner Auswertung einen Wert zuruckliefert. Anweisungen enthalten ein oder mehrere
Ausdrucke und sind durch einen Strichpunkt abgeschlossen.
Die erlaubten Operatoren orientieren sich an denen anderer Hochsprachen. In der nachfol-
genden Tabelle sind die Operatoren gemaß ihrem Rang bei kombinierten Ausdrucken aufge-
listet:
Operator Beschreibung Beispiel
:= Zuweisung a := b
( ) Klammerung (4*5.6)-(8/2)
funbez(para1,para2,..) Funktionsaufruf ADD(1,2,3)
**† Potenzierung var1 ** var2
- Negation -28
NOT Boolsches Kompliment NOT varbool
* Multiplikation var1 * var2
/ Division var1 / var2
MOD Modulo-Division var1 / var2
+ Addition var1 + var2
- Subtraktion var1 - var2
<, >, <=, >= Vergleich var1 > var2
=, <> Gleich- und Ungleichheit var1 = var2
AND Logische UND-Verknupfung var1 AND var2
XOR Logische Exklusiv-ODER-Verknupfung var1 XOR var2
OR Logische ODER-Verknupfung var1 OR var2
†: wird von CoDeSys nicht unterstutzt! Ersatzweise: EXPT(X,Y) = X**Y = XY
Ein Funktionsaufruf liefert einen Wert und ist damit ein Ausdruck. Er kann damit innerhalb
einer ubergeordneten Anweisung als Ausdruck verwendet werden. Der Aufruf einer POE
135
Grundlagen der SPS Programmierung /Prozessinformatik Prof. Dr. W. Bock
vom Typ Funktionsbaustein oder Programm ist im Gegensatz dazu selbst eine Anweisung
und somit nicht innerhalb eines Ausdrucks erlaubt.
Beispiel: Programmcode fur eine Funktion NEXOR
FUNCTION NEXOR : WORD
(**************Deklarationsteil***********)
VAR_INPUT
W1: WORD;
W2: WORD;
END_VAR
(***************Anweisungsteil*************)
NEXOR:= NOT( W1 XOR W2);
END_FUNCTION;
4.2.7 Auswahl- und Fallunterscheidung
Zur Unterscheidung verschiedener Falle bietet ST die Anweisungen IF und CASE.
(a) IF-Anweisung
Die IF-Anweisung enthalt eine oder mehrerer Bedingungen, die als boolsche Aus-
drucke gemaß TRUE oder FALSE bewertet werden. Ist die erste Bedingung erfullt,
kommt die anschließende Anweisung zur Ausfuhrung. Im anderen Fall kommt optio-
nal mit ELSE eine weitere Anweisung zum Tragen. Zusatzlich sind weitere ELSEIF-
Zweige moglich, mit denen nach einer nicht zutreffenden ersten Bedingung weitere
logische Auswahlmoglichkeiten bestehen.
Involvierte Schlusselworter: IF, THEN, ELSIF, ELSE, END_IF
Syntax:
(* Einfache Form *)
IF <Bedingung>
THEN <Anweisung(en)>
END_IF;
(* Form mit einer Alternative *)
IF <Bedingung>
THEN <Anweisung(en) 1>
ELSE <Anweisung(en) 2>
END_IF;
136
Grundlagen der SPS Programmierung /Prozessinformatik Prof. Dr. W. Bock
(* Form mit mehreren Alternativen *)
IF <Bedingung>
THEN <Anweisung(en) 1>
ELSIF <Bedingung(en) 2>
THEN <Anweisung(en) 2>
ELSIF ...
THEN ...
ELSE <Anweisung(en) X>
END_IF;
Die Anweisung nach ELSE stellt immer die letzte aller Moglichkeiten dar. Die An-
zahl der ELSIF-Zweige ist nicht formal begrenzt. Die Verwendung eines oder meh-
rerer ELSIF-Zweige bietet gegenuber einer Sequenz von IF-Anweisungen den Vor-
teil, dass die Anzahl der auszuwertenden logischen Ausdrucke kleiner ist und die Pro-
grammlaufzeit damit verkurzt werden kann.
(b) CASE-Anweisung
Die Fallunterscheidung dient der Auswahl aus einer Liste unterschiedlicher Anweisun-
gen nach dem Inhalt eines Ganzzahlausdrucks vom Typ INT. Nimmt der ganzzahlige
Ausdruck keinen der vorgegebenen Wertalternativen an, so ist optional mit ELSE eine
Default-Angabe moglich.
Involvierte Schlusselworter: CASE, OF, ELSE, END_CASE
Syntax:
CASE <Auswahlausdruck> OF
<Wert i> : <Anweisung(en)>
<Werteliste > : <Anweisung(en)>
<Wertebereich>: <Anweisung(en)>
...
ELSE <Anweisung(en)>
END_CASE;
Der Auswahlausdruck muss einen Wert vom Typ INT liefern. Der Wert i wird durch
eine ganze Zahl, die Werteliste durch zwei oder mehrere durch Komma getrennte
Ganzzahlen und der Wertebereich wird durch ein Ganzzahlintervall in der Form i..j
angegeben. Nach ELSE steht normgemaß kein Doppelpunkt Er ist aber bei STEP7
optional moglich.
4.2.8 Schleifen
Die Sprache ST bietet die drei aus vielen anderen Hochsprachen bekannten Schleifenaufrufe
mit FOR, WHILE und REPEAT.
137
Grundlagen der SPS Programmierung /Prozessinformatik Prof. Dr. W. Bock
(a) FOR-Schleife
Die FOR-Schleife benutzt eine ganzzahlige Steuervariable und einen dazugehorigen
Wertebereich. Vor dem ersten Durchlauf wird die Steuervariable mit einem Anfangs-
wert initialisiert und nach jedem Durchlauf des Anweisungsteils um eine ebenfalls
wahlbare Schrittweite inkrementiert (oder bei negativer Schrittweite dekrementiert).
Das Erreichen der Endbedingung markiert den letzten Durchlauf.
Involvierte Schlusselworter: FOR, TO, BY, DO, END_FOR
Syntax:
FOR <Anfangszuweisung> TO <Endwert>
BY <Schritt>
DO <Anweisung(en)>
END_FOR;
In der Anfangszuweisung muss eine Ganzzahlvariable mit einem Startwert versehen
werden. Der Endwert ist eine Ganzzahlausdruck. Die Angabe einer Schrittweite kann
entfallen. Es wird dann der Standardschritt +1 verwendet. Eine Veranderung der Werte
fur Endwert oder Schritt im Schleifenkorper ist nicht erlaubt.
(b) WHILE-Schleife
Die WHILE-Schleife dient der Wiederholung eines Anweisungsteils solange eine
Durchfuhrungsbedingung erfullt ist.
Involvierte Schlusselworter: WHILE, DO, END_WHILE
Syntax:
WHILE <Bedingung> DO
<Anweisung(en)>
END_WHILE;
Die Durchfuhrungsbedingung wird jedesmal vor einem Schleifendurchlauf neu ge-
pruft. Bei Ergebnis TRUE wird die nachfolgende Anweisungsliste ausgefuhrt, anson-
sten ubersprungen.
(c) REPEAT-Schleife
Die REPEAT-Schleife dient der Wiederholung eines Anweisungsteils solange eine Ab-
bruchsbedingung erfullt ist.
Involvierte Schlusselworter: REPEAT, UNTIL, END_REPEAT
Syntax:
REPEAT
<Anweisung(en)>
UNTIL <Bedingung>
END_REPEAT;
138
Grundlagen der SPS Programmierung /Prozessinformatik Prof. Dr. W. Bock
Die Abbruchsbedingung wird jedesmal nach einem Schleifendurchlauf neu gepruft.
Bei Ergebnis TRUE wird die Schleife erneut ausgefuhrt, ansonsten wird mit der
nachsten Anweisung fortgefahren.
(d) Sprung aus Schleifen
Involvierte Schlusselworter: CONTINUE, EXIT
Beim Schleifendurchlauf sind zwei Sprunganweisungen zum vorzeitigen Abbruch zu-
lassig. Mit CONTINUE wird die Abarbeit des Schleifenkorpers an der augenblickli-
chen Stelle unterbrochen und eine weiterer Durchlauf an Hand der Schleifensteuerung
uberpruft. Die EXIT-Anweisung hingegen erzwingt ein sofortiges Verlassen des ge-
samten Schleifenblocks.
4.2.9 Aufruf von POEs
Innerhalb einer Programmorganisationseinheit konnen weitere POEs vom gleichen oder
niedrigerem Rang aufgerufen werden.
Konkret moglich sind die Aufrufe:
Programm (PRG) oder Organisationsbaustein (OB) −→ PRG (OB), FB, FUN
Funktionsbaustein (FB) −→ FB, FUN
Funktion (FUN) −→ FUN
Fur Funktionsbausteine und Programme (Organsiationbausteine) ist die Vereinbarung einer
Instanz als Strukturblock fur die statischen Variablen notwendig. Beim POE-Typ Funktion
(FUN) ist ein Typ festgelegt und der Funktionsbezeichner steht stellvertretend fur den Ruck-
gabewert mit entsprechendem Typ.
In der Sprache ST erfolgt der Aufruf anderer POEs durch Angabe des Bezeichners fur die
Funktion oder der Bausteininstanz mit nachfolgender in Klammern gesetzter Ubergabe der
aktuellen Parameter. Um keine feste Reihenfolge einhalten zu mussen, werden in dieser Liste
die Zuweisungen Aktual- an Formalparameter konkret ausgefuhrt.
(a) Aufruf einer Funktions-POE
Da in einer Funktion-POE keine statischen Variablen deklarierbar sind, mussen beim
Funktionsaufruf alle formalen Eingangsparameter zugewiesen werden. Fur die Funkti-
on ist ein Ruckgabewert definiert und somit ist der Funktionsaufruf einem Operanden
gleichzusetzen und entsprechend einsetzbar.
Syntax:
(*Beispiel: Zuweisung des Funktionswertes an Variable ERG*)
ERG := <Fun-Name> ( <Para1>:= <Wert1>, ... );
(*Funktion NEXOR (s.o.) mit Uebergabe von Konstanten *)
ERG := NEXOR(W1:= 2#1001_1100, W2:= 2#1010_0110);
139
Grundlagen der SPS Programmierung /Prozessinformatik Prof. Dr. W. Bock
(b) Aufruf einer Funktionsbaustein-POE
In ST wird eine POE vom Typ FUNCTION_BLOCK uber ihren Instanznamen und
die in Klammern stehenden Parameterzuweisungen aufgerufen. Es konnen dabei nur
Eingangs- und Durchgangsparameter aufgefuhrt werden. Die Reihenfolge ist eben-
so wie bei beim Funktion-Typ nicht von Bedeutung. Werden Parameter weggelassen,
verwendet der FB den Initialwert bzw. den zuletzt ubergebenen Wert (da statisches
Verhalten).
Der Zugriff auf die Ausgangsparameter erfolgt durch Verwendung der Parameter als
Operanden, die sich in ihrer Bezeichnung aus dem Instanznamen des FB und den je-
weils durch Punkt separierten Formalparameternamen zusammensetzen.
140
Grundlagen der SPS Programmierung /Prozessinformatik Prof. Dr. W. Bock
5 Kommunikationstechniken
Als eine der Grundfunktionen einer Steuerung fur einen automatisierten Prozess gilt die
Kommunikation zwischen den Automatisierungsgeraten und der Prozessanlage bzw. auch
zwischen einzelnen Komponenten der Automatisierungskonfiguration (s. 1.2.2).
Das klassische Konzept einer nicht-verteilten Steuerung in der Industrieautomation beruht
hingegen auf programmierbaren Steuerungen, die einen autonomen Bereich der Anlage
selbstandig bedienen. Dabei ist Folgendes kennzeichnend:
• Das Steuerungsmodul beinhaltet die notwendigen Ein- und Ausgange, um mit allen
Sensoren und Aktoren der Anlage die Daten auszutauschen.
• Zur Verbindung mit einem ubergeordnetem System werden Punkt-zu-Punkt-
Verbindungen werden meist serielle Schnittstellen wie RS232, RS485 oder USB ein-
gesetzt. Eine Echtzeitfahigkeit ist nur bei langsamen Prozessen darstellbar.
• Modulare Steuerungen bestehen aus einer Zentraleinheit (CPU) und Erweiterungsmo-
dulen wie Ein- und Ausgabemodulen, Zahler, Gateways und Schnittstellen. Dazu wird
ein Peripheriebus (meistens in Form eines Ruckwandbusses) eingesetzt. Kennzeichen
ist i.d.R. eine Master-Slave-Organisation, mittlere bis hohe Datenraten und lokale Be-
grenztheit auf kurze Abstande.
Steuer
CPU
1
IO
BG
1-1
IO
BG
1-2
IO
BG
1- n
Steuer
CPU
2
IO
BG
2-1
IO
BG
2-2
IO
BG
2- n
Leitstand
Steuer
CPU
3
IO
BG
3-1
IO
BG
3-2
IO
BG
3- n
PtP2
PtP1
PtP3
PB1
PB3
PB2
PtP : Point -to- Point Interface
PB : Peripherie-Bus
Moderne Konzepte fur die Prozessautomatisation beinhalten dezentrale Steuerungen. Kenn-
zeichnend ist ein vertikale Integration (s. S. 15). Die Steuerungsknoten kommunizieren un-
tereinander, mit dezentraler Peripherie sowie mit ubergeordneten Systemen.
141
Grundlagen der SPS Programmierung /Prozessinformatik Prof. Dr. W. Bock
Die dazu eingesetzten Bussysteme sind weitgehend genormt, so dass Module unterschiedli-
cher Hersteller miteinander kommunizieren konnen.
5.1 Dezentralisierung
Bei dezentralen Steuerungen ist die Steuerungsaufgabe auf mehrere, kommunikationsmaßig
eng gekoppelte Steuerungsknoten verteilt. Wichtigste Fragestellung dazu ist die sinnvolle
Funktionsaufteilung und die Wahl des Echtzeit-Bussystemes.
Meist liegt ein hierarchisches Prinzip vor:
ZR1
ZRn
PLC1 PLC2
PLCm
IO IO
IO
IO
IO
IO
Factory -Bus
Feldbus
Sensor-Aktor-Bus
ERP
MES
SAF
• ERP (Enterprise-Resource-Planing): Leitebene
Sie enthalt die ubergeordneten Systeme fur die Visualisierungen, Produktionssteue-
rung und -planung, Datenarchivierung und administrative Aufgaben.
• MES (Manufacturing-Execution-System): Steuerungs- oder Zellebene
Sie enthalt die intelligenten Steuerungen mit den dazugehorigen Programmen.
• SAF (Sensor-Actuator-Field) oder (Control-)Field: Feldebene
Sie enthalt die physikalischen Schnittstellen zum Prozess (Signaldetektoren, Geber,
Relais, Antriebe, usw.)
Zwischen allen Ebenen mussen Daten ubermittelt werden. Dies leisten die Bussysteme.
142
Grundlagen der SPS Programmierung /Prozessinformatik Prof. Dr. W. Bock
5.1.1 Bussysteme
Unter einem Bussystem (bus steht fur binary unit system) versteht man ein Leitungssystem
mit zugehorigen Steuerungskomponenten, das zum Austausch von Daten und/oder Energie
zwischen Hardware-Komponenten dient.
Ein Bussystem muss die im jeweiligen Anwendungsfall vorliegenden Kommunikationsan-
forderungen abdecken. Unterscheidungskriterien:
(a) Bustopologie: beschreibt wie die Teilnehmer an die Busleitung(en) angeschlossen wer-
den konnen.
• Sternform
Master
Kennzeichen ist die Anbindung aller Teilnehmer an einen zentralen Teilnehmer,
der meistens (aber nicht unbedingt) Mastereigenschaften hat. Dies hat den Nach-
teil, dass bei Ausfall des zentralen Teilnehmers i.d.R. das ganze Netz ausfallt.
Beispiel: Telefonnetz
• Baumform
Master
Hub/ Switch Hub/ Switch
143
Grundlagen der SPS Programmierung /Prozessinformatik Prof. Dr. W. Bock
Kennzeichen ist das Vorhandensein einer Wurzel, von der mehrere Kanten weg-
gehen. Die Kanten munden entweder bei Endteilnehmers oder an Subnetzen, die
um Unterverteilungen (Hub, Switch) gebildet werden.
Beispiel: Ethernet in Gebauden
• Ringform
Kennzeichen sind direkte Verbindungen zwischen Nachbarn. Insgesamt ergibt
sich ein geschlossener Ring. Die zu ubertragende Information wird von Teil-
nehmer zu Teilnehmer weitergeleitet, bis sie ihren Bestimmungsort erreicht.
Die Busteilnehmer werden uber Adressen angesprochen. Jeder Teilnehmer wirkt
gleichzeitig als Repeater und regeneriert das zu ubertragende Signal.
Beispiel: Feldbusse auf LWL-Basis
• Linienform
Die Linienform entsteht aus dem Ringnetz durch Offnung des Ringschlusses.
Ein Liniennetz ist einfach aufzubauen, allerdings auch relativ storanfallig. Haufig
ergibt sich das Liniennetz als physikalische Darstellung des Sternnetzes.
(b) Zugriffsverfahren
• Master-Slave-Prinzip
In einem Master-Slave-System gehen alle Initiativen von einem bevorrechtig-
ten Busmaster aus. Ein Slave am Bus antwortet nur auf Anfragen (Request) des
Masters. Die Buszykluszeit eines derartigen Systems ist berechenbar (determini-
stisch). Sind mehrere Master am Bus beteiligt (Multimasterbus), teilen sich diese
das Zugriffsrecht durch den Austausch eines Tokens (Zeichen fur Synchronisati-
onszwecke). Der jeweilige Besitzer des Tokens hat alleiniges Buszugriffsrecht.
• Prioritatsgesteuerter Datenverkehr
144
Grundlagen der SPS Programmierung /Prozessinformatik Prof. Dr. W. Bock
Jeder Busteilnehmer kann zu jedem Zeitpunkt Daten ubertragen. Wann welche
Daten gesendet werden, ist nicht vorhersehbar (nicht deterministisches Verhal-
ten). Nachrichten werden mit einem Prioritatskennzeichen versehen, die eine
Absetzreihenfolge gewahrleisten. Fur den Fall des gleichzeitigen Sendens von
Daten mussen Arbitrierungsmechanismen (Verfahren zur Bestimmung eines Zu-
gangsrechts) geschaffen sein, die entweder Kollisionen verhindern bzw. auflosen.
Weit verbreitet ist das CSMA /CA Verfahren (Carrier Sense Multiple Access
with Collision Avoidance) bzw. /CD (with Collision Detection), mit dem eine
Kollisionsmanagement erreicht wird.
• Token-Passing
Beim Token-Passing halt der jeweils aktive Busmaster ein so genanntes Token,
das nichts anderes als eine Merkvariable (Flag) ist. Hat er seine Sendung abge-
schlossen, reicht er dieses Token an einen bestimmten Nachbarn auf dem Bus
weiter. Das wird vor allem in Ringbussen angewandt. Wenn man es physikalisch
nicht mit einem Ringbus zu tun hat, ist es Software-Angelegenheit, die poten-
ziellen Busteilnehmer in eine wohldefinierte und allen bekannte Reihenfolge zu
bringen.
(c) Leistungsdaten
Als wichtige Beurteilungsparameter fur die Leistungsfahigkeit eines Bussystems gel-
ten:
• Max. Ubertragungslange
Bei hoheren Frequenzen werden elektrische Informationen in Form von elektro-
magnetischen Wellen ubertragen. Uber die Ausbreitungsgeschwindigkeit der
Welle definiert sich eine Wellenlange. Ist diese Wellenlange kleiner oder ver-
gleichbar mit den Leitungsabmessungen liegen an unterschiedlichen Orten auf
der Leitung zum selben Zeitpunkt unterschiedliche Signalzustande vor. Dies
fuhrt zu Synchronisationsproblemen. In der Praxis bedeutet dies Obergrenzen
fur die moglichen Leitungslangen.
• Bitrate (Brutto-Datenrate)
Die Bitrate ergibt sich bei digitaler Signalubertragung als Kehrwert der Bitzeit.
Die Bitzeit gibt die Ubertragungsdauer fur eine digitale Informationseinheit an.
• Netto-Datenrate
Die Datenrate ist ein Maß fur die Geschwindigkeit, mit der Nachrichten uber das
Bussystem ubertragen werden. Da das Nachrichtentelegramm einen nicht uner-
hebliche Protokoll-Overhead enthalt und andererseits zwischen zwei Nachrich-
ten meistens eine Pause abzuwarten ist, ergibt sich fur die reine zu ubertragende
Information eine deutlich niedrigere Rate als fur die reine Bitfolge.
145
Grundlagen der SPS Programmierung /Prozessinformatik Prof. Dr. W. Bock
5.1.2 Das ISO/OSI-Modell
Um Feldbussysteme untereinander vergleichen zu konnen, bzw. genormte Standards fur
Feldbusse zu beschreiben, wurden sieben Kommunikationsschichten durch den Normenaus-
schuss der ISO definiert.
(a) OSI (Open System Interconnection)-Modell
Schicht Bezeichnung
7 Anwendungsschicht Application Layer
6 Darstellungsschicht Presentation Layer
5 Sitzungsschicht Session Layer
4 Transportschicht Transport Layer
3 Vermittlungsschicht Network Layer
2 Sicherungsschicht Data Link Layer
1 Physikalische Schicht Physical Layer
(b) Grobe Einteilung
• Schicht 1–4: netzorientierte Schichten
• Schicht 5–7: anwendungsorientierte Schichten
(c) Einzelne Schichten
1. Die physikalische Schicht:
Beschreibung des Ubertragungsweges und des physikalischen Signalparameters.
Festlegung der elektrischen, mechanischen und funktionalen Eigenschaften der
Schnittstelle.
2. Die Sicherungsschicht:
Sie regelt die Synchronisation zwischen den Teilnehmern und beinhaltet die
Ubertragungsprozedur, Prioritatenvergabe, Fehlerprufung und Behebung, bei-
spielsweise Parity-Check und CRC.
3. Die Vermittlungsschicht:
Hier wird der Verbindungsaufbau zwischen den Kommunikationspartnern fest-
gelegt.
4. Die Transportschicht:
Steuerung und fehlerfreie, sequenzgerechte Ablieferung des Datenflusses
5. Die Sitzungsschicht:
Aufbau, Unterhalt und Abbau von Verbindungen zwischen den Partnern
6. Die Darstellungsschicht:
Sie stellt die Unabhangigkeit von Zeichencodierung, Daten-, Bildschirm- und Fi-
leformaten etc. sicher oder konvertiert diese in die fur den entsprechenden Rech-
ner/Controller geeigneten Form.
146
Grundlagen der SPS Programmierung /Prozessinformatik Prof. Dr. W. Bock
7. Die Anwendungsschicht:
Sie regelt den Zugriff auf die Anwenderprogramme und legt die Anwenderpro-
tokolle fest. Bietet Dienste fur andere Teilnehmer im Netz an. Wird noch einmal
unterteilt in Schicht 7a API (Applications Program Interface) und Schicht 7, dem
eigentlichen Anwendungsprogramm.
Fur die unterschiedlichen Bussysteme sind nicht alle Schichten von Bedeutung, da sich
fur die speziellen Zielapplikationen unterschiedliche Randbedingungen ergeben.
Fur den Bereich Prozessinformatik/dezentrale Automatisierung sind besonders wich-
tig:
• Installationstechnik: Schicht 1 mit Angaben zu Ubertragungsmedium, Bitraten,
Storsicherheit, Konnektoren
• Datenubertragungsprotokoll und Zugriffsverfahren: Schicht 2 mit Angaben zu
Blocklange, Arbitrieralgorithmus bei gleichzeitigem Buszugriff, Fehlererken-
nung und -behebung, Restfehlerwahrscheinlichkeit
• Transportprotokoll: Schicht 4 mit Angaben zu Angebot an Diensten, die von den
darunterliegenden Schichten unabhangig sind. Moglichkeit des Einsatzes unter-
schiedlicher Ubertragungshardware
• ALI/API: Schicht 7 mit der Schnittstelle fur die Anwendungsprogrammierung.
147
Grundlagen der SPS Programmierung /Prozessinformatik Prof. Dr. W. Bock
6 Visualisierungstechniken
Das Bedienen und Beobachten von Daten und Vorgangen in einem automatisierten Prozess
gehort zu den Grundfunktionen der Automatisierung. Die aktuellen Programmiersysteme
beinhalten i.d.R. dazu einen integrierten Visualisierungs-Editor, so dass der Anwender neben
der Steuerungsfunktion auch die Visualisierungsaufgabe in ein- und derselben Oberflache
erzeugen kann.
Alternativ existieren separate Visualisierungstools, mit deren Hilfe Visualisierungsprojekte
erstellt werden konnen, die dann in ein Automatisierungsprojekt eingebunden werden.
Vorteile einer integrierten Losung:
• Direkter Zugriff auf die Variablen aus dem Steuerungsprogramm.
• Keine Notwendigkeit fur eine OPC- oder DDE-Schicht, weil die Kommunikation uber
denselben Mechanismus erfolgt, der auch fur das Programmiersystem verwendet wird.
• Reduktion des Engineering-Aufwands
• Moglichkeit fur verschiedene Ablauf-Varianten (s.u.), in denen die herkommliche Dar-
stellung auf einem PC mit angeschlossenem Monitor entfallen kann.
Vorteile einer separaten Losung:
• Der angebotene Funktionsumfang ist bei speziellen Visualisierungstools haufig großer
• Visualisiserungslosung unabhangig von der Steuerungshard- und -software
• ...
6.1 Visualisierung mit OPC
Mit OPC (Open Platform Communications) wird eine einheitliche und Hersteller unabhangi-
ge Softwareschnittstelle bezeichnet. Es ist ein offener Standard zum sicheren und zuverlassi-
gen Austausch von Daten in der industriellen Automation und anderen Industriezweigen.
Ursprunglich stand das Akronym OPC fur”OLE (Object Linking and Embedding) for Pro-
cess Control“, und war damit auf die Anwendung in Windows-Systemen begrenzt. Die neue
und aktuell weiterentwickelte Spezifikation OPC Unified Architecture (OPC UA) ersetzt
vorhergehende”Classic“-Spezifikationen (OPC DA, OPC HDA, OPC A/E) und ist plattfor-
munabhangig. Die Technik wird von OPC Foundation weiterentwickelt.
Die OPC-Spezifikationen wurden von verschiedenen Software Entwicklern, Verbrauchern
und Technikanbietern entwickelt. Die Spezifikationen definieren sowohl den Austausch
zwischen Servern und Clients, wie die Kommunikation zwischen Server und Server. Dies
schließt den Zugriff auf Echtzeitdaten, Erfassung von Alarmen und Ereignissen und anderen
Programmen mit ein.
148
Grundlagen der SPS Programmierung /Prozessinformatik Prof. Dr. W. Bock
Als der Standard 1996 auf den Markt kam, war er dazu gedacht die PLC/SPS (Programmable
Logic Controller) Protokolle (wie Modbus, Profibus, etc) in eine standardisierte Schnittstelle
einzubinden, das HMI/SCADA Systemen erlaubt mit und Schreib- und Lesezugriffsanfragen
auf Prozessdaten zuzugreifen. Damit sollten auch Gerate unterschiedlicher Hersteller ohne
eigene bzw. spezielle Treiber miteinander kommunizieren konnen.
In den haufigsten Fallen besteht ein OPC System aus zwei Komponenten, dem Client und
dem Server.
Quelle: wikipedia
6.1.1 OPC Unified Architecture
Kennzeichen:
• Plattform- und Herstellerunabhangig: Die Kommunikation ist unabhangig von der Pro-
grammiersprache, Betriebssystem oder anderen proprietaren Technologien.
• Standardisierte Kommunikation uber Internet & Firewalls: OPC-UA basiert nicht
langer auf der DCOM Technologie von Microsoft, es wurde aufbauend auf service-
orientierter Architektur (SOA) neu konzipiert. OPC-UA verwendet ein TCP-basiertes,
optimiertes, binares Protokoll fur den Datenaustausch
• Schutz vor unerlaubtem Zugriff: OPC-UA Technologie verwendet bewahrte Sicher-
heitskonzepte, die Schutz vor unerlaubtem Zugriff bieten genauso wie Schutz vor Sa-
botage und Modifikation von Prozessdaten sowie Schutz vor unachtsamer Bedienung.
149
Grundlagen der SPS Programmierung /Prozessinformatik Prof. Dr. W. Bock
• Erreichbarkeit und Zuverlassigkeit: OPC-UA definiert eine robuste Architektur mit zu-
verlassigen Kommunikationsmechanismen, konfigurierbaren Timeouts und automati-
scher Fehlererkennung.
6.2 Visualisierungslosungen am Beispiel von CoDeSys
Eine wesentliches Kennzeichen der integrierten Visualisierung in CoDeSys ist, dass die in-
nerhalb des Programmiersystems erstellten Masken in verschiedenen Projekt-Varianten ohne
Anderungen eingesetzt werden konnen.
6.2.1 Visu-Projektvarianten
(a) Visualisierung in der Programmierumgebung
Zum Testen der erstellten Visualisierungsmasken sowie fur Service- und Diagnose-
zwecke direkt in Verbindung mit der Steuerung kann ohne weiteres Tool ein Auto-
matisierungsprojekt gestartet werden und mit der Online-Verbindung zur Steuerung
sofort die reale Darstellung der Masken innerhalb des Programmiersystems uberpruft
werden.
Anwendungsfalle:
• Erstellung der Visualisierungsmaske(n)
• Inbetriebnahme, Wartung, Service, Diagnose
150
Grundlagen der SPS Programmierung /Prozessinformatik Prof. Dr. W. Bock
Zu (a): Visualisierung in derProgrammierumgebung
Zu (b): Visualisierung mit HMI- Panel
(b) HMI - Tableaus und Monitore
Auf speziellen HMI (Human Machine Interface) - geraten werden die Visualisierungs-
masken angezeigt. Die Kommunikation lauft bei CoDeSys ebenfalls uber die Program-
mierschnittstelle. Die Konfiguration von OPC (OPC - OLE for Process Control) - bzw.
DDE (DDE Dynamic Data Excange) Schnittstelle ist nicht erforderlich.
Anwendungsfalle:
• Visualisierung von Daten aus mehr als einer Steuerung
• Visualisierungsalgorithmen und -programme laufen auf HMI-Element
• Verwendung von Daten-Servern
(c) Target-Visualisierung
151
Grundlagen der SPS Programmierung /Prozessinformatik Prof. Dr. W. Bock
Fur Steuerungen mit eingebautem Display konnen die Visualisierungsinformationen
aus dem Programmiersystem in IEC 61131-3 Code umgewandelt und mit dem Co-
degenerator fur das entsprechende Zielsystem ubersetzt werden. Diese Losung kann
mit geringem Aufwand auf beliebige mit CoDeSys programmierbare Gerate portiert
werden.
Anwendungsfalle:
• Steuerprogramm und Visualisierung laufen auf einem Gerat
• Effektiver Datenaustausch ohne Bussystem
Zu (c): Target-Visualisierung Zu (d): Web-Visualisierung
(d) Web-Visualisierung
Optional generiert CoDeSys aus den Visualisierungsinformationen eine XML-
Beschreibung, die zusammen mit einem Java-Applet (Applet Ein in der Program-
miersprache JAVA entwickeltes Programm, welches in Browsern angezeigt werden
kann) auf der Steuerung abgelegt und via TCP/IP auf einem Browser dargestellt wer-
152
Grundlagen der SPS Programmierung /Prozessinformatik Prof. Dr. W. Bock
den kann. Somit stehen die Visualisierungsdaten auf den unterschiedlichsten Plattfor-
men online zur Verfugung.
Anwendungsfalle:
• Verwendung eines mit Web-Servers auf der Steuerungshardware in Verbindung
mit Standard-Browsern
• Basierend auf HTML und Java-Script. Damit konnen auch viele Mobile Gerate
(Smartphones oder Tablet-PCs) verwendet werden.
6.3 Erstellen einer Visualisierung
Zunachst sind Fragen der Hardware und der Kommunikation zu klaren:
• Auswahl der Visualisierungs-Projektvariante
• Klarung der Fragen zur Datenkommunikation
• Kompatibilitat der Komponenten betrachten
• Ziele des Visualisierungsprojekts: z.B. Rezeptsteuerung, Prozessuberwachung, Dia-
gnosetool, usw.
• usw.
153
Impressum
Autor: Prof. Dr. Wolfgang Bock
Herausgegeben durch: Teilprojekt der OTH Amberg-Weiden aus dem Verbundprojekt „OTH mind“ mit der OTH
Regensburg des Bund-Länder-Wettbewerbs „Aufstieg durch Bildung: offene
Hochschulen“.
Kontakt: Hetzenrichter Weg 15, 92637 Weiden in der Oberpfalz
www.oth-aw.de/oth-mind
Copyright: Vervielfachung oder Nachdruck auch auszugsweise zur Veröffentlichung durch Dritte
nur mit ausdrücklicher Zustimmung der Herausgeber/innen.
Hinweis: Diese Publikation wurde im Rahmen des vom Bundesministerium für Bildung und
Forschung (BMBF) geförderten Bund-Länder-Wettbewerbs „Aufstieg durch Bildung: offene
Hochschulen“ erstellt. Die in dieser Publikation dargelegten Inhalte liegen in der
alleinigen Verantwortung der Autor/innen.