Also Ich mache das so:

CPU Taktmerker 100ms zählt in ein Datenwort sobald der Zylinder losgeschickt wird.
Vergleichen mit einem Vorgabewert z.B. 40 (entspr. 4sec)
Wenn Wert erreicht wird -> Fehler.
Endlage erreicht oder Reset Signal "Nullt" das Datenwort.

Das gleiche für die Andere Richtung, natürlich in ein anderes Wort.
Gleichzeitigkeit genau so.

Das ganze in eine FC verpackt, so dass es bei einer Anlage mit 100 Zylindern 100 mal verwertbar ist.
Braucht keine S5 Zeiten