Nu klar kannste das. Deine Variable muss aber eine INOUT sein.
Warum?
Der S7-Baustein wird zur Bearbeitung in den Arbeitsspeicher geladen. Ein Speicherbereich wird dabei für die Variablen freigehalten. Bevor der Baustein bearbeitet wird, werden die Variablen von IN und INOUT zugewiesen. Deine Flanke ist dann wahr, wenn das VKE 1 und die Variable selbst Null ist und durch das VKE wahr wird. Kannst Du selbst ausprobieren.
Dein Eingang 1.0 bleibt wahr und Du toggelst nur den Merker 1.0 auf Null. Schon wird wieder A1.0 wahr.
Dein Vorgängerbaustein hat den Speicher, Deiner tmp Variable auf Null gesetzt: A1.0 wird wahr. Der Speicher wahr 1: A1.0 bleibt Null.
Ich habe mal einen FC gehabt der das Signalhorn ansprechen sollte, falls ein Fehler erkannt wird. Das ging etwa so:
AUF #alt_DB
L DBW [AR1,P#0.0]
AUF #neu_DB
L DBW [AR1,P#0.0]
T #tmp_word
XOW
L #tmp_word
UW
L 0
>I
S #horn
Also Zwei DBs wurden verglichen falls ein Bit im neu_DB gesetzt war wurde auch horn gesetzt und beim quittieren rückgesetzt. Nur fing das horn machmal zu tuten an ohne das ein Fehler vor lag. Einfach weil der Speicherbereich der Out-Variable horn zufällig gesetzt war.