159
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 der SPS-Programmierung / Prozessinformatik · Die Lehrveranstaltung ist umfasst auch die Beschreibung von Hard- und Softwarekompo- nenten fur SPSen und einen Ausblick auf

Embed Size (px)

Citation preview

Page 1: Grundlagen der SPS-Programmierung / Prozessinformatik · Die Lehrveranstaltung ist umfasst auch die Beschreibung von Hard- und Softwarekompo- nenten fur SPSen und einen Ausblick auf

Grundlagen der SPS-Programmierung /

Prozessinformatik

Skriptum zum weiterbildenden Kurs im Rahmen des Projekts

OTH mind

2017

Prof. Dr. Wolfgang Bock

OTH mind – BMBF Verbundprojekt

Page 2: Grundlagen der SPS-Programmierung / Prozessinformatik · Die Lehrveranstaltung ist umfasst auch die Beschreibung von Hard- und Softwarekompo- nenten fur SPSen und einen Ausblick auf

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.

Page 3: Grundlagen der SPS-Programmierung / Prozessinformatik · Die Lehrveranstaltung ist umfasst auch die Beschreibung von Hard- und Softwarekompo- nenten fur SPSen und einen Ausblick auf

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

Page 4: Grundlagen der SPS-Programmierung / Prozessinformatik · Die Lehrveranstaltung ist umfasst auch die Beschreibung von Hard- und Softwarekompo- nenten fur SPSen und einen Ausblick auf

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

Page 5: Grundlagen der SPS-Programmierung / Prozessinformatik · Die Lehrveranstaltung ist umfasst auch die Beschreibung von Hard- und Softwarekompo- nenten fur SPSen und einen Ausblick auf

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

Page 6: Grundlagen der SPS-Programmierung / Prozessinformatik · Die Lehrveranstaltung ist umfasst auch die Beschreibung von Hard- und Softwarekompo- nenten fur SPSen und einen Ausblick auf

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

Page 7: Grundlagen der SPS-Programmierung / Prozessinformatik · Die Lehrveranstaltung ist umfasst auch die Beschreibung von Hard- und Softwarekompo- nenten fur SPSen und einen Ausblick auf

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

Page 8: Grundlagen der SPS-Programmierung / Prozessinformatik · Die Lehrveranstaltung ist umfasst auch die Beschreibung von Hard- und Softwarekompo- nenten fur SPSen und einen Ausblick auf

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

Page 9: Grundlagen der SPS-Programmierung / Prozessinformatik · Die Lehrveranstaltung ist umfasst auch die Beschreibung von Hard- und Softwarekompo- nenten fur SPSen und einen Ausblick auf

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

Page 10: Grundlagen der SPS-Programmierung / Prozessinformatik · Die Lehrveranstaltung ist umfasst auch die Beschreibung von Hard- und Softwarekompo- nenten fur SPSen und einen Ausblick auf

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

Page 11: Grundlagen der SPS-Programmierung / Prozessinformatik · Die Lehrveranstaltung ist umfasst auch die Beschreibung von Hard- und Softwarekompo- nenten fur SPSen und einen Ausblick auf

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

Page 12: Grundlagen der SPS-Programmierung / Prozessinformatik · Die Lehrveranstaltung ist umfasst auch die Beschreibung von Hard- und Softwarekompo- nenten fur SPSen und einen Ausblick auf

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

Page 13: Grundlagen der SPS-Programmierung / Prozessinformatik · Die Lehrveranstaltung ist umfasst auch die Beschreibung von Hard- und Softwarekompo- nenten fur SPSen und einen Ausblick auf

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

Page 14: Grundlagen der SPS-Programmierung / Prozessinformatik · Die Lehrveranstaltung ist umfasst auch die Beschreibung von Hard- und Softwarekompo- nenten fur SPSen und einen Ausblick auf

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

Page 15: Grundlagen der SPS-Programmierung / Prozessinformatik · Die Lehrveranstaltung ist umfasst auch die Beschreibung von Hard- und Softwarekompo- nenten fur SPSen und einen Ausblick auf

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

Page 16: Grundlagen der SPS-Programmierung / Prozessinformatik · Die Lehrveranstaltung ist umfasst auch die Beschreibung von Hard- und Softwarekompo- nenten fur SPSen und einen Ausblick auf

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

Page 17: Grundlagen der SPS-Programmierung / Prozessinformatik · Die Lehrveranstaltung ist umfasst auch die Beschreibung von Hard- und Softwarekompo- nenten fur SPSen und einen Ausblick auf

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

Page 18: Grundlagen der SPS-Programmierung / Prozessinformatik · Die Lehrveranstaltung ist umfasst auch die Beschreibung von Hard- und Softwarekompo- nenten fur SPSen und einen Ausblick auf

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

Page 19: Grundlagen der SPS-Programmierung / Prozessinformatik · Die Lehrveranstaltung ist umfasst auch die Beschreibung von Hard- und Softwarekompo- nenten fur SPSen und einen Ausblick auf

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

Page 20: Grundlagen der SPS-Programmierung / Prozessinformatik · Die Lehrveranstaltung ist umfasst auch die Beschreibung von Hard- und Softwarekompo- nenten fur SPSen und einen Ausblick auf

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

Page 21: Grundlagen der SPS-Programmierung / Prozessinformatik · Die Lehrveranstaltung ist umfasst auch die Beschreibung von Hard- und Softwarekompo- nenten fur SPSen und einen Ausblick auf

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

Page 22: Grundlagen der SPS-Programmierung / Prozessinformatik · Die Lehrveranstaltung ist umfasst auch die Beschreibung von Hard- und Softwarekompo- nenten fur SPSen und einen Ausblick auf

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

Page 23: Grundlagen der SPS-Programmierung / Prozessinformatik · Die Lehrveranstaltung ist umfasst auch die Beschreibung von Hard- und Softwarekompo- nenten fur SPSen und einen Ausblick auf

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

Page 24: Grundlagen der SPS-Programmierung / Prozessinformatik · Die Lehrveranstaltung ist umfasst auch die Beschreibung von Hard- und Softwarekompo- nenten fur SPSen und einen Ausblick auf

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

Page 25: Grundlagen der SPS-Programmierung / Prozessinformatik · Die Lehrveranstaltung ist umfasst auch die Beschreibung von Hard- und Softwarekompo- nenten fur SPSen und einen Ausblick auf

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

Page 26: Grundlagen der SPS-Programmierung / Prozessinformatik · Die Lehrveranstaltung ist umfasst auch die Beschreibung von Hard- und Softwarekompo- nenten fur SPSen und einen Ausblick auf

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

Page 27: Grundlagen der SPS-Programmierung / Prozessinformatik · Die Lehrveranstaltung ist umfasst auch die Beschreibung von Hard- und Softwarekompo- nenten fur SPSen und einen Ausblick auf

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

Page 28: Grundlagen der SPS-Programmierung / Prozessinformatik · Die Lehrveranstaltung ist umfasst auch die Beschreibung von Hard- und Softwarekompo- nenten fur SPSen und einen Ausblick auf

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

Page 29: Grundlagen der SPS-Programmierung / Prozessinformatik · Die Lehrveranstaltung ist umfasst auch die Beschreibung von Hard- und Softwarekompo- nenten fur SPSen und einen Ausblick auf

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

Page 30: Grundlagen der SPS-Programmierung / Prozessinformatik · Die Lehrveranstaltung ist umfasst auch die Beschreibung von Hard- und Softwarekompo- nenten fur SPSen und einen Ausblick auf

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

Page 31: Grundlagen der SPS-Programmierung / Prozessinformatik · Die Lehrveranstaltung ist umfasst auch die Beschreibung von Hard- und Softwarekompo- nenten fur SPSen und einen Ausblick auf

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

Page 32: Grundlagen der SPS-Programmierung / Prozessinformatik · Die Lehrveranstaltung ist umfasst auch die Beschreibung von Hard- und Softwarekompo- nenten fur SPSen und einen Ausblick auf

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

Page 33: Grundlagen der SPS-Programmierung / Prozessinformatik · Die Lehrveranstaltung ist umfasst auch die Beschreibung von Hard- und Softwarekompo- nenten fur SPSen und einen Ausblick auf

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

Page 34: Grundlagen der SPS-Programmierung / Prozessinformatik · Die Lehrveranstaltung ist umfasst auch die Beschreibung von Hard- und Softwarekompo- nenten fur SPSen und einen Ausblick auf

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

Page 35: Grundlagen der SPS-Programmierung / Prozessinformatik · Die Lehrveranstaltung ist umfasst auch die Beschreibung von Hard- und Softwarekompo- nenten fur SPSen und einen Ausblick auf

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

Page 36: Grundlagen der SPS-Programmierung / Prozessinformatik · Die Lehrveranstaltung ist umfasst auch die Beschreibung von Hard- und Softwarekompo- nenten fur SPSen und einen Ausblick auf

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

Page 37: Grundlagen der SPS-Programmierung / Prozessinformatik · Die Lehrveranstaltung ist umfasst auch die Beschreibung von Hard- und Softwarekompo- nenten fur SPSen und einen Ausblick auf

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

Page 38: Grundlagen der SPS-Programmierung / Prozessinformatik · Die Lehrveranstaltung ist umfasst auch die Beschreibung von Hard- und Softwarekompo- nenten fur SPSen und einen Ausblick auf

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

Page 39: Grundlagen der SPS-Programmierung / Prozessinformatik · Die Lehrveranstaltung ist umfasst auch die Beschreibung von Hard- und Softwarekompo- nenten fur SPSen und einen Ausblick auf

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

Page 40: Grundlagen der SPS-Programmierung / Prozessinformatik · Die Lehrveranstaltung ist umfasst auch die Beschreibung von Hard- und Softwarekompo- nenten fur SPSen und einen Ausblick auf

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

Page 41: Grundlagen der SPS-Programmierung / Prozessinformatik · Die Lehrveranstaltung ist umfasst auch die Beschreibung von Hard- und Softwarekompo- nenten fur SPSen und einen Ausblick auf

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

Page 42: Grundlagen der SPS-Programmierung / Prozessinformatik · Die Lehrveranstaltung ist umfasst auch die Beschreibung von Hard- und Softwarekompo- nenten fur SPSen und einen Ausblick auf

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

Page 43: Grundlagen der SPS-Programmierung / Prozessinformatik · Die Lehrveranstaltung ist umfasst auch die Beschreibung von Hard- und Softwarekompo- nenten fur SPSen und einen Ausblick auf

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

Page 44: Grundlagen der SPS-Programmierung / Prozessinformatik · Die Lehrveranstaltung ist umfasst auch die Beschreibung von Hard- und Softwarekompo- nenten fur SPSen und einen Ausblick auf

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

Page 45: Grundlagen der SPS-Programmierung / Prozessinformatik · Die Lehrveranstaltung ist umfasst auch die Beschreibung von Hard- und Softwarekompo- nenten fur SPSen und einen Ausblick auf

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

Page 46: Grundlagen der SPS-Programmierung / Prozessinformatik · Die Lehrveranstaltung ist umfasst auch die Beschreibung von Hard- und Softwarekompo- nenten fur SPSen und einen Ausblick auf

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

Page 47: Grundlagen der SPS-Programmierung / Prozessinformatik · Die Lehrveranstaltung ist umfasst auch die Beschreibung von Hard- und Softwarekompo- nenten fur SPSen und einen Ausblick auf

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

Page 48: Grundlagen der SPS-Programmierung / Prozessinformatik · Die Lehrveranstaltung ist umfasst auch die Beschreibung von Hard- und Softwarekompo- nenten fur SPSen und einen Ausblick auf

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

Page 49: Grundlagen der SPS-Programmierung / Prozessinformatik · Die Lehrveranstaltung ist umfasst auch die Beschreibung von Hard- und Softwarekompo- nenten fur SPSen und einen Ausblick auf

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

Page 50: Grundlagen der SPS-Programmierung / Prozessinformatik · Die Lehrveranstaltung ist umfasst auch die Beschreibung von Hard- und Softwarekompo- nenten fur SPSen und einen Ausblick auf

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

Page 51: Grundlagen der SPS-Programmierung / Prozessinformatik · Die Lehrveranstaltung ist umfasst auch die Beschreibung von Hard- und Softwarekompo- nenten fur SPSen und einen Ausblick auf

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

Page 52: Grundlagen der SPS-Programmierung / Prozessinformatik · Die Lehrveranstaltung ist umfasst auch die Beschreibung von Hard- und Softwarekompo- nenten fur SPSen und einen Ausblick auf

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

Page 53: Grundlagen der SPS-Programmierung / Prozessinformatik · Die Lehrveranstaltung ist umfasst auch die Beschreibung von Hard- und Softwarekompo- nenten fur SPSen und einen Ausblick auf

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

Page 54: Grundlagen der SPS-Programmierung / Prozessinformatik · Die Lehrveranstaltung ist umfasst auch die Beschreibung von Hard- und Softwarekompo- nenten fur SPSen und einen Ausblick auf

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

Page 55: Grundlagen der SPS-Programmierung / Prozessinformatik · Die Lehrveranstaltung ist umfasst auch die Beschreibung von Hard- und Softwarekompo- nenten fur SPSen und einen Ausblick auf

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

Page 56: Grundlagen der SPS-Programmierung / Prozessinformatik · Die Lehrveranstaltung ist umfasst auch die Beschreibung von Hard- und Softwarekompo- nenten fur SPSen und einen Ausblick auf

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

Page 57: Grundlagen der SPS-Programmierung / Prozessinformatik · Die Lehrveranstaltung ist umfasst auch die Beschreibung von Hard- und Softwarekompo- nenten fur SPSen und einen Ausblick auf

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

Page 58: Grundlagen der SPS-Programmierung / Prozessinformatik · Die Lehrveranstaltung ist umfasst auch die Beschreibung von Hard- und Softwarekompo- nenten fur SPSen und einen Ausblick auf

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

Page 59: Grundlagen der SPS-Programmierung / Prozessinformatik · Die Lehrveranstaltung ist umfasst auch die Beschreibung von Hard- und Softwarekompo- nenten fur SPSen und einen Ausblick auf

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

Page 60: Grundlagen der SPS-Programmierung / Prozessinformatik · Die Lehrveranstaltung ist umfasst auch die Beschreibung von Hard- und Softwarekompo- nenten fur SPSen und einen Ausblick auf

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

Page 61: Grundlagen der SPS-Programmierung / Prozessinformatik · Die Lehrveranstaltung ist umfasst auch die Beschreibung von Hard- und Softwarekompo- nenten fur SPSen und einen Ausblick auf

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

Page 62: Grundlagen der SPS-Programmierung / Prozessinformatik · Die Lehrveranstaltung ist umfasst auch die Beschreibung von Hard- und Softwarekompo- nenten fur SPSen und einen Ausblick auf

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

Page 63: Grundlagen der SPS-Programmierung / Prozessinformatik · Die Lehrveranstaltung ist umfasst auch die Beschreibung von Hard- und Softwarekompo- nenten fur SPSen und einen Ausblick auf

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

Page 64: Grundlagen der SPS-Programmierung / Prozessinformatik · Die Lehrveranstaltung ist umfasst auch die Beschreibung von Hard- und Softwarekompo- nenten fur SPSen und einen Ausblick auf

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

Page 65: Grundlagen der SPS-Programmierung / Prozessinformatik · Die Lehrveranstaltung ist umfasst auch die Beschreibung von Hard- und Softwarekompo- nenten fur SPSen und einen Ausblick auf

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

Page 66: Grundlagen der SPS-Programmierung / Prozessinformatik · Die Lehrveranstaltung ist umfasst auch die Beschreibung von Hard- und Softwarekompo- nenten fur SPSen und einen Ausblick auf

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

Page 67: Grundlagen der SPS-Programmierung / Prozessinformatik · Die Lehrveranstaltung ist umfasst auch die Beschreibung von Hard- und Softwarekompo- nenten fur SPSen und einen Ausblick auf

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

Page 68: Grundlagen der SPS-Programmierung / Prozessinformatik · Die Lehrveranstaltung ist umfasst auch die Beschreibung von Hard- und Softwarekompo- nenten fur SPSen und einen Ausblick auf

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

Page 69: Grundlagen der SPS-Programmierung / Prozessinformatik · Die Lehrveranstaltung ist umfasst auch die Beschreibung von Hard- und Softwarekompo- nenten fur SPSen und einen Ausblick auf

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

Page 70: Grundlagen der SPS-Programmierung / Prozessinformatik · Die Lehrveranstaltung ist umfasst auch die Beschreibung von Hard- und Softwarekompo- nenten fur SPSen und einen Ausblick auf

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

Page 71: Grundlagen der SPS-Programmierung / Prozessinformatik · Die Lehrveranstaltung ist umfasst auch die Beschreibung von Hard- und Softwarekompo- nenten fur SPSen und einen Ausblick auf

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

Page 72: Grundlagen der SPS-Programmierung / Prozessinformatik · Die Lehrveranstaltung ist umfasst auch die Beschreibung von Hard- und Softwarekompo- nenten fur SPSen und einen Ausblick auf

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

Page 73: Grundlagen der SPS-Programmierung / Prozessinformatik · Die Lehrveranstaltung ist umfasst auch die Beschreibung von Hard- und Softwarekompo- nenten fur SPSen und einen Ausblick auf

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

Page 74: Grundlagen der SPS-Programmierung / Prozessinformatik · Die Lehrveranstaltung ist umfasst auch die Beschreibung von Hard- und Softwarekompo- nenten fur SPSen und einen Ausblick auf

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

Page 75: Grundlagen der SPS-Programmierung / Prozessinformatik · Die Lehrveranstaltung ist umfasst auch die Beschreibung von Hard- und Softwarekompo- nenten fur SPSen und einen Ausblick auf

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

Page 76: Grundlagen der SPS-Programmierung / Prozessinformatik · Die Lehrveranstaltung ist umfasst auch die Beschreibung von Hard- und Softwarekompo- nenten fur SPSen und einen Ausblick auf

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

Page 77: Grundlagen der SPS-Programmierung / Prozessinformatik · Die Lehrveranstaltung ist umfasst auch die Beschreibung von Hard- und Softwarekompo- nenten fur SPSen und einen Ausblick auf

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

Page 78: Grundlagen der SPS-Programmierung / Prozessinformatik · Die Lehrveranstaltung ist umfasst auch die Beschreibung von Hard- und Softwarekompo- nenten fur SPSen und einen Ausblick auf

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

Page 79: Grundlagen der SPS-Programmierung / Prozessinformatik · Die Lehrveranstaltung ist umfasst auch die Beschreibung von Hard- und Softwarekompo- nenten fur SPSen und einen Ausblick auf

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

Page 80: Grundlagen der SPS-Programmierung / Prozessinformatik · Die Lehrveranstaltung ist umfasst auch die Beschreibung von Hard- und Softwarekompo- nenten fur SPSen und einen Ausblick auf

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

Page 81: Grundlagen der SPS-Programmierung / Prozessinformatik · Die Lehrveranstaltung ist umfasst auch die Beschreibung von Hard- und Softwarekompo- nenten fur SPSen und einen Ausblick auf

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

Page 82: Grundlagen der SPS-Programmierung / Prozessinformatik · Die Lehrveranstaltung ist umfasst auch die Beschreibung von Hard- und Softwarekompo- nenten fur SPSen und einen Ausblick auf

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

Page 83: Grundlagen der SPS-Programmierung / Prozessinformatik · Die Lehrveranstaltung ist umfasst auch die Beschreibung von Hard- und Softwarekompo- nenten fur SPSen und einen Ausblick auf

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

Page 84: Grundlagen der SPS-Programmierung / Prozessinformatik · Die Lehrveranstaltung ist umfasst auch die Beschreibung von Hard- und Softwarekompo- nenten fur SPSen und einen Ausblick auf

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

Page 85: Grundlagen der SPS-Programmierung / Prozessinformatik · Die Lehrveranstaltung ist umfasst auch die Beschreibung von Hard- und Softwarekompo- nenten fur SPSen und einen Ausblick auf

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

Page 86: Grundlagen der SPS-Programmierung / Prozessinformatik · Die Lehrveranstaltung ist umfasst auch die Beschreibung von Hard- und Softwarekompo- nenten fur SPSen und einen Ausblick auf

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

Page 87: Grundlagen der SPS-Programmierung / Prozessinformatik · Die Lehrveranstaltung ist umfasst auch die Beschreibung von Hard- und Softwarekompo- nenten fur SPSen und einen Ausblick auf

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

Page 88: Grundlagen der SPS-Programmierung / Prozessinformatik · Die Lehrveranstaltung ist umfasst auch die Beschreibung von Hard- und Softwarekompo- nenten fur SPSen und einen Ausblick auf

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

Page 89: Grundlagen der SPS-Programmierung / Prozessinformatik · Die Lehrveranstaltung ist umfasst auch die Beschreibung von Hard- und Softwarekompo- nenten fur SPSen und einen Ausblick auf

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

Page 90: Grundlagen der SPS-Programmierung / Prozessinformatik · Die Lehrveranstaltung ist umfasst auch die Beschreibung von Hard- und Softwarekompo- nenten fur SPSen und einen Ausblick auf

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

Page 91: Grundlagen der SPS-Programmierung / Prozessinformatik · Die Lehrveranstaltung ist umfasst auch die Beschreibung von Hard- und Softwarekompo- nenten fur SPSen und einen Ausblick auf

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

Page 92: Grundlagen der SPS-Programmierung / Prozessinformatik · Die Lehrveranstaltung ist umfasst auch die Beschreibung von Hard- und Softwarekompo- nenten fur SPSen und einen Ausblick auf

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

Page 93: Grundlagen der SPS-Programmierung / Prozessinformatik · Die Lehrveranstaltung ist umfasst auch die Beschreibung von Hard- und Softwarekompo- nenten fur SPSen und einen Ausblick auf

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

Page 94: Grundlagen der SPS-Programmierung / Prozessinformatik · Die Lehrveranstaltung ist umfasst auch die Beschreibung von Hard- und Softwarekompo- nenten fur SPSen und einen Ausblick auf

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

Page 95: Grundlagen der SPS-Programmierung / Prozessinformatik · Die Lehrveranstaltung ist umfasst auch die Beschreibung von Hard- und Softwarekompo- nenten fur SPSen und einen Ausblick auf

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

Page 96: Grundlagen der SPS-Programmierung / Prozessinformatik · Die Lehrveranstaltung ist umfasst auch die Beschreibung von Hard- und Softwarekompo- nenten fur SPSen und einen Ausblick auf

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

Page 97: Grundlagen der SPS-Programmierung / Prozessinformatik · Die Lehrveranstaltung ist umfasst auch die Beschreibung von Hard- und Softwarekompo- nenten fur SPSen und einen Ausblick auf

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

Page 98: Grundlagen der SPS-Programmierung / Prozessinformatik · Die Lehrveranstaltung ist umfasst auch die Beschreibung von Hard- und Softwarekompo- nenten fur SPSen und einen Ausblick auf

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

Page 99: Grundlagen der SPS-Programmierung / Prozessinformatik · Die Lehrveranstaltung ist umfasst auch die Beschreibung von Hard- und Softwarekompo- nenten fur SPSen und einen Ausblick auf

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

Page 100: Grundlagen der SPS-Programmierung / Prozessinformatik · Die Lehrveranstaltung ist umfasst auch die Beschreibung von Hard- und Softwarekompo- nenten fur SPSen und einen Ausblick auf

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

Page 101: Grundlagen der SPS-Programmierung / Prozessinformatik · Die Lehrveranstaltung ist umfasst auch die Beschreibung von Hard- und Softwarekompo- nenten fur SPSen und einen Ausblick auf

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

Page 102: Grundlagen der SPS-Programmierung / Prozessinformatik · Die Lehrveranstaltung ist umfasst auch die Beschreibung von Hard- und Softwarekompo- nenten fur SPSen und einen Ausblick auf

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

Page 103: Grundlagen der SPS-Programmierung / Prozessinformatik · Die Lehrveranstaltung ist umfasst auch die Beschreibung von Hard- und Softwarekompo- nenten fur SPSen und einen Ausblick auf

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

Page 104: Grundlagen der SPS-Programmierung / Prozessinformatik · Die Lehrveranstaltung ist umfasst auch die Beschreibung von Hard- und Softwarekompo- nenten fur SPSen und einen Ausblick auf

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

Page 105: Grundlagen der SPS-Programmierung / Prozessinformatik · Die Lehrveranstaltung ist umfasst auch die Beschreibung von Hard- und Softwarekompo- nenten fur SPSen und einen Ausblick auf

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

Page 106: Grundlagen der SPS-Programmierung / Prozessinformatik · Die Lehrveranstaltung ist umfasst auch die Beschreibung von Hard- und Softwarekompo- nenten fur SPSen und einen Ausblick auf

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

Page 107: Grundlagen der SPS-Programmierung / Prozessinformatik · Die Lehrveranstaltung ist umfasst auch die Beschreibung von Hard- und Softwarekompo- nenten fur SPSen und einen Ausblick auf

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

Page 108: Grundlagen der SPS-Programmierung / Prozessinformatik · Die Lehrveranstaltung ist umfasst auch die Beschreibung von Hard- und Softwarekompo- nenten fur SPSen und einen Ausblick auf

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

Page 109: Grundlagen der SPS-Programmierung / Prozessinformatik · Die Lehrveranstaltung ist umfasst auch die Beschreibung von Hard- und Softwarekompo- nenten fur SPSen und einen Ausblick auf

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

Page 110: Grundlagen der SPS-Programmierung / Prozessinformatik · Die Lehrveranstaltung ist umfasst auch die Beschreibung von Hard- und Softwarekompo- nenten fur SPSen und einen Ausblick auf

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

Page 111: Grundlagen der SPS-Programmierung / Prozessinformatik · Die Lehrveranstaltung ist umfasst auch die Beschreibung von Hard- und Softwarekompo- nenten fur SPSen und einen Ausblick auf

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

Page 112: Grundlagen der SPS-Programmierung / Prozessinformatik · Die Lehrveranstaltung ist umfasst auch die Beschreibung von Hard- und Softwarekompo- nenten fur SPSen und einen Ausblick auf

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

Page 113: Grundlagen der SPS-Programmierung / Prozessinformatik · Die Lehrveranstaltung ist umfasst auch die Beschreibung von Hard- und Softwarekompo- nenten fur SPSen und einen Ausblick auf

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

Page 114: Grundlagen der SPS-Programmierung / Prozessinformatik · Die Lehrveranstaltung ist umfasst auch die Beschreibung von Hard- und Softwarekompo- nenten fur SPSen und einen Ausblick auf

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

Page 115: Grundlagen der SPS-Programmierung / Prozessinformatik · Die Lehrveranstaltung ist umfasst auch die Beschreibung von Hard- und Softwarekompo- nenten fur SPSen und einen Ausblick auf

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

Page 116: Grundlagen der SPS-Programmierung / Prozessinformatik · Die Lehrveranstaltung ist umfasst auch die Beschreibung von Hard- und Softwarekompo- nenten fur SPSen und einen Ausblick auf

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

Page 117: Grundlagen der SPS-Programmierung / Prozessinformatik · Die Lehrveranstaltung ist umfasst auch die Beschreibung von Hard- und Softwarekompo- nenten fur SPSen und einen Ausblick auf

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

Page 118: Grundlagen der SPS-Programmierung / Prozessinformatik · Die Lehrveranstaltung ist umfasst auch die Beschreibung von Hard- und Softwarekompo- nenten fur SPSen und einen Ausblick auf

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

Page 119: Grundlagen der SPS-Programmierung / Prozessinformatik · Die Lehrveranstaltung ist umfasst auch die Beschreibung von Hard- und Softwarekompo- nenten fur SPSen und einen Ausblick auf

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

Page 120: Grundlagen der SPS-Programmierung / Prozessinformatik · Die Lehrveranstaltung ist umfasst auch die Beschreibung von Hard- und Softwarekompo- nenten fur SPSen und einen Ausblick auf

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

Page 121: Grundlagen der SPS-Programmierung / Prozessinformatik · Die Lehrveranstaltung ist umfasst auch die Beschreibung von Hard- und Softwarekompo- nenten fur SPSen und einen Ausblick auf

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

Page 122: Grundlagen der SPS-Programmierung / Prozessinformatik · Die Lehrveranstaltung ist umfasst auch die Beschreibung von Hard- und Softwarekompo- nenten fur SPSen und einen Ausblick auf

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

Page 123: Grundlagen der SPS-Programmierung / Prozessinformatik · Die Lehrveranstaltung ist umfasst auch die Beschreibung von Hard- und Softwarekompo- nenten fur SPSen und einen Ausblick auf

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

Page 124: Grundlagen der SPS-Programmierung / Prozessinformatik · Die Lehrveranstaltung ist umfasst auch die Beschreibung von Hard- und Softwarekompo- nenten fur SPSen und einen Ausblick auf

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

Page 125: Grundlagen der SPS-Programmierung / Prozessinformatik · Die Lehrveranstaltung ist umfasst auch die Beschreibung von Hard- und Softwarekompo- nenten fur SPSen und einen Ausblick auf

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

Page 126: Grundlagen der SPS-Programmierung / Prozessinformatik · Die Lehrveranstaltung ist umfasst auch die Beschreibung von Hard- und Softwarekompo- nenten fur SPSen und einen Ausblick auf

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

Page 127: Grundlagen der SPS-Programmierung / Prozessinformatik · Die Lehrveranstaltung ist umfasst auch die Beschreibung von Hard- und Softwarekompo- nenten fur SPSen und einen Ausblick auf

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

Page 128: Grundlagen der SPS-Programmierung / Prozessinformatik · Die Lehrveranstaltung ist umfasst auch die Beschreibung von Hard- und Softwarekompo- nenten fur SPSen und einen Ausblick auf

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

Page 129: Grundlagen der SPS-Programmierung / Prozessinformatik · Die Lehrveranstaltung ist umfasst auch die Beschreibung von Hard- und Softwarekompo- nenten fur SPSen und einen Ausblick auf

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

Page 130: Grundlagen der SPS-Programmierung / Prozessinformatik · Die Lehrveranstaltung ist umfasst auch die Beschreibung von Hard- und Softwarekompo- nenten fur SPSen und einen Ausblick auf

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

Page 131: Grundlagen der SPS-Programmierung / Prozessinformatik · Die Lehrveranstaltung ist umfasst auch die Beschreibung von Hard- und Softwarekompo- nenten fur SPSen und einen Ausblick auf

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

Page 132: Grundlagen der SPS-Programmierung / Prozessinformatik · Die Lehrveranstaltung ist umfasst auch die Beschreibung von Hard- und Softwarekompo- nenten fur SPSen und einen Ausblick auf

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

Page 133: Grundlagen der SPS-Programmierung / Prozessinformatik · Die Lehrveranstaltung ist umfasst auch die Beschreibung von Hard- und Softwarekompo- nenten fur SPSen und einen Ausblick auf

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

Page 134: Grundlagen der SPS-Programmierung / Prozessinformatik · Die Lehrveranstaltung ist umfasst auch die Beschreibung von Hard- und Softwarekompo- nenten fur SPSen und einen Ausblick auf

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

Page 135: Grundlagen der SPS-Programmierung / Prozessinformatik · Die Lehrveranstaltung ist umfasst auch die Beschreibung von Hard- und Softwarekompo- nenten fur SPSen und einen Ausblick auf

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

Page 136: Grundlagen der SPS-Programmierung / Prozessinformatik · Die Lehrveranstaltung ist umfasst auch die Beschreibung von Hard- und Softwarekompo- nenten fur SPSen und einen Ausblick auf

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

Page 137: Grundlagen der SPS-Programmierung / Prozessinformatik · Die Lehrveranstaltung ist umfasst auch die Beschreibung von Hard- und Softwarekompo- nenten fur SPSen und einen Ausblick auf

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

Page 138: Grundlagen der SPS-Programmierung / Prozessinformatik · Die Lehrveranstaltung ist umfasst auch die Beschreibung von Hard- und Softwarekompo- nenten fur SPSen und einen Ausblick auf

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

Page 139: Grundlagen der SPS-Programmierung / Prozessinformatik · Die Lehrveranstaltung ist umfasst auch die Beschreibung von Hard- und Softwarekompo- nenten fur SPSen und einen Ausblick auf

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

Page 140: Grundlagen der SPS-Programmierung / Prozessinformatik · Die Lehrveranstaltung ist umfasst auch die Beschreibung von Hard- und Softwarekompo- nenten fur SPSen und einen Ausblick auf

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

Page 141: Grundlagen der SPS-Programmierung / Prozessinformatik · Die Lehrveranstaltung ist umfasst auch die Beschreibung von Hard- und Softwarekompo- nenten fur SPSen und einen Ausblick auf

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

Page 142: Grundlagen der SPS-Programmierung / Prozessinformatik · Die Lehrveranstaltung ist umfasst auch die Beschreibung von Hard- und Softwarekompo- nenten fur SPSen und einen Ausblick auf

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

Page 143: Grundlagen der SPS-Programmierung / Prozessinformatik · Die Lehrveranstaltung ist umfasst auch die Beschreibung von Hard- und Softwarekompo- nenten fur SPSen und einen Ausblick auf

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

Page 144: Grundlagen der SPS-Programmierung / Prozessinformatik · Die Lehrveranstaltung ist umfasst auch die Beschreibung von Hard- und Softwarekompo- nenten fur SPSen und einen Ausblick auf

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

Page 145: Grundlagen der SPS-Programmierung / Prozessinformatik · Die Lehrveranstaltung ist umfasst auch die Beschreibung von Hard- und Softwarekompo- nenten fur SPSen und einen Ausblick auf

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

Page 146: Grundlagen der SPS-Programmierung / Prozessinformatik · Die Lehrveranstaltung ist umfasst auch die Beschreibung von Hard- und Softwarekompo- nenten fur SPSen und einen Ausblick auf

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

Page 147: Grundlagen der SPS-Programmierung / Prozessinformatik · Die Lehrveranstaltung ist umfasst auch die Beschreibung von Hard- und Softwarekompo- nenten fur SPSen und einen Ausblick auf

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

Page 148: Grundlagen der SPS-Programmierung / Prozessinformatik · Die Lehrveranstaltung ist umfasst auch die Beschreibung von Hard- und Softwarekompo- nenten fur SPSen und einen Ausblick auf

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

Page 149: Grundlagen der SPS-Programmierung / Prozessinformatik · Die Lehrveranstaltung ist umfasst auch die Beschreibung von Hard- und Softwarekompo- nenten fur SPSen und einen Ausblick auf

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

Page 150: Grundlagen der SPS-Programmierung / Prozessinformatik · Die Lehrveranstaltung ist umfasst auch die Beschreibung von Hard- und Softwarekompo- nenten fur SPSen und einen Ausblick auf

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

Page 151: Grundlagen der SPS-Programmierung / Prozessinformatik · Die Lehrveranstaltung ist umfasst auch die Beschreibung von Hard- und Softwarekompo- nenten fur SPSen und einen Ausblick auf

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

Page 152: Grundlagen der SPS-Programmierung / Prozessinformatik · Die Lehrveranstaltung ist umfasst auch die Beschreibung von Hard- und Softwarekompo- nenten fur SPSen und einen Ausblick auf

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

Page 153: Grundlagen der SPS-Programmierung / Prozessinformatik · Die Lehrveranstaltung ist umfasst auch die Beschreibung von Hard- und Softwarekompo- nenten fur SPSen und einen Ausblick auf

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

Page 154: Grundlagen der SPS-Programmierung / Prozessinformatik · Die Lehrveranstaltung ist umfasst auch die Beschreibung von Hard- und Softwarekompo- nenten fur SPSen und einen Ausblick auf

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

Page 155: Grundlagen der SPS-Programmierung / Prozessinformatik · Die Lehrveranstaltung ist umfasst auch die Beschreibung von Hard- und Softwarekompo- nenten fur SPSen und einen Ausblick auf

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

Page 156: Grundlagen der SPS-Programmierung / Prozessinformatik · Die Lehrveranstaltung ist umfasst auch die Beschreibung von Hard- und Softwarekompo- nenten fur SPSen und einen Ausblick auf

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

Page 157: Grundlagen der SPS-Programmierung / Prozessinformatik · Die Lehrveranstaltung ist umfasst auch die Beschreibung von Hard- und Softwarekompo- nenten fur SPSen und einen Ausblick auf

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

Page 158: Grundlagen der SPS-Programmierung / Prozessinformatik · Die Lehrveranstaltung ist umfasst auch die Beschreibung von Hard- und Softwarekompo- nenten fur SPSen und einen Ausblick auf

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

Page 159: Grundlagen der SPS-Programmierung / Prozessinformatik · Die Lehrveranstaltung ist umfasst auch die Beschreibung von Hard- und Softwarekompo- nenten fur SPSen und einen Ausblick auf

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

[email protected]

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.