ORGANIZATION_BLOCK OB 100 BEGIN // Check if OB-temp writing is enabled __FEATURE 1 L 0 <>D SPB isen // Enable OB-temp presets __FEATURE 1, 1 // Reboot CALL SFC -2 ( REBOOT_TYPE := 1 ) isen: NOP 0 END_ORGANIZATION_BLOCK ORGANIZATION_BLOCK OB 1 VAR_TEMP OB1_EV_CLASS : BYTE; OB1_SCAN_1 : BYTE; OB1_PRIORITY : BYTE; OB1_OB_NUMBR : BYTE; OB1_RESERVED_1 : BYTE; OB1_RESERVED_2 : BYTE; OB1_PREV_CYCLE : INT; OB1_MIN_CYCLE : INT; OB1_MAX_CYCLE : INT; OB1_DATE_TIME : DATE_AND_TIME; END_VAR BEGIN L #OB1_EV_CLASS __ASSERT== __ACCU 1, B#16#11 L #OB1_SCAN_1 __ASSERT== __ACCU 1, B#16#03 L #OB1_PRIORITY __ASSERT== __ACCU 1, B#16#01 L #OB1_OB_NUMBR __ASSERT== __ACCU 1, B#16#01 L #OB1_RESERVED_1 __ASSERT== __ACCU 1, B#16#00 L #OB1_RESERVED_2 __ASSERT== __ACCU 1, B#16#00 L #OB1_PREV_CYCLE __ASSERT<= __ACCU 1, W#16#7FFF L #OB1_MIN_CYCLE __ASSERT<= __ACCU 1, W#16#7FFF L #OB1_MAX_CYCLE __ASSERT<= __ACCU 1, W#16#7FFF LAR1 P##OB1_DATE_TIME L B [AR1, P#0.0] // year T MB 0 CALL FC 1 (BCD_BYTE := MB 0) __ASSERT>= MB 0, B#16#13 L B [AR1, P#1.0] // month T MB 0 CALL FC 1 (BCD_BYTE := MB 0) __ASSERT<= MB 0, B#16#12 L B [AR1, P#2.0] // day T MB 0 CALL FC 1 (BCD_BYTE := MB 0) __ASSERT<= MB 0, B#16#31 L B [AR1, P#3.0] // hour T MB 0 CALL FC 1 (BCD_BYTE := MB 0) __ASSERT<= MB 0, B#16#24 L B [AR1, P#4.0] // minute T MB 0 CALL FC 1 (BCD_BYTE := MB 0) __ASSERT<= MB 0, B#16#60 L B [AR1, P#5.0] // second T MB 0 CALL FC 1 (BCD_BYTE := MB 0) __ASSERT<= MB 0, B#16#60 L B [AR1, P#6.0] // millisecond upper T MB 0 CALL FC 1 (BCD_BYTE := MB 0) L B [AR1, P#7.0] // millisecond lower / weekday T MB 0 CALL FC 1 (BCD_BYTE := MB 0) L MB 0 UD DW#16#0000000F __ASSERT>= __ACCU 1, 1 __ASSERT<= __ACCU 1, 7 __ASSERT<= #OB1_PREV_CYCLE, #OB1_MAX_CYCLE __ASSERT>= #OB1_PREV_CYCLE, #OB1_MIN_CYCLE __ASSERT>= #OB1_MAX_CYCLE, #OB1_MIN_CYCLE CALL SFC 46 // STOP CPU END_ORGANIZATION_BLOCK FUNCTION FC 1 : VOID TITLE = Check whether BCD_BYTE is a valid BCD value VAR_INPUT BCD_BYTE : BYTE; END_VAR BEGIN L #BCD_BYTE UD DW#16#0000000F __ASSERT<= __ACCU 1, 9 L #BCD_BYTE SRD 4 UD DW#16#0000000F __ASSERT<= __ACCU 1, 9 END_FUNCTION