TYPE UDT 1 VERSION : 0.1 STRUCT VAR1_INT : INT := 11; VAR2_DINT : DINT := L#22; VAR3_DWORD : DWORD; VAR4_REAL : REAL; VAR5_BOOL : BOOL := TRUE; VAR6_BOOL : BOOL; VAR7_INT : INT := 42; VAR8_UDT2 : UDT 2; END_STRUCT; END_TYPE TYPE UDT 2 VERSION : 0.1 STRUCT VAR0_INT : INT := 101; VAR1_BOOL : BOOL; VAR2_BOOL : BOOL := TRUE; VAR3_DINT : DINT := L#102; END_STRUCT; END_TYPE DATA_BLOCK DB 1 STRUCT DBVAR_UDT1 : UDT 1; DBVAR2 : INT; END_STRUCT; BEGIN DBVAR2 := 99; END_DATA_BLOCK FUNCTION FC 1 : VOID VAR_INPUT FCINVAR_UDT1 : UDT 1; FCINVAR_INT : INT; END_VAR BEGIN L #FCINVAR_INT __ASSERT== __ACCU 1, 123 NOP 0 END_FUNCTION FUNCTION_BLOCK FB 1 VAR_INPUT FBINVAR_UDT1 : UDT 1; END_VAR BEGIN NOP 0 END_FUNCTION_BLOCK DATA_BLOCK DB 2 FB 1 BEGIN END_DATA_BLOCK ORGANIZATION_BLOCK OB 1 BEGIN // Check DB 1 initial values AUF DB 1 L DBW 0 // DBVAR_UDT1.VAR1_INT __ASSERT== __ACCU 1, 11 L DBD 2 // DBVAR_UDT1.VAR2_DINT __ASSERT== __ACCU 1, 22 L DBD 6 // DBVAR_UDT1.VAR3_DWORD __ASSERT== __ACCU 1, 0 L DBD 10 // DBVAR_UDT1.VAR4_REAL __ASSERT== __ACCU 1, 0.0 L DBB 14 // DBVAR_UDT1.VAR5/6_BOOL __ASSERT== __ACCU 1, 1 L DBB 15 // Reserved space after VAR6_BOOL __ASSERT== __ACCU 1, 0 L DBW 16 // DBVAR_UDT1.VAR7_INT __ASSERT== __ACCU 1, 42 L DBW 18 // DBVAR_UDT1.VAR8_UDT2.VAR0_INT __ASSERT== __ACCU 1, 101 L DBB 20 // DBVAR_UDT1.VAR8_UDT2.VAR1/2_BOOL __ASSERT== __ACCU 1, 2 L DBB 21 // Reserved space after VAR2_BOOL __ASSERT== __ACCU 1, 0 L DBD 22 // DBVAR_UDT1.VAR8_UDT2.VAR3_DINT __ASSERT== __ACCU 1, 102 L DBW 26 // DBVAR2 __ASSERT== __ACCU 1, 99 // Check DB 2 initial values AUF DB 2 L DBW 0 // FBINVAR_UDT1.VAR1_INT __ASSERT== __ACCU 1, 11 L DBD 2 // FBINVAR_UDT1.VAR2_DINT __ASSERT== __ACCU 1, 22 // CALL FC 1 ( // FCINVAR_INT := 123, // ) CALL SFC 46 // STOP CPU END_ORGANIZATION_BLOCK