Zeit anhalten

Hallo @Glitsch Master

ich verwende in so einem Fall überhaupt keinen Timer, sondern zähle über den Weck OB35 einen Zähler runter. Um welchen Zeitbereich handelt es sich denn bei Dir?

Viele Grüße
steinche
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ich denke, er will den Timer zwischendrinn pausieren lassen.

Z.B. bei einem 10sec SA nach 5sec für 3sec anhalten so das der Timer nach 13sec erst auf 0 geht.

Den Aufrufintervall des OB35 kannst Du in der Hardwarekonfiguration parametrieren. Die eingestellte Zeiteinheit, z.B. 100ms ist dann Dein Teilungswert. Du müsstest von 100 auf 0 zählen um einen "Timer" von 10sec zu realisieren.

Viele Grüße
steinche
 
du kannst die Timerzeit ja auch in eine Variable schreiben bzw in den Timer zurück.
S5t#2s ist ja nur eine Konstant. Das kann man auch variable gestalten.
 
du kannst die Timerzeit ja auch in eine Variable schreiben bzw in den Timer zurück.
S5t#2s ist ja nur eine Konstant. Das kann man auch variable gestalten.

Wenn die Zeit bereits läuft, also der Eingang beim SA-Timer auf Null gegangen ist, kann ich doch die Zeit nicht mehr neu laden, gelle? Leider wissen wir nicht ganz genau, was er vorhat....

Gruß
Flinn
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Selbst programmieren ...

Hallo,

Flinn schrieb:
kann ich doch die Zeit nicht mehr neu laden, gelle?

Richtig, aber genau deshalb hat steinche ja vorgeschlagen, einen selbstgestrickten Timer mit den entsprechenden Möglichkeiten zur Manipulation (und damit auch zur gewünschten Funktionalität) selbst zu programmieren.

Gruß

Question_mark
 
Ich habe für diesen Fall einen "Timer" selber programmiert:
der zählt hinauf und hat einen Halt-Eingang.
Grund war, dass in einem Schrittprogramm die Schrittzeit überwacht wird, aber das Schrittprogramm auch einen Zustand "Halt" hat, da steht die Zeit.

Das war ein PCS7- Baustein der mit Sample_T gearbeitet hat, umgesetzt auf Step7:

In einem WeckOB den Baustein aufrufen und
wenn der Eingang 1 ist zählen (zB in einer Real-Zahl)
wenn der Halt 1 ist nicht zahlen
wenn der Eingang 0 ist Zähler rücksetzen
Wenn Zähler gleich Zeitwert ist am Ausgang 1 ausgeben.

Für eine Ausschaltverzögerung eben entsprechend Eingang und Ausgang invertieren.

lG
Karl
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,


bei Zeitwerten die öfters gestoppt werden empfihlt es sich eine Variable zu Pulsen. Diese lässt sich dann sehr schön in Funktionen integrieren.
Du kannst auch unterschiedlichste Zeitwerte vorgeben oder im Programmablauf in einer Variable ändern.
(PS: wenn du AWL verwendest kannst du für deien Zeitwerte auch Wörter benutzen. FUP Lässt eine Intageroperation hier nicht zu)
Zu beachten ist das deine Zeit um 1-100ms abweichen kann. Da der Impuls ja nicht gestartet wird, sondern abgelesen.
(Wie ich es aufgebaut habe entspricht es in etwa den Ablauf einer Zeitoperation im Assembler. Du kannst dies in jeglicher Situation in einer S7 Steuerung verwenden)



In etwa so:
//.
// Wenn der Eingang gesezt dann Arbeite
set
U #Eingangsbedingung
L #Impuls100ms (M x.0 der CPU Takte)
SPBN M001

L 1
L #Zaehler1
+I
T #Zaehler1

M001: Nop 0

L #Zeitwert1_in100ms
L #Zaehler1
>=I
SPBN M002

//
// Hier Einfügen wass bei Ablauf der Zeit passieren soll
//

M002: Nop 0

// Nicht vergessen deinen Zahler auch mal wieder auf 0 zu setzen.
 
Zuletzt bearbeitet:
Hallo,



Richtig, aber genau deshalb hat steinche ja vorgeschlagen, einen selbstgestrickten Timer mit den entsprechenden Möglichkeiten zur Manipulation (und damit auch zur gewünschten Funktionalität) selbst zu programmieren.

Gruß

Question_mark

@qm
Richtig. So mache ich das auch, allerdings ohne OB35. Normale Txxx-Timer verwende ich sogut wie gar nicht. In meinem Beitrag ging es allerdings um die Aussage von Gerri (wie auch zitiert). Und Gerri hatte ich so verstanden, dass er einen laufenden Txxx-Timer, während die Zeit läuft, variabel neu beschreiben will. Und das geht nicht. Wenn ich irre, bitte widersprechen.

Viele Grüße
Flinn
 
Zurück
Oben