ORGANIZATION_BLOCK OB 1 BEGIN // Check instance-DB length AUF DB 1 L DBLG __ASSERT== __ACCU 1, 22 AUF DB 0 // Check TON CALL SFB 4, DB 1 ( IN := FALSE, PT := T#0S, Q := M 0.0, ET := MD 2, ) __ASSERT== __STW BIE, 1 U M 0.0 __ASSERT== __STW VKE, 0 L MD 2 __ASSERT== __ACCU 1, 0 L DB1.DBB 12 // STATE __ASSERT== __ACCU 1, 0 L DB1.DBD 18 // ATIME L DB1.DBD 14 // STIME __ASSERT== __ACCU 1, 0 -D UD DW#16#7FFFFFFF __ASSERT== __ACCU 1, 0 CALL SFB 4, DB 1 ( IN := FALSE, PT := T#500MS, Q := M 0.0, ET := MD 2, ) __ASSERT== __STW BIE, 1 U M 0.0 __ASSERT== __STW VKE, 0 L MD 2 __ASSERT== __ACCU 1, 0 L DB1.DBB 12 // STATE __ASSERT== __ACCU 1, 0 L DB1.DBD 18 // ATIME L DB1.DBD 14 // STIME __ASSERT== __ACCU 1, 0 -D UD DW#16#7FFFFFFF __ASSERT== __ACCU 1, 0 CALL SFB 4, DB 1 ( IN := TRUE, PT := T#500MS, Q := M 0.0, ET := MD 2, ) __ASSERT== __STW BIE, 1 U M 0.0 __ASSERT== __STW VKE, 0 L MD 2 __ASSERT>= __ACCU 1, 0 L DB1.DBB 12 // STATE __ASSERT== __ACCU 1, 1 L DB1.DBD 18 // ATIME L DB1.DBD 14 // STIME -D UD DW#16#7FFFFFFF __ASSERT== __ACCU 1, 0 __SLEEP 400 CALL SFB 4, DB 1 ( IN := TRUE, PT := T#500MS, Q := M 0.0, ET := MD 2, ) __ASSERT== __STW BIE, 1 U M 0.0 __ASSERT== __STW VKE, 0 L MD 2 __ASSERT>= __ACCU 1, 400 __ASSERT< __ACCU 1, 500 L DB1.DBB 12 // STATE __ASSERT== __ACCU 1, 1 L DB1.DBD 18 // ATIME L DB1.DBD 14 // STIME -D UD DW#16#7FFFFFFF __ASSERT>= __ACCU 1, 400 __ASSERT< __ACCU 1, 500 __SLEEP 250 CALL SFB 4, DB 1 ( IN := TRUE, PT := T#500MS, Q := M 0.0, ET := MD 2, ) __ASSERT== __STW BIE, 1 U M 0.0 __ASSERT== __STW VKE, 1 L MD 2 __ASSERT== __ACCU 1, 500 L DB1.DBB 12 // STATE __ASSERT== __ACCU 1, 2 L DB1.DBD 18 // ATIME L DB1.DBD 14 // STIME -D UD DW#16#7FFFFFFF __ASSERT>= __ACCU 1, 500 CALL SFB 4, DB 1 ( IN := FALSE, PT := T#500MS, Q := M 0.0, ET := MD 2, ) __ASSERT== __STW BIE, 1 U M 0.0 __ASSERT== __STW VKE, 0 L MD 2 __ASSERT== __ACCU 1, 0 L DB1.DBB 12 // STATE __ASSERT== __ACCU 1, 0 L DB1.DBD 18 // ATIME L DB1.DBD 14 // STIME -D UD DW#16#7FFFFFFF __ASSERT>= __ACCU 1, 500 // Test: Interrupt IN before time elapsed CALL SFB 4, DB 1 ( IN := TRUE, PT := T#500MS, Q := M 0.0, ET := MD 2, ) __ASSERT== __STW BIE, 1 U M 0.0 __ASSERT== __STW VKE, 0 L MD 2 __ASSERT>= __ACCU 1, 0 L DB1.DBB 12 // STATE __ASSERT== __ACCU 1, 1 L DB1.DBD 18 // ATIME L DB1.DBD 14 // STIME -D UD DW#16#7FFFFFFF __ASSERT== __ACCU 1, 0 __SLEEP 100 CALL SFB 4, DB 1 ( IN := TRUE, PT := T#500MS, Q := M 0.0, ET := MD 2, ) __ASSERT== __STW BIE, 1 U M 0.0 __ASSERT== __STW VKE, 0 L MD 2 __ASSERT> __ACCU 1, 50 __ASSERT< __ACCU 1, 150 L DB1.DBB 12 // STATE __ASSERT== __ACCU 1, 1 L DB1.DBD 18 // ATIME L DB1.DBD 14 // STIME -D UD DW#16#7FFFFFFF __ASSERT> __ACCU 1, 50 __ASSERT< __ACCU 1, 150 __SLEEP 100 CALL SFB 4, DB 1 ( IN := FALSE, PT := T#500MS, Q := M 0.0, ET := MD 2, ) __ASSERT== __STW BIE, 1 U M 0.0 __ASSERT== __STW VKE, 0 L MD 2 __ASSERT== __ACCU 1, 0 L DB1.DBB 12 // STATE __ASSERT== __ACCU 1, 0 L DB1.DBD 18 // ATIME L DB1.DBD 14 // STIME -D UD DW#16#7FFFFFFF __ASSERT> __ACCU 1, 50 __ASSERT< __ACCU 1, 150 __SLEEP 500 CALL SFB 4, DB 1 ( IN := FALSE, PT := T#500MS, Q := M 0.0, ET := MD 2, ) __ASSERT== __STW BIE, 1 U M 0.0 __ASSERT== __STW VKE, 0 L MD 2 __ASSERT== __ACCU 1, 0 L DB1.DBB 12 // STATE __ASSERT== __ACCU 1, 0 L DB1.DBD 18 // ATIME L DB1.DBD 14 // STIME -D UD DW#16#7FFFFFFF __ASSERT> __ACCU 1, 50 __ASSERT< __ACCU 1, 150 // Test: At PT=0 the timer is not started CALL SFB 4, DB 1 ( IN := TRUE, PT := T#0MS, Q := M 0.0, ET := MD 2, ) __ASSERT== __STW BIE, 1 U M 0.0 __ASSERT== __STW VKE, 0 L MD 2 __ASSERT== __ACCU 1, 0 L DB1.DBB 12 // STATE __ASSERT== __ACCU 1, 0 L DB1.DBD 18 // ATIME L DB1.DBD 14 // STIME -D UD DW#16#7FFFFFFF __ASSERT> __ACCU 1, 50 __ASSERT< __ACCU 1, 150 U DB1.DBX 0.0 // IN __ASSERT== __STW VKE, 0 // IN will be forced low. CALL SFB 4, DB 1 ( IN := FALSE, PT := T#0MS, Q := M 0.0, ET := MD 2, ) __ASSERT== __STW BIE, 1 U M 0.0 __ASSERT== __STW VKE, 0 L MD 2 __ASSERT== __ACCU 1, 0 L DB1.DBB 12 // STATE __ASSERT== __ACCU 1, 0 L DB1.DBD 18 // ATIME L DB1.DBD 14 // STIME -D UD DW#16#7FFFFFFF __ASSERT> __ACCU 1, 50 __ASSERT< __ACCU 1, 150 U DB1.DBX 0.0 // IN __ASSERT== __STW VKE, 0 // Test: Negative PT causes an error condition (BIE=0) CALL SFB 4, DB 1 ( IN := TRUE, PT := T#-500MS, Q := M 0.0, ET := MD 2, ) __ASSERT== __STW BIE, 0 U M 0.0 __ASSERT== __STW VKE, 0 L MD 2 __ASSERT== __ACCU 1, 0 L DB1.DBB 12 // STATE __ASSERT== __ACCU 1, 0 L DB1.DBD 18 // ATIME L DB1.DBD 14 // STIME -D UD DW#16#7FFFFFFF __ASSERT> __ACCU 1, 50 __ASSERT< __ACCU 1, 150 U DB1.DBX 0.0 // IN __ASSERT== __STW VKE, 1 // IN is not forced low. CALL SFB 4, DB 1 ( IN := FALSE, PT := T#-500MS, Q := M 0.0, ET := MD 2, ) __ASSERT== __STW BIE, 0 U M 0.0 __ASSERT== __STW VKE, 0 L MD 2 __ASSERT== __ACCU 1, 0 L DB1.DBB 12 // STATE __ASSERT== __ACCU 1, 0 L DB1.DBD 18 // ATIME L DB1.DBD 14 // STIME -D UD DW#16#7FFFFFFF __ASSERT> __ACCU 1, 50 __ASSERT< __ACCU 1, 150 U DB1.DBX 0.0 // IN __ASSERT== __STW VKE, 0 CALL SFC 46 // STOP CPU END_ORGANIZATION_BLOCK DATA_BLOCK DB 1 SFB 4 BEGIN END_DATA_BLOCK