-> Hier kostenlos registrieren
Hallo liebe SPS-Forum-Mitglieder,
ich bin nicht nur neu hier im Forum, sondern auch
in der SPS-Welt, deshalb bitte ich schonmal um Nachsicht, falls die
Lösung für mein Frage auf der Hand liegt.
Meine erste SPS-Aufgabe sieht wie folgt aus:
Ein hin- und herdriftendes Maschinenteil soll durch einen
Linearschrittmotor in Position gehalten werden. Ich wollte das Problem
wie folgt lösen:
Ich benutze einen Weckalarm, den ich auf 5s parametriere
(Auf meiner SPS (Vipa 314ST) ist das der OB 32)
Im OB32 wird die Bauteilposition bestimmt und mit der Zeit von vor 5s
(abgespeichert in einem DB) verglichen und daraus die notwendige
Anstellzeit für den Schrittmotor berechnet. Anschließend wird der
Motor über einen SI-Impuls für die berechnete Zeit angestellt.
Wenn ich die Berechnung der Anstellzeit mal weglasse bleibt
als Grundgerüst der Code im OB32:
SET
= M0.0 // Merker zum Timeranschalten wird auf 1 gesetzt
U M0.0 // Timer mit 500ms starten
L S5T#500ms
SI T0
U T0
= A1.0 // Ausgang an dem der Motor hängt
= M0.0 // Merker zurücksetzen, wenn Timer abgelaufen
Ich hatte erwartet, dass A1.0 alle 5s für 500ms auf 1 geht.
Stattdessen bleibt A1.0 5s lang auf 1 und geht dann auf 0.
Wenn ich den Aufruf des Timers in den OB1 auslagere und im OB32
nur den Merker umschalte funktioniert das ganze, aber ich würde
wegen der Übersicht lieber alles in einem Baustein haben.
Kann mir jemand dieses Verhalten erklären? Kann es sein, dass der
Timer nicht weiterläuft wenn der aufrufende OB beendet wird?
viele Grüße,
Nafets
ich bin nicht nur neu hier im Forum, sondern auch
in der SPS-Welt, deshalb bitte ich schonmal um Nachsicht, falls die
Lösung für mein Frage auf der Hand liegt.
Meine erste SPS-Aufgabe sieht wie folgt aus:
Ein hin- und herdriftendes Maschinenteil soll durch einen
Linearschrittmotor in Position gehalten werden. Ich wollte das Problem
wie folgt lösen:
Ich benutze einen Weckalarm, den ich auf 5s parametriere
(Auf meiner SPS (Vipa 314ST) ist das der OB 32)
Im OB32 wird die Bauteilposition bestimmt und mit der Zeit von vor 5s
(abgespeichert in einem DB) verglichen und daraus die notwendige
Anstellzeit für den Schrittmotor berechnet. Anschließend wird der
Motor über einen SI-Impuls für die berechnete Zeit angestellt.
Wenn ich die Berechnung der Anstellzeit mal weglasse bleibt
als Grundgerüst der Code im OB32:
SET
= M0.0 // Merker zum Timeranschalten wird auf 1 gesetzt
U M0.0 // Timer mit 500ms starten
L S5T#500ms
SI T0
U T0
= A1.0 // Ausgang an dem der Motor hängt
= M0.0 // Merker zurücksetzen, wenn Timer abgelaufen
Ich hatte erwartet, dass A1.0 alle 5s für 500ms auf 1 geht.
Stattdessen bleibt A1.0 5s lang auf 1 und geht dann auf 0.
Wenn ich den Aufruf des Timers in den OB1 auslagere und im OB32
nur den Merker umschalte funktioniert das ganze, aber ich würde
wegen der Übersicht lieber alles in einem Baustein haben.
Kann mir jemand dieses Verhalten erklären? Kann es sein, dass der
Timer nicht weiterläuft wenn der aufrufende OB beendet wird?
viele Grüße,
Nafets