• Keine Ergebnisse gefunden

Einstieg in die SPS-Programmierung. Strukturierte Programmierung

N/A
N/A
Protected

Academic year: 2022

Aktie "Einstieg in die SPS-Programmierung. Strukturierte Programmierung"

Copied!
19
0
0

Wird geladen.... (Jetzt Volltext ansehen)

Volltext

(1)

Strukturierte Programmierung

(2)

Die Programmierung industrieller Automatisierungssysteme ist nach IEC 61131 genormt. Die IEC 61131 ist Grundlage der Programmierung nicht nur von klassischen SPSen, sondern auch von Motion-Control-Systeme, Prozessleitsystemen und PC-basierten Steuerungen und wird ständig weiterentwickelt und ergänzt, z. B. zurzeit um Werkzeuge zur objekt-orientierte SPS-Programmierung .

Auch wenn nicht alle Automatisierungssysteme genau gleich zu programmieren sind, bieten die meisten Systeme doch die Möglichkeit, in den von der Norm vorgeschlagenen Programmiersprachen zu programmieren. Auch die Architektur der Programmiersysteme ist in den meisten Systemen ähnlich und die Möglichkeiten zur objektorientierten Strukturierung der Software sind weitgehend gleich. Damit kann die Software transparent und wartungsfreundlich gestaltet und Module können projektübergreifend verwendet werden, was enorme Synergieeffekte und Kostenersparnis hervorruft.

Steuerungskonfiguration und Ressourcen

(3)

In der Steuerungskonfiguration wird die Hardwarestruktur der SPS der Programmierumgebung bekannt gemacht.

Die Steuerungskonfiguration besteht aus mehreren Ressourcen. Unter Ressourcen versteht man die Einsteckkarten des Steuerungssystems, auf die die Software zugreift, also z.B. CPUs, E/A-Karten, Schnittstellenkarten zur Feldbusankopplung usw. In den meisten Programmiersystemen erfolgt die Steuerungskonfiguration menügesteuert, d.h. man kann die gewünschten Einsteckkarten aus einem Menükatalog auswählen und dann per Drag & Drop an angestrebten Steckplatz in der Hardwarekonfiguration ziehen.

Steuerungskonfiguration und Ressourcen

Hardwarekonfiguration Hardwarekatalog

Drag&Drop

(4)

Bei STEP 7 unterscheidet man Codebausteine für das ausführbare Steuerungsprogramm und Datenbausteine, die entweder reine Datensammlungen (z.B. Tabellen, Messwerte) sind oder die die zugehörigen Daten von Funktionsbausteinen FB enthalten.

Programmorganisationseinheiten (POE) in STEP 7

Wichtig für die Auswahlentscheidung zwischen FB und FC ist:

Ein FB muss verwendet werden, wenn ein speicherndes Verhalten einer bausteininternen

Variablen erforderlich ist!

(5)

Zur Vermeidung von Doppeltbelegungen und für die Bibliotheksfähigkeit (Wieder-Verwendbarkeit) von Bausteinen werden in Funktionen bzw. Funktionsbausteinen keine globalen Variablen (bei STEP7 SPS-Operanden) verwendet.

Alle in einem Baustein verwendeten Variablen werden strikt deklariert. Dies gilt auch für Zeit- und Zählvariablen.

Mit diesen Regeln werden die Intentionen der IEC 61131-3 erfüllt

Nur, wer bereits vom ersten Steuerungsprogramm an die Regeln einhält, kann komplexere Automatisierungsaufgaben in der Schule lösen.

Das Steuerungsprogramm wird in Bausteine (FB´s bzw FC´s) strukturiert, welche vom OB1 aus aufgerufen werden.

Im OB1 werden die erstellten Bausteine verschaltet. Dazu müssen lokale Variablen im OB1 deklariert werden.

Entwurf eines Steuerungsprogramms unabhängig von der Programmiersoftware.

Der Entwurf von Steuerungsprogramme sollte soweit wie möglich Hersteller unabhängig sein.

(6)

Programmorganisationseinheiten (POE) in STEP 7

Organisationsbausteine

Die in der DIN EN 61131-3 vorgesehenen Tasks werden bei STEP 7 in Form von Organisationsbausteinen (OBs) zur Verfügung gestellt. Sie stellen die Schnittstelle zwischen Betriebssystem und Anwender-

programm dar.

Aufruf:

Organisationsbausteine können nicht von anderen Bausteinen aufgerufen werden, sondern nur durch das Betriebssystem bei Eintreten bestimmter Situationen, die sofort eine Unterbrechung des sonst endlos ausgeführten OB1 veranlassen. Der OB1 (Hauptprogramm) organisiert durch den Aufruf anderer Code- Bausteine (FBs, FCs) das zyklische Programm. Das Hauptprogramm arbeitet alle von ihm aufgerufenen Funktionen zyklisch ab und zwar so schnell wie es die SPS-Hardware zulässt.

Priorität:

Organisationsbausteine werden entsprechend der ihnen zugeordneten Priorität im Aufruf-Fall bearbeitet (1 = niedrigste und 29 = höchste Priorität). Der OB1 hat die niedrigste Priorität 1. Jeder andere OB kann daher das Hauptprogramm unterbrechen und sein eigenes Programm bearbeiten. Anschließend wird die Bearbeitung des OB1 an der Unterbrechungsstelle fortgesetzt. Die Einstellung der Priorität ist mit

Defaultwerten für die einzelnen Obs vorgegeben.

(7)

Programmorganisationseinheiten (POE) in STEP 7

Strukturierte Anwenderprogrammen enthalten auch Programmroutinen mit häufig

verwendeten mathematischen und verknüpfungslogischen Funktionen, zu deren Aufnahme der Bausteintyp Funktion gedacht ist. Jede Funktion ermittelt einen Funktionswert, den sog.

Rückgabewert. Der die Funktion aufrufende Code-Baustein erhält den Rückgabewert als Antwort auf seinen Aufruf. Als Ergänzung zur Norm DIN EN 61131-3 sind beim Code- Bausteintyp Funktion auch noch mehrere Ausgangs-Bausteinparameter deklarierbar. Soll normgerecht programmiert werden, so ist darauf zu achten, dass die Funktion tatsächlich nur den Rückgabewert RET_VAL an den aufrufenden Baustein übergibt. Soll die Funktion ohne Funktionswertausgabe gehandhabt werden, müssen die Ausgangs-Bausteinparameter deklariert werden.

Der Code-Bausteintyp Funktion hat folgende Eigenschaften:

• Parametrierbarkeit, d.h. er verfügt über Bausteinparameter, die als Schnittstellen nach außen zur Übergabe von Daten verwendet werden können.

• Temporäre Lokaldatenverwendung, d.h. es können temporäre Variablen deklariert werden, die nur bausteinintern gültig sind. Temporär bedeutet hier die Eigenschaft, dass diese Daten nur innerhalb eines Bausteinaufrufes erhalten bleiben und verwendet

werden können (Zwischenergebnisfunktion)

Funktionen

Eine Funktion hat im Unterschied zu einem Funktionsbaustein kein Gedächtnis. Das heißt es ist in

einer Funktion nicht erlaubt, interne Zwischenwerte zu speichern

(8)

Programmorganisationseinheiten (POE) in STEP 7

Funktionsbaustein

In strukturierten Anwenderprogrammen stehen in Funktionsbausteinen die aufgabenspezifischen und möglichst bibliotheksfähig geschriebenen Unterprogramme. Zu diesem Code-Bausteintyp gehört immer ein Instanz-

Datenbaustein (DB), damit dem Funktionsbaustein bei jedem Aufruf ein eigener Speicherbereich zur Aufnahme der speziellen Daten zugewiesen werden kann. Dadurch können Funktionsbausteine bei jedem Aufruf mit unter- schiedlichen Daten versorgt werden.

Der Code-Bausteintyp Funktionsbaustein hat folgende Eigenschaften:

Parametrierbarkeit, d.h. er verfügt über Bausteinparameter, die als Schnittstellen nach außen zur Übergabe von Daten verwendet werden können.

Statische Lokaldatenspeicherung, d.h. es können statische Variablen deklariert werden, die nur bausteinintern gültig sind. Statisch bedeutet hier die Eigenschaft, dass diese Daten über den aktuellen Bausteinaufruf hinaus gespeichert werden (Gedächtnisfunktion).

Temporäre Lokaldatenverwendung, d.h. es können temporäre Variablen deklariert werden, die nur bausteinintern gültig sind. Temporär bedeutet hier die Eigenschaft, dass diese Daten nur innerhalb eines Bausteinaufrufes erhalten bleiben und verwendet werden können (Zwischenergebnisfunktion)

Instanzdatenbausteine stellen die Instanzvariablen von Funktionsbausteinen dar und beinhalten demnach alle Ein- und Ausgangsvariablen des Funktionsbausteins und auch die lokalen statischen Bausteinvariablen. Für

jeden Funktionsbaustein muss ein Instanz-Datenbaustein erzeugt werden.

Enthält Instanz- Datenbaustein

(9)

Programmorganisationseinheiten (POE) in STEP 7

Datenbausteine

Datenbausteine sind Datenbereiche zur Speicherung von Anwenderdaten mit denen das Anwender- programm arbeitet. Auf die gespeicherten Daten eines Datenbausteines kann über Bit-, Byte-, Wort- und Doppelwortoperationen zugegriffen werden. Der Zugriff kann symbolisch oder absolut erfolgen.

Es werden zwei Arten von Datenbausteinen unterschieden:

Instanz-Datenbausteine

sind Funktionsbausteinen FB fest zugeordnet. In den Instanz-DBs stehen die Daten der statischen Lokalvariablen ( statische Lokaldaten). Beim Erstellen eines Funktionsbausteines wird der Instanz-DB gleich mit erzeugt und muss also nicht extra programmiert werden.

Global-Datenbausteine

enthalten Informationen, auf die von allen Codebausteinen des Anwender- programms zugegriffen werden kann. Global-DBs müssen vom Anwender programmiert werden.

Systemfunktionsbausteine SFB und Systemfunktionen SFC sind vorgefertigte, im Betriebssystem der CPU bereits integrierte Code-Bausteine.

Systemfunktionen

(10)

Lineares Programm

Das gesamte Programm befindet sich im zyklisch bearbeitete Organisationsbaustein Main[OB1]. Die CPU arbeitet die Anweisungen der Reihe nach ab und beginnt wieder von vorne.

Programmstrukturen (1)

Main[OB1]

(11)

Gegliedertes Programm

Aufteilung des Programms auf mehrere Bausteine, die Teilfunktionen ausführen. Der Organisations- baustein OB1 enthält nur die Baustein-Aufrufe, nach deren Reihenfolge die Bausteine bearbeitet werden. Gegliederte Programme sind übersichtlicher als lineare Programme.

Programmstrukturen (2)

Main[OB1]

(12)

Strukturiertes Programm

Strukturierte Programme bestehen aus einem Hauptprogramm und mehreren parametrierbaren Unterprogrammen (Bausteinen). Beim Bausteinaufruf werden den Baustein- Formalparametern die

aktuellen Datenwerte übergeben, mit denen das Programm ablaufen soll. Strukturierte Programme können dieselben Bausteine mehrmals aufrufen und mit verschiedenen Datenwerten ausführen lassen.

Programmstrukturen (3)

Main[OB1]

(13)

Parametrierbarkeit von Code-Bausteinen

Variablenbereiche von S7-Codebausteinen

• Deklaration IN: Eine Eingangsvariable kann innerhalb einer Funktion oder Funktionsbausteins nur abgefragt werden.

• Deklaration OUT: Eine Ausgangsvariable soll innerhalb einer Funktion oder Funktionsbausteins nur beschrieben werden.

• Deklaration IN_OUT: Im Gegensatz zu reinen Eingangsvariablen können Ein- und

Ausgangsvariablen (Durchgangsvariable) in Funktionen oder Funktionsbausteinen verändert und ausgegeben werden.

• Deklaration STAT: Eine interne Zustandsvariable ist zum Abspeichern von Daten über den Zyklus einer Bausteinbearbeitung hinaus vorgesehen (Gedächtnisfunktion). Eine solche Variable heißt statische Lokalvariable und kann nur in einem FB deklariert werden.

• Deklaration TEMP: Eine interne temporäre Variable dient zum Zwischenspeichern

von Ergebnissen innerhalb eines Zyklus der Bausteinbearbeitung und dient zur Datenübergabe zwischen den im OB 1 aufgerufenen Bausteinen.

• Deklaration Return: Beinhaltet den Rückgabewert (RET_VAL) einer Funktion.

Lokale FormalparameterLokale Interne Variablen

(14)

Parametrierbarkeit von Code-Bausteinen

Beispiel für die Deklarationstabelle eines FBs:

Aufruf des parametrierbaren Funktionsbausteins in FUP:

Deklaration Name Typ Anfangswert Kommentar IN

IN IN

Start Stopp TempSchutz

BOOL BOOL BOOL

FALSE TRUE FALSE

OUT Motor BOOL FALSE

STAT MotorEinAus BOOL FALSE

Motorsteuerung EN

Start

Stopp Motor TempSchutz ENO

Motorsteuerung_DB

BOOL BOOL BOOL BOOL

BOOL BOOL Eingangs-

parameter

Ausgangs- parameter

(15)

Bei Bausteinaufrufen sind den Formalparametern (Eingänge, Ausgänge) entsprechende Aktualparameter zuzuordnen.

Bei FBs können die Eingänge und Ausgänge auch unbeschaltet bleiben, das Programm verwendet dann die Default- Anfangswerte aus der Deklarationstabelle.

1) Beim Aufruf einer FB-Instanz über die CALL-Anweisung werden vor der eigentlichen FB-Abarbeitung die Werte der aktuellen Eingangsparameter und ggf. auch

Durchgangsparameter in den Instanz-DB kopiert.

2) Dann erfolgt der Wechsel zur FB-Bearbeitung. Im An- weisungsteil des FB erfolgt die eigentliche Programm- bearbeitung. Stößt dabei das Programm auf Formal-

parameter, so resultiert daraus ein Zugriff auf die aktuellen Operanden im Instanz-DB.

3) Nach der FB-Abarbeitung werden die aktuellen Werte der Ausgangs- und ggf. Durchgangsparameter

zurückgegeben.

Erläuterungen zum Ablauf der Parameterübergabe:

CALL Motorsteuerung Start :=E1.0 Stopp :=E1.1 TempSchutz :=E1.3 Motor :=A4.0

* Weitere Programmführung

*

Dekl. Name Typ IN Start BOOL IN Stopp BOOL

IN TempSchutz BOOL OUT Motor BOOL

STAT MotorEinAus BOOL Aufrufender Baustein Motorsteuerung_DB

Dekl. Name Typ IN Start BOOL IN Stopp BOOL

IN TempSchutz BOOL OUT Motor BOOL

STAT MotorEinAus BOOL Motorsteuerung

2 1

3

(16)

Begriffe: Variablen und Daten

Eine Variable ist ein mit einem Namen versehener Speicherplatz, der im Anwenderprogramm als Platz- halter für Daten fungiert, die sich zur Laufzeit des Programms ändern können.

Durch Festlegung auf einen bestimmten Datentyp erhält der Speicherplatz eine passende Größe für die Daten.

Der Datentyp bestimmt ferner, welche Operationen mit den Daten, die in der Variablen gespeichert sind, ausgeführt werden können, z.B.: logisch verknüpfen, addieren, vergleichen usw.

Datentypen

Eine Variable ist ein Speicherplatz für Daten und ist durch ihren Namen und

Datentyp charakterisiert.

(17)

Elementare Datentypen

Bit-Typen: BOOL, BYTE, WORD, DWORD, CHAR

Arithmetik-Typen: INT, DINT, REAL

Zeit-Typen: Zeitdauer: TIME

Uhrzeit: TIME_OF_DAY Datum: DATE

Zusammengesetzte Datentypen

Feld mit Komponenten gleichen Datentyps: ARRAY

Struktur mit Komponenten unterschiedlichen Datentyps: STRUCT

Anwenderdefinierter Datentyp: TYPE, UDT

Zeichenkette mit max. 254 Zeichen: STRING

Parametertypen

Bausteinparameter: BLOCK_FB, BLOCK_FC, BLOCK_DB, ...

Zeitglieder: TIMER

Zähler: COUNTER

Zeiger: ANY, POINTER

Datentypen

(18)

Variablen sind die Mittel, um Daten in Programmen zu verarbeiten. Es sollen weitgehend nur symbolische Variablen mit aussagekräftigen Bezeichnungen verwendet werden. Man unterscheidet zwischen globalen und lokalen

Variablen.

Globale Variablen Lokale Variablen

Gültigkeitsbereich

gelten im gesamten Programm, in allen

Bausteinen sind nur in Bausteinen bekannt, in

denen sie deklariert wurden

Einsatz für

E/A-Operanden,

PLC-Variablen („Merker“ ) Datenbausteine,

Peripherie

IN-Parameter OUT-Parameter IN-OUT-Parameter TEMP-Bausteindaten STAT-Bausteindaten

Deklarationsort

in der PLC-Variablentabelle im S7-

Programm in der Deklarationstabelle des

Bausteins

Variablen und Variablendeklaration

(19)

STEP 7 IEC 61131-3

Bitweise

Einzel-Eingänge

Einzel-Ausgänge %E0.7 … %E0.0

%A0.7 … %A0.0 %IX0.7 … %IX0.0

%QX0.7 … %QX0.0

Byteweise

Eingangsbyte

Ausgangsbyte %EB0=%E0.7 … %E0.0

%AB0=%A0.7 … %A0.0 %IB0=%IX0.7 … %IX0.0

%QB0=%QX0.7 … %QX0.0

Wortweise

Eingangswort

Ausgangswort %EW0 = %EB0 + %EB1

%AW0 = %AB0 + %AB1 %IW0=%IB0+%IB1

%QW0=%QB0+%QB1

Doppelwortweise

E-Doppelwort

A-Doppelwort %ED0 = %EW0 + %EW1

%AD0 = %AW0 + %AW1 %ID0=%IW0+%IW1

%QD0=%QW0+%QW1

Möglichkeiten der direkten Adressierung von Ein- und Ausgängen. Entsprechendes gilt für Merker, soweit diese noch verwendet werden können.

Wortadressen Doppelwortadressen

Referenzen

ÄHNLICHE DOKUMENTE

Beispiel: Alle Personen anschauen und vergleichen; Abbruch wenn gefunden 3.Schritt: Abbildung auf Programmiersprache (Wie sag ich's dem Computer?).. Beispiel: Schleife über

I Viele Operationen normaler Listen vorhanden:?. I Was ist der parameter

I Cold Observables fangen erst an Werte zu produzieren, wenn man ihnen zuhört.. Für jeden Observer

Falls S ein Supertyp von T ist, dann ist A<S> weder ein Subtyp von A<T> noch ein Supertyp.. Kovarianz, Kontravarianz und Invarianz Kovarianz, Kontravarianz

[1]© Peter Löhr, Robert Tolksdorf, Berlin.. Algorithmen und

in einem sicheren Zustand wird der Anforderung eines Prozesses nur dann stattgegeben, wenn der Folgezustand ebenfalls sicher ist (selbst wenn genügend freie Ressourcen vorhanden

Lade Datum von Adresse x in Register A der CPU LD #x A Schreibe Datum aus Register A in Speicherzelle x LD A #x Reduziere den Wert im Register A um 1 DEC A Reduziere den Wert

eine Funktion wird parallel auf eine Menge (meist Liste) von Daten angewendet. Dies schr¨ ankt die Art der Parallelit¨