Ansteuerung einer Schrittmotor-Achse mit Siemens SIMATIC S7-300 SPS: Unterschied zwischen den Versionen

Aus HSHL Mechatronik
Zur Navigation springen Zur Suche springen
Zeile 79: Zeile 79:
Somit müssen die zwischengeschalteten Widerstände zwischen 7,4kΩ und 8,2kΩ liegen.
Somit müssen die zwischengeschalteten Widerstände zwischen 7,4kΩ und 8,2kΩ liegen.


=Versuchsdurchführung=
= Versuchsdurchführung =
Nachdem alle Hardwarekomponenten miteinander verschaltet wurden und die benötigten Ausgangssignale mittels Widerständen dimensioniert wurden, konnte ein Programm zur Steuerung der Achse geschrieben werden.
Nachdem alle Hardwarekomponenten miteinander verschaltet und die benötigten Ausgangssignale mittels Widerständen dimensioniert wurden, konnte ein Großteil des Programmes zur Steuerung der Achsen geschrieben werden.
====Einbinden der Hardwarekomponenten in die Software====
[[Datei: rs1.jpg|mini|Beispiel Hardwarekonfiguration]]
[[Datei: rs1.jpg|mini|Beispiel Hardwarekonfiguration]]
== Einbinden der Hardware in die Software ==
Um die Kommunikation zwischen der Software und der eingesetzten Hardware zu gewährleisten, ist es nötig diese zunächst über den Hardwarekonfigurator in die Software einzubinden. Hierzu wird die integrierte "HW Konfig" gestartet und alle benötigten Hardwarekomponenten aus der Hardwareauswahl in die Hardwarekonfiguration eingefügt.  Anschließend werden diese über den Menüpunkt "Speichern und Laden" in die Software eingebunden. Wie die HW Konfig. nach erfolgreicher Einbindung der Hardware aussehen könnte, zeigt das Bild auf der rechten Seite.
=== Ergänzung der Software durch manuelle Updates ===
Die verwendete CPU ist nicht im Standard-Hardwarekonfigurationspaket enthalten und muss manuell hinzugefügt werden. Dieses ist im Download-Bereich von Siemens zu finden und kann dort nach Anmeldung kostenfrei nachinstalliert werden.


Um die Kommunikation zwischen der Software und der eingesetzten Hardware zu gewährleisten, ist es nötig diese zunächt über den Hardwarekonfigurator in die Software einzubinden. Hierzu wird die integrierte "HW Konfig" gestartet und alle benötigten Hardwarekomponenten mittels Pulldown - Menü eingefügt. Anschließend werden diese über den Menüpunkt "Speichern und Laden" in die Software eingebunden.
== Erstellen einer Symboltabelle ==
Wie die HW Konfig. nach erfolgreicher Einbindung der Hardware aussehen könnte, zeigt das Bild auf der rechten Seite.
Im nächsten Schritt wird eine Symboltabelle für die Programmierung angelegt. In dieser Symboltabelle werden sowohl alle Ein - bzw. Ausgänge, als auch benötigte Merker und Zeiten definiert, welche für die Programmierung benötigt werden. Diese stehen symbolisch für die Speicherplätze im Adressspeicher der SPS. Die Symboltabelle kann nachträglich ergänzt und erweitert werden. Ein Beispiel für eine Symboltabelle zeigt nachfolgendes Bild:  
 
====Erstellen einer Symboltabelle====
Im nächsten Schritt wird eine Symboltabelle für die Programmierung angelegt. In dieser [http://de.wikipedia.org/wiki/Symboltabelle Symboltabelle] werden sowohl alle Ein - bzw. Ausgänge, als auch benötigte [http://de.wikipedia.org/wiki/Sprungmarke Merker] und Zeiten definiert, welche für die Programmierung benötigt werden. Die Symboltabelle kann nachträglich ergänzt und erweitert werden.
Ein Beispiel für eine Symboltabelle zeigt nachfolgendes Bild:
[[Datei:symbolled.jpg|large| Symboltabelle]]
[[Datei:symbolled.jpg|large| Symboltabelle]]


====Programmierung====
====Programmierung====
[[Datei:Step_prog.jpg|mini|Schrittbaustein]]
/*[[Datei:Step_prog.jpg|mini|Schrittbaustein]]*/
Wie im Abschnitt [[#Siemens Simatic Step7 Manager|Siemens Simatic Step7 Manager]] bereits erwähnt, kann in verschiedenen Sprachen programmiert werden.
Eine Siemens SPS kann in mit der Entwicklungsumgebung Step 7 in verschiedenen Sprachen programmiert werden. Die verfügbaren Programmiersprachen gliedern sich in AWL (Anweisungsliste), KOP (Kontaktplan) und FUP (Funktionsplan). Diese 3 Programmiersprachen richten sich an ganz unterschiedliche Anwendertypen. AWL ähnelt in seiner Anwendung der Assembler-Programmierung und richtet sich an erfahrene Softwareentwickler. Ein KOP-Programm erinnert an einen elektrischen Schaltplan und richtet sich daher an Anwender aus dem Elektrotechnischen Bereich. FUP stellt einen übersichtlichen Funktionsplan dar, wodurch die Programmierung auch für Laien verständlicher ist.
Um die Programmierung zu beginnen muss zunächst ein neuer Anwenderbaustein erstellt werden. Je nach Vorhaben kann dies einer der im Abschnitt [[#Siemens Simatic Step7 Manager|Siemens Simatic Step7 Manager]] erwähnten Bausteine sein. Eine Funktion wird beispielsweise über einen Funktionsbaustein (FB) programmiert. Hierzu wird einfach ein leerer Funktionsbaustein hinzugefügt. Im Anschluss öffnet sich automatisch ein Fenster, in dem verschiedene Einstellungen für den Baustein vorgenommen werden können. Unter Anderem lässt sich hier die Programmiersprache auswählen.
Jedes Programm wird mit Hilfe von Bausteinen erstellt, welche sich wie folgt gliedern:
Nach erfolgreichem Erstellen des Bausteins kann dieser beliebig programmiert werden. Zur Festlegung der einzelnen Parameter und Ein - bzw. Ausgänge des zu programmierenden Bausteins werden die Symbole aus der Symboltabelle verwendet.
{| border="1"
Das rechts stehende Bild zeigt den programmierten Funktionsbaustein "Schrittbaustein", welcher innerhalb des Praktikums programmiert und verwendet wurde.
!Anwenderbaustein
Der dargestellte Baustein wurde mittels Funktionsbauplan (FUP) programmiert. In der Programmierung mit FUP können verschiedenste [http://de.wikipedia.org/wiki/Logischer_Operator logische Operatoren] per "Drag and Drop" in das Programm eingefügt und beartbeitet werden. Ist die Programmierung des Bausteins abgeschlossen, so wird dieser abgespeichert und das Programm erstellt automatisch einen Organisationsbaustein. In dem OB werden dann die erstellten Funktionsbausteine abgelegt und automaitsch Datenbausteine eingefügt, welche nötig sind um die erstellten Daten abrufen zu können. Abschließend kann in der Software eine Simulation gestartet werden. Diese kann gleichzeitig als Diagnosetool genutzt werden, um mögliche Programmierfehler festzustellen und zu beheben.
!Abkürzung
!Erläuterung
|-
|Organisationsbaustein
|OB
|Steuerwerk der Programmbausteine, wird zyklisch aufgerufen
|-
|Funktionsbaustein
|FB
|Zugeordneter Speicherbereich, greift auf Daten aus Datenbaustein zu
|-
|Funktion
|FC
|keinen Zugeordneten Speicherbereich, lokale Daten gehen nach Aufruf verloren
|-
|Datenbaustein
|DB
|Stellen Speicherplatz für Datenvariablen bereit, Globale & Instant – DBs
|-
|Systemfunktionsbaustein
|SFB
|Im Betriebssystem der CPU hinterlegt, vom Anwender aufrufbar
|-
|Systemfunktion
|SFC
|Im Betriebssystem der CPU hinterlegt, vom Anwender aufrufbar
|-
|Systemdaten
|SDB
|Datenspeicherung für das Automatisierungssystem
|-
|}
Jede Art von Baustein ist für spezifische Anforderungen geeignet. Der Start eines Programmes erfolgt dabei stets im OB1.
== Zyklischer Ablauf ==
Der Programmablauf einer SPS verläuft zyklisch. Das bedeutet, dass der Organisationsbaustein OB1 zyklisch aufgerufen wird. Alle darin enthalten Aufrufe weiterer Funktionen und Funktionsbausteine werden nacheinander ausgeführt. Anschliessend beginnt der Zyklus erneut.
Dabei ist zu beachten, dass Eingänge hardwarebedingt nur vor einem Programmzyklus eingelesen werden können und Ausgänge nur nach Abschluss eines Programmzyklus angesteuert werden können. Innerhalb eines Programmzyklus ist das Einlesen und Ausgeben von digitalen Ein- und Ausgängen nicht möglich.
 
== Zykluszeit ==
Die Zykluszeit ist die Zeit, die das Betriebssystem für die Bearbeitung eines Programmdurchlaufes - d. h. eines OB 1-Durchlaufes - sowie aller in diesem Durchlauf untergebrachten Programmteile und Systemtätigkeiten. Diese Zeit wird überwacht. Die Zykluszeit je Schritt im Programm ist mit 2ms angegeben.
Für folgendes Beispielprogramm wurde eine tatsächliche Zykluszeit von etwa 5,4ms ermittelt.
 
[[Datei:Step_prog.jpg|mini|Beispielprogramm für einen Schrittbaustein]]
[[Datei:Zykluszeit.jpg|mini|x350px|am Oszilloskop gemessene tatsächliche Zykluszeit]]


===Tests, Debugging & Ergebnisse ===
Diese Verzögerung wird durch unterschiedliche Einflussfaktoren verursacht. Im Folgenden werden die Wichtigsten genannt:
Nachdem das Anwendungsprogramm für die Schritt-Motor-Steuerung gestartet wurde fährt die Achse zwar in die richtige Richtung, aber mit etwas Verzögerung. Das heißt es kommt zu Zykluszeitverzögerung.
* Grundlast (K)
====Zykluszeit====
* Anzahl Bytes im Baugruppenträger 0 (A)
Die Zykluszeit ist die Zeit, die das Betriebssystem für die Bearbeitung eines Programmdurchlaufes - d. h. eines OB 1-Durchlaufes - sowie aller diesen Durchlauf unterbrechenden Programmteile und Systemtätigkeiten benötigt. Diese Zeit wird überwacht.
* Anzahl Bytes im Baugruppenträger 1 bis 3 (B)
Die Zykluszeit je Schritt laut Programm ist 2ms, wobei die tatsächliche Zykluszeit dargestellt mit dem Oszilloskop für das Schrittsignal ungefähr 5.4ms beträgt.<br\> Es gibt Einflussfaktoren, die diese Verzögerung verursachen. Im folgenden werden die wichtigsten gennant:
* Verlängerung der Anwenderprogramm - Bearbeitungszeit
*Grundlast (K)
*Anzahl Bytes im Baugruppenträger 0 (A)
*Anzahl Bytes im Baugruppenträger 1 bis 3 (B)
*Verlängerung der Anwenderprogramm - Bearbeitungszeit
Das Betriebssystem Ihrer CPU führt neben der eigentlichen Abarbeitung des
Anwenderprogramms noch weitere zeitgleiche Prozesse durch (z. B. Timerverwaltung des Kernbetriebssystems). Diese Prozesse verlängern die Bearbeitungszeit des Anwenderprogramms. Daher muss bei der Berechnung der Zykluszeit mit dem Bearbeitungszeit-Faktor multipliziert werden. Für CPU313C beträgt dieser Faktor 1,10.


Im folgenden sind die Einflussfaktoren, die für die Berechnung der Zykluszeit notwendig sind, aufgelistet:
Das Betriebssystem Ihrer CPU führt neben der eigentlichen Abarbeitung des Anwenderprogramms noch weitere zeitgleiche Prozesse durch (z. B. Timerverwaltung des Kernbetriebssystems). Diese Prozesse verlängern die Bearbeitungszeit des Anwenderprogramms. Daher muss bei der Berechnung der Zykluszeit mit dem Bearbeitungszeit-Faktor multipliziert werden. Für CPU313C beträgt dieser Faktor 1,10.
 
Im Folgenden sind die Einflussfaktoren, die für die Berechnung der Zykluszeit notwendig sind, aufgelistet:
{| border="1"
{| border="1"
!Konstante
!Konstante
Zeile 132: Zeile 169:
|}
|}


====Berechnung der Zykluszeit mit Einflussfaktoren====
Die berechnete Zykluszeit ergibt sich aus der Summe aller folgenden Einflussfaktoren:  
[[Datei:Zykluszeit.jpg|mini|x350px|tatsächliche Zykluszeit]]
Zykluszeit_verzögert(Z_ver)=(Z+A+B+K) * 1,10.
Auf dem rechten Bild sieht man die tatsächliche Zykluszeit(Z) dargestellt am Oszilloskop
In dieser Formel ist A=0, weil im Versuchsaufbau der Baugruppenträger 0 nicht gebraucht wird. Der Faktor B wird mit 4 multipliziert, da man im Baugruppenträger 32 Bit(digitale Input und Output)= 4 Byte hat. Daher lautet die Formel:
Die berechnete Zykluszeit ergibt sich aus der Summe aller folgenden Einflussfaktoren:
 
<br\>Zykluszeit_verzögert(Z_ver)=(Z+A+B+K) * 1,10.<br\>
Zykluszeit_verzögert :Z_ver =(Z+B+K) * 1,10.
 
Z_ver=(2ms+(4 * 0,0043 ms)+100ms) * 1,10 = 5,192 ms
 
Je nach Programmablauf kann die Zykluszeit variieren. Dies wird verursacht durch:
* bedingte Befehle
* bedingte Bausteinaufrufe
* unterschiedliche Programmpfade
* Schleifen usw.
 
 
== Auswahl der Programmiersprache ==
Bei der Auswahl der Programmiersprache fiel die Wahl auf AWL. Diese ist zwar schwieriger zu Programmieren, bietet jedoch im Gegensatz zu KOP und FUP mehr Möglichkeiten in der Programmgestaltung. KOP und FUP stellen nur einen Bruchteil der in AWL verfügbaren Funktionen zur Verfügung.
 
 
== Programmablaufplan ==
Zur Planung der zu programmierenden Software wurde zunächst ein Programmablaufplan erstellt
 
 
== Serielle Kommunikation mit CP340 ==
Das Modul CP340 ermöglicht eine serielle Kommunikation über einen RS232-Bus. Über diesen Bus werden die Koordinaten vom Steuerungsalgorithmus an die SPS übertragen. Die Datenübertragung erfolgt als String im ASCII-Format. Bei der Konfiguration ist darauf zu achten, dass in den Einstellungen des CP340-Moduls die Datenübertragung auf das ASCII-Format eingestellt ist.
 
Der übertragene String ist wie folgt aufgebaut:
* Referenzfahrt: U12345V12345W12345;
* Koordinatenpunkt: X12345Y12345Z12345F12345;


In dieser Formel ist A=0, weil im Versuchsaufbau der Baugruppenträger 0 nicht gebraucht wird. Der Faktor B wird mit 4 multipiziert, da man im Baugruppenträger 32 Bit(digitale Input und Output)= 4 Byte hat. Also lautet die Formel jetzt:
Mittels der Referenzfahrt wird der Steuerung ein Referenzkoordinatenpunkt übermittelt, welcher die aktuellen Positionen der Achsen repräsentiert. Dieser muss zu Beginn jedes Fräsvorganges einmalig übermittelt werden um dem System seine Ursprungskoordinaten mitzuteilen. U repräsentiert hierbei die X-Achse, V die Y-Achse und W die Z-Achse. Die darauffolgenden Zahlen stehen für die Koordinaten der jeweiligen Achse in 1/100mm.
Über den Koordinatenpunkt wird der Steuerung die nächste Zielkoordinate übermittelt. X, Y und Z repräsentieren die jeweilige Achse, F steht für den Vorschub. Auch hier beträgt die Maßeinheit 1/100mm.




<br\>
== Verarbeitung der Koordinaten ==
Zykluszeit_verzögert :Z_ver =(Z+B+K) * 1,10. <br\>
Zu Beginn des Programmes wird überprüft, ob der empfangene String valide ist und es sich hierbei um eine Referenzfahrt oder einen anzusteuernden Koordinatenpunkt handelt.


Z_ver=(2ms+(4 * 0,0043 ms)+100ms) * 1,10 = 5,192 ms<br\>
Anschliessend werden die einzelnen Koordinaten aus dem String extrahiert und in das Format Double-Integer umgewandelt um damit im weiteren Programmablauf rechnen zu können.


Aus der Differenz zwischen Soll- und Ist-Koordinate wird die Verfahrstrecke je Achse ermittelt. Das Vorzeichen der Verfahrstrecke stellt die Richtung der jeweiligen Achse dar.


Die unterschiedlichen Zykluszeiten variieren Aufgrund folgender Ursachen:
Am Ende des Programmzyklus werden die Soll-Koordinaten als Ist-Koordinaten für den darauffolgenden Zyklus gespeichert.
*bedingte Befehle
*bedingte Bausteinaufrufe
*unterschiedliche Programmpfade
*Schleifen usw.


===Ausblick ===
Im letzten Arbeitsschritt soll es realisiert werden die übermittelten Daten der Siemens SIMATIC S7-313C mittels, in das System integirerter, [http://de.wikipedia.org/wiki/RS-232 RS232]-Schnittstelle zu Empfangen. Derzeitiger Arbeitsstand hinsichtlich dieser Arbeitsaufgabe ist die erfolgreiche und vollständige Integration der RS232-Schnittstelle CP340 der Firma Siemens. Das Empfangen von Daten stellt zum jetzigen Zeitpunkt noch Probleme da und ist somit Inhalt der letzten Projektstunden.
Die bisherigen Arbeitsinhalte bezüglich der RS232 - Schnittstelle konzentrieten sich auf die Bearbeitung der [https://cache.automation.siemens.com/dnl/TYyMTI4NQAA_12108826_HB/gs340_d.pdf "Erste Schritte - Datei"] von Siemens.


===Weblinks ind Literatur ===
= Weblinks und Literatur =
====Aufbau SIMATIC S7-300====
====Aufbau SIMATIC S7-300====



Version vom 12. Januar 2017, 18:08 Uhr


Einleitung

Im Rahmen des Studiengangs Mechatronik der Hochschule Hamm-Lippstadt wird im 7. Fachsemester das Praktikum Produktionstechnik angeboten. Dieses Praktikum ist Teil des Fach-Moduls Global Production Engineering. In diesem Praktikum geht es um die Verwirklichung eines mechatronischen Produktionssystems (MPS) mittels Speicher Programmierbarer Steuerung (SPS), sowie die Ansteuerung von 3 Schrittmotor-Achsen im Rahmen des Hauptprojektes "Aufbau einer 3-D-Bearbeitungsmaschine".

Das Thema Ansteuerung einer Schrittmotor-Achse mit Siemens SIMATIC S7-300-CPU313C ist ein Teilthemengebiet des Projekts 3-D-Bearbeitungsmaschine und wurde von Stefan Schweins, Jonas Rüschenschmidt, sowie im darauffolgenden Jahr von Hendrik Pabst und Ziad Abuelkhair bearbeitet. Im Anschluss haben Pascal Siekmann und Gerhard Dick das Projekt fortgeführt.

Aufgabenstellung

Die Aufgabe des Praktikums war es, eine 3-D Bearbeitungsmaschine zu konstruieren und drei Achsen mit verschiedener Steuerungshardware anzusteuern. Ebenfalls sollten Bearbeitungskoordinaten für Werkstücke übermittelt werden können.

Die Aufgabe bestand darin, die Ansteuerung einer Zahnriemenachse mit Schrittmotor durch den Einsatz von einer speicherprogrammierbaren Steuerung, - kurz SPS, SIMATIC S7-CPU300-313C des Unternehmens Siemens zu realisieren.

Zur Ansteuerung der Schrittmotoren kommen GeckoDrive-Schrittmotortreiber zum Einsatz. Die Aufgabenstellung gliedert sich in folgende Teilaufgaben:

Aufbau

  • Einlesen und Einregeln der Soll-Position mittels RS232-Schnittstelle
  • Hardwareanalyse und Hardwareaufbau sowie Hinzunahme von Pulldown-Widerständen für die Endschaltersteuerung

Kabelfertigung

Test der Ansteuerung

  • Ausgabe eines digitalen Signals am Ausgang der SPS

Leistungsstufe ansteuern

  • Programmierung
  • Test mit abgeschraubter Verfahreinheit
  • Test und Inbetriebnahme der Endschalter
  • Dateneingabe über Arduino-Monitor
  • Achsenansteuerung für mehrere Achsen duplizieren und einlesen einer definierten Stringfolge

Test mit Steuerungsalgorithmus

  • Kommunikation mit Matlab-Steuerungsalgorithmus testen
  • Programmier-Review

Vewendete Hardware

  • SIEMENS Hutschiene
  • SIMATIC PS307
  • SIMATIC S7-300-CPU313C
  • SIMATIC CP340
  • GeckoDrive G201x
  • Leitung 25-polig
  • Stecker Sub-D 25-polig
  • Endschalter
  • Widerstände 7,2 kOhm – 8,4 kOhm
  • Pulldown-Widerstände


Verwendete Software

Siemens Simatic Step7 Manager

Eine Entwicklungsumgebung von Siemens zur Programmierung von Siemens SPS-Steuerungen.

Siemens Lizenzmanager

Die Verwendung von Siemens Step 7 ist nur unter Nutzung eines aktuellen Lizenzkeys möglich. Dieser muss zunächst über den Siemens Lizenzmanager in das Softwarepaket eingebunden werden.

HTerm

Die kostenfreie Software HTerm ermöglicht eine serielle Kommunikation über den RS232-Bus. Mit dieser wurde die serielle Schnittstelle eingerichtet und auf Ihre Funktion geprüft.


Versuchsaufbau

Schaltplan

Verschaltung der Bauelemente

Um alle Hardwarekomponenten miteinander verbinden zu können, wurde ein Schaltplan erstellt, welcher die Verschaltung aller Bauteile veranschaulicht.

Dimensionierung der Ausgangssignale

Um ein Schritt - bzw. Richtungs - Signal an eine Achse zu übertragen ist es notwendig die Signale an den Schrittmotortreiber zu senden, welcher den Schrittmotor ansteuert. Die Signale des SPS Moduls werden mit 24V ausgegeben, diese Spannung ist jedoch als Eingangsspannung für das GeckoDrive nicht geeignet, da dieser mit einer Spannung von 3.3V bis 5.5V arbeitet. Um zu gewährleisten, dass das GeckoDrive nicht beschädigt wird und die Signale richtig verarbeitet werden können, mussten die ensprechenden Ausgangssignale der S7 -300 neu dimensioniert werden. Hierfür wurden Widerstände zwischen den digitalen Ausgang des Step - bzw. Direction - Pins und den Eingang der jeweiligen Pins am GeckoDrive geschaltet. Um die Widerstande richtig bestimmen zu können, wurden Sie durch folgende Berechnung festgelegt:

  • Spannung der digitalen Ausgänge = 24V
  • Benötigte Spannung des Direction - Pins = 3,3V bis 5,5V
  • Benötigte Spannung des Step - Pins = 3,3V bis 5,5V


R= U/I Ohmsches Gesetzt

R = (24V - 3,3V)/2,5mA = 8,2kΩ

R = (24V - 5,5V)/2,5mA = 7,4kΩ

Somit müssen die zwischengeschalteten Widerstände zwischen 7,4kΩ und 8,2kΩ liegen.

Versuchsdurchführung

Nachdem alle Hardwarekomponenten miteinander verschaltet und die benötigten Ausgangssignale mittels Widerständen dimensioniert wurden, konnte ein Großteil des Programmes zur Steuerung der Achsen geschrieben werden.

Beispiel Hardwarekonfiguration

Einbinden der Hardware in die Software

Um die Kommunikation zwischen der Software und der eingesetzten Hardware zu gewährleisten, ist es nötig diese zunächst über den Hardwarekonfigurator in die Software einzubinden. Hierzu wird die integrierte "HW Konfig" gestartet und alle benötigten Hardwarekomponenten aus der Hardwareauswahl in die Hardwarekonfiguration eingefügt. Anschließend werden diese über den Menüpunkt "Speichern und Laden" in die Software eingebunden. Wie die HW Konfig. nach erfolgreicher Einbindung der Hardware aussehen könnte, zeigt das Bild auf der rechten Seite.

Ergänzung der Software durch manuelle Updates

Die verwendete CPU ist nicht im Standard-Hardwarekonfigurationspaket enthalten und muss manuell hinzugefügt werden. Dieses ist im Download-Bereich von Siemens zu finden und kann dort nach Anmeldung kostenfrei nachinstalliert werden.

Erstellen einer Symboltabelle

Im nächsten Schritt wird eine Symboltabelle für die Programmierung angelegt. In dieser Symboltabelle werden sowohl alle Ein - bzw. Ausgänge, als auch benötigte Merker und Zeiten definiert, welche für die Programmierung benötigt werden. Diese stehen symbolisch für die Speicherplätze im Adressspeicher der SPS. Die Symboltabelle kann nachträglich ergänzt und erweitert werden. Ein Beispiel für eine Symboltabelle zeigt nachfolgendes Bild: Symboltabelle

Programmierung

/*

Schrittbaustein

*/

Eine Siemens SPS kann in mit der Entwicklungsumgebung Step 7 in verschiedenen Sprachen programmiert werden. Die verfügbaren Programmiersprachen gliedern sich in AWL (Anweisungsliste), KOP (Kontaktplan) und FUP (Funktionsplan). Diese 3 Programmiersprachen richten sich an ganz unterschiedliche Anwendertypen. AWL ähnelt in seiner Anwendung der Assembler-Programmierung und richtet sich an erfahrene Softwareentwickler. Ein KOP-Programm erinnert an einen elektrischen Schaltplan und richtet sich daher an Anwender aus dem Elektrotechnischen Bereich. FUP stellt einen übersichtlichen Funktionsplan dar, wodurch die Programmierung auch für Laien verständlicher ist. Jedes Programm wird mit Hilfe von Bausteinen erstellt, welche sich wie folgt gliedern:

Anwenderbaustein Abkürzung Erläuterung
Organisationsbaustein OB Steuerwerk der Programmbausteine, wird zyklisch aufgerufen
Funktionsbaustein FB Zugeordneter Speicherbereich, greift auf Daten aus Datenbaustein zu
Funktion FC keinen Zugeordneten Speicherbereich, lokale Daten gehen nach Aufruf verloren
Datenbaustein DB Stellen Speicherplatz für Datenvariablen bereit, Globale & Instant – DBs
Systemfunktionsbaustein SFB Im Betriebssystem der CPU hinterlegt, vom Anwender aufrufbar
Systemfunktion SFC Im Betriebssystem der CPU hinterlegt, vom Anwender aufrufbar
Systemdaten SDB Datenspeicherung für das Automatisierungssystem

Jede Art von Baustein ist für spezifische Anforderungen geeignet. Der Start eines Programmes erfolgt dabei stets im OB1.

Zyklischer Ablauf

Der Programmablauf einer SPS verläuft zyklisch. Das bedeutet, dass der Organisationsbaustein OB1 zyklisch aufgerufen wird. Alle darin enthalten Aufrufe weiterer Funktionen und Funktionsbausteine werden nacheinander ausgeführt. Anschliessend beginnt der Zyklus erneut. Dabei ist zu beachten, dass Eingänge hardwarebedingt nur vor einem Programmzyklus eingelesen werden können und Ausgänge nur nach Abschluss eines Programmzyklus angesteuert werden können. Innerhalb eines Programmzyklus ist das Einlesen und Ausgeben von digitalen Ein- und Ausgängen nicht möglich.

Zykluszeit

Die Zykluszeit ist die Zeit, die das Betriebssystem für die Bearbeitung eines Programmdurchlaufes - d. h. eines OB 1-Durchlaufes - sowie aller in diesem Durchlauf untergebrachten Programmteile und Systemtätigkeiten. Diese Zeit wird überwacht. Die Zykluszeit je Schritt im Programm ist mit 2ms angegeben. Für folgendes Beispielprogramm wurde eine tatsächliche Zykluszeit von etwa 5,4ms ermittelt.

Beispielprogramm für einen Schrittbaustein
am Oszilloskop gemessene tatsächliche Zykluszeit

Diese Verzögerung wird durch unterschiedliche Einflussfaktoren verursacht. Im Folgenden werden die Wichtigsten genannt:

  • Grundlast (K)
  • Anzahl Bytes im Baugruppenträger 0 (A)
  • Anzahl Bytes im Baugruppenträger 1 bis 3 (B)
  • Verlängerung der Anwenderprogramm - Bearbeitungszeit

Das Betriebssystem Ihrer CPU führt neben der eigentlichen Abarbeitung des Anwenderprogramms noch weitere zeitgleiche Prozesse durch (z. B. Timerverwaltung des Kernbetriebssystems). Diese Prozesse verlängern die Bearbeitungszeit des Anwenderprogramms. Daher muss bei der Berechnung der Zykluszeit mit dem Bearbeitungszeit-Faktor multipliziert werden. Für CPU313C beträgt dieser Faktor 1,10.

Im Folgenden sind die Einflussfaktoren, die für die Berechnung der Zykluszeit notwendig sind, aufgelistet:

Konstante Anteile CPU313C_Bearbeitungszeit
K Grundlast 100µS
A je Byte in Baugruppenträger 0 35µS
B je Byte in Baugruppenträger1 bis 3 43µs

Die berechnete Zykluszeit ergibt sich aus der Summe aller folgenden Einflussfaktoren: Zykluszeit_verzögert(Z_ver)=(Z+A+B+K) * 1,10. In dieser Formel ist A=0, weil im Versuchsaufbau der Baugruppenträger 0 nicht gebraucht wird. Der Faktor B wird mit 4 multipliziert, da man im Baugruppenträger 32 Bit(digitale Input und Output)= 4 Byte hat. Daher lautet die Formel:

Zykluszeit_verzögert :Z_ver =(Z+B+K) * 1,10.

Z_ver=(2ms+(4 * 0,0043 ms)+100ms) * 1,10 = 5,192 ms

Je nach Programmablauf kann die Zykluszeit variieren. Dies wird verursacht durch:

  • bedingte Befehle
  • bedingte Bausteinaufrufe
  • unterschiedliche Programmpfade
  • Schleifen usw.


Auswahl der Programmiersprache

Bei der Auswahl der Programmiersprache fiel die Wahl auf AWL. Diese ist zwar schwieriger zu Programmieren, bietet jedoch im Gegensatz zu KOP und FUP mehr Möglichkeiten in der Programmgestaltung. KOP und FUP stellen nur einen Bruchteil der in AWL verfügbaren Funktionen zur Verfügung.


Programmablaufplan

Zur Planung der zu programmierenden Software wurde zunächst ein Programmablaufplan erstellt


Serielle Kommunikation mit CP340

Das Modul CP340 ermöglicht eine serielle Kommunikation über einen RS232-Bus. Über diesen Bus werden die Koordinaten vom Steuerungsalgorithmus an die SPS übertragen. Die Datenübertragung erfolgt als String im ASCII-Format. Bei der Konfiguration ist darauf zu achten, dass in den Einstellungen des CP340-Moduls die Datenübertragung auf das ASCII-Format eingestellt ist.

Der übertragene String ist wie folgt aufgebaut:

  • Referenzfahrt: U12345V12345W12345;
  • Koordinatenpunkt: X12345Y12345Z12345F12345;

Mittels der Referenzfahrt wird der Steuerung ein Referenzkoordinatenpunkt übermittelt, welcher die aktuellen Positionen der Achsen repräsentiert. Dieser muss zu Beginn jedes Fräsvorganges einmalig übermittelt werden um dem System seine Ursprungskoordinaten mitzuteilen. U repräsentiert hierbei die X-Achse, V die Y-Achse und W die Z-Achse. Die darauffolgenden Zahlen stehen für die Koordinaten der jeweiligen Achse in 1/100mm. Über den Koordinatenpunkt wird der Steuerung die nächste Zielkoordinate übermittelt. X, Y und Z repräsentieren die jeweilige Achse, F steht für den Vorschub. Auch hier beträgt die Maßeinheit 1/100mm.


Verarbeitung der Koordinaten

Zu Beginn des Programmes wird überprüft, ob der empfangene String valide ist und es sich hierbei um eine Referenzfahrt oder einen anzusteuernden Koordinatenpunkt handelt.

Anschliessend werden die einzelnen Koordinaten aus dem String extrahiert und in das Format Double-Integer umgewandelt um damit im weiteren Programmablauf rechnen zu können.

Aus der Differenz zwischen Soll- und Ist-Koordinate wird die Verfahrstrecke je Achse ermittelt. Das Vorzeichen der Verfahrstrecke stellt die Richtung der jeweiligen Achse dar.

Am Ende des Programmzyklus werden die Soll-Koordinaten als Ist-Koordinaten für den darauffolgenden Zyklus gespeichert.


Weblinks und Literatur

Aufbau SIMATIC S7-300

Zykluszeit

Software

Programmierung

Weitere Links