SFB4 TON, SFB5 TOF, usw.

Zuviel Werbung?
-> Hier kostenlos registrieren
Boxy;533772[U schrieb:
][/U]
Die Zähler blieben ja auch so wie damals zu S5 Zeiten! Von CodeSys war damals auch noch nicht so viel gesprochen worden.
Also warum keine Kritik zu den Zählern?
Weil die Dinger im Endeffekt unbedeutend sind. Die Dinger haben eh nur Nachteile.

Boxy;533772[U schrieb:
][/U]
Man könnte darüber Philosophieren ob die IEC ein Vorteil bringt oder nicht!
IEC oder nicht, ist mir komplett Wurst. Ich stoße mich nur an diesem elendigen Datentyp mit 3 Stellen BCD + Grundfaktor.
Erstens kann man nicht vernünftig damit rechnen und zweitens schwirren dann überall diese tollen Konstrukte herum...
Code:
[COLOR=#333333]L Vorgabe [/COLOR]
[COLOR=#333333]ITB [/COLOR]
[COLOR=#333333]L W#16#2000 [/COLOR]
[COLOR=#333333]OW [/COLOR]
[COLOR=#333333]T Zeitwert
[/COLOR]
.. und noch viel schlimmere Manipulationen an die ich jetzt nur erinnern kann aber keine griffbereit hab. Auf 3h begrenzt ist er auch noch.
Vergleichen kann man sie auch nicht direkt, weil manche Zeitwerte mit 2 verschiedenen Darstellungen realisiert werden können.
Zu dem Datentyp fällt mir echt kein positives Wort ein.

Ich verstehe einfach nicht, warum man sich darüber aufregt?
Wenn mich was aufregt, dann eigentlich nur dass man (wie von JesperMP schon angemerkt) wieder ermutigt mit diesem Datenformat weiter zu machen und neue Anlagen damit zu bauen.
So werden wir das Ding wirklich nie los. Das ist echt ne vergebene Chance.

Vorteil haben die Hardware-Timer auf der S7-1500 so gut wie gar keinen, nur den Nachteil des S5T-Formats.
Gegen Hardwaretimer die das TIME-Format anwenden hätt ich im Übrigen nichts auszusetzen, man wäre zwar immer noch von der Hardwareunterlage abhängig, aber das finde ich jetzt nicht schlimm.
 
Zuletzt bearbeitet:
Wenn mich was aufregt, dann eigentlich nur dass man (wie von JesperMP schon angemerkt) wieder ermutigt mit diesem Datenformat weiter zu machen und neue Anlagen damit zu bauen.
So werden wir das Ding wirklich nie los. Das ist echt ne vergebene Chance.

Also mich regt auf, dass immer wieder eine "Wahrheit" verkündet wird.
Toleranz ist eine Tugend und Programmierer sollten bzw müssen, wenn sie wie wir weltweit unterwegs sind, diese haben.
Also ich habe kein Problem wenn ein S5T verwendet wird, aber auch keins wenn ein IEC Timer verwendet wird.
Und wenn jemand einen eigen Timerbaustein sich schreibt, dann ist das auch gut.

Schönes Wochenende


bike
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ich setze ausschließlich IEC Timer ein, diese haben leider einen großen Nachtleil,
wenn man zb bei einen TON die Zeit von 0 ms einstellt läuft dieser nicht ab.
Also muss man sich etwas darum basteln das der Zeitwert nicht kleiner 1 ms
werden kann. So ein Problem gibt es bei S5-Timern nicht.

Warum Siemens es nicht schaft, so ein kleines Problem in den Griff zu bekommen
werde ich mal wieder nicht verstehen.
 
Wenn möglich verwende ich auch die IEC-Timer. Die S5-Timer haben aber durchaus ein paar Vorteile: Ich kann wenn ich online bin problemlos die abgelaufene Zeit in einem menschenlesbaren Format ablesen. Bei IEC Timern mache ich es mittlerweile so, dass ich zumindest ET mit einer Temp-Variable belege. Aber dann ist die Anzeige immer in Millisekunden. Wäre schön wenn der Editor im Online-Modus beim Datentyp Time automatisch auf h/m/s/ms springen würde, geht bei S5-Time ja auch.

Zweiter Vorteil bei S5-Timern: Wenn man zur Fehlersuche einen S_EVERZ S5-Timer einsetzt (irgendein Signal spinnt rum, quick&dirty erstmal 5s Verzögerung drauf) kann ich am Timer die zuletzt abgelaufene Zeit sehen, wenn diese nicht komplett abgelaufen ist. Ich hatte schonmal einen Fall wo das ganz nützlich war.
 
Ich setze ausschließlich IEC Timer ein, diese haben leider einen großen Nachtleil,
wenn man zb bei einen TON die Zeit von 0 ms einstellt läuft dieser nicht ab.
Also muss man sich etwas darum basteln das der Zeitwert nicht kleiner 1 ms
werden kann. So ein Problem gibt es bei S5-Timern nicht.

Warum Siemens es nicht schaft, so ein kleines Problem in den Griff zu bekommen
werde ich mal wieder nicht verstehen.

Genau dieses Problem hat unseren Oberprogrammierer dazu veranlasst einen eigenen Timerbaustein zu erstellen!
Hierbei behelfen wir uns immer mit der Zykluszeit von OBxx, wo wir einen DINT Wert gegen 0 hinunterzählen. Diese laufen auch bei eingestellten 0ms problemlos ab!
Es ist schon klar, dass im OB1 der Timer nicht auf die Millisekunde genau ist (deswegen wird auch auf <= 0 abgefragt). In Weckalarmen läuft der aber problemlos.
Einmal hatte ich das Phänomen im OB1, dass ein Zeitstempel um Minuten daneben lag (Timer war auf 30 Minuten eingestellt). Bei Aktivierung und Ablauf des Timers wurde jeweils ein Zeitstempel aufgenommen. In PLC Sim lief das alles wie erwartet, auf der Steuerung dann nicht mehr. Ich dachte zuerst eben weil es auch Weckalarme in der Steuerung gab dass die Zeit unterbrochen wird aber dadurch wird ja dann auch die Zykluszeit von OB1 länger und spätestens im nächsten Zyklus wird ja die Zeit wieder abgezogen so dass am Ende eine Abweichung im Millisekundenbereich und nicht im Minutenbereich liegt ?!? Naja wir haben dann den Timer in den Weckalarm verschoben :ROFLMAO:
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Einmal hatte ich das Phänomen im OB1, dass ein Zeitstempel um Minuten daneben lag (Timer war auf 30 Minuten eingestellt). Bei Aktivierung und Ablauf des Timers wurde jeweils ein Zeitstempel aufgenommen. In PLC Sim lief das alles wie erwartet, auf der Steuerung dann nicht mehr. Ich dachte zuerst eben weil es auch Weckalarme in der Steuerung gab dass die Zeit unterbrochen wird aber dadurch wird ja dann auch die Zykluszeit von OB1 länger und spätestens im nächsten Zyklus wird ja die Zeit wieder abgezogen so dass am Ende eine Abweichung im Millisekundenbereich und nicht im Minutenbereich liegt ?!? Naja wir haben dann den Timer in den Weckalarm verschoben :ROFLMAO:
:confused::confused::confused:

Sowohl die IEC-Timer als auch die Hardwaretimer sind vom Zeitablauf her absolut Zyklus-unabhängig. Der Zeitablauf wird auch nicht von Weckalarmen unterbrochen.
Das einzige was Zyklusabhängig ist die Reaktion auf das Ablaufen des Timers. Aber das gilt für jeden Baustein.

Das sich ein Timer um Minuten vertut, da muss der Murks wo anders gelegen haben....
 
Zuletzt bearbeitet:
Mal eine andere Frage, wie setzt ihr eigentlich IEC-Timer in einem FC ein? Gebt ihr dann jedem IEC-Timer einen eigenen DB? Kann man IEC-Timer über die Schnittstellen des FC übergeben?
 
:confused::confused::confused:

Sowohl die IEC-Timer als auch die Hardwaretimer sind vom Zeitablauf her absolut Zyklus-unabhängig. Der Zeitablauf wird auch nicht von Weckalarmen unterbrochen.
Das einzige was Zyklusabhängig ist die Reaktion auf das Ablaufen des Timers. Aber das gilt für jeden Baustein.

Das sich ein Timer um Minuten vertut, da muss der Murks wo anders gelegen haben....

Nein da hast du mich falsch verstanden. Die Rede war vom selbst gestricktem Timerbaustein. Hier ein Ausschnitt:
Code:
[...]
L Zaehler_Everz
L OB_letzter_Zyklus
-D
T Zaehler_Everz
L 0
<=D
[...]

Erstellt wurde er eben aus den Gründen, dass sich die IEC Timer irgendwann einmal aufgehängt haben.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
@nutellahaase: Achso, sorry. Hatte aus deinem Beitrag rausgelesen du hättest dir einen Timer gebaut weil der Standardtimer daneben lief....

Mal eine andere Frage, wie setzt ihr eigentlich IEC-Timer in einem FC ein? Gebt ihr dann jedem IEC-Timer einen eigenen DB? Kann man IEC-Timer über die Schnittstellen des FC übergeben?
Auf der 300 ist das nicht möglich. Man kann weder in einem DB noch in einer FC-Schnittstelle Variablen vom Typ TON oder SFB4 definieren.

Bei der 1200/1500 ist das anders. Dort kann man in einem DB Variblen vom Typ TON oder besser (da universell) vom Typ IEC_TIMER anlegen.
Man fügt dann einfach im Programm einen TON/TOF-FB ein, beim Auswahldialog ob Multiinstanz oder Instanz-DB drückt man einfach auf Abbrechen. Dann klickt man auf die Fragezeichen über dem Timer und gibt die DB-Variable an. Funktioniert prima.
IEC_Timer_aus_DB_S71200.jpg
Das ist mal ein richtiger Fortschritt. Damit kann man auch IEC-Timer an der laufenden Maschine prima einfügen. Soweit ich weiß kann man die Instanz auch über INOUT übergeben.

Zur 300er: Dort verwende ich auch (wo die SFBs unpraktisch sind) selbstgeschriebene FCs die an den SFBs angelehnt sind und den SFC64 verwenden.
Die sind aber recht schlank und bekommen am IN/OUT nur ein DWORD in dem der Timer-Startzeitpunkt und der Ausgangszustand (zur Flankenbildung) abgelegt werden. Das reicht schon für einen TON/TOF/TP. Ein paar Unzulänglichkeiten der SFBs noch ausgebessert. Die Timer laufen auch mit T#0ms, der ENO ist mit dem Q gleich geschaltet damit man in FUP weiter verdrahten kann und der TOF/TP haben eine Reset-Eingang.

[EDIT]
Der letze Q-Ausgang des letzten Timers im Screenshot sollte natürlich nicht unbeschaltet bleiben.... ;)
 
Zuletzt bearbeitet:
Zurück
Oben