(* Sensörun iki çıkan kenarı arasında gecen süreyi hesaplama *)
TON_SensorEdge.IN := TIMER_AKTIF; (* On Delay Timer kullandım *)
TON_SensorEdge.PT := T#1M; (* Tamburun iki çıkan kenarı hareket halinde hiçbir zaman 1 Dakikayı geçmez diye farz ettim *)
TON_SensorEdge(); (* TON tipindeki timer fonksiyonunu çağırıyoruz *)
CASE SENSOR_DURUM OF
0: (* Sensorun ilk çıkan kenarı algılanır VEYA Hesaplama Tamamsa Timer Tekrar aktif edilir*)
IF (SENSOR_SINYALI) > OLD_SENSOR OR HESAPLAMA_TAMAM THEN
HESAPLAMA_TAMAM := FALSE;
TIMER_AKTIF := TRUE; (* TON Timer çalışmaya başlar *)
ILK_OKUNAN_ZAMAN := TIME_TO_REAL(TON_SensorEdge.ET); (* Timer ın geçen zamanı real a çevrilir *)
SENSOR_DURUM := 10; (* İkinci çıkan kenarı beklemek için diğer duruma geç *)
END_IF
10: (* Sensorun ikinci çıkan kenarında hesaplama yapılır *)
IF (SENSOR_SINYALI) > OLD_SENSOR THEN (* Çıkan kenar geldi mi? *)
SON_OKUNAN_ZAMAN := TIME_TO_REAL(TON_SensorEdge.ET); (* İkinci Sensor sinyalinin geçen zamanı saklanır *)
GECEN_ZAMAN := (SON_OKUNAN_ZAMAN - ILK_OKUNAN_ZAMAN) / 1000.0; (* sn birimine geçiş*)
TIMER_AKTIF := FALSE; (* Timer Resetlenir*)
HESAPLAMA_TAMAM := TRUE;
SENSOR_DURUM := 0; (* Başlangıç durumuna dön *)
END_IF
END_CASE
(* Sensorun çıkan kenarını algılamak için bu yöntemi kullandım. *)
OLD_SENSOR := SENSOR_SINYALI;
(* Bundan sonraki kısımda tambur dönmüyorsa yukarıdaki değişkenler ve timer sıfırlanmalı *)