TIA Timer stoppt bei Aufhebung der Selbsthaltung

_chris_

Member
Beiträge
18
Punkte Reaktionen
0
Zuviel Werbung?
->Hier kostenlos registrieren
Hallo,

ich habe in TIA v16 an einer S7-1200 (1214c) einen Bewegungsablauf programmiert, der im OB1 in einem eigenen Netzwerk über eine Selbsthaltung gestartet wird. Der Bewegungsablauf ist in einem eigenen FB. (Bild 1)

Nun möchte ich, dass nach dem letzten Bewegungsschritt ein kurzer Impuls die Selbsthaltung aufhebt, dass diese später auch nochmals aufgerufen werden kann.
Da mein letzter MC_MoveAbsolut aber ein statisches Signal ausgibt, wollte ich das mit einem TP Timer lösen. Es kommt ein statisches Signal an, wird aber nur kurz weitergegeben und ich habe meinen Impuls der die Selbsthaltung des FB auflöst (Bild 2).

Jetzt habe ich aber bemerkt, dass der Zähler nur bei aktiver Selbsthaltung zählt. Also auch kein Impuls.

Hat jemand von euch eine Idee, wie ich das umsetzen kann?

Vielen Dank schonmal!


FB.png OB1.png
 

PN/DP

User des Jahres 2011 - 2013; 2015 - 2017; 2020
Beiträge
16.865
Punkte Reaktionen
4.949
Wo hast Du den erwähnten Zähler versteckt? Im FB4? Wenn der FB4 nur bei aktiver Selbsthaltung aufgerufen wird, dann bekommt er die Zyklen bei nicht aktiver Selbsthaltung nicht mit. Rufe den FB4 immer auf und teile ihm mit, ob die Selbsthaltung aktiv ist. Das Prinzip siehe mein Bild zu Netzwerk 6

PS: Denk' nicht so umständlich/kompliziert. Vielleicht reicht auch eine einfache Flankenerkennung anstatt dem TP in Netzwerk 5?

Harald
 

Anhänge

  • NW6.png
    NW6.png
    9,3 KB · Aufrufe: 17
OP
C

_chris_

Member
Beiträge
18
Punkte Reaktionen
0
Zuviel Werbung?
->Hier kostenlos registrieren
Hallo Harald,

vielen Dank für deine Hilfe!

Nachdem ich den FB4 immer aufrufe funtioniert es super!
Jetzt im Nachhinein ist es komplett logisch, dass es vorher nicht funktionieren konnte. Ich arbeite mich gerade in die SPS Programmierung ein und das ist mein erstes richtiges Projekt, da sind es meistens die kleinen Dinge die ich übersehe.

Aber noch zu der einfachen Flankenerkennung. Stimmt, das ist eigentlich genau das was ich über den Timer machen wollte. Ich habe gerade gesehen, dass P= und P_TRIG beide den Ausgang nur für einen Zyklus auf 1 setzen wenn eine positive Flanke erkannt wird. In der Beschreibung wirken beide auch sehr ähnlich. Was ist der genaue Unterschied zwischen beiden?

Welchen würdest du mir empfehlen, wenn ich wirklich nur bei positiver Flanke einen Zyklus 1 als Output haben möchte? Von der Beschreibung her tendiere ich zu P=.
 

TP-Inc

Well-known member
Beiträge
525
Punkte Reaktionen
101
Hallo, es ist eigentlich völlig wurscht welches Hilfsmittel man zur Flankenerkennung nimmt. Wichtig ist dass man versteht was man eigentlich mit der positiven Flanke ausdrücken möchte. Nämlich, dass der Zustand eines Signals jetzt 1 ist, im letzen Zyklus war er noch 0. Also muss man den jetzigen Zustand und den Zustand vom letzten Zyklus kennen. Wenn mann das kapiert kann man ganz einfach Flankenerkennung programmieren.
 

PN/DP

User des Jahres 2011 - 2013; 2015 - 2017; 2020
Beiträge
16.865
Punkte Reaktionen
4.949
Welchen würdest du mir empfehlen, wenn ich wirklich nur bei positiver Flanke einen Zyklus 1 als Output haben möchte? Von der Beschreibung her tendiere ich zu P=.
P= braucht noch eine Ergebnis-Variable. Eigentlich nur sinnvoll, wenn die Flankenerkennung sowieso die letzte Anweisung vor einer Zuweisung ist.
Meine Empfehlung: Nimm das einfache universelle P_TRIG und vergiss die anderen in TIA zur Verwirrung vorhandenen Flankenerkennungs-Anweisungen. In FUP kannst Du alle anderen Flanken-Anweisungen mit P_TRIG zusammenbauen, z.B. das P= ist ein P_TRIG mit nachfolgendem = als eine Anweisung zusammengefasst - das braucht niemand wirklich.

Harald
 
Oben