Timer-Aufruf in Weckalarm (Vipa 314ST)

nafets

Level-1
Beiträge
3
Reaktionspunkte
0
Zuviel Werbung?
-> 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
 
Zuviel Werbung?
-> Hier kostenlos registrieren
nur den Berechnungscode und

Code:
.
.
.
= M0.0 // Merker zum Timeranschalten wird auf 1 gesetzt

in den OB32 schreiben, den Rest im normalen Programm, also im OB1 oder einem FC, der im OB1 aufgerufen wird.
 
@ JoopB

Hallo JoopB,

vielen Dank für Deine Antwort.
Ich hatte das ganze ursprünglich
in FUP gemacht, da war mir nicht
klar geworden, dass die Timer-Abfrage
natürlich ein eigener Vorgang
ist.

viele Grüße,
nafets
 
@ Ralle

Hallo Ralle,

vielen Dank für Deine Antwort.
So habe ich es gemacht, und jetzt
funktioniert es auch wie gedacht.

Viele Grüße
nafets
 
Zurück
Oben