Test case R1023
Full test suiteDevice test case
TON time FB
This test case it part of the test suite proposed for new devices.
Test case ID: R1023
Language: ST
tests2/t1023.st(* TON test - this should be called several 18 times with deltaTime=100msecs (~ 1.8 segs) *) (* cycle = 100msecs TON: cuts 250msec +---------+ +---+ +-------+ IN | | | | | | --+ +--------+ +---+ +------------- 1 6 8 10 11 15 +---+ +--+ Q | | | | ---------+ +---------------------+ +------------- 3.5 6 13.5 15 PT +---+ +--+ : / | + / | ET : / | /| / | : / | / | / | : / | / | / | 0---+ +--------+ +---+ +------------- *) PROGRAM T1023 VAR cycle : INT := -1; // cicles are counted started from 0, so time ~ 100msec x cycle ton1: TON; // 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 <6) OR (cycle >=8 AND cycle <10) OR (cycle >=11 AND cycle <15); ton1( IN := input , PT := T#250ms); IF ton1.Q THEN _GEB_ASSERT_(cycle = 4 OR cycle =5 OR cycle = 14); ELSE _GEB_ASSERT_(NOT(cycle = 4 OR cycle =5 OR cycle = 14)); END_IF; //_GEB_MSG_(INT_TO_STRING(cycle)); //_GEB_MSG_(DINT_TO_STRING(TIME_TO_DINT(ton1.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; IF NOT input THEN _GEB_ASSERT_(NOT ton1.Q); END_IF; END_PROGRAM