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

Aus HSHL Mechatronik
Zur Navigation springen Zur Suche springen
(Die Seite wurde neu angelegt: „=== Aufgabenstellung === Ansteuerung einer Zahnriemenachse mit Schrittmotor durch den Einsatz von einer Speicherprogrammierbaren Steuerung (SPS),Link zu SPS =…“)
 
 
(664 dazwischenliegende Versionen von 9 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
=== Aufgabenstellung ===
[[Kategorie:Automatisierungstechnik]]
[[Kategorie:2019/ 2020_WS_MTR7_Praktikum_GPE]]
[[Kategorie:SPS]]


Ansteuerung einer Zahnriemenachse mit Schrittmotor durch den Einsatz von einer Speicherprogrammierbaren Steuerung (SPS),Link zu SPS => [[http://193.175.248.56/wiki/index.php/Speicherprogrammierbare_Steuerung]] SIMATIC S7-300, des Unternehmen Siemens.
<!-- Kopieren Sie diesen Header in Ihren Artikel, damit er aufgelistet wird.  -->
Zwischen der SPS und dem Schrittmotor befindet sich zusätzlich noch ein GeckoDrive G201X als Motorsteuerung.
'''Autoren:''' [[Benutzer:Pia_Dommen| Pia Dommen]]; [[Benutzer:Luca_Riering| Luca Riering]]<br/>


=== Aufbau / Schaltplan ===
→ zurück zur Übersicht: [[3-D-Bearbeitungsmaschine (Projekt des Schwerpunkts GPE im Studiengang MTR)]]


Im Allgemeinen ist der Aufbau der Hardwarekomponenten wie bei den meisten Steuerungen in Last- und Steuerkreis aufgeteilt.
Projektdateien: [[Datei:CNCS7300 Siemens SPS CNC.zip]]


Laststromkreis:
Abschlusspräsentation: [[Datei:CNCS7300 Abschlusspräsentation SPS Siemens.pptx]]


*alle Verbindungen zwischen der Spannungsversorgung (Power Supply), dem Geckodrive und dem Schrittmotor
[[Datei:Sps steuerung cpu313c.jpg|mini|800px|right|CPU313C auf Hutschiene]]


Steuerstromkreis:
= Einleitung =


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


[[Datei:Schaltplan SPS-Gecko-Igus.jpg|500px|thumb|none|Schaltplan SPS-Gecko-Igus]]
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)]].


=== Einrichtung der Hardware SIMATIC S7-300 ===
Die Bearbeitungsreihenfolge in diesem Projekt lautet wie folgt:


Wichtig bei der Programmierung einer SPS ist, dass die CPU (Central Processing Unit) weis welche Hardware vorhanden ist.
1. [[Benutzer:Stefanschweins| Stefan Schweins]] und [[Benutzer:Jonasrueschenschmidt| Jonas Rüschenschmidt]] (Step 7)


[[Datei:CPU_SPS.jpg]]
2. [[Benutzer:Hendrik Pabst| Hendrik Pabst]] und [[Benutzer:Ziad_Abuelkhair| Ziad Abuelkhair]] (Step 7)


Bevor eine Steuerung mit STEP 7 in Betrieb genommen werden kann, muss die vorhandene Hardware in der Software STEP 7 konfiguriert werden. Das SPS-System kann ohne eine Hardwarekonfiguration der SPS und der dazugehörigen Baugruppen nicht in Betrieb genommen werden.
3. [[Benutzer:Pascal_Siekmann| Pascal Siekmann]] und [[Benutzer:Gerhard_Dick| Gerhard Dick]] (Step 7)


Bei der Hardwarekonfiguration werden in STEP 7 die vorhandene Hardware (Profilschiene, Stromversorgung, CPU) aufgelistet. Danach werden je nach Bedarf die Baugruppen ausgewählt und Adressen zugewiesen. Zum Schluss wird diese Konfiguration in die CPU geladen, damit die CPU weis, welche Baugruppen zur Verfügung stehen welche Adressen vergeben sind.
4. [[Benutzer:Pia Dommen| Pia Dommen]] und [[Benutzer:Luca Riering| Luca Riering]] (TIA Portal)


Weitere Informationen zur Hardwarekonfiguration sind unter folgendem Link zu finden:
= Aufgabenstellung =


http://www.sps-lehrgang.de/hardwarekonfiguration/
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.


=== Kommunikation zwischen SPS und Rechner ===
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.


Bei der Einrichtung der Hardware muss zunächst eine Verbindung zwischen SPS und dem Rechner mit der Software STEP 7 hergestellt werden. Dazu wird ein Multimaster-Kabel verwendet welches die RS 232 Schnittstelle der SPS-CPU mit der USB-Schnittstelle des Rechners verbindet (siehe Abbildung unten).
Die Aufgabenstellung gliedert sich in folgende Teilaufgaben:


[[Datei:SPS_RS232.jpg]]
* Aufbau
** Einlesen und Einregeln der Soll-Position mittels RS232-Schnittstelle
** Hardwareanalyse und Hardwareaufbau sowie Hinzunahme von Pulldown-Widerständen für die Endschaltersteuerung
** Kabelfertigung


Diese Verbindung ist wichtig, um die Programm-Daten  aus der Software STEP 7 in die SPS zu laden und ebenfalls die SPS auslesen zu können. Beim Auslesen können sowohl schon vorhandene Programme ausgelesen werden, als auch Signalzustände z.B. von Sensorik am Eingang der SPS. Die SPS besitzt sowohl einen internen Speicher, als auch einen Slot für eine SD-Speicherkarte.
* Test der Ansteuerung
** Ausgabe eines digitalen Signals am Ausgang der SPS


=== Komplikationen und letzter Stand ===
* Leistungsstufe ansteuern
** Programmierung
** Test mit abgeschraubter Verfahreinheit
** Achsenansteuerung für mehrere Achsen duplizieren und einlesen einer definierten Stringfolge


Beim laden der Software in die SPS gab es ein Problem mir der Kommunikation zwischen dem Rechner und der SPS. Als Fehlermeldung wurde folgender Text ausgegeben: "Die Systemdaten können nicht auf die Baugruppe CPU 313C der Station SIMATIC 300 geladen werden".
* Test mit Steuerungsalgorithmus
** Kommunikation mit Matlab-Steuerungsalgorithmus testen
** Programmier-Review


[[Datei:2013-10-29_155401_1.png]]
* Dokumentation in SVN und Wiki nach dem V-Modell:


Daraufhin wurde der Kontakt zum Siemens Support gesucht. Herr Asaad Al-Suleihi hält den Kontakt zum Siemens Support.
{| class="wikitable"
Mail an Siemens Support:
| [[Datei:CNCS7300 V-Modell.png|400px|thumb|left| V-Modell]]
[[Datei:CNCS7300 Abschlusspräsentation SPS Siemens.pptx]]
|}


"Geehrter Siemens Support,
=Anforderungsdefinition=


wir haben in einem Praktikum unseres Studiengangs Mechatronik ein Projekt, in dem die Studierenden mit einer Siemens SPS (313-5BG04-0AB0) arbeiten.
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.  
Die Verbindung der SPS mit dem Computer erfolgt über ein USB PC Adapter und soll als Programmierschnittstelle genutzt werden.


Unser Problem tritt bei dem Ladevorgang der Hardwarekonfiguration in die Baugruppe auf.
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.
Es wird dann folgende Fehlermeldung ausgegeben:


Die Systemdaten können nicht auf die Baugruppe CPU 313C - (R0/S2) der Station SIMATIC 300(1) geladen werden.
SVN-Download: [https://svn.hshl.de/svn/MTR_GPE_Praktikum/trunk/Fachthemen/3D_Bearbeitungsmaschine/Automatisierung_SPS_siemens/01_Anforderungsdefintion/Anforderungsliste_SPS_Siemens.xlsx Anforderungsliste]
Schauen Sie unter Details nach oder versuchen Sie die Ursache im Diagnosepuffer der Baugruppe zu ermitteln.


Die Hilfe-Angaben wurden bereits ausprobiert.
=Funktionaler Systementwurf=


In der Anlage befindet sich auch der aktuelle Screenshot des Problems.
Bei der Erstellung des funktionalen Systementwurfes ist eine grobe Funktion des Projektes festgelegt worden und diese wurde mittels eines [[:Datei:CNCS7300 Funktionaler-Systementwurf.PNG|Schaubildes]] veranschaulicht. Dieser Systementwurf ist zunächst lösungsneutral und stellt zunächst nur eine grobe Richtung dar.
Das Problem taucht nur bei der Nutzung ohne SD-Karte auf.
Wenn eine SD-Karte eingesetzt wird, wird die Hardware nicht in dem Fenster "Teilnehmeradresse auswählen" erkannt."


== Achsensteuerung mit dSpace DS1104 und Matlab Simulink ==
{| class="wikitable"
| [[Datei:CNCS7300 Funktionaler-Systementwurf.PNG|800px|thumb|left|Funktionaler Systementwurf]]
[[Datei:S7300 Funktionaler-Systementwurf.pptx]]
|}


=== Aufgabenstellung ===
SVN-Download: [https://svn.hshl.de/svn/MTR_GPE_Praktikum/trunk/Fachthemen/3D_Bearbeitungsmaschine/Automatisierung_SPS_siemens/02_Funktionaler_Systementwurf/Funktionaler-Systementwurf.pptx Funtionaler-Systementwurf.pptx]


Ansteuerung einer Zahnriemenachse mit Schrittmotor durch den Einsatz von einem dSpace Board (DS1104) mit einer Programmierung auf Basis von Matlab Simulink.
=Technischer Systementwurf=
Zwischen dem dSpace Board und dem Schrittmotor befindet sich zusätzlich noch ein GeckoDrive G201X als Motorsteuerung.


=== Aufbau / Schaltplan ===
In dem nächsten Schritt, bei der Erstellung des technischen Systementwurfes ist der funktionale Systementwurf dann überarbeitet worden und spezifiziert worden. Dieses [[:Datei:CNCS7300 Technischer-Systementwurf.PNG|Schaubild]] zeigt die Zerlegung des Systems in einzelne Funktionsbausteine und auch das Zusammenwirken der einzelnen Schnittstellen.


Im Allgemeinen ist der Aufbau der Hardwarekomponenten wie bei den meisten Steuerungen in Last- und Steuerkreis aufgeteilt.  
{| class="wikitable"
| [[Datei:CNCS7300 Technischer-Systementwurf.PNG|800px|thumb|left|Technischer Systementwurf]]
[[Datei:S7300 Technischer-Systementwurf.pptx]]
|}


Laststromkreis:
SVN-Download: [https://svn.hshl.de/svn/MTR_GPE_Praktikum/trunk/Fachthemen/3D_Bearbeitungsmaschine/Automatisierung_SPS_siemens/03_Technischer_Systementwurf/Technischer-Systementwurf.pptx Technischer-Systementwurf.pptx]
*alle Verbindungen zwischen der Spannungsversorgung (Power Supply), dem Geckodrive und dem Schrittmotor


Steuerstromkreis:
=Komponentenspezifikation=
*alle Verbindungen zwischen der dSpace Ausgabebox (dSpace CP1104) und dem Geckodrive


Zum Programmieren wurde nach Schaltplan ein Versuchsaufbau generiert, damit erste Ergebnisse direkt erkannt und dokumentiert werden konnten.
Nachdem die beiden Systementwürfe festgelegt worden sind, wird sich genauer mit den einzelnen Komponenten beschäftigt. Hierzu wird in Datenblättern der Hard-/Softwarekomponenten nachgeschlagen. Es wird sich auch in das Programm TIA-Portal eingearbeitet


[[Datei:Schaltplan dSpace-Gecko-Igus.jpg|500px|thumb|none|Schaltplan dSpace-Geckodrive-Schrittmotor]]
Die verschiedenen Komponenten lauten:


Pinbelegung am SubD-Stecker der Ausgabebox
* SIEMENS Hutschiene
* SPS-Netzteil SIMATIC PS307 [https://asset.conrad.com/media10/add/160267/c1/-/de/000513201DS01/datenblatt-513201-siemens-simatic-ps307-24-v5-a-hutschienen-netzteil-din-rail-24-vdc-5-a-120-w-1-x.pdf Datenblatt]
* Speicherprogrammierbare Steuerung SIMATIC S7-300-CPU313C SVN-Download: [https://svn.hshl.de/svn/MTR_GPE_Praktikum/trunk/Allgemein/Literatur/Siemens%20SIMATIC/s7300_cpu_31xc_and_cpu_31x_operating_instructions_de-DE_de-DE.pdf Datenblatt]
* Kommunikationsmodul SIMATIC CP340 SVN-Download: [https://svn.hshl.de/svn/MTR_GPE_Praktikum/trunk/Allgemein/Literatur/Siemens%20SIMATIC/s7300_cp340_manual_de_de-DE.pdf Datenblatt]
* Schrittmotortreiber GeckoDrive G201x SVN: [https://svn.hshl.de/svn/MTR_GPE_Praktikum/trunk/Allgemein/Literatur/Gecko%20Drive/ Datenblätter]
* Schrittmotor Igus NEMA 23 [https://svn.hshl.de/svn/MTR_GPE_Praktikum/trunk/Allgemein/Literatur/Igus%20Antriebe/ Datenblätter]
* Leitung 25-polig
* Stecker Sub-D 25-polig
* Widerstände 1 kOhm
* Widerstände 10 kOhm
* Vishay Optokoppler Phototransistor CNY17-3 DIP-6 Transistor mit Basis DC [https://www.vishay.com/docs/83606/cny17.pdf Datenblatt]
* Mean Well DR-15-5 Hutschienen-Netzteil (DIN-Rail) 5 V/DC 2.4 A 12 W 1 x [https://asset.conrad.com/media10/add/160267/c1/-/en/001297353DS01/datenblatt-1297353-mean-well-dr-15-5-hutschienen-netzteil-din-rail-5-vdc-24-a-12-w-1-x.pdf Datenblatt]


[[Datei:Pinbelegung dSpace Panel.jpg|500px|thumb|none|Pinbelegung CP1104]]
SVN-Download: [https://svn.hshl.de/svn/MTR_GPE_Praktikum/trunk/Fachthemen/3D_Bearbeitungsmaschine/Automatisierung_SPS_siemens/04_Komponentenspezifikation/Komponentenspezifikation.xlsx Komponentenspezifikation.xlsx]


=== Regelkreis ===
=Entwicklung=


Für diesen Anwendungsfall startet der Regelkreis mit dem Einlesen eines bestimmten Weges über eine RS232 Schnittstelle.
Wie eine Siemens SPS funktioniert wird in dem Artikel [[Automatisierungssystem SPS SIMATIC S7-300|Automatisierungssystem SPS SIMATIC S7-300]] genauer beschrieben.
Dieser Wert ist der Sollwert der Position (Xsoll). Aus dieser Position wird durch die Programmierung auf dem dSpace Board ein PWM Signal erzeugt, welches eine bestimmte Anzahl an High-Pegeln an den Geckodrive sendet. Jeder High-Pegel steht für einen Schritt. Der Schrittmotor setzt diese Signale dann in 1.8° Schritte um und entlang der Linearachse wird ein Weg verfahren.
Im Folgenden wird der aktuelle Programmstatus näher erläutert. Das Programm ist unter diesem Link im SVN hinterlegt:
Ein Encoder soll dann diesen Weg durch Rückgabewerte zurücksenden, so dass ein kontinuierlicher Vergleich zwischen der Ist- und der Sollposition stattfinden kann, bis keine Regeldifferenz vorhanden ist.


[[Datei:Regelkreis_dSpace.jpg|500px|thumb|none|Regelkreis dSpace]]
SVN-Ordner: [https://svn.hshl.de/svn/MTR_GPE_Praktikum/trunk/Fachthemen/3D_Bearbeitungsmaschine/Automatisierung_SPS_siemens/05_Entwicklung/Steuerungsprogramm/ SPS-Programm]


=== Starten einer Simulink Programmierung inkl. ControlDesk ===
== Programmablaufplan ==
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.


Informationen zum Start einer Simulink Programmierung inkl. Anbindung von ControlDesk sind unter diesem Link zu finden: [[Datei:Start Simulink und ControlDesk.pdf|500px|thumb|none|Informationen zum Start von Simulink & ControlDesk]]
{| class="wikitable"
| [[Datei:CNCS7300 Programmablaufplan.PNG|800px|thumb|left|Programmablaufplan]]
[[Datei:S7300 Programmablaufplan.pptx]]
|}
SVN-Download: [https://svn.hshl.de/svn/MTR_GPE_Praktikum/trunk/Fachthemen/3D_Bearbeitungsmaschine/Automatisierung_SPS_siemens/05_Entwicklung/Steuerungsprogramm/Programmablaufplan.pptx Programmablaufplan.pptx]


== Projektierung im TIA V15.1 ==


=== Simulink Programm ===
===Erstellung des Projektes im TIA-Portal V15.1===


Im Simulink Programm startet mit der Eingabe der blau markierten Sollposition in hundertstel Millimetern.
Nach dem unter „Neues Projekt erstellen“ ein Projekt angelegt wurde, öffnet sich 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“ öffnet sich die passende Oberfläche, „Geräte & Netze“. In diesem Fenster kann über die Beschreibung und die Artikel-Nummer die vorhandene Hardware ausgewählt und in der passenden Version dem Projekt hinzugefügt werden.
Dieser Wert kann in ControlDesk durch einen Schieberegler verändert oder durch einen Baustein zum Einlesen von Daten einer RS232-Schnittstelle ersetzt werden.


Im nächsten Schritt wird diese Position in eine Position umgerechnet, welche eine Datenbasis in Schritten besitzt. 0,01 mm sind dann 0,303 Schritte.
Die folgenden Bilder veranschaulichen das Vorgehen:


In einer Datentyp-Umwandlung wird dieser Positionswert in ganzzahlige Werte (Integer-Werte) umgewandelt.
{| class="wikitable"
| [[Datei:CNCS7300 ErstellungProjektTIAPortal 1.PNG|800px|thumb|left|Neues Projekt erstellen]]
|-
| [[Datei:CNCS7300 ErstellungProjektTIAPortal 2.PNG|800px|thumb|left|Erste Schritte]]
|-
| [[Datei:CNCS7300 ErstellungProjektTIAPortal 3.PNG|800px|thumb|left|Neues Gerät hinzufügen]]
|}


Anschließend wird dieses Signal mit der aktuellen Position, welche in der Software hinterlegt ist, verglichen.
===Anlegen und Parametrieren von Hardware===
Der Relational Operator1 unterbricht bei Erreichen des Zielwertes die Verbindung zwischen dem Pulsgenerator und dem Digitalausgang für die Schritte. Dies geschieht durch ein Umschalten des Switch_Stop-Bausteins auf ein konstantes Low-Signal.
Der Relational Operator im unteren Bereich des Programms vergleicht die Sollposition mit der aktuellen Position, um die Richtung vorzugeben. Ist der neue Wert größer als die aktuelle Position, so fährt der Motor weiter vorwärts, sonst rückwärts. Dies funktioniert über den Switch-Richtung-Baustein.


Das Richtungssignal wird dann durch den Gain-Baustein halbiert, da es auf einen Analogausgang geleitet wird. Dieser Ausgang gibt bei dem Wert 1 eine Spannung von 10 V. Um 5 V zu erreichen muss also ein Wert von 0.5 an den Ausgang gesendet werden.
Im Projekt wird in der „Projektnavigation“ unter „Gerätekonfiguration“ die Hardware angezeigt ([[:Datei:CNCS7300 HardwareParametrierenundAnlegen.PNG|Abbildung CP340 Parameter]]). 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. Diese können über "Eigenschaften" -> "Allgemein" -> "E/A-Adressen", sowohl bei der SPS als auch beim Kommunikationsmodul, eingestellt werden. Folgende Abbildung verdeutlichen den Vorgang:


Für die Positionsbestimmung ist im oberen rechten Bereich ein Zähler über ein getriggertes Subsystem realisiert worden. Je nach gefahrener Richtung wird pro Schritt, also pro High-Signal, ein Schritt addiert oder subtrahiert, so dass für jedes reale Signal am Schrittmotor auch ein Schritt im Memory-Baustein gespeichert wird. Der Ausgang dieses Bausteins wird dann wie beschrieben zum Ist-Soll-Vergleich genutzt.
{| class="wikitable"
| [[Datei:S7300 E A Adressen CPU.PNG|800px|thumb|E/Adressen CPU]]
| [[Datei:S7300 E A Adressen CM.PNG|800px|thumb|E/Adressen CM]]
|}


Mit dem rechts dargestellten Scope können in der Simulink Simulation die Richtung, sowie die Ist- und die Sollpositionen dargestellt werden.
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 verbaut hat. Der PLC muss eine IP-Adresse gegeben werden und den IO-Karten muss genau wie dem CP 340 Modul ein Speicherbereich zugeordnet werden.


[[Datei:Programm dSpace Simulink.jpg|1000px|thumb|none|Programm dSpace Simulink]]
{| class="wikitable"
| [[Datei:CNCS7300 HardwareParametrierenundAnlegen.PNG|800px|thumb|left|CP340 Parameter]]
|}


=== ControlDesk Oberfläche ===
===Aufbau der Kommunikation mit dem CP 340 Kommunikationsmodul===


ControlDesk ist als Programm für die Visualisierung und Steuerung des Simulinkprogramms genutzt worden.
Nachdem das Modul der Kommunikation entsprechend parametriert worden ist, muss die Kommunikation in der PLC angelegt werden.
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.


In dem Bild ist die erstellte Oberfläche dargestellt.
Der übertragene String ist wie folgt aufgebaut:
Oben ist ein Schieberegler für die Sollposition vorhanden. Links oben ist eine Anzeige der aktuellen Position in Schritten integriert (Labels/IstSchritte).
* Referenzfahrt: U12345V12345W12345;
* Koordinatenpunkt: X12345Y12345Z12345F12345;


Darüber hinaus ist ein Plotter für den Vergleich der Ist- und der Sollschritte integriert worden.
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. Hier ist die Maßeinheit mm/min.


Mit den Schiebereglern links unten kann man die Pulsweite und die Periodendauer variieren.
Um die Kommunikation in der PLC einzurichten, muss die Funktion „P_RCV“ ([[:Datei:CNCS7300 CP340Kommunikation.PNG|Abbildung CP340 P_RCV-Funktion]]) 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:


{| class="wikitable"
!Kürzel !! Begriff !! Erklärung
|-
|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.
|}


[[Datei:ControlDesk.jpg|1000px|thumb|none|ControlDesk Oberfläche]]
{| class="wikitable"
| [[Datei:CNCS7300 CP340Kommunikation.PNG|800px|thumb|left|CP340 P_RCV-Funktion]]
|}


=== PWM Signal zur Ansteuerung des Motors ===
===Test der Kommunikation mit HTerm===
Das Programm HTerm ist ein Programm zur seriellen Kommunikation. In diesem Fall zwischen dem RS232-Port eines PC und der Siemens SPS. Für eine funktionierende Kommunikation der beiden Teilnehmer müssen zunächst einige Parameter eingestellt werden:
Baudrate = 9600;


Die Mindestperiodendauer, die der GeckoDrive benötigt um die einzelnen Schritte erkennen zu können beträgt 3,5 µs. In dem vorhandenen Simulinkprogramm ist bisher eine Periodendauer von 2 ms realisiert worden. Dieses Signal besteht aus 1 ms High- und 1 ms Low-Pegel.
Parität = Keine (None);


Port = COM Port an dem das Kommunikationsmodul angeschlossen ist;


[[Datei:PWM-Signal zur Motoransteuerung.JPG|500px|thumb|none|PWM-Signal zur Motoransteuerung]]
Databits = 8;


=== Herausforderungen ===
Stopbit = 1.


Integration eines Zählers für die Erkennung der Ist-Position durch
Bei der Eingabe aber auch bei der Ausgabe der Daten wird sich aus der Auswahl von ASCII, hexadezimal, binär und dezimalem Code entschieden.
* eine Matlab-Funktion
* einen Counter aus der DSP-Toolbox
* eine Eigenentwicklung (siehe Simulink Programm)


Die nächste Abbildung zeigt die Oberfläche des Programmes.


Spannungsabfall am Digitalausgang (von 5 V auf 1,77 V)
{| class="wikitable"
* Nutzung eines Netzteils
| [[Datei:CNCS7300 Hterm.png|600px|thumb|left|HTerm 0.8.1 GUI]]
* Wechsel auf Analogausgang
|}
* Kontakt zum dSpace Support wurde aufgenommen (ohne nutzbares Ergebnis)


===Steuerung der Ausgänge===


Positioniergenauigkeit
Zur Steuerung der Ausgänge müssen diese in den PLC-Variablen angelegt werden und der entsprechenden Adresse an den IO-Karten zugewiesen werden ([[:Datei:CNCS7300 Ausgaenge.PNG|siehe nächste Abbildung]]).
*Datentyp double musste in Integer umgewandelt werden, um einen Vergleich möglich zu machen. Realisierung durch Simulink-Baustein (siehe Programm)
Die Ausgänge können dann die wie Variablen in der Programmierung verwendet werden.


{| class="wikitable"
| [[Datei:CNCS7300 Ausgaenge.PNG|800px|thumb|left|Digitale Ausgänge in PLC-Variablen anlegen]]
|}


Historisch gewachsenes Programm
===Programmierung===
* zwischenzeitlich sehr unübersichliches Programm


=== Ausblick ===
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.


* Integration einer RS232-Schnittstelle
Um die CNC-Fräse zu programmieren, ist sich für die Programmiersprachen FUP (Funktionsplan) und SCL (Structured Control Language) entschieden worden.
* Integration von Software-Endschaltern
 
* Integration einer Kalibrierfahrt
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.
* Integration des Encoders
 
SCL-Funktion Calculate:
 
<code>
#Wenn das erste Zeichen der übergebenen Zeichenkette (Zeichen) den Char 'X' enthält, beginnt die Berechnung der Schritte und Delay-Zeiten.
IF #Zeichen = 'X' THEN
  #Das Schrittverhältnis wird mit der Formel Schrittverhätnis = Distanz / (360 / Schrittwinkel) * Treiberverhältnis errechnet und im globalen DB gespeichert.
  "Global".Schrittverhaeltnis := #Distanz / (360 / #Schrittwinkel) * #Treiberverhaeltnis; //0.033
  #Die übergebene Zeichenketten für X-Richtung ("Global".Received_Data_Splitted[0]), Y-Richtung ("Global".Received_Data_Splitted[1]), Z-Richtung ("Global".Received_Data_Splitted[2]) und Vorschub
  ("Global".Received_Data_Splitted[3]) werden von string zu integer konverteiert.
  "Global".approach[0] := STRING_TO_INT("Global".Received_Data_Splitted[0]);
  "Global".approach[1] := STRING_TO_INT("Global".Received_Data_Splitted[1]);
  "Global".approach[2] := STRING_TO_INT("Global".Received_Data_Splitted[2]);
  "Global".approach[3] := STRING_TO_INT("Global".Received_Data_Splitted[3]);
  #Die Anzahl der Schritte in die jeweilige Richtung wird mit Schritte = Referenzposition - anzufahrende Position / Schrittverhältnis errechnet
  "Global".X_steps := ("Global".refrences[0] - DINT_TO_REAL("Global".approach[0])) / "Global".Schrittverhaeltnis;
  "Global".Y_steps := ("Global".refrences[1] - DINT_TO_REAL("Global".approach[1])) / "Global".Schrittverhaeltnis;
  "Global".Z_steps := ("Global".refrences[2] - DINT_TO_REAL("Global".approach[2])) / "Global".Schrittverhaeltnis;
  #Die errechnete Anzahl der Schritte wird mit der Funktion ABS in einen absoluten Wert konvertiert.
  "Global".X_steps_abs := ABS("Global".X_steps);
  "Global".Y_steps_abs := ABS("Global".Y_steps);
  "Global".Z_steps_abs := ABS("Global".Z_steps);
  #Die Vorschubgeschwindigkeit wird mit Vorschubgeschwindigkeit = Vorschub / (Schrittverhältnis * 60) errechnet
  "Global".F_velocity := DINT_TO_REAL("Global".approach[3]) / ("Global".Schrittverhaeltnis * 60);
  #Die Zeichenketten für X-Richtung, Y-Richtung, Z-Richtung und Vorschub werden von integer zu real konverteiert.
  "Global".refrences[0] := DINT_TO_REAL("Global".approach[0]);
  "Global".refrences[1] := DINT_TO_REAL("Global".approach[1]);
  "Global".refrences[2] := DINT_TO_REAL("Global".approach[2]);
  #Errechnen der Länge des zu fahrenden Weges (Hypothenuse im dreidimensionalen Raum)
  "Global".hypothenuse := SQRT("Global".X_steps * "Global".X_steps
        + "Global".Y_steps * "Global".Y_steps
        + "Global".Z_steps * "Global".Z_steps);
  #Errechnen der Delay-Zeiten für die einzelnen Achsen mit Delay-Zeit = ((Schritte / Hypothenuse) * Vorschubgeschwindigkeit) * 2 * 0.1
  "Global".Delay_X_Real := (("Global".X_steps / "Global".hypothenuse) * "Global".F_velocity) * 2 * 0.1;
  "Global".Delay_Y_Real := (("Global".Y_steps / "Global".hypothenuse) * "Global".F_velocity) * 2 * 0.1;
  "Global".Delay_Z_Real := (("Global".Z_steps / "Global".hypothenuse) * "Global".F_velocity) * 2 * 0.1;
  #Delay-Zeit für Konvertierung in Zeit vorher in absoluten Wert konvertieren
  "Global".Delay_X_Real := ABS("Global".Delay_X_Real);
  "Global".Delay_Y_Real := ABS("Global".Delay_Y_Real);
  "Global".Delay_Z_Real := ABS("Global".Delay_Z_Real);
  #Delay-Zeit von Real zu double und von double in Time konvertieren
  "Global".Delay_X_Time := DINT_TO_TIME(REAL_TO_DINT("Global".Delay_X_Real * 100) / 100); // * 100 / 100 to prevent dataloss!!!
  "Global".Delay_Y_Time := DINT_TO_TIME(REAL_TO_DINT("Global".Delay_Y_Real * 100) / 100);
  "Global".Delay_Z_Time := DINT_TO_TIME(REAL_TO_DINT("Global".Delay_Z_Real * 100) / 100);
#Wenn das erste Zeichen der Zeichenkette der Char 'U' ist, schreibe die Zeichenketten in das Array für die Referenzwerte
ELSIF #Zeichen = 'U' THEN
  "Global".refrences[0] := STRING_TO_INT("Global".Received_Data_Splitted[0]);
  "Global".refrences[1] := STRING_TO_INT("Global".Received_Data_Splitted[1]);
  "Global".refrences[2] := STRING_TO_INT("Global".Received_Data_Splitted[2]);
END_IF;
</code>
 
FUP-Funktionsbaustein MotorControl:
 
{| class="wikitable"
|-
! MotorControl
|-
| [[Datei:CNCS7300 MotorControl 1.PNG|800px|left]]
|-
| [[Datei:CNCS7300 MotorControl 2.PNG|800px|left]]
|-
| [[Datei:CNCS7300 MotorControl 3.PNG|800px|left]]
|-
| [[Datei:CNCS7300 MotorControl 4.PNG|800px|left]]
|-
| [[Datei:CNCS7300 MotorControl 5.PNG|800px|left]]
|-
| [[Datei:CNCS7300 MotorControl 6.PNG|800px|left]]
|-
| [[Datei:CNCS7300 MotorControl 7.PNG|800px|left]]
|}
 
=== 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.
 
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 der 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"
!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 <math>Z_v=(Z+A+B+K) \cdot 1,10</math>
 
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 :<math>Z_v =(Z+B+K) \cdot 1,10</math>
 
<math>Z_v=(2ms+(4 \cdot 0,0043 ms)+100ms) \cdot 1,10 = 5,192 ms</math>
 
 
Je nach Programmablauf kann die Zykluszeit variieren. Dies wird verursacht durch:
* bedingte Befehle
* bedingte Bausteinaufrufe
* unterschiedliche Programmpfade
* Schleifen usw.
 
== Entwicklung der Optokoppler-Schaltung ==
 
Für die Eingangssignale der Schrittmotortreiber liegt ein LOW-Signal bei 0V Eingangsspannung und ein HIGH bei einer Eingangsspannung von 3,3 bis 5,5V vor. Die Ausgangssignale der SPS haben einen Ausgangsspannung von 24V.
Um die 24V Ausgangsspannung auf 5V zu skalieren und die Treiber ansteuern zu können, wurde eine Optokopplerschaltung entwickelt.
 
===Gehäuse===
 
Eine der Anforderungen aus der [https://svn.hshl.de/svn/MTR_GPE_Praktikum/trunk/Fachthemen/3D_Bearbeitungsmaschine/Automatisierung_SPS_siemens/01_Anforderungsdefintion/ Anforderungsliste] stellt die Entwicklung eines Gehäuses für die Platine mit der Optokoppler-Schaltung dar. Hierzu wurde vor dem Konstruieren in dem  [https://svn.hshl.de/svn/MTR_GPE_Praktikum/trunk/Fachthemen/3D_Bearbeitungsmaschine/Automatisierung_SPS_siemens/05_Entwicklung/Geh%c3%a4use/ CAD-Programm Siemens NX] eine händische Skizze angefertigt. Dort wurden die Maße eingetragen und es wurden zunächst die Überlegungen gemacht, wie diese Bauteile aussehen könnten.
Das Gehäuse besteht aus zwei Bauteilen: dem [[:Datei:CNCS7300 Unterteil.png|Unterteil]] und dem [[:Datei:CNCS7300 Deckel.png|Deckel]]
 
{| class="wikitable"
| [[Datei:CNCS7300 Unterteil.png|thumb|400px|left| Unterteil]] || [[Datei:CNCS7300 Deckel.png|thumb|400px|left| Deckel]]
|}
 
Konstruktionsdateien: [[Datei:S7300 Gehäuse.zip]]
 
In das Unterteil des Gehäuses wird die Platine mit der Optokoppler-Schaltung eingelegt. Vorne an dem Unterteil ist eine Aussparung für den 25-poligen D-Sub-Stecker gelassen worden. An der Seite des Unterteils finden sich drei weitere Aussparungen, durch diese führen die Kabel von und zur SPS. Der Deckel wird später mit vier Schrauben auf dem Unterteil befestigt.
 
Der erste Schritt bei der Konstruktion des mechanischen Teils war es, sich für ein Fertigungsverfahren zur Erstellung des Gehäuses zu entscheiden.
 
Es wurde sich für den [https://de.wikipedia.org/wiki/3D-Druck 3D-Druck] entschieden, dieser hat den Vorteil das Bauteile kostengünstig, schnell und einfach erstellt werden können, was sich für die Erstellung dieses Gehäuses bestens eignet. Durch den Aspekt der Schnelligkeit konnte innerhalb von einer Woche das Gehäuse konstruiert und gefertigt werden.
 
Der verwendete 3D-Druck ist ein additives Fertigungsverfahren. Ein festes Material, Filament wird durch den Extruder aufgewärmt und auf das Druckbett aufgetragen. Dies geschieht Schicht für Schicht, durch diese schichtweise Herstellung können dreidimensionale Gegenstände gedruckt werden.
 
Nach Absprache mit der Firma Trilux dürfen die Bauteile auf dem 3D-Drucker der Firma gedruckt werden. Es musste sich im nächsten Schritt über das Filament informiert werden. Für das Gehäuse wird sich für das häufig verwendete ABS (Acrylnitril-Butadien-Styrol) entschieden, dieses hat die folgenden Eigenschaften (aus dem [https://ultimaker.com/download/67617/TDS%20ABS%20v3.011-ger-DE.pdf Datenblatt] entnommen).
 
Die folgende Tabelle veranschaulicht einmal die wichtigsten Eigenschaften dieses Werkstoffes:
 
{| class="wikitable"
|-
! Acrylnitril-Butadien-Styrol (ABS)               
|-
| hohe Zugfestigkeit von 1681,5 MPa
|-
| hohe Oberflächenqualität
|-
| hohe Druckgeschwindigkeit sind möglich
|-
| geringe Biegefestigkeit 70,5 MPa
|-
| gute Haftung am Druckbett
|-
| geringes spezifisches Gewicht 1,10 g/cm³
|-
| niedrige Schmelztemperatur 225 - 245˚C
|}
 
Um nach dem 3D-Druck ein ansprechendes Ergebnis und maßhaltige Bauteile zu bekommen, ist die Schmelztemperatur wichtig, diese sollte unter 280°C liegen, da der 3D-Drucker nur bis zu dieser Temperatur das Material erhitzen kann. Für eine hohe Oberflächenqualität sollte ein Material ausgewählt werden, dass eine hohe Haftung am Druckbett hat. Denn ohne diese hohe Haftung würden die Teile zum einen nicht maßhaltig werden, da das Material „verrutscht“ und zum anderen würde die Oberfläche nicht ansprechend sein.
Diese Eigenschaften beinhaltet das ABS, wodurch sich daher entschieden wurde. Ein weiteres Betrachtetes Filament war das PLA. Dieses Filament eignet sich jedoch nur eingeschränkt für das Gehäuse, da es elastischer ist und sich schlechter drucken lässt, durch eine schlechte Haftung auf dem Druckbett.
 
===Schaltung===
 
Diese Schaltung wurde entwickelt, um die Ausgangsspannung der SPS-Ausgänge von 24V auf 5V zu bringen. Dies geschieht aus dem Grund, das die Motortreiber ein HIGH-Signal von 3,3 bis 5,5V erfordern.
Beim Entwickeln der Schaltung wurden Widerstände als Pullup-Widerstände eingesetzt. Beim Test mit einem Optokoppler funktionierte dies. Als die Schaltung mit 6 Optokopplern getestet wurde, lagen an den Ausgängen 3,07V an. Es wurde nicht bedacht, dass die Schaltung nun eine Parallelschaltung der Komponenten war und die Widerstände ihren "Pullup-Effekt" verloren haben. Mithilfe von Prof. Göbel ist es gelungen die Widerstände ihrer Funktion entsprechend neu zu platzieren. Folgende Abbildungen zeigen den Schaltplan, sowie die Aufgebaute Schaltung selbst:
 
{| class="wikitable"
| [[Datei:CNCS7300 Optokoppler-Schaltplan.PNG|thumb|400px|left| Optokoppler Schaltplan]] || [[Datei:CNCS7300 OptokopllerSchaltung.jpg|thumb|400px|left| Bild der Verdrahtung]]
|}
 
[[Datei:S7300 Schaltplan Optokoppler.pptx]]
 
=Komponententest=
 
Mit HTerm ist die Kommunikation zur SPS getestet worden. Die Werte sind fehlerfrei in der SPS angekommen. Die Werte wurden mit der Überwachungsfunktion des TIA-Portals beobachtet.
Die Übertragung der Ausgangssignale wurde mit einem Oszilloskop getestet. Bei einer Impulslänge von einer Millisekunde ist das Signal nicht immer 1 Millisekunde lang gewesen, sondern hat zwischen einer halben Millisekunde und zwei Millisekunden geschwankt. Dieser Effekt hat allerdings keinen Einfluss auf die Genauigkeit bei der Ansteuerung des Motors, da die Schrittmototreiber die Anzahl der Impulse verwertet und nicht die Länge der Impulse. Die Drehgeschwindigkeit des Motors ist dadurch allerdings beschränkt.
 
{| class="wikitable"
| [[Datei:S7300 Oszilloskop.jpg|800px|thumb|left|Signaltest mit Oszilloskop]]
|}
 
[[Datei:S7300 06 Komponententest.zip]]
 
SVN-Ordner: [https://svn.hshl.de/svn/MTR_GPE_Praktikum/trunk/Fachthemen/3D_Bearbeitungsmaschine/Automatisierung_SPS_siemens/06_Komponententest/ Komponententest]
 
=Integrationstest=
 
Bei diesem Test sind über HTerm Strings an die SPS übertragen worden. Alle Daten sind erfolgreich übertragen worden.
 
{| class="wikitable"
| [[Datei:S7300 Test mit Hterm.jpg|800px|thumb|left|Verbindungstest über RS232 mit HTerm]]
|}
 
Im zweiten Schritt sind Werte für den zu fahrenden Weg eingetragen worden und damit eine Achse verfahren. Der Aufbau ist in der unteren Abbildung zu sehen.
Ergebnis: Es ist der tatsächlich gefahrene Weg mit den eingegeben Daten verglichen worden. Die Berechnung wurde auf Basis dieser Daten angepasst, sodass der eingegebene Weg mit dem tatsächlich gefahrenem übereinstimmt. Videos und Bilder zu diesem Test sind hier zu finden: [https://svn.hshl.de/svn/MTR_GPE_Praktikum/trunk/Fachthemen/3D_Bearbeitungsmaschine/Automatisierung_SPS_siemens/08_Abnahmetest/videos/ Bildmaterial] oder in den Projektdateien: [[Datei:CNCS7300 Siemens SPS CNC.zip]].
 
{| class="wikitable"
| [[Datei:S7300 Verfahrtest.JPG|800px|thumb|left|Test der Fahrtweg-Berechnung und Ansteuerung des Schrittmotors über die SPS mit zwischengeschalteter Optokopllerschaltung]]
|}
 
SVN-Ordner: [https://svn.hshl.de/svn/MTR_GPE_Praktikum/trunk/Fachthemen/3D_Bearbeitungsmaschine/Automatisierung_SPS_siemens/07_Integrationstest/ Integrationstest]
 
=Lessons Learned=
 
* Programmierung einer SPS
* Dokumentation
* Projektplanung
* CAD-Konstruktion
* 3D-Druck
* Optokoppler (Elektrische Bauelemente)
 
= 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 TIA ist bietet vielfältige Möglichkeiten zur Programmierung von SPS-Steuerungen. Mit seinen vier, auf unterschiedliche Anwender zugeschnittenen Programmiersprachen, zielt TIA auf breites Feld von Entwicklern ab.
 
Projektdateien: [[Datei:CNCS7300 Siemens SPS CNC.zip]]
 
===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
*Positionier-Algorithmus für drei Achsen
*Erstellung des neuen Optokoppler-Schaltplans
*Fertigung der neuen Platine für Verbindung mit den weiteren Hardware-Komponenten über D-SUB 25-poliges Kabel
 
===Was ist noch nicht fertig:===
*Test der Funktionalität an der CNC
 
= Weblinks und Literatur =
==== Weblinks ====
 
*[https://new.siemens.com/global/de/unternehmen/nachhaltigkeit/ausbildung/sce/lern-lehr-unterlagen.html Offizielle Selbstlernunterlagen für das TIA-Portal und SIMATIC Hardware]
 
*[[Automatisierungssystem SPS SIMATIC S7-300|Automatisierungssystem SPS SIMATIC S7-300]]
 
*[[SIMATIC S7|SIMATIC S7]]
 
==== Literatur ====
 
 
→ zurück zur Übersicht: [[3-D-Bearbeitungsmaschine (Projekt des Schwerpunkts GPE im Studiengang MTR)]]

Aktuelle Version vom 7. Februar 2020, 15:26 Uhr


Autoren: Pia Dommen; Luca Riering

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

Projektdateien: Datei:CNCS7300 Siemens SPS CNC.zip

Abschlusspräsentation: Datei:CNCS7300 Abschlusspräsentation SPS Siemens.pptx

CPU313C auf Hutschiene

Einleitung

Im Rahmen des Studiengangs Mechatronik der Hochschule Hamm-Lippstadt wird im 7. Fachsemester das Praktikum Produktionstechnik angeboten. Dieses Praktikum ist Teil des Moduls Global Production Engineering. In diesem Praktikum geht es um die Verwirklichung eines mechatronischen Produktionssystems (MPS) mittels Speicher Programmierbarer Steuerung (SPS), sowie der Ansteuerung von drei 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).

Die Bearbeitungsreihenfolge in diesem Projekt lautet wie folgt:

1. Stefan Schweins und Jonas Rüschenschmidt (Step 7)

2. Hendrik Pabst und Ziad Abuelkhair (Step 7)

3. Pascal Siekmann und Gerhard Dick (Step 7)

4. Pia Dommen und Luca Riering (TIA Portal)

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
    • Achsenansteuerung für mehrere Achsen duplizieren und einlesen einer definierten Stringfolge
  • Test mit Steuerungsalgorithmus
    • Kommunikation mit Matlab-Steuerungsalgorithmus testen
    • Programmier-Review
  • Dokumentation in SVN und Wiki nach dem V-Modell:
V-Modell

Datei:CNCS7300 Abschlusspräsentation SPS Siemens.pptx

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.

SVN-Download: Anforderungsliste

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.

Funktionaler Systementwurf

Datei:S7300 Funktionaler-Systementwurf.pptx

SVN-Download: Funtionaler-Systementwurf.pptx

Technischer Systementwurf

In dem nächsten Schritt, bei der Erstellung des technischen Systementwurfes ist der funktionale Systementwurf dann überarbeitet worden und spezifiziert worden. Dieses Schaubild zeigt die Zerlegung des Systems in einzelne Funktionsbausteine und auch das Zusammenwirken der einzelnen Schnittstellen.

Technischer Systementwurf

Datei:S7300 Technischer-Systementwurf.pptx

SVN-Download: Technischer-Systementwurf.pptx

Komponentenspezifikation

Nachdem die beiden Systementwürfe festgelegt worden sind, wird sich genauer mit den einzelnen Komponenten beschäftigt. Hierzu wird in Datenblättern der Hard-/Softwarekomponenten nachgeschlagen. Es wird sich auch in das Programm TIA-Portal eingearbeitet

Die verschiedenen Komponenten lauten:

  • SIEMENS Hutschiene
  • SPS-Netzteil SIMATIC PS307 Datenblatt
  • Speicherprogrammierbare Steuerung SIMATIC S7-300-CPU313C SVN-Download: Datenblatt
  • Kommunikationsmodul SIMATIC CP340 SVN-Download: Datenblatt
  • Schrittmotortreiber GeckoDrive G201x SVN: Datenblätter
  • Schrittmotor Igus NEMA 23 Datenblätter
  • Leitung 25-polig
  • Stecker Sub-D 25-polig
  • Widerstände 1 kOhm
  • Widerstände 10 kOhm
  • Vishay Optokoppler Phototransistor CNY17-3 DIP-6 Transistor mit Basis DC Datenblatt
  • Mean Well DR-15-5 Hutschienen-Netzteil (DIN-Rail) 5 V/DC 2.4 A 12 W 1 x Datenblatt

SVN-Download: Komponentenspezifikation.xlsx

Entwicklung

Wie eine Siemens SPS funktioniert wird in dem Artikel Automatisierungssystem SPS SIMATIC S7-300 genauer beschrieben. Im Folgenden wird der aktuelle Programmstatus näher erläutert. Das Programm ist unter diesem Link im SVN hinterlegt:

SVN-Ordner: SPS-Programm

Programmablaufplan

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.

Programmablaufplan

Datei:S7300 Programmablaufplan.pptx

SVN-Download: Programmablaufplan.pptx

Projektierung im TIA V15.1

Erstellung des Projektes im TIA-Portal V15.1

Nach dem unter „Neues Projekt erstellen“ ein Projekt angelegt wurde, öffnet sich 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“ öffnet sich die passende Oberfläche, „Geräte & Netze“. In diesem Fenster kann über die Beschreibung und die Artikel-Nummer die vorhandene Hardware ausgewählt und in der passenden Version dem Projekt hinzugefügt werden.

Die folgenden Bilder veranschaulichen das Vorgehen:

Neues Projekt erstellen
Erste Schritte
Neues Gerät hinzufügen

Anlegen und Parametrieren von Hardware

Im Projekt wird in der „Projektnavigation“ unter „Gerätekonfiguration“ die Hardware angezeigt (Abbildung CP340 Parameter). 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. Diese können über "Eigenschaften" -> "Allgemein" -> "E/A-Adressen", sowohl bei der SPS als auch beim Kommunikationsmodul, eingestellt werden. Folgende Abbildung verdeutlichen den Vorgang:

E/Adressen CPU
E/Adressen CM

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 verbaut hat. Der PLC muss eine IP-Adresse gegeben werden und den IO-Karten muss genau wie dem CP 340 Modul ein Speicherbereich zugeordnet werden.

CP340 Parameter

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. 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. Hier ist die Maßeinheit mm/min.

Um die Kommunikation in der PLC einzurichten, muss die Funktion „P_RCV“ (Abbildung CP340 P_RCV-Funktion) 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:

Kürzel Begriff Erklärung
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.
CP340 P_RCV-Funktion

Test der Kommunikation mit HTerm

Das Programm HTerm ist ein Programm zur seriellen Kommunikation. In diesem Fall zwischen dem RS232-Port eines PC und der Siemens SPS. Für eine funktionierende Kommunikation der beiden Teilnehmer müssen zunächst einige Parameter eingestellt werden:

Baudrate = 9600;

Parität = Keine (None);

Port = COM Port an dem das Kommunikationsmodul angeschlossen ist;

Databits = 8;

Stopbit = 1.

Bei der Eingabe aber auch bei der Ausgabe der Daten wird sich aus der Auswahl von ASCII, hexadezimal, binär und dezimalem Code entschieden.

Die nächste Abbildung zeigt die Oberfläche des Programmes.

HTerm 0.8.1 GUI

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 (siehe nächste Abbildung). Die Ausgänge können dann die wie Variablen in der Programmierung verwendet werden.

Digitale Ausgänge in PLC-Variablen anlegen

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.

SCL-Funktion Calculate:


#Wenn das erste Zeichen der übergebenen Zeichenkette (Zeichen) den Char 'X' enthält, beginnt die Berechnung der Schritte und Delay-Zeiten.
IF #Zeichen = 'X' THEN
 #Das Schrittverhältnis wird mit der Formel Schrittverhätnis = Distanz / (360 / Schrittwinkel) * Treiberverhältnis errechnet und im globalen DB gespeichert.
 "Global".Schrittverhaeltnis := #Distanz / (360 / #Schrittwinkel) * #Treiberverhaeltnis; //0.033
 #Die übergebene Zeichenketten für X-Richtung ("Global".Received_Data_Splitted[0]), Y-Richtung ("Global".Received_Data_Splitted[1]), Z-Richtung ("Global".Received_Data_Splitted[2]) und Vorschub 
 ("Global".Received_Data_Splitted[3]) werden von string zu integer konverteiert.
 "Global".approach[0] := STRING_TO_INT("Global".Received_Data_Splitted[0]);
 "Global".approach[1] := STRING_TO_INT("Global".Received_Data_Splitted[1]);
 "Global".approach[2] := STRING_TO_INT("Global".Received_Data_Splitted[2]);
 "Global".approach[3] := STRING_TO_INT("Global".Received_Data_Splitted[3]);

 #Die Anzahl der Schritte in die jeweilige Richtung wird mit Schritte = Referenzposition - anzufahrende Position / Schrittverhältnis errechnet
 "Global".X_steps := ("Global".refrences[0] - DINT_TO_REAL("Global".approach[0])) / "Global".Schrittverhaeltnis;
 "Global".Y_steps := ("Global".refrences[1] - DINT_TO_REAL("Global".approach[1])) / "Global".Schrittverhaeltnis;
 "Global".Z_steps := ("Global".refrences[2] - DINT_TO_REAL("Global".approach[2])) / "Global".Schrittverhaeltnis;

 #Die errechnete Anzahl der Schritte wird mit der Funktion ABS in einen absoluten Wert konvertiert.
 "Global".X_steps_abs := ABS("Global".X_steps);
 "Global".Y_steps_abs := ABS("Global".Y_steps);
 "Global".Z_steps_abs := ABS("Global".Z_steps);

 #Die Vorschubgeschwindigkeit wird mit Vorschubgeschwindigkeit = Vorschub / (Schrittverhältnis * 60) errechnet
 "Global".F_velocity := DINT_TO_REAL("Global".approach[3]) / ("Global".Schrittverhaeltnis * 60);
 #Die Zeichenketten für X-Richtung, Y-Richtung, Z-Richtung und Vorschub werden von integer zu real konverteiert.
 "Global".refrences[0] := DINT_TO_REAL("Global".approach[0]);
 "Global".refrences[1] := DINT_TO_REAL("Global".approach[1]);
 "Global".refrences[2] := DINT_TO_REAL("Global".approach[2]);
 #Errechnen der Länge des zu fahrenden Weges (Hypothenuse im dreidimensionalen Raum)
 "Global".hypothenuse := SQRT("Global".X_steps * "Global".X_steps
        + "Global".Y_steps * "Global".Y_steps
        + "Global".Z_steps * "Global".Z_steps);
 #Errechnen der Delay-Zeiten für die einzelnen Achsen mit Delay-Zeit = ((Schritte / Hypothenuse) * Vorschubgeschwindigkeit) * 2 * 0.1
 "Global".Delay_X_Real := (("Global".X_steps / "Global".hypothenuse) * "Global".F_velocity) * 2 * 0.1;
 "Global".Delay_Y_Real := (("Global".Y_steps / "Global".hypothenuse) * "Global".F_velocity) * 2 * 0.1;
 "Global".Delay_Z_Real := (("Global".Z_steps / "Global".hypothenuse) * "Global".F_velocity) * 2 * 0.1;

 #Delay-Zeit für Konvertierung in Zeit vorher in absoluten Wert konvertieren
 "Global".Delay_X_Real := ABS("Global".Delay_X_Real);
 "Global".Delay_Y_Real := ABS("Global".Delay_Y_Real);
 "Global".Delay_Z_Real := ABS("Global".Delay_Z_Real);

 #Delay-Zeit von Real zu double und von double in Time konvertieren
 "Global".Delay_X_Time := DINT_TO_TIME(REAL_TO_DINT("Global".Delay_X_Real * 100) / 100); // * 100 / 100 to prevent dataloss!!!
 "Global".Delay_Y_Time := DINT_TO_TIME(REAL_TO_DINT("Global".Delay_Y_Real * 100) / 100);
 "Global".Delay_Z_Time := DINT_TO_TIME(REAL_TO_DINT("Global".Delay_Z_Real * 100) / 100);

#Wenn das erste Zeichen der Zeichenkette der Char 'U' ist, schreibe die Zeichenketten in das Array für die Referenzwerte
ELSIF #Zeichen = 'U' THEN
 "Global".refrences[0] := STRING_TO_INT("Global".Received_Data_Splitted[0]);
 "Global".refrences[1] := STRING_TO_INT("Global".Received_Data_Splitted[1]);
 "Global".refrences[2] := STRING_TO_INT("Global".Received_Data_Splitted[2]);
END_IF;

FUP-Funktionsbaustein MotorControl:

MotorControl

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.

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 der 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

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 :


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

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

Entwicklung der Optokoppler-Schaltung

Für die Eingangssignale der Schrittmotortreiber liegt ein LOW-Signal bei 0V Eingangsspannung und ein HIGH bei einer Eingangsspannung von 3,3 bis 5,5V vor. Die Ausgangssignale der SPS haben einen Ausgangsspannung von 24V. Um die 24V Ausgangsspannung auf 5V zu skalieren und die Treiber ansteuern zu können, wurde eine Optokopplerschaltung entwickelt.

Gehäuse

Eine der Anforderungen aus der Anforderungsliste stellt die Entwicklung eines Gehäuses für die Platine mit der Optokoppler-Schaltung dar. Hierzu wurde vor dem Konstruieren in dem CAD-Programm Siemens NX eine händische Skizze angefertigt. Dort wurden die Maße eingetragen und es wurden zunächst die Überlegungen gemacht, wie diese Bauteile aussehen könnten. Das Gehäuse besteht aus zwei Bauteilen: dem Unterteil und dem Deckel

Unterteil
Deckel

Konstruktionsdateien: Datei:S7300 Gehäuse.zip

In das Unterteil des Gehäuses wird die Platine mit der Optokoppler-Schaltung eingelegt. Vorne an dem Unterteil ist eine Aussparung für den 25-poligen D-Sub-Stecker gelassen worden. An der Seite des Unterteils finden sich drei weitere Aussparungen, durch diese führen die Kabel von und zur SPS. Der Deckel wird später mit vier Schrauben auf dem Unterteil befestigt.

Der erste Schritt bei der Konstruktion des mechanischen Teils war es, sich für ein Fertigungsverfahren zur Erstellung des Gehäuses zu entscheiden.

Es wurde sich für den 3D-Druck entschieden, dieser hat den Vorteil das Bauteile kostengünstig, schnell und einfach erstellt werden können, was sich für die Erstellung dieses Gehäuses bestens eignet. Durch den Aspekt der Schnelligkeit konnte innerhalb von einer Woche das Gehäuse konstruiert und gefertigt werden.

Der verwendete 3D-Druck ist ein additives Fertigungsverfahren. Ein festes Material, Filament wird durch den Extruder aufgewärmt und auf das Druckbett aufgetragen. Dies geschieht Schicht für Schicht, durch diese schichtweise Herstellung können dreidimensionale Gegenstände gedruckt werden.

Nach Absprache mit der Firma Trilux dürfen die Bauteile auf dem 3D-Drucker der Firma gedruckt werden. Es musste sich im nächsten Schritt über das Filament informiert werden. Für das Gehäuse wird sich für das häufig verwendete ABS (Acrylnitril-Butadien-Styrol) entschieden, dieses hat die folgenden Eigenschaften (aus dem Datenblatt entnommen).

Die folgende Tabelle veranschaulicht einmal die wichtigsten Eigenschaften dieses Werkstoffes:

Acrylnitril-Butadien-Styrol (ABS)
hohe Zugfestigkeit von 1681,5 MPa
hohe Oberflächenqualität
hohe Druckgeschwindigkeit sind möglich
geringe Biegefestigkeit 70,5 MPa
gute Haftung am Druckbett
geringes spezifisches Gewicht 1,10 g/cm³
niedrige Schmelztemperatur 225 - 245˚C

Um nach dem 3D-Druck ein ansprechendes Ergebnis und maßhaltige Bauteile zu bekommen, ist die Schmelztemperatur wichtig, diese sollte unter 280°C liegen, da der 3D-Drucker nur bis zu dieser Temperatur das Material erhitzen kann. Für eine hohe Oberflächenqualität sollte ein Material ausgewählt werden, dass eine hohe Haftung am Druckbett hat. Denn ohne diese hohe Haftung würden die Teile zum einen nicht maßhaltig werden, da das Material „verrutscht“ und zum anderen würde die Oberfläche nicht ansprechend sein. Diese Eigenschaften beinhaltet das ABS, wodurch sich daher entschieden wurde. Ein weiteres Betrachtetes Filament war das PLA. Dieses Filament eignet sich jedoch nur eingeschränkt für das Gehäuse, da es elastischer ist und sich schlechter drucken lässt, durch eine schlechte Haftung auf dem Druckbett.

Schaltung

Diese Schaltung wurde entwickelt, um die Ausgangsspannung der SPS-Ausgänge von 24V auf 5V zu bringen. Dies geschieht aus dem Grund, das die Motortreiber ein HIGH-Signal von 3,3 bis 5,5V erfordern. Beim Entwickeln der Schaltung wurden Widerstände als Pullup-Widerstände eingesetzt. Beim Test mit einem Optokoppler funktionierte dies. Als die Schaltung mit 6 Optokopplern getestet wurde, lagen an den Ausgängen 3,07V an. Es wurde nicht bedacht, dass die Schaltung nun eine Parallelschaltung der Komponenten war und die Widerstände ihren "Pullup-Effekt" verloren haben. Mithilfe von Prof. Göbel ist es gelungen die Widerstände ihrer Funktion entsprechend neu zu platzieren. Folgende Abbildungen zeigen den Schaltplan, sowie die Aufgebaute Schaltung selbst:

Optokoppler Schaltplan
Bild der Verdrahtung

Datei:S7300 Schaltplan Optokoppler.pptx

Komponententest

Mit HTerm ist die Kommunikation zur SPS getestet worden. Die Werte sind fehlerfrei in der SPS angekommen. Die Werte wurden mit der Überwachungsfunktion des TIA-Portals beobachtet. Die Übertragung der Ausgangssignale wurde mit einem Oszilloskop getestet. Bei einer Impulslänge von einer Millisekunde ist das Signal nicht immer 1 Millisekunde lang gewesen, sondern hat zwischen einer halben Millisekunde und zwei Millisekunden geschwankt. Dieser Effekt hat allerdings keinen Einfluss auf die Genauigkeit bei der Ansteuerung des Motors, da die Schrittmototreiber die Anzahl der Impulse verwertet und nicht die Länge der Impulse. Die Drehgeschwindigkeit des Motors ist dadurch allerdings beschränkt.

Signaltest mit Oszilloskop

Datei:S7300 06 Komponententest.zip

SVN-Ordner: Komponententest

Integrationstest

Bei diesem Test sind über HTerm Strings an die SPS übertragen worden. Alle Daten sind erfolgreich übertragen worden.

Verbindungstest über RS232 mit HTerm

Im zweiten Schritt sind Werte für den zu fahrenden Weg eingetragen worden und damit eine Achse verfahren. Der Aufbau ist in der unteren Abbildung zu sehen. Ergebnis: Es ist der tatsächlich gefahrene Weg mit den eingegeben Daten verglichen worden. Die Berechnung wurde auf Basis dieser Daten angepasst, sodass der eingegebene Weg mit dem tatsächlich gefahrenem übereinstimmt. Videos und Bilder zu diesem Test sind hier zu finden: Bildmaterial oder in den Projektdateien: Datei:CNCS7300 Siemens SPS CNC.zip.

Test der Fahrtweg-Berechnung und Ansteuerung des Schrittmotors über die SPS mit zwischengeschalteter Optokopllerschaltung

SVN-Ordner: Integrationstest

Lessons Learned

  • Programmierung einer SPS
  • Dokumentation
  • Projektplanung
  • CAD-Konstruktion
  • 3D-Druck
  • Optokoppler (Elektrische Bauelemente)

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 TIA ist bietet vielfältige Möglichkeiten zur Programmierung von SPS-Steuerungen. Mit seinen vier, auf unterschiedliche Anwender zugeschnittenen Programmiersprachen, zielt TIA auf breites Feld von Entwicklern ab.

Projektdateien: Datei:CNCS7300 Siemens SPS CNC.zip

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
  • Positionier-Algorithmus für drei Achsen
  • Erstellung des neuen Optokoppler-Schaltplans
  • Fertigung der neuen Platine für Verbindung mit den weiteren Hardware-Komponenten über D-SUB 25-poliges Kabel

Was ist noch nicht fertig:

  • Test der Funktionalität an der CNC

Weblinks und Literatur

Weblinks

Literatur

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