Test case R0095
Full test suiteDevice test case
Standard function blocks: counter, triggers
This test case it part of the test suite proposed for new devices.
Test case ID: R0095
Language: ST
tests2/t0095.st(* Test some function blocks from stdlib *) PROGRAM Test_R0095 VAR srb : SR; rsb : RS; rtrigb : R_TRIG; ftrigb : F_TRIG; ctub : CTU; ctdb : CTD; // down counter (also for rising edges) srb_q1,rsb_q1 : BOOL; END_VAR srb( S1 := TRUE, Q1 => srb_q1); rsb( R1 := TRUE, S:= TRUE , Q1 => rsb_q1); // RESET rules: Q1=FALSE rtrigb( CLK := TRUE); rtrigb( CLK := TRUE); ftrigb( CLK := TRUE); ftrigb( CLK := FALSE); ctub(CU:=TRUE); ctub(R :=TRUE, PV:=5); // RESET ctub(R := FALSE,CU:=TRUE); // not a rising edge: no effect ctub(CU:=TRUE); ctub(CU:=FALSE); ctub(CU:=TRUE, PV:=0); // rising edge, : counter = 1 > PV: Q=TRUE ctdb(CD := TRUE); ctdb(LD := TRUE, PV:=5); // loads counter=5 ctdb(LD := FALSE, CD:=TRUE); // not a rising edge! no effect ctdb(CD:=TRUE); // idem ctdb(CD:=TRUE); ctdb(CD:=FALSE); ctdb(CD:=TRUE, PV:=2); // rising edge, decreases counter to 4. pv=2 has no effect _GEB_ASSERT_(ctdb.CD=1); _GEB_ASSERT_(ctdb.CV=4); _GEB_ASSERT_(ctdb.Q=0); _GEB_ASSERT_(ctub.CU=1); _GEB_ASSERT_(ctub.CV=1); _GEB_ASSERT_(ctub.Q=1); _GEB_ASSERT_(rsb_q1 = 0); _GEB_ASSERT_(srb_q1 = 1); END_PROGRAM