Das besondere an der SPS / PLC von ACE ist sicherlich dass sie drei PWM bzw. drei Pulsenden Ausgänge für Servomotoren und/oder Stepper Motoren (Schrittmotoren) hat. Damit schlägt ACE die Brücke zwischen einer herkömmlichen SPS und der Arduino Programmierung und es entfallen separat Steuermodule. Ich hatte die Anfrage von einer Berufsschule ob ich helfen könnte eine SPS / PLC Simulation für eine Presse zu bauen. Aber anstatt eine herkömmliche SPS und einen Arduino zu verwenden, habe ich vorgeschlagen ein SPS von ACE Automation zu verwenden. Dazu habe ich erst mal mit Holz und Heißkleber (es hält zusammen) einen Prototypen gebaut und nach dem einschalten hat die Inbetriebnahmen perfekt geklappt. Wenn der Prototyp läuft folgt noch ein richtiger Holzrahmen aus der CNC Fräße (macht die Schule) und einem vernünftigen Zusammenbau.
Hier das Modell mit dem Nema Stepper oben, rechts die Lüfterklemme mit 3 LEDs für Zustandsanzeige, links von der Presse die Klemmen und die ACE 5150 (später soll eine 1430 SPS verbaut werden) und vorne das Bedienpult mit Notaus (Mitte) und den Startastern links und rechts.
Für den Prototyp habe ich eine 6mm Gewindestange für die hoch/runter Bewegung verwendet (die Verbindung ist "spontan" mit einem 12mm Holz und Heißkleber gemacht) und die Muttern mit Heißkleber befestigt. (funktioniert, wenn es auch nicht schön aussieht).
Anstatt einem Druckaufnehmer habe ich eine Schiebepotenziometer verwendet den ich mit einer Feder an der Presse befestig habe. Damit lässt sich der PLC ein Feedback geben ob der Pressvorgang abgeschlossen ist. Bzw. es lässt sich ein Sollpressdruck vorgeben.
NEMA Stepper Hardware an SPS / PLC anschließen
Der Nema Stepper wird über die Ausgänge angesteuert. Dabei ist darauf zu achten dass die Ausgänge der ACE SPS mit dem "-" minus verbunden werden. Der Anschluss des Stepper muss nach den Angaben des Herstellers erfolgen, die Kabelfarben können von meinen Farben abweichen. Der Eingang ENA kann eigentlich weg gelassen werden da die Freigabe ja über die PLC erfolgt. Auch den Anschluss VDO und GND haben nicht alle Schrittmotortreiber, diese Anschlüsse (mein Treiber hatte diesen Anschluss auch nicht).
TIPP: Wenn man nicht weiß wie der Motor an den Treiber angeschlossen wir, dann mit einem Wiederstandmessgerät messen zwischen welchen Polen man einen Widerstand misst. An den Kabel die einen Widerstand haben ist eine Spule und diese beiden Kabel müssen zwischen +/-, dabei ist es egal ob auf A oder B, Hauptsache diese beiden Kabel sind auf +/- vom gleichen Buchstabe.
Hier zum Vergleich der Anschluss an einem Arduino, die Kabel für DIR und PUL werden auf + angeschlossen.
Die Programmierung in der SPS / PLC mit ACE Automation
Bevor mit der Programmierung begonnen werden kann muss in der Hardware Konfiguration noch eingestellt werden an welchem Ausgang der Stepper angeschlossen ist.
Das Testprogramm sah bei mir so aus.
- Copy: übertrage den analogen Werte des Poti in die Variable, so kann ich beim hoch / runter fahren gleich testen ob dieser Funktioniert
- ON InBitB1: Solange Taster gedrückt kopiere den Wert 10000 in die Variable motorrunter, dann fahre den Motor.
- Wird der Taster los gelassen dann Stoppe die Drehung des Motor1 (da ist ein Block Stop Zuviel) und kopiere eine 0 in die Variable Motor, sonst würde der Motor nur bis 10000 fahren und sich dann nicht mehr bewegen.
- ON InBitB2: Solange der Taster gedrückt schalten OutBitD5 ein (an diesem Pin ist der Richtungswechsel (DIR) angeschlossen), sonst bleibt alles gleich.
- Wird der Taster los gelassen schalte den Ausgang D5 wieder aus
Damit fährt der Motor bei einem Tasterdruck an D1 hoch und mit einem Tasterdruck auf D2 runter.
Die Hardware Konfiguration ist super einfach, sogar noch einfacher wie bei einem Arduino.
- Move motor to: in dieser Variablen ist hinterlegt zu welcher Position der Motor fahren soll. Genauer gesagt wie viele "Schritte" der ausführt bis er stehen bleibt
- at a rate of: wie schnell der Motor sich drehen soll. Je höher die Zahl desto höher die Umdrehung.
- with a soft start...: Wie lange der Motor braucht bis er auf Max Drehzahl ist, hier muss kein Wert drin stehen
- store location when...: in dieser Variablen werden die "gemachten Schritte" gespeichert, wird der Motor gestoppt dann würde der Motor das nächste mal hier weiter zählen bis er die "Schritte" in "move motor to" erreicht hat. Wenn diese Variable nicht gelöscht wird fährt der Motor nur bis zum erreichen von "move motor to"
Vorstellung restliches Programmierung:
Bedeutung der Lampen:
- ROT --> NOTAUS oder einer der Tasten wurde beim pressen los gelassen
- GRÜN --> Motor in obere Position, bereit zum pressen
- GELB --> Pressvorgang eingeleitet
Eingänge und Ausgänge:
- DI1 --> Taster links
- DI2 --> Taster rechts
- DI3 --> Not aus
- AI1 --> Poti
- DO1 --> LED
- DO2 --> LED
- DO3 --> LED
- DO4 --> Stepper "STEP"
- DO5 --> Stepper "DIR"
Ablauf der Steuerung:
- NOTAUS darf nicht gedrückt sein, wird er gedrückt fahren den Motor in die "obere Position" und schalte ROTE Lampe ein
- Werden beide Taster gedrückt und hat der Motor seine nicht "obere Position" erreicht, fahre die Presse in die "obere Position" und schalte grüne Lampe ein
- Werden beide Taster gedrückt und der Motor ist in der obere Position, schalte die gelbe Lampe an und fahre den Motor herunter bis zum erreichen des Solldruckes (Poti)
- Ist der Solldruck erreicht, fahre den Motor nach oben, schalte die gelbe Lampe aus und die grüne Lampe an
Der Rest folgt in kürze, wenn ich das Programm fertig habe :-))