Ansteuerung einer Schrittmotor-Achse mit Siemens SIMATIC S7-300 SPS

Aus HSHL Mechatronik
Zur Navigation springen Zur Suche springen


Autoren: Pia Dommen; Luca Riering

→ zurück zur Übersicht: 3-D-Bearbeitungsmaschine (Projekt des Schwerpunkts GPE im Studiengang MTR)

CPU313C auf Hutschiene[1]

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_(Projekt_des_Schwerpunkts_GPE_im_Studiengang_MTR) 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

Anforderungsdefinition

Bei der Anforderungsdefinition wurde sich zunächst einmal in das Thema und in die Aufgabenstellung hereingearbeitet. Hierzu sind erste Informationen zu den einzelnen Komponenten gesammelt worden und erste Gedanken zu der Umsetzung wurden im Team besprochen. Auch sind in dieser Phase Absprachen mit dem Auftraggeber erfolgt und es wurde ein Budget festgelegt, über das in diesem Projekt verfügt werden kann. Zusätzlich sind in dieser ersten Projektphase die Anforderungsliste und eine Einkaufsliste erstellt worden. Die Anforderungsliste wurde hier in Excel verschriftlicht und mit Terminen versehen, damit am Ende des Projektes überprüft werden kann, ob alle Punkte der Anforderungen eingehalten worden sind.

Funktionaler Systementwurf

Bei der Erstellung des funktionalen Systementwurfes ist eine grobe Funktion des Projektes festgelegt worden und diese wurde mittels eines Schaubildes veranschaulicht. Dieser Systementwurf ist zunächst lösungsneutral und stellt zunächst nur eine grobe Richtung dar.

Technischer Systementwurf

Komponentenspezifikation

Programmierung

Grundkonfiguration mit TIA V15.1

Einrichtungsassistent in Step 7[2]

Erstellung des Projektes im TIA-Portal V15.1

Nach dem unter „Neues Projekt erstellen“ ein Projekt angelegt wurde, öffnet sich der das Fenster „Erste Schritte“. In diesem Fenster werden diverse Auswahlmöglichkeiten für den Beginn des Projektes angeboten. In den meisten Fällen ist es am sinnvollsten damit anzufangen die Hardware anzulegen und zu parametrieren. Mit „Ein Gerät konfigurieren“ kommt man zur passenden Oberfläche, „Geräte & Netze“. In diesem Fenster kann man über die Beschreibung und die Artikel-Nummer die vorhandene Hardware auswählen und in der passenden Version dem Projekt hinzufügen.

Anlegen und Parametrieren von Hardware

Im Projekt wird in der „Projektnavigation“ unter „Gerätekonfiguration“ die Hardware angezeigt. Mit der Anwahl einer Baugruppe, erscheint ein Eigenschaftsfenster. In diesem Projekt besteht die Hardwarekonfiguration aus der S7-300 PLC und dem CP340-Modul zur Kommunikation über RS-232. Im Reiter Allgemein ist das Kommunikationsprotokoll des Moduls zu parametrieren. Zu diesen Parametern gehören auch die E/A-Adressen. Hier wird der zu verwendende Speicherbereich der PLC ausgewählt. Die Empfangenen oder zu sendenden Daten werden in diesem Bereich gespeichert und/oder ausgelesen. Zu beachten ist, dass bei diesem Modul die Baudrate auf 9600 festgelegt ist und nicht verändert werden kann. Bei der Parametrierung der PLC ist zu erwähnen, dass die PLC zwei integrierte IO-Karten verbauten. Der PLC muss eine IP-Adresse gegeben werden und den IO-Karten muss genau wie dem CP 340 Modul ein Speicherbereich zugeordnet werden.

Aufbau der Kommunikation mit dem CP 340 Kommunikationsmodul

Nachdem das Modul der Kommunikation entsprechend parametriert worden ist, muss die Kommunikation in der PLC angelegt werden. Dazu muss die Funktion „P_RCV“ im zyklischen Programm der PLC aufgerufen werden. Die Funktion benötigt zusätzlich einen Speicherbaustein „P_RCV_DB“ und einen Instanzfunktionsbaustein „P_RCV“. Die Beschaltung der Ein- und Ausgänge der Funktionsblöcke ist der Funktionsbeschreibung der Blöcke in der TIA-Portal Hilfe zu entnehmen. Kurz: EN_R Freigabe für Daten lesen

R Auftragsabbruch Laufender Auftrag wird abgebrochen. Empfang gesperrt.

LADDR Basisadresse des CP 340 Die Basisadresse wird aus STEP 7 entnommen

DB_NO Datenbausteinnummer Empfangs-DB-Nr.: CPU-spezifisch, Null ist nicht erlaubt

DBB_NO Datenbytenummer 0 ≤ DBB_NO ≤ 8190 Empfangsdaten ab Datenbyte

NDR 1 Auftrag fertig ohne Fehler, Daten übernommen Parameter STATUS == 16#00;

ERROR 1 Auftrag abgebrochen mit Fehler Parameter STATUS enthält die Fehlerinformation.

LEN 1 Länge des empfangenen Telegramms 1 ≤ LEN ≤ 1024, Angabe in Anzahl Byte (Muss auch am Modul parametriert werden!)

STATUS 1 Spezifikation des Fehlers Bei ERROR == 1 steht im Parameter STATUS die Fehlerinformation.

Steuerung der Ausgänge

Zur Steuerung der Ausgänge müssen diese in den PLC-Variablen angelegt werden und der entsprechenden Adresse an den IO-Karten zugewiesen werden. Die Ausgänge können dann die wie Variablen in der Programmierung verwendet werden.

Programmierung

Die PLC arbeitet zyklisch einen Operationsbaustein ab, den OB1 („Main“-OB). In diesem OB müssen alle Funktionen aufgerufen werden, welche von der PLC abgearbeitet werden sollen. Funktionen die nicht im OB aufgerufen werden, haben keinerlei Auswirkung auf den Ablauf des Programms.

Um die CNC-Fräse zu programmieren, ist sich für die Programmiersprachen FUP (Funktionsplan) und SCL (Structured Control Language) entschieden worden.

Die Berechnung und Konvertierung der Werte zur Ansteuerung der Achsen ist in einer SCL-Funktion erfolgt. Das Pulsen und die Übertragung der Signale ist in einem Funktionsbaustein in FUP realisiert worden.

Programmierung

Wie eine Siemens SPS funktioniert wird in dem Artikel Automatisierungssystem SPS SIMATIC S7-300 genauer beschrieben. Näheres zum verwendeten Kommunikationsmodul, CP340, ist in dem Artikel Serielle Kommunikation mit dem CP340-Modul zu finden.

Im Folgenden wird der aktuelle Programmstatus näher erläutert. Das Step7-Programm ist unter diesem Link im SVN hinterlegt: SPS-Programm.

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[3]
Am Oszilloskop gemessene tatsächliche Zykluszeit[4]


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. Im späteren Projektverlauf wurde zudem eine erste Achsansteuerung mit Graph-Schrittkettenprogrammierung erstellt.

Programmablaufplan

Programmablaufplan des Projektes[5]

Zur Planung der zu programmierenden Software wurde zunächst ein Programmablaufplan erstellt. Dieser stellt die Funktionsweise des SPS-Programmes dar und ist für die weitere Verwendung im SVN hinterlegt. SPS-Programm

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. Außerdem unterstützt die CP340 nur eine Baudrate bis 9600 Baud. Darauf ist bei der Verbindung zu Kommunikationsteilnehmern zu achten.

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.
  • Referenzfahrt ausführen: Übertragene Koordinaten zur weiteren Verarbeitung in das Format Double-Integer umwandeln und als aktuelle Ist-Koordinaten für den nachfolgenden Zyklus speichern.
  • Koordinatenfahrt: Koordinatendaten aus empfangenem String extrahieren und zur weiteren Verarbeitung in das Format Double-Integer umwandeln.
  • 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.
  • Schrittkette zur Regelung des Schritttaktes aufrufen

Ansteuerung der Achsen

Schrittkette des Positionieralgorithmus[6]

Die CPU313C verfügt über einen Positionierbaustein (SFB 46) zur Ansteuerung von Schrittmotortreibern. Dieser ist jedoch nur bedingt für die Aufgabenstellung geeignet, weil er nur über 2 Vorschub-Modi verfügt. Die Realisierung eines dynamischen Programmgesteuerten Vorschubs ist damit also nicht möglich. Um diese softwaregesteuerte Vorschubregulierung zu realisieren muss ein eigener Positionieralgorithmus entwickelt werden. Hierfür ist die Schrittkettenprogrammierung in Graph sehr hilfreich. Der Positionieralgorithmus wurde in der Schlussphase des Projektes angefangen und muss noch vollendet werden. Im jetzigen Projektstatus ist er nur für eine Achse ausgelegt und verfügt noch nicht über eine dynamische Vorschub-Regelung.

Das Schrittkettenprogramm funktioniert momentan folgendermaßen:

  • Ausgang 124.3 auf High setzen
  • 100ms warten (hier dynamischen Vorschub ansetzen)
  • Ausgang 124.3 auf Low setzen
  • 100ms warten (hier dynamischen Vorschub ansetzen)
  • wenn Soll-Position erreicht, Schrittkette beenden
  • ansonsten Schrittzähler inkrementieren und Schrittkette erneut ausführen

Komponententest

Integrationstest

Systemtest

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

Verschaltung der Bauelemente

SPS-Ansteuerungsschaltplan[7]
Platine zur Verbindung der SPS mit Schaltschrank[8]

Um alle Hardwarekomponenten miteinander verbinden zu können, wurde ein Schaltplan erstellt, welcher die Verschaltung aller Bauteile veranschaulicht. Erläuterung des Schaltplans:

  • Power Supply 307: Stromversorgung der SPS-Steuerung
  • SPS-CPU-313C: CPU-Einheit der SPS-Steuerung
  • DI16/DO16xDC24V: Digitale Ein- und Ausgänge der SPS-Steuerung
  • Power Supply: Stromversorgung der Schrittmotortreiber
  • GD1-GeckoDrive: GeckoDrive G201X - Schrittmotortreiber
  • GD2-GeckoDrive: GeckoDrive G201X - Schrittmotortreiber
  • GD3-GeckoDrive: GeckoDrive G201X - Schrittmotortreiber
  • M1-Motor: Schrittmotor
  • M2-Motor: Schrittmotor
  • M3-Motor: Schrittmotor

Schaltplan-Originaldatei

Im letzten Praktikumstermin wurde eine Platine gefertigt, die eine einfache Verbindung über ein D-SUB 25-poliges Kabel ermöglicht.

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 der SPS = 24V
  • Benötigte Spannung des GeckoDrive Direction-Pins = 3,3V bis 5,5V
  • Benötigte Spannung des GeckoDrive Step-Pins = 3,3V bis 5,5V
  • Stromstärke der GeckoDrive-Pins = 2,5mA (Schrittmotoransteuerung_mit_Gecko_Drive)

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.


Fazit, Zusammenfassung und Ausblick

Das Projekt Ansteuerung einer Schrittmotor-Achse mit Siemens SIMATIC S7-300 SPS stellte eine spannende Herausforderung dar und gewährte tiefen Einblick in die Entwicklung mechatronischer Systeme mit SPS-Steuerungen. Die Einarbeitung in die Siemens-Software und die Programmierung der SPS-Software erfordert gründliche Recherchen und intensive Einarbeitung in das Thema. Dabei sind nicht nur Programmierkenntnisse sondern auch Kenntnisse in der Elektrotechnik notwendig. Die Programmierumgebung Step 7 ist bietet vielfältige Möglichkeiten zur Programmierung von SPS-Steuerungen. Mit seinen 3, auf unterschiedliche Anwender zugeschnittenen Programmiersprachen, zielt Step 7 auf breites Feld von Entwicklern ab.


Die Aufgabenstellung des Praktikums konnte zu einem Großteil erfüllt werden. Für weitere Schritte muss der Positionieralgorithmus vollendet werden. Zur erfolgreichen Ansteuerung muss das Programm noch um einen Positionierbaustein (SFB 46) oder einen eigenen Ansteuerungsalgorithmus (siehe 6.11) erweitert werden. Der Quellcode ist für nachfolgende Projektteams kommentiert und die Projektdateien sind SVN hinterlegt.

Im Rahmen des Praktikums erledigte Aufgaben:

  • Realisierung und Test der seriellen Schnittstelle
  • Programmablaufplan erstellen
  • Einlesen und einregeln der Soll-Position
  • einfacher Positionier-Algorithmus für eine Achse
  • Erstellung des Schaltplans
  • Fertigung einer Platine für Verbindung mit den weiteren Hardware-Komponenten über D-SUB 25-poliges Kabel

Was ist noch nicht fertig:

  • Vollendung des Positionier-Algorithmus für weitere Achsen
  • dynamische Regulierung des Vorschubs
  • umfangreiche Tests mit der Hardware

Weblinks und Literatur

Selbstlern Unterlagen

SIMENS AG: „Ausbildungsunterlage für die durchgängige Automatisierungslösung Totally Integrated Automation (T I A) “, unter: http://w3.siemens.com/mcms/sce/de/fortbildungen/ausbildungsunterlagen/classic-module/tabcardseiten/documents/prozessvisualisierung/f01_protool_op7.pdf (abgerufen am 13.01.2017). Programmieren: Erste Schritte und Übungen mit STEP 7

SIMENS AG: „Erste Schritte und Übungen mit STEP 7 “, unter: http://www.steuerungstechnik-heller.de/Steuerungstechnik/Dokumentation/Dokumentation/S7gsv54_d.pdf (abgerufen am 13.01.2017).

Weitere Links im HSHL-Wiki

Bildquellen

  1. Siekmann, Pascal (2017): CPU313C auf Hutschiene
  2. Dick, Gerhard (2017): Einrichtungsassistent in Step 7
  3. Pabst, Hendrik (2015): Beispielprogramm für einen Schrittbaustein
  4. Abuelkhairam, Ziad (2015): Am Oszilloskop gemessene tatsächliche Zykluszeit
  5. Dick, Gerhard (2017): Programmablaufplan des Projektes
  6. Dick, Gerhard (2017): Schrittkette des Positionieralgorithmus
  7. Siekmann, Pascal (2017): SPS-Ansteuerungsschaltplan
  8. Siekmann, Pascal (2017): Platine zur Verbindung der SPS mit Schaltschrank

→ zurück zur Übersicht: 3-D-Bearbeitungsmaschine (Projekt des Schwerpunkts GPE im Studiengang MTR)