insn_SE.awl 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139
  1. ORGANIZATION_BLOCK OB 1
  2. BEGIN
  3. // Start timer and let it expire
  4. __STWRST
  5. L 0
  6. SE T 10
  7. SET
  8. R T 10
  9. U T 10
  10. __ASSERT== __STW VKE, 0
  11. SET
  12. L W#16#0010
  13. SE T 10
  14. U T 10
  15. __ASSERT== __STW VKE, 0
  16. L T 10
  17. __ASSERT>= __ACCU 1, 5
  18. __SLEEP 101
  19. U T 10
  20. __ASSERT== __STW VKE, 1
  21. L T 10
  22. __ASSERT== __ACCU 1, 0
  23. // Start timer and reset VKE before it expires
  24. __STWRST
  25. L 0
  26. SE T 10
  27. SET
  28. R T 10
  29. U T 10
  30. __ASSERT== __STW VKE, 0
  31. SET
  32. L W#16#0010
  33. SE T 10
  34. U T 10
  35. __ASSERT== __STW VKE, 0
  36. L T 10
  37. __ASSERT>= __ACCU 1, 5
  38. CLR
  39. L W#16#0010
  40. SE T 10
  41. U T 10
  42. __ASSERT== __STW VKE, 0
  43. L T 10
  44. __ASSERT>= __ACCU 1, 5
  45. __SLEEP 101
  46. U T 10
  47. __ASSERT== __STW VKE, 0
  48. L T 10
  49. __ASSERT== __ACCU 1, __ACCU 2
  50. // Start timer and reset VKE after it expired
  51. __STWRST
  52. L 0
  53. SE T 10
  54. SET
  55. R T 10
  56. U T 10
  57. __ASSERT== __STW VKE, 0
  58. SET
  59. L W#16#0010
  60. SE T 10
  61. U T 10
  62. __ASSERT== __STW VKE, 0
  63. __SLEEP 101
  64. U T 10
  65. __ASSERT== __STW VKE, 1
  66. CLR
  67. SE T 10
  68. U T 10
  69. __ASSERT== __STW VKE, 0
  70. // Reset signal
  71. __STWRST
  72. L 0
  73. SE T 10
  74. SET
  75. R T 10
  76. U T 10
  77. __ASSERT== __STW VKE, 0
  78. SET
  79. L W#16#0010
  80. SE T 10
  81. U T 10
  82. __ASSERT== __STW VKE, 0
  83. L T 10
  84. __ASSERT>= __ACCU 1, 5
  85. SET
  86. R T 10
  87. U T 10
  88. __ASSERT== __STW VKE, 0
  89. L T 10
  90. __ASSERT== __ACCU 1, 0
  91. __SLEEP 101
  92. U T 10
  93. __ASSERT== __STW VKE, 0
  94. L T 10
  95. __ASSERT== __ACCU 1, 0
  96. // Test timer parameter
  97. AUF DB 1
  98. L DBW 0
  99. __ASSERT== __ACCU 1, 24
  100. CALL FB 1, DB 1 (
  101. TIMER_VAR := T 42
  102. )
  103. CALL SFC 46 // STOP CPU
  104. END_ORGANIZATION_BLOCK
  105. FUNCTION_BLOCK FB 1
  106. VAR_INPUT
  107. TIMER_VAR : TIMER;
  108. END_VAR
  109. BEGIN
  110. L DIW 0
  111. __ASSERT== __ACCU 1, 42
  112. L #TIMER_VAR
  113. __ASSERT== __ACCU 1, 0
  114. U #TIMER_VAR
  115. __ASSERT== __STW VKE, 0
  116. SE #TIMER_VAR
  117. END_FUNCTION_BLOCK
  118. DATA_BLOCK DB 1
  119. FB 1
  120. BEGIN
  121. TIMER_VAR := T 24;
  122. END_DATA_BLOCK