Test case R1024
Full test suiteDevice test case
TOF time FB
This test case it part of the test suite proposed for new devices.
Test case ID: R1024
Language: ST
tests2/t1024.st
(* TOF test - this should be called several 18 times with deltaTime=100msecs (~ 1.8 segs) *)
(*
cycle = 100msecs TOF: extends 250msec
+---------+ +---+ +------+
IN | | | | | |
--+ +--------+ +---+ +-------------
1 4 8 10 12 14
+--------------+ +-------------------+
Q | | | |
---+ +---+ +-------------
6.5 8 16.5
PT +---+ +------
: / | + /
ET : / | /| /
: / | / | /
: / | / | /
0------------+ +---+ +------+
*)
PROGRAM T1024
VAR
cycle : INT := -1; // cicles are counted started from 0, so time ~ 100msec x cycle
tof1: TOF; // delays start by 350
dt1 : DATE_AND_TIME; // timestamp
END_VAR
VAR_TEMP
input : BOOL ;
msecs : DINT :=0;
END_VAR
cycle := cycle + 1;
IF cycle = 0 THEN // at cycle 1 we produce a rising edge at TP1 input
dt1:= _GEB_NOW_TIMESTAMP(1); // record start of exec
END_IF;
msecs := TIME_TO_DINT(_GEB_ELAPSED_TIME(dt1));
input := (cycle >=1 AND cycle <4) OR (cycle >=8 AND cycle <10) OR (cycle >=12 AND cycle <14);
tof1( IN := input , PT := T#250ms);
IF NOT(tof1.Q) THEN
_GEB_ASSERT_(cycle = 0 OR cycle = 7 OR cycle >= 17);
ELSE
_GEB_ASSERT_(NOT(cycle = 0 OR cycle = 7 OR cycle >= 17));
END_IF;
IF input THEN
_GEB_ASSERT_(tof1.Q);
END_IF;
// _GEB_MSG_(INT_TO_STRING(cycle));
// _GEB_MSG_(DINT_TO_STRING(TIME_TO_DINT(tof1.ET)));
// IF (NOT (ton1.Q )) AND (cycle = 4 OR cycle =5 OR cycle = 14) THEN
// _GEB_MSG_(INT_TO_STRING(cycle));
// _GEB_MSG_(INT_TO_STRING(msecs));
// _GEB_MSG_(TIME_TO_STRING(ton1.ET));
//END_IF;
END_PROGRAM


