Ausarbeitung Projektarbeit - Teil 2
Ausarbeitung Projektarbeit - Teil 2
Ausarbeitung Projektarbeit - Teil 2
Erfolgreiche ePaper selbst erstellen
Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.
<strong>Ausarbeitung</strong> <strong>Projektarbeit</strong> - <strong>Teil</strong> 2<br />
<strong>Ausarbeitung</strong> <strong>Projektarbeit</strong> – <strong>Teil</strong> 2<br />
Objektorientierte Programmierung des<br />
Zulieferers mit CoDeSys V3<br />
Dominik Huth Te2b<br />
Dominik Huth Te2b Seite 1 von 11
<strong>Ausarbeitung</strong> <strong>Projektarbeit</strong> - <strong>Teil</strong> 2<br />
Inhalt:<br />
1. Funktionsbeschreibung des Zulieferers<br />
2. Hardwareanbindung an die SPS<br />
3. Was ist EtherCAT?<br />
4. Vergleich Software- und Hardware-SPS<br />
5. SPS-Programm des Zulieferers<br />
a.) Verwendete Programmiersprachen<br />
b.) Bausteine und ihre Funktionen<br />
c.) Betriebsarten<br />
d.) Handshake mit MES2<br />
6. Objektorientierung in der SPS-Technik und Umsetzung in CoDeSys<br />
7. Neue Sprachmittel und Schlüsselwörter<br />
8. Schlüsselwörter für die oo-Programmierung in CoDeSys<br />
9. Erstellung von Varianten durch Vererbung<br />
10. Beispiel aus der Praxis für die oo-Programmierung in CoDeSys<br />
a.) Die Klasse Zylinder<br />
b.) Blick in den Baustein Zylinder (FB)<br />
c.) Blick in die Methode ausfahren<br />
11. Blick in den Baustein Hauptprogramm<br />
12. Aufruf der Klasse Zylinder<br />
1. Funktionsbeschreibung des Zulieferers<br />
Der Zulieferer ist<br />
mechanisch aus 3<br />
Lagern, die mit<br />
verschieden farbigen<br />
Bausteinen bestückt<br />
sind, einem<br />
Förderband, einer<br />
Antenne zum<br />
Beschreiben der RFIDs<br />
und einem Stopper<br />
aufgebaut. Er muss die<br />
Materialien für eine<br />
Charge (3 Bauteile)<br />
zum richtigen Zeitpunkt<br />
(„just in time“) und in<br />
der für die Fertigung<br />
benötigten Reihenfolge<br />
(„just in sequence“)<br />
bereitstellen. Die<br />
Fertigungsschritte<br />
werden vom MES2 über<br />
einen Handshake dem<br />
Zulieferer übergeben.<br />
Lager 1<br />
Antenne zum Beschreiben<br />
der RFIDs<br />
Förderband<br />
Lager 2 Lager 3<br />
Zylinder A<br />
Zylinder B<br />
Zylinder C<br />
Landstraße<br />
Stopper<br />
Bedienpult<br />
Dominik Huth Te2b Seite 2 von 11
<strong>Ausarbeitung</strong> <strong>Projektarbeit</strong> - <strong>Teil</strong> 2<br />
2. Hardwareanbindung an die SPS<br />
Für die Anbindung der Sensoren und Aktoren des Zulieferers wurde das I/O-Modul EK1100<br />
von der Firma Beckhoff ausgewählt. Das I/O-Modul kann individuell modular mit Ein- und<br />
Ausgangskarten erweitert werden. Über den Feldbus EtherCAT wurde das I/O-Modul mit<br />
dem PC verbunden auf dem die Soft-SPS CoDeSys Control Win V3 läuft.<br />
Eingangs- und<br />
Ausgangskarten<br />
Feldbus<br />
EtherCAT<br />
M<br />
Motor<br />
Lichtschanke<br />
3. Was ist EtherCAT?<br />
EtherCAT ist ein von der Firma Beckhoff entwickelter<br />
Feldbus. Ein Blick in das ISO-OSI-Model (Bild<br />
rechts) verrät die Verwandtschaft zum Ethernet. Der<br />
vom Master versendete Standard Ethernet Frame<br />
wird nicht wie bei anderen Industrial Ethernet<br />
Lösungen in jeder Anschaltung zunächst empfangen,<br />
dann interpretiert und die Prozessdaten<br />
weiterkopiert. Die EtherCAT Slave-Geräte<br />
entnehmen die für sie bestimmten Daten, während<br />
das Telegramm das Gerät durchläuft. Ebenso<br />
werden Eingangsdaten im Durchlauf in das<br />
Telegramm eingefügt. Das Übertragungsverfahren<br />
des EtherCAT beruht auf den Voll-Duplex<br />
Eigenschaften von Ethernet. Auf der<br />
Verkabelungsebene ermöglicht EtherCAT eine große<br />
Vielfalt von Topologien wie Linie, Baum, Ring, Stern<br />
und deren Kombinationen bei einer maximalen<br />
Leitungslänge von 100m zwischen zwei<br />
<strong>Teil</strong>nehmern. Es ist jedoch darauf zu achten, dass für EtherCAT spezielle Switche benötigt<br />
werden.<br />
Der exakten Synchronisierung kommt immer dann eine besondere Bedeutung zu, wenn<br />
räumlich verteilte Prozesse gleichzeitige Aktionen erfordern. Der Ansatz zur<br />
Synchronisierung ist der exakte Abgleich verteilter Uhren. Dabei wird die Uhrzeit der Haupt-<br />
Uhr via EtherCAT zu den Neben-Uhren übertragen und diese laufzeitkompensiert<br />
nachgeregelt. Bei EtherCAT ist die Haupt-Uhr in einem Slave-Gerät, so dass auch hierfür<br />
keine spezielle Hardware im Master erforderlich ist.<br />
Dominik Huth Te2b Seite 3 von 11
<strong>Ausarbeitung</strong> <strong>Projektarbeit</strong> - <strong>Teil</strong> 2<br />
4. Vergleich Software- und Hardware-SPS<br />
Die SPS ist im Falle einer Soft-SPS<br />
nur noch als Software vorhanden<br />
und nicht mehr mit einer getrennten<br />
Hardware. Soft-SPSen bieten die<br />
Möglichkeit, mehrere Tasks mit<br />
unterschiedlicher Priorität auf einer<br />
CPU laufen zu lassen. So können<br />
schnellere und langsame Prozesse<br />
getrennt werden. Das Zeitverhalten<br />
einer Soft-SPS ist im Vergleich zur<br />
Hardware SPS leicht verändert<br />
(siehe Zeichnung), weil die<br />
Steuerung nur eine Task innerhalb<br />
des Betriebssystems ist. Dies kann<br />
zu kleineren Differenzen in der<br />
Bearbeitungsdauer eines Zyklus der<br />
Steuerung führen.<br />
Software SPS<br />
Tasks der<br />
Anwenderprogramme<br />
lese PA<br />
schreibe PA<br />
Zyklus<br />
Betriebssystem<br />
Der Einsatz von Soft-SPSen hat einen wesentlichen kaufmännischen Vorteil, weil ein PC<br />
sowohl als Visualisierungsrechner, Programmiergerät und Automatisierungsgerät genutzt<br />
werden kann. Es sind nicht mehr drei verschiedene Geräte notwendig. Dies ist aber<br />
gleichzeitig der größte Nachteil. Die Sicherheit des Steuerungsprogramms auf einer PC-<br />
Hardware, auf der noch weitere Programme ablaufen, wird von vielen Fachleuten als<br />
unzureichend sicher gesehen. Ein weiterer Nachteil dieses Konzeptes ist es, dass ein<br />
dezentraler Aufbau einer Anlage nur sehr schwer realisierbar ist. Der Wunsch, die<br />
„Intelligenz“ auf verschiedenen Steuerungs-CPUs in der Anlage zu verteilen, ist nicht<br />
möglich. Die komplette Anlage wird von einem zentralen Punkt gesteuert. Fällt dieser<br />
zentrale Punkt aus, so ist die gesamte Anlage „tot“.<br />
CoDeSys enthält bereits eine Soft-SPS, welche es erlaubt einen Windows-PC für<br />
Steuerungsaufgaben zu nutzen. Der Anschluss an die Hardware ist über den Ethernet<br />
basierten Feldbus EtherCAT mit einer üblichen Netzwerkkarte realisiert worden.<br />
5. SPS-Programm des Zulieferers<br />
Das SPS-Programm besteht grundsätzlich aus drei <strong>Teil</strong>en:<br />
1. Der Betriebsartenbaustein nimmt die Befehle des Anlagenbedieners auf, verarbeitet diese<br />
und informiert ihn über den Zustand des Zulieferers.<br />
2. Bausteine für die Mechanikfunktionen<br />
3. Der Handshakebaustein kommuniziert mit dem übergeordneten MES Rechner.<br />
Im Zusammenspiel dieser Bausteine ergibt sich folgende Funktion des Zulieferers:<br />
Auftrag wird vom MES an die SPS gesendet => Handshake zwischen SPS und MES wird<br />
ausgeführt => ist die richtige Betriebsart vorhanden, wird der Auftrag vom Zulieferer<br />
bearbeitet => ist der Auftrag abgearbeitet, meldet die SPS das dem MES.<br />
5a. Verwendete Programmiersprachen<br />
Ablaufsprache (AS)<br />
Die Ablaufsprache ist eine der fünf IEC 61131-3 genormten Programmiersprachen. Die<br />
graphisch orientierte Sprache dient zur Programmierung von SPSen in Form von<br />
Dominik Huth Te2b Seite 4 von 11
<strong>Ausarbeitung</strong> <strong>Projektarbeit</strong> - <strong>Teil</strong> 2<br />
Zustandsmaschinen. Die Ablaufsteuerung ist eine geschlossene Kette von<br />
Steuerungsschritten mit angegliederten Aktionen und Transitionen. Jedem Schritt können<br />
Aktionen zugefügt werden. Man unterscheidet zwischen drei unterschiedlichen Aktionen<br />
„entry“ (wird beim Starten des Schrittes bearbeitet), „active“ (wird während des<br />
entsprechenden Schrittes bearbeitet) und exit (wird beim Verlassen des Schrittes bearbeitet).<br />
Aktionen und Transitionen können in einer der 5 Sprachen der IEC 61131-3 erstellt werden.<br />
Strukturierter Text (ST)<br />
Strukturierter Text ist die Sprache unter den IEC-Sprachen, die am engsten verwandt ist mit<br />
den sogenannten „höheren“ Programmiersprachen. ST ist die mächtigste, hinsichtlich des<br />
Speicherbedarfs jedoch nicht immer die effizienteste Sprache.<br />
5b. Bausteine und ihre Funktionen<br />
Hauptprogramm (PRG)<br />
Erstellsprache PRG:<br />
Strukturierter Text<br />
Funktion: Baustein zum Setzen der Attribute der FBs und zum Aufruf der FBs.<br />
Betriebsarten (FB)<br />
Erstellsprache FB:<br />
Ablaufsprache<br />
Erstellsprache Aktionen, Transitionen: Strukturierter Text<br />
Funktion: Baustein zur Steuerung der Betriebsarten Handbetrieb,<br />
Automatikvorwahl, Automatik und Störungen.<br />
Handshake (FB)<br />
Erstellsprache FB:<br />
Ablaufsprache<br />
Erstellsprache Aktionen, Transitionen: Strukturierter Text<br />
Funktion: Baustein für den Handshake zwischen SPS und MES.<br />
Mechaniksteuerung (FB)<br />
Erstellsprache FB:<br />
Ablaufsprache<br />
Erstellsprache Aktionen, Transitionen: Strukturierter Text<br />
Funktion: Baustein zur Steuerung der Mechanikfunktionen des Zulieferers.<br />
Zylinder (FB)<br />
Erstellsprache FB:<br />
Ablaufsprache<br />
Erstellsprache Methoden:<br />
Strukturierter Text<br />
Funktion: Baustein stellt die Klasse „Zylinder“ mit ihren Methoden dar.<br />
GVL_Zulieferer<br />
Globale Variablen des Zulieferers. Hier sind die Variablen für die Ein- und Ausgänge, sowie<br />
die Variablen für den Handshake mit dem MES2 deklariert.<br />
5c. Betriebsarten<br />
Grundsätzlich gibt es im Zulieferer vier verschiedene Betriebsarten.<br />
1. Handbetrieb (Wahlschalter am Bedienpult steht auf „Manu“; weiße Lampe am<br />
Bedienpult leuchtet)<br />
Im Handbetrieb kann durch das Betätigen des Start-Tasters am Bedienpult die<br />
Anlage „frei“ gefahren werden. Der Stopper wird dazu geöffnet und das Förderband<br />
Dominik Huth Te2b Seite 5 von 11
<strong>Ausarbeitung</strong> <strong>Projektarbeit</strong> - <strong>Teil</strong> 2<br />
nach links gefahren. So können Bausteine zum Beispiel nach einer Störung nach<br />
links aus der Anlage gefahren werden.<br />
2. Automatikvorwahl (Wahlschalter am Bedienpult steht auf „Auto“; grüne Lampe am<br />
Bedienpult blinkt)<br />
Wird der Wahlschalter am Bedienpult auf „Auto“ gestellt, gelangt man in die<br />
Betriebsart Automatikvorwahl. Durch betätigen des „Starttaster“ kommt man in die<br />
Betriebsart Automatik.<br />
3. Automatik (Wahlschalter am Bedienpult steht auf „Auto“; grüne Lampe am<br />
Bedienpult leuchtet)<br />
In der Betriebsart Automatik können Aufträge, die vom MES2 kommen, abgearbeitet<br />
werden. Folgende Aufträge wurden definiert:<br />
a.) Auftrag 0 => Der Handshake mit dem MES2 wird ausgeführt, jedoch<br />
werden keine mechanischen Aktionen angestoßen.<br />
b.) Auftrag 1 => Baustein wird aus dem Lager 1 auf das Förderband<br />
geschoben. Das Förderband befördert den Baustein bis zur Antenne an<br />
der der RFID des Bausteins beschrieben wird.<br />
c.) Auftrag 2 => Baustein wird aus dem Lager 2 auf das Förderband<br />
geschoben. Das Förderband befördert den Baustein bis zur Antenne an<br />
der der RFID des Bausteins beschrieben wird.<br />
d.) Auftrag 3 => Baustein wird aus dem Lager 3 auf das Förderband<br />
geschoben. Das Förderband befördert den Baustein bis zur Antenne an<br />
der der RFID des Bausteins beschrieben wird.<br />
e.) Auftrag 4 => Ist die Materialsequenz von 3 Bausteinen je eine Charge<br />
fertig, kann mit Aufrag 4 die Auslieferung an das Hauptwerk angestoßen<br />
werden.<br />
f.) Auftrag 5 => Die bereits auf das Band geschobenen Bausteine können<br />
nach links aus der Anlage gefördert werden.<br />
4. Störungen (weiße Lampe am Bedienpult blinkt)<br />
Wird im Automatikbetrieb der Not-Aus betätigt oder ist das Lager leer aus dem ein<br />
Baustein gefahren werden soll, geht die Anlage in die Betriebsart Störung.<br />
Durch das Entriegeln des Not-Aus bzw. das Auffüllen des entsprechenden Lagers<br />
welches die Störung verursacht hat, wird die Störung „quittiert“. Der Zulieferer<br />
befindet sich jetzt wieder in der Betriebsart Automatikvorwahl.<br />
5d. Handshake mit MES2<br />
Der Handshake wurde wie in der Anlagenbeschreibung spezifiziert, realisiert. Wird vom<br />
MES2 ein Auftrag gesendet und der Zulieferer befindet sich in der Betriebsart Handbetrieb,<br />
Automatikvorwahl oder Störung, wird der Handshake ausgeführt und Variable<br />
„Busy_Zulieferer“ so lange auf „1“ gesetzt, bist der Auftrag im Automatikbetrieb fertig<br />
abgearbeitet wurde.<br />
6. Objektorientierung in der SPS-Technik und Umsetzung in CoDeSys<br />
Die klassische IEC 61131-3 bietet nicht die weitgehenden Möglichkeiten zur Bildung von<br />
Modulen, wie es vergleichsweise mit objektorientierten Beschreibungsmitteln oder in<br />
objektorientierten Hochsprachen möglich ist.<br />
Der Funktionsbaustein (FB) ist das wesentliche Hilfsmittel, um Programmcode und Daten zu<br />
kapseln. Wie ein Modul wird der FB einmal programmiert und dann beliebig oft innerhalb des<br />
Programms aufgerufen. Bei diesen so genannten Instanzen handelt es sich um identische<br />
Kopien, welche unabhängig voneinander zur Laufzeit abgearbeitet werden und zudem über<br />
einen separaten Speicherbereich verfügen. Mit Ein- und Ausgabevariablen lässt sich das<br />
Dominik Huth Te2b Seite 6 von 11
<strong>Ausarbeitung</strong> <strong>Projektarbeit</strong> - <strong>Teil</strong> 2<br />
Verhalten der einzelnen Instanzen variieren. Mit diesen Eigenschaften ist der FB den<br />
Klassen der Objektorientierung recht ähnlich und damit der einzige Baustein, der für die<br />
Bildung von Modulen geeignet ist. Im Gegensatz zu einer Klasse ist es aber nicht möglich,<br />
mehrere verschiedene Abläufe (Methoden) innerhalb eines FB zu definieren.<br />
CoDeSys unterscheidet sich von den klassischen, bisherigen IEC 61131-3 Umgebungen<br />
unter anderem darin, dass Konstrukte verwendet werden können, die aus der<br />
Objektorientierung bekannt sind. Die bisher bekannten Funktionsbausteine sind deutlich<br />
erweitert worden, so dass sie nahezu den Klassen entsprechen. Diese lassen sich nach wie<br />
vor instanziieren und verfügen über eine eigene Datenbasis. Darüber hinaus ist es in<br />
CoDeSys aber möglich Eigenschaften, Transitionen, mehrere Abläufe als Methoden und<br />
Aktionen in einem Funktionsbaustein zu definieren, welche auf dessen gemeinsame<br />
Datenbasis zugreifen können. Methoden haben ein ähnliches Verhalten wie Funktionen. Es<br />
lassen sich Eingangsparameter übergeben. Methoden verfügen über eine eigene lokale<br />
Datenbasis und liefern einen Ausgabewert zurück. Sie werden im Gegensatz zu den<br />
Aktionen innerhalb eines SPS-Zyklus berechnet. Es ist daher in CoDeSys auch nicht<br />
möglich, die Ablaufsprache für die Programmierung von Methoden zu verwenden.<br />
7. Neue Sprachmittel und Schlüsselwörter<br />
Die Einführung von objektorientierter Programmierung in der SPS-Technik stellt hohe<br />
Anforderungen an die Programmierumgebung. Folgende Anforderungen wurden bei der<br />
Implementierung von objektorientierter SPS-Programmierung in CoDeSys berücksichtigt:<br />
-Funktionale, d.h. nicht objektorientierte Programmierung muss weiterhin möglich<br />
sein<br />
-Objektorientierte und funktionale Programmierung muss innerhalb eines Projekts<br />
gemischt werden können<br />
-Bestehende Applikationen müssen mit sinnvollen Mitteln auf ein<br />
objektorientiertes Design umgestellt werden können<br />
-E/A-Konfiguration, direkter E/A-Zugriff, Online-Funktionen und Online-<br />
Änderungen müssen möglich sein<br />
-Die Komplexität der Sprachdefinition soll den Anwendungsentwickler nicht<br />
zusätzlich belasten<br />
8. Schlüsselwörter für die oo-Programmierung in CoDeSys<br />
- METHOD: Funktion die einer Funktionsbausteindefinition (Objekt) zugeordnet ist<br />
- PROPERTY: erlauben den externen Zugriff auf Daten des Funktionsbausteins<br />
- EXTENDS: erweitert einen Funktionsbaustein (Kindklasse) um die Methoden und<br />
Attribute eines anderen Funktionsbausteins (Vaterklasse) im Sinne einer Vererbung.<br />
9. Erstellung von Varianten durch Vererbung<br />
Varianten eines Funktionsbausteines können mit dem Schlüsselwort „EXTENDS“ erstellt<br />
werden. Eine Klasse, welche auf diese Weise erstellt worden ist, erbt zunächst alle<br />
Methoden und Eigenschaften der Vaterklasse. CoDeSys zeigt diese geerbten Bestandteile<br />
einer Klasse nicht unterhalb der Kindklasse an. Trotzdem können alle Bestandteile so<br />
verwendet werden, als wären diese dort definiert. Damit ist die Kindklasse zunächst eine<br />
identische Kopie der Vaterklasse. Für die Bildung der Variante können sowohl alle geerbten<br />
Implementierungen durch eigene Implementierungen überlagert werden, als auch zusätzlich<br />
eigene Methoden und Eigenschaften definiert werden.<br />
Dominik Huth Te2b Seite 7 von 11
<strong>Ausarbeitung</strong> <strong>Projektarbeit</strong> - <strong>Teil</strong> 2<br />
10. Beispiel aus der Praxis für die oo-Programmierung in CoDeSys<br />
Anhand des Beispiels eines pneumatischen Zylinders wie er im Zulieferer mehrfach für das<br />
Herausschieben der Bausteine aus den Lagern verwendet wurde, soll kurz auf die praktische<br />
Ausführung der objektorientierten Programmierung in CoDeSys eingegangen werden. Bei<br />
den Zylindern handelt es sich um einfach wirkende Zylinder mit den Sensoren<br />
„sen_eingefahren“ (Zylinder eingefahren); „sen_ausgefahren“ (Zylinder ausgefahren) sowie<br />
den Aktor „akt_ausfahren“ (Zylinder ausfahren). In der Klasse Zylinder stellen diese<br />
Variablen die Attribute dar. Als Methoden (Funktionen) wurde „ausfahren()“ und „einfahren()“<br />
definiert.<br />
10a. Die Klasse Zylinder<br />
Das unten dargestellte Klassendiagramm der Klasse Zylinder soll dies verdeutlichen.<br />
Klassenname<br />
<br />
Zylinder<br />
akt_ausfahren: bool<br />
sen_eingefahren: bool<br />
sen_ausgefahren: bool<br />
ausfahren()<br />
einfahren()<br />
Attribute (Variablen, Parameter, Werte…)<br />
Methoden (Programme, Funktionen…)<br />
Die Klasse Zylinder wird in CoDeSys in Form<br />
eines Funktionsbausteins (FB) im<br />
Programmbaum angelegt.<br />
Die Klasse Zylinder enthält die Methoden<br />
ausfahren und einfahren.<br />
Dominik Huth Te2b Seite 8 von 11
<strong>Ausarbeitung</strong> <strong>Projektarbeit</strong> - <strong>Teil</strong> 2<br />
10b. Blick in den Baustein Zylinder (FB):<br />
Ein Blick in den Baustein Zylinder (FB) lässt noch nichts von der Erweiterung der FBs in<br />
Richtung Objektorientierung erkennen. Zunächst werden die IN- und OUT-Variablen des FBs<br />
deklariert.<br />
1. Schnittstellen Variablen<br />
FUNCTION_BLOCK Zylinder<br />
VAR_INPUT<br />
sen_eingefahren: BOOL;<br />
sen_ausgefahren: BOOL;<br />
END_VAR<br />
VAR_OUTPUT<br />
akt_ausfahren: BOOL;<br />
END_VAR<br />
IN- und OUT-Variablen<br />
des Baustein Zylinder<br />
2. Anweisungen<br />
Wie von der SPS-Programmierung bekannt, kann in den FBs ein beliebiger Programmcode<br />
geschrieben werden. In diesem Beispiel ist zu sehen, wie die Methoden (ausfahren und<br />
einfahren) der Klasse Zylinder aufgerufen werden.<br />
IF sen_eingefahren THEN<br />
END_IF;<br />
ausfahren();<br />
Aufruf der Methode<br />
ausfahren()<br />
IF sen_ausgefahren THEN<br />
END_IF;<br />
einfahren();<br />
Aufruf der Methode<br />
einfahren()<br />
10c. Blick in die Methode ausfahren<br />
Die Methode ausfahren() ist ein untergeordneter Baustein des Zylinder (FB) also der Klasse<br />
Zylinder. Variablen, die im Zylinder (FB) deklariert worden sind, können auch in der Methode<br />
ausfahren() verwendet werden. Zusätzliche benötigte IN-Variablen, die der Methode<br />
übergeben werden sollen, können deklariert werden.<br />
1. Schnittstellen Variablen<br />
METHOD PUBLIC ausfahren<br />
VAR_INPUT<br />
END_VAR<br />
Hier können zusätzliche<br />
Input-Variablen<br />
deklariert werden<br />
Dominik Huth Te2b Seite 9 von 11
<strong>Ausarbeitung</strong> <strong>Projektarbeit</strong> - <strong>Teil</strong> 2<br />
2. Anweisungen<br />
In der Methode selbst steht der Programmcode für die gewünschte Funktion, die in der<br />
Methode realisiert werden soll. In diesem Beispiel ausfahren() der Klasse Zylinder ist der<br />
Programmcode recht übersichtlich. Wird die Methode ausfahren() aufgerufen, wird der OUT-<br />
Variable für Zylinder ausfahren auf „high“ gesetzt.<br />
akt_ausfahren:=1;<br />
Programm der Methode<br />
11. Blick in den Baustein Hauptprogramm<br />
Das Hauptprogramm stellt den „Kopf“ des SPS-Anwenderprogramms des Zulieferers dar.<br />
Hier werden die Objekte referenziert, und die Attribute (Ein- und Ausgänge) gesetzt, also an<br />
den FB „übergeben“.<br />
1. Schnittstellen Variablen<br />
Die drei Zylinder des Zulieferers (Zylinder_A, Zylinder_B, Zylinder_C) werden der Klasse<br />
Zylinder mit ihren Methoden „zugewiesen“.<br />
PROGRAM PLC_PRG<br />
VAR<br />
Zylinder_A: Zylinder;<br />
Zylinder_B: Zylinder<br />
Zylinder_C: Zylinder<br />
END_VAR<br />
Objekte werden<br />
referenziert<br />
2. Anweisungen<br />
Im Hauptprogramm des Zulieferers werden alle Ein- und Ausgänge an die jeweiligen FBs<br />
übergeben. In der Objektorientierung spricht man von Attribute setzen. Es folgt ein kleiner<br />
Ausschnitt aus dem Hauptprogramm, in dem die Attribute für den Zylinder_A gesetzt werden.<br />
Hauptprogramm.Zylinder_A.sen_eingefahren:=Zylinder_A_eingefahren;<br />
Hauptprogramm.Zylinder_A.sen_ausgefahren:=Zylinder_A_ausgefahren;<br />
Attribute setzen (Eingänge)<br />
Zylinder_A_ausfahren:= Hauptprogramm.Zylinder_A.akt_ausfahren;<br />
Attribut setzen (Ausgang)<br />
Dominik Huth Te2b Seite 10 von 11
<strong>Ausarbeitung</strong> <strong>Projektarbeit</strong> - <strong>Teil</strong> 2<br />
12. Aufruf der Klasse Zylinder<br />
Jetzt müssen nur noch die Aufrufe für die Zylinder gemacht werden. Das passiert in der<br />
Schrittkette der Mechaniksteuerung (FB) in der Aktion „Mechaniksteuerung.Zylinder_aktive“.<br />
Der Programmausschnitt unten zeigt den Aufruf von Zylinder_A, bedingt an den Auftrag 1.<br />
IF auftrag = 1 THEN<br />
END_IF<br />
Hauptprogramm.Zylinder_A();<br />
Aufruf des<br />
Funktionsbausteins<br />
Zylinder_A()<br />
Dominik Huth Te2b Seite 11 von 11