Man sollte zum filtern keine fest vorgegeben Zeit nehmen, da die Kontakte mit der Zeit schlechter werden und/oder
bei Austausch durch Ersatzteil wieder verändern.
Daher wäre es besser wenn sich das Programm dem Eingang anpasst.
Bei oben dargestellten Programm würde es zu einer Fehlauslösung kommen wenn z.B. ein Flackern oder Störimpuls auftritt
oder der Eingang vor Ablauf der 2sec wieder abfällt (abhängig ob Eingang als Impulsabgriff oder Filter parametriert und mit welcher Zeit).
In diesem Fall wäre T37 abgelaufen und Merker M0.0 deaktiviert.
Sobald der Eingang E0.0 beim nächsten mal wieder käme, würde sofort ein gültiger Impuls über M1.0 ans Programm weiter gegeben.
Besonders Fatal wäre das ganze wenn es sich wieder nur um einen Störimpuls handeln würde.
Besser wäre dann wenn man das Programm nur duch folgenden Code ersetzen würde.
LD E0.0
TON T33, +8 // 10ms Timer anstatt 100ms, 8x10ms = ca. 80ms Verzögerung
Bedeutet, der Eingang muss für mindestens ca.80ms durchgehend anstehen damit ein gültiges Signal erkannt wird.
Fällt der Eingang kurzzeitig ab, fällt der Timer auf 0 wieder zurück.
Vorteil ist dass auch beim verändern der Prellzeit dieses genauso funktioniert.
Nur die geeignetste Filterzeit für den Eingang (0,2ms -8,7ms) sollte für die Anlage vorher ermittelt werden.
Generell:
Bei der Nutzung im Hauptprogramm mit Timern etc. anstatt Interrupts hat man das Problem, dass die eingene Zykluszeit
(Eingang liegt an, Programm aber immer an anderer Stelle als beim letzten mal oder ungünstige Stelle), die Abweichung der Timer
(10ms und 100ms werden nur am Anfang von Zyklus eingelesen -> d.h. Abweichung +- 10ms/100ms siehe S7-200 Handbuch) einer Reproduktion der Ergebnisse im Wege steht.
Zur Reproduzierbarkeit der Ergebnisse sollte man mit Zeitinterrupts und am besten mit Eingangsinterrupts arbeiten.
Dadurch kann man (je nach Programmierung) den Eingang nur wenige Millisekunden nach der Prellzeit prezise und dauerhaft reproduzierbar als gültig erkennen.