sfb4.awl 5.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318
  1. ORGANIZATION_BLOCK OB 1
  2. BEGIN
  3. // Check instance-DB length
  4. AUF DB 1
  5. L DBLG
  6. __ASSERT== __ACCU 1, 22
  7. AUF DB 0
  8. // Check TON
  9. CALL SFB 4, DB 1 (
  10. IN := FALSE,
  11. PT := T#0S,
  12. Q := M 0.0,
  13. ET := MD 2,
  14. )
  15. __ASSERT== __STW BIE, 1
  16. U M 0.0
  17. __ASSERT== __STW VKE, 0
  18. L MD 2
  19. __ASSERT== __ACCU 1, 0
  20. L DB1.DBB 12 // STATE
  21. __ASSERT== __ACCU 1, 0
  22. L DB1.DBD 18 // ATIME
  23. L DB1.DBD 14 // STIME
  24. __ASSERT== __ACCU 1, 0
  25. -D
  26. UD DW#16#7FFFFFFF
  27. __ASSERT== __ACCU 1, 0
  28. CALL SFB 4, DB 1 (
  29. IN := FALSE,
  30. PT := T#500MS,
  31. Q := M 0.0,
  32. ET := MD 2,
  33. )
  34. __ASSERT== __STW BIE, 1
  35. U M 0.0
  36. __ASSERT== __STW VKE, 0
  37. L MD 2
  38. __ASSERT== __ACCU 1, 0
  39. L DB1.DBB 12 // STATE
  40. __ASSERT== __ACCU 1, 0
  41. L DB1.DBD 18 // ATIME
  42. L DB1.DBD 14 // STIME
  43. __ASSERT== __ACCU 1, 0
  44. -D
  45. UD DW#16#7FFFFFFF
  46. __ASSERT== __ACCU 1, 0
  47. CALL SFB 4, DB 1 (
  48. IN := TRUE,
  49. PT := T#500MS,
  50. Q := M 0.0,
  51. ET := MD 2,
  52. )
  53. __ASSERT== __STW BIE, 1
  54. U M 0.0
  55. __ASSERT== __STW VKE, 0
  56. L MD 2
  57. __ASSERT>= __ACCU 1, 0
  58. L DB1.DBB 12 // STATE
  59. __ASSERT== __ACCU 1, 1
  60. L DB1.DBD 18 // ATIME
  61. L DB1.DBD 14 // STIME
  62. -D
  63. UD DW#16#7FFFFFFF
  64. __ASSERT== __ACCU 1, 0
  65. __SLEEP 400
  66. CALL SFB 4, DB 1 (
  67. IN := TRUE,
  68. PT := T#500MS,
  69. Q := M 0.0,
  70. ET := MD 2,
  71. )
  72. __ASSERT== __STW BIE, 1
  73. U M 0.0
  74. __ASSERT== __STW VKE, 0
  75. L MD 2
  76. __ASSERT>= __ACCU 1, 400
  77. __ASSERT< __ACCU 1, 500
  78. L DB1.DBB 12 // STATE
  79. __ASSERT== __ACCU 1, 1
  80. L DB1.DBD 18 // ATIME
  81. L DB1.DBD 14 // STIME
  82. -D
  83. UD DW#16#7FFFFFFF
  84. __ASSERT>= __ACCU 1, 400
  85. __ASSERT< __ACCU 1, 500
  86. __SLEEP 250
  87. CALL SFB 4, DB 1 (
  88. IN := TRUE,
  89. PT := T#500MS,
  90. Q := M 0.0,
  91. ET := MD 2,
  92. )
  93. __ASSERT== __STW BIE, 1
  94. U M 0.0
  95. __ASSERT== __STW VKE, 1
  96. L MD 2
  97. __ASSERT== __ACCU 1, 500
  98. L DB1.DBB 12 // STATE
  99. __ASSERT== __ACCU 1, 2
  100. L DB1.DBD 18 // ATIME
  101. L DB1.DBD 14 // STIME
  102. -D
  103. UD DW#16#7FFFFFFF
  104. __ASSERT>= __ACCU 1, 500
  105. CALL SFB 4, DB 1 (
  106. IN := FALSE,
  107. PT := T#500MS,
  108. Q := M 0.0,
  109. ET := MD 2,
  110. )
  111. __ASSERT== __STW BIE, 1
  112. U M 0.0
  113. __ASSERT== __STW VKE, 0
  114. L MD 2
  115. __ASSERT== __ACCU 1, 0
  116. L DB1.DBB 12 // STATE
  117. __ASSERT== __ACCU 1, 0
  118. L DB1.DBD 18 // ATIME
  119. L DB1.DBD 14 // STIME
  120. -D
  121. UD DW#16#7FFFFFFF
  122. __ASSERT>= __ACCU 1, 500
  123. // Test: Interrupt IN before time elapsed
  124. CALL SFB 4, DB 1 (
  125. IN := TRUE,
  126. PT := T#500MS,
  127. Q := M 0.0,
  128. ET := MD 2,
  129. )
  130. __ASSERT== __STW BIE, 1
  131. U M 0.0
  132. __ASSERT== __STW VKE, 0
  133. L MD 2
  134. __ASSERT>= __ACCU 1, 0
  135. L DB1.DBB 12 // STATE
  136. __ASSERT== __ACCU 1, 1
  137. L DB1.DBD 18 // ATIME
  138. L DB1.DBD 14 // STIME
  139. -D
  140. UD DW#16#7FFFFFFF
  141. __ASSERT== __ACCU 1, 0
  142. __SLEEP 100
  143. CALL SFB 4, DB 1 (
  144. IN := TRUE,
  145. PT := T#500MS,
  146. Q := M 0.0,
  147. ET := MD 2,
  148. )
  149. __ASSERT== __STW BIE, 1
  150. U M 0.0
  151. __ASSERT== __STW VKE, 0
  152. L MD 2
  153. __ASSERT> __ACCU 1, 50
  154. __ASSERT< __ACCU 1, 150
  155. L DB1.DBB 12 // STATE
  156. __ASSERT== __ACCU 1, 1
  157. L DB1.DBD 18 // ATIME
  158. L DB1.DBD 14 // STIME
  159. -D
  160. UD DW#16#7FFFFFFF
  161. __ASSERT> __ACCU 1, 50
  162. __ASSERT< __ACCU 1, 150
  163. __SLEEP 100
  164. CALL SFB 4, DB 1 (
  165. IN := FALSE,
  166. PT := T#500MS,
  167. Q := M 0.0,
  168. ET := MD 2,
  169. )
  170. __ASSERT== __STW BIE, 1
  171. U M 0.0
  172. __ASSERT== __STW VKE, 0
  173. L MD 2
  174. __ASSERT== __ACCU 1, 0
  175. L DB1.DBB 12 // STATE
  176. __ASSERT== __ACCU 1, 0
  177. L DB1.DBD 18 // ATIME
  178. L DB1.DBD 14 // STIME
  179. -D
  180. UD DW#16#7FFFFFFF
  181. __ASSERT> __ACCU 1, 50
  182. __ASSERT< __ACCU 1, 150
  183. __SLEEP 500
  184. CALL SFB 4, DB 1 (
  185. IN := FALSE,
  186. PT := T#500MS,
  187. Q := M 0.0,
  188. ET := MD 2,
  189. )
  190. __ASSERT== __STW BIE, 1
  191. U M 0.0
  192. __ASSERT== __STW VKE, 0
  193. L MD 2
  194. __ASSERT== __ACCU 1, 0
  195. L DB1.DBB 12 // STATE
  196. __ASSERT== __ACCU 1, 0
  197. L DB1.DBD 18 // ATIME
  198. L DB1.DBD 14 // STIME
  199. -D
  200. UD DW#16#7FFFFFFF
  201. __ASSERT> __ACCU 1, 50
  202. __ASSERT< __ACCU 1, 150
  203. // Test: At PT=0 the timer is not started
  204. CALL SFB 4, DB 1 (
  205. IN := TRUE,
  206. PT := T#0MS,
  207. Q := M 0.0,
  208. ET := MD 2,
  209. )
  210. __ASSERT== __STW BIE, 1
  211. U M 0.0
  212. __ASSERT== __STW VKE, 0
  213. L MD 2
  214. __ASSERT== __ACCU 1, 0
  215. L DB1.DBB 12 // STATE
  216. __ASSERT== __ACCU 1, 0
  217. L DB1.DBD 18 // ATIME
  218. L DB1.DBD 14 // STIME
  219. -D
  220. UD DW#16#7FFFFFFF
  221. __ASSERT> __ACCU 1, 50
  222. __ASSERT< __ACCU 1, 150
  223. U DB1.DBX 0.0 // IN
  224. __ASSERT== __STW VKE, 0 // IN will be forced low.
  225. CALL SFB 4, DB 1 (
  226. IN := FALSE,
  227. PT := T#0MS,
  228. Q := M 0.0,
  229. ET := MD 2,
  230. )
  231. __ASSERT== __STW BIE, 1
  232. U M 0.0
  233. __ASSERT== __STW VKE, 0
  234. L MD 2
  235. __ASSERT== __ACCU 1, 0
  236. L DB1.DBB 12 // STATE
  237. __ASSERT== __ACCU 1, 0
  238. L DB1.DBD 18 // ATIME
  239. L DB1.DBD 14 // STIME
  240. -D
  241. UD DW#16#7FFFFFFF
  242. __ASSERT> __ACCU 1, 50
  243. __ASSERT< __ACCU 1, 150
  244. U DB1.DBX 0.0 // IN
  245. __ASSERT== __STW VKE, 0
  246. // Test: Negative PT causes an error condition (BIE=0)
  247. CALL SFB 4, DB 1 (
  248. IN := TRUE,
  249. PT := T#-500MS,
  250. Q := M 0.0,
  251. ET := MD 2,
  252. )
  253. __ASSERT== __STW BIE, 0
  254. U M 0.0
  255. __ASSERT== __STW VKE, 0
  256. L MD 2
  257. __ASSERT== __ACCU 1, 0
  258. L DB1.DBB 12 // STATE
  259. __ASSERT== __ACCU 1, 0
  260. L DB1.DBD 18 // ATIME
  261. L DB1.DBD 14 // STIME
  262. -D
  263. UD DW#16#7FFFFFFF
  264. __ASSERT> __ACCU 1, 50
  265. __ASSERT< __ACCU 1, 150
  266. U DB1.DBX 0.0 // IN
  267. __ASSERT== __STW VKE, 1 // IN is not forced low.
  268. CALL SFB 4, DB 1 (
  269. IN := FALSE,
  270. PT := T#-500MS,
  271. Q := M 0.0,
  272. ET := MD 2,
  273. )
  274. __ASSERT== __STW BIE, 0
  275. U M 0.0
  276. __ASSERT== __STW VKE, 0
  277. L MD 2
  278. __ASSERT== __ACCU 1, 0
  279. L DB1.DBB 12 // STATE
  280. __ASSERT== __ACCU 1, 0
  281. L DB1.DBD 18 // ATIME
  282. L DB1.DBD 14 // STIME
  283. -D
  284. UD DW#16#7FFFFFFF
  285. __ASSERT> __ACCU 1, 50
  286. __ASSERT< __ACCU 1, 150
  287. U DB1.DBX 0.0 // IN
  288. __ASSERT== __STW VKE, 0
  289. CALL SFC 46 // STOP CPU
  290. END_ORGANIZATION_BLOCK
  291. DATA_BLOCK DB 1
  292. SFB 4
  293. BEGIN
  294. END_DATA_BLOCK