Test case R0007
Full test suiteDevice test case
AT vars in PROGRAM
This test case it part of the test suite proposed for new devices.
Test case ID: R0007
Language: ST
tests2/t0007.st(* checks that AT vars are read/written and properly shared *) (* this requires a DRV implementation that works in memory *) PROGRAM T0007 VAR B : BOOL; X : INT; M8 AT %MW63.8 : INT; M9 AT %MW63.9 : INT; X8 AT %QW62.8 : INT; I3 AT %MX66.3 : BOOL; I8 AT %IW61.1 : INT; // I4 AT %MX10.2.3.1 : BOOL; // invalid address, would give error at code generation time fb1 : FB1_T0007; END_VAR VAR_EXTERNAL _T_PARAMS : TEST_PARAMS; END_VAR X8 := I8 + 1; // I8 := 3; // error I8 is read only M9 := M9 + 2; M9 := ADD_INT(M9,-1); fb1( in:= 20); // m8 = 21 M8 := M8 + 30; // M8 = 51 X8 := 2 + M8; // X8 = 53 I3 := NOT(I3); (* X := X8; *) (* this fails : output var should not be read *) IF _T_PARAMS.cycle = _T_PARAMS.timestorun THEN // last iter _GEB_ASSERT_( M8 = 51); _GEB_ASSERT_( M9 = 12); _GEB_ASSERT_( X8 = 53); _GEB_ASSERT_( I3 = 1); // _GEB_MSG_('last iter'); END_IF; END_PROGRAM FUNCTION_BLOCK FB1_T0007 VAR_INPUT in:INT; END_VAR VAR_OUTPUT out:INT; END_VAR VAR I2 AT %MW63.8 : INT; AT %MW63.9 : INT; // anonymous AT now supported END_VAR I2 := in + 1; %MW63.9 := %MW63.9 +3 ; END_FUNCTION_BLOCK