ob_startup_info.awl 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123
  1. ORGANIZATION_BLOCK OB 100
  2. BEGIN
  3. // Check if OB-temp writing is enabled
  4. __FEATURE 1
  5. L 0
  6. <>D
  7. SPB isen
  8. // Enable OB-temp presets
  9. __FEATURE 1, 1
  10. // Reboot
  11. CALL SFC -2 (
  12. REBOOT_TYPE := 1
  13. )
  14. isen: NOP 0
  15. END_ORGANIZATION_BLOCK
  16. ORGANIZATION_BLOCK OB 1
  17. VAR_TEMP
  18. OB1_EV_CLASS : BYTE;
  19. OB1_SCAN_1 : BYTE;
  20. OB1_PRIORITY : BYTE;
  21. OB1_OB_NUMBR : BYTE;
  22. OB1_RESERVED_1 : BYTE;
  23. OB1_RESERVED_2 : BYTE;
  24. OB1_PREV_CYCLE : INT;
  25. OB1_MIN_CYCLE : INT;
  26. OB1_MAX_CYCLE : INT;
  27. OB1_DATE_TIME : DATE_AND_TIME;
  28. END_VAR
  29. BEGIN
  30. L #OB1_EV_CLASS
  31. __ASSERT== __ACCU 1, B#16#11
  32. L #OB1_SCAN_1
  33. __ASSERT== __ACCU 1, B#16#03
  34. L #OB1_PRIORITY
  35. __ASSERT== __ACCU 1, B#16#01
  36. L #OB1_OB_NUMBR
  37. __ASSERT== __ACCU 1, B#16#01
  38. L #OB1_RESERVED_1
  39. __ASSERT== __ACCU 1, B#16#00
  40. L #OB1_RESERVED_2
  41. __ASSERT== __ACCU 1, B#16#00
  42. L #OB1_PREV_CYCLE
  43. __ASSERT<= __ACCU 1, W#16#7FFF
  44. L #OB1_MIN_CYCLE
  45. __ASSERT<= __ACCU 1, W#16#7FFF
  46. L #OB1_MAX_CYCLE
  47. __ASSERT<= __ACCU 1, W#16#7FFF
  48. LAR1 P##OB1_DATE_TIME
  49. L B [AR1, P#0.0] // year
  50. T MB 0
  51. CALL FC 1 (BCD_BYTE := MB 0)
  52. __ASSERT>= MB 0, B#16#13
  53. L B [AR1, P#1.0] // month
  54. T MB 0
  55. CALL FC 1 (BCD_BYTE := MB 0)
  56. __ASSERT<= MB 0, B#16#12
  57. L B [AR1, P#2.0] // day
  58. T MB 0
  59. CALL FC 1 (BCD_BYTE := MB 0)
  60. __ASSERT<= MB 0, B#16#31
  61. L B [AR1, P#3.0] // hour
  62. T MB 0
  63. CALL FC 1 (BCD_BYTE := MB 0)
  64. __ASSERT<= MB 0, B#16#24
  65. L B [AR1, P#4.0] // minute
  66. T MB 0
  67. CALL FC 1 (BCD_BYTE := MB 0)
  68. __ASSERT<= MB 0, B#16#60
  69. L B [AR1, P#5.0] // second
  70. T MB 0
  71. CALL FC 1 (BCD_BYTE := MB 0)
  72. __ASSERT<= MB 0, B#16#60
  73. L B [AR1, P#6.0] // millisecond upper
  74. T MB 0
  75. CALL FC 1 (BCD_BYTE := MB 0)
  76. L B [AR1, P#7.0] // millisecond lower / weekday
  77. T MB 0
  78. CALL FC 1 (BCD_BYTE := MB 0)
  79. L MB 0
  80. UD DW#16#0000000F
  81. __ASSERT>= __ACCU 1, 1
  82. __ASSERT<= __ACCU 1, 7
  83. __ASSERT<= #OB1_PREV_CYCLE, #OB1_MAX_CYCLE
  84. __ASSERT>= #OB1_PREV_CYCLE, #OB1_MIN_CYCLE
  85. __ASSERT>= #OB1_MAX_CYCLE, #OB1_MIN_CYCLE
  86. CALL SFC 46 // STOP CPU
  87. END_ORGANIZATION_BLOCK
  88. FUNCTION FC 1 : VOID
  89. TITLE = Check whether BCD_BYTE is a valid BCD value
  90. VAR_INPUT
  91. BCD_BYTE : BYTE;
  92. END_VAR
  93. BEGIN
  94. L #BCD_BYTE
  95. UD DW#16#0000000F
  96. __ASSERT<= __ACCU 1, 9
  97. L #BCD_BYTE
  98. SRD 4
  99. UD DW#16#0000000F
  100. __ASSERT<= __ACCU 1, 9
  101. END_FUNCTION