TIA S7 1200 Rückgekoppelter TON-Timer macht was er will

sunny22

Well-known member
Beiträge
206
Punkte Reaktionen
31
Zuviel Werbung?
->Hier kostenlos registrieren
Hallo Zusammen,

heute ist mir auf einer S7 1200 ein merkwürdiges Verhalten im Zusammenhang mit einem TON-Timer auf einer S7 1200 aufgefallen.
Man sollte meinen, dass dieses Konstrukt
takt.png
einen Takt mit 0,5s High und 0,5s Low erzeugt.
Tut es aber nicht. Es erzeugt einen vollkommen willkürlichen Takt mit völlig unterschiedlichen High und Low Zeiten.
Nutzt man eine weitere Hilfsvariable funktioniert es hingegen.
takt1.png
Hat da jemand eine Erklärung dafür? Gibt es bei der 1200 generell ein Problem bzw. eine Einschränkung bei Objekten die ihren Zustand nur für einen Zyklus führen?

Grüße Oliver
 

PN/DP

User des Jahres 2011-2013; 2015-2017; 2020-2021
Beiträge
18.292
Punkte Reaktionen
5.429
Das ist "schon immer" so, daß bei einer Rückkopplung eines Timers auf sich selbst eine Variable zwischengeschaltet werden muß (keine TEMP-Variable!), weil Timer asynchron zum OB1-Zyklus laufen.

Harald
 
OP
S

sunny22

Well-known member
Beiträge
206
Punkte Reaktionen
31
Das sie asynchron laufen ist klar, aber die Ein- und Ausgänge werden doch im OB1 gesetzt und ausgewertet? Das würde ja bedeuten dass auch die Verschaltung mit Q am Eingang asynchron bearbeitet wird und nicht im OB1-Zyklus wo sie eigentlich programmiert ist.
 

PN/DP

User des Jahres 2011-2013; 2015-2017; 2020-2021
Beiträge
18.292
Punkte Reaktionen
5.429
Tja, das ist halt so bei Siemens. Und wurde auch bei S7-1200/1500 extra so (und noch konfuser) implementiert, daß sich z.B. TON nicht wie "richtige" FB verhalten.

Harald
 

Heinileini

Well-known member
Beiträge
4.909
Punkte Reaktionen
1.037
Das war bei den Hardware-Timern auch so, richtig?
:unsure: Hardware-Timer? Die gab es mal - glaube ich - nannte sich das nicht S3 (Vorläufer von S5)? Habe ich aber nicht mehr kennengelernt. Bin 1983 "direkt" in S5 eingestiegen und die S5-Timer waren schon "verweichlicht" (musste man nicht mehr mit dem Schraubendreher am Poti einstellen). ;)
 

PN/DP

User des Jahres 2011-2013; 2015-2017; 2020-2021
Beiträge
18.292
Punkte Reaktionen
5.429
Nur scheinbar. Glaube mir, da MUSS eine Merk-Variable dazwischen!
Was macht Deine Erfindung ;) wenn der Timer erst nach der Abfrage für das X, aber noch vor Aufruf des TON abläuft?

Und noch eine Weisheit: Timer-Ausgänge Q dürfen im Zyklus nur ein einziges Mal abgefragt werden, weil sich der Zustand Q zwischen den Abfragen ändern kann. Soll der Timer.Q mehrmals verwendet werden, dann muß Q auf eine "Prozessabbild"-Variable zwischengespeichert werden und dann nur diese Variable weiterverarbeitet werden. Das gilt im übrigen generell für Multitasking, wo der Wert einer Variablen gelesen werden soll, die in einer anderen Task azyklisch beschrieben wird. Und noch eine Spezialität hat Siemens in die Timer für S7-1200/1500 eingebaut: die Timer werden nicht aktualisiert, wenn der Q nirgends verwendet wird.

Und noch ein Tipp: Für die 1Hz- und 0.5Hz-Takte könntest Du auch die CPU-Taktmerker verwenden (allerdings lernt man dabei nichts über das spezielle Verhalten der Siemens-Timer).

Harald
 
Zuletzt bearbeitet:
OP
S

sunny22

Well-known member
Beiträge
206
Punkte Reaktionen
31
Zuviel Werbung?
->Hier kostenlos registrieren
:unsure: Hardware-Timer? Die gab es mal - glaube ich - nannte sich das nicht S3 (Vorläufer von S5)? Habe ich aber nicht mehr kennengelernt. Bin 1983 "direkt" in S5 eingestiegen und die S5-Timer waren schon "verweichlicht" (musste man nicht mehr mit dem Schraubendreher am Poti einstellen). ;)
Ok, das war doof ausgedrückt. Gemeint waren die S7-Timer, also T1, T2, ...
Was macht Deine Erfindung ;) wenn der Timer erst nach der Abfrage für das X, aber noch vor Aufruf des TON abläuft?
Dann gibt es einen Aussetzer.
Und noch ein Tipp: Für die 1Hz- und 0.5Hz-Takte könntest Du auch die CPU-Taktmerker verwenden
Ja, werde ich in Zukunft auch machen wenn ein Standard Takt gebraucht wird. Sind die eigentlich auch asynchron? -> Mehrfachverwendung?
allerdings lernt man dabei nichts über das spezielle Verhalten der Siemens-Timer)
Das stimmt, hab auf jeden Fall was gelernt. Timer sind A.....löcher😁
Auf jeden Fall danke für die Tips. Eigentlich kenne ich das aus der uC- und im besonderen aus der FPGA-Welt. Bei der SPS ist man durch das automatische PA und dem meißt festen Zyklus verwöhnt. Muss ich mir künftig vor Augen halten dass es hier auch asynchrone Ereignisse gibt.
 

PN/DP

User des Jahres 2011-2013; 2015-2017; 2020-2021
Beiträge
18.292
Punkte Reaktionen
5.429
Ja, werde ich in Zukunft auch machen wenn ein Standard Takt gebraucht wird. Sind die eigentlich auch asynchron? -> Mehrfachverwendung?
Ja, die CPU-Taktmerker sind asynchron, ändern sich irgendwann im Zyklus. Für Verwendung als Lampen-Blinktakt ist das meist nicht schlimm. Braucht man OB1-synchrones Verhalten, dann einfach am Anfang des OB1 das gesamte CPU-Taktmerkerbyte auf ein anderes (Merker-)Byte umkopieren, dann hat man ein Prozessabbild für den Zyklus. Das mache ich außerdem so, weil dann erscheint das gesamte Taktmerkerbyte und die Kopie als verwendet in den Referenzdaten.

Eigentlich kenne ich das aus der uC- und im besonderen aus der FPGA-Welt. Bei der SPS ist man durch das automatische PA und dem meißt festen Zyklus verwöhnt. Muss ich mir künftig vor Augen halten dass es hier auch asynchrone Ereignisse gibt.
Ah gut, dann kennst Du ja die Problematik. (y) Die wird Dir bei S7-1200/1500 auch noch speziell bei der HMI-Kommunikation begegnen, die azyklisch (nicht im Zykluskontrollpunkt!) den OB1 unterbricht. Wenn man die Problematik nicht beachtet, dann kann es zu "Phänomenen" kommen, wie manchmal flackernde Anzeigen oder Eingabewerte kommen manchmal nicht in der CPU an.

Harald
 
Oben