Given the following ST file in a valid Apax project with an installed SDK.
CONFIGURATION PLC_1
VAR_GLOBAL
myBOOL : BOOL;
myINT : INT;
myDINT : DINT;
myLINT : LINT;
mySINT : SINT;
myUINT AT %MW3 : UINT;
myUDINT : UDINT;
myULINT : ULINT;
myUSINT : USINT;
myREAL : REAL;
myLREAL : LREAL;
myMotor : Motor;
myConveyor : Conveyor;
mySimpleArray : ARRAY [0..2] OF BOOL;
myArray : ARRAY [0..1, 1..2] of INT;
END_VAR
TASK Main(Interval := T#3000ms, Priority := 1);
PROGRAM P1 WITH Main : SampleProgram;
END_CONFIGURATION
TYPE
Motor : STRUCT
is_running : BOOL;
power_consumption : REAL;
hours_operating : INT;
END_STRUCT;
END_TYPE
CLASS Conveyor
VAR PRIVATE
Motor1 : Motor;
Motor2 : Motor;
END_VAR
VAR PUBLIC
is_running : BOOL;
END_VAR
METHOD PUBLIC Start
Motor1.is_running := TRUE;
Motor2.is_running := TRUE;
is_running := TRUE;
END_METHOD
METHOD PUBLIC Stop
Motor1.is_running := FALSE;
Motor2.is_running := FALSE;
is_running := FALSE;
END_METHOD
END_CLASS
FUNCTION_BLOCK FBWithStaticVariable
VAR
myVarStaticInt : INT;
END_VAR
myVarStaticInt := 42;
END_FUNCTION_BLOCK
PROGRAM SampleProgram
VAR_EXTERNAL
myBOOL : BOOL;
myINT : INT;
myDINT : DINT;
myLINT : LINT;
mySINT : SINT;
myUINT : UINT;
myUDINT : UDINT;
myULINT : ULINT;
myUSINT : USINT;
myREAL : REAL;
myLREAL : LREAL;
myMotor: Motor;
myConveyor : Conveyor;
mySimpleArray : ARRAY [0..2] OF BOOL;
myArray : ARRAY [0..1, 1..2] of INT;
END_VAR
VAR
myFBWithStatic : FBWithStaticVariable;
END_VAR
myINT := myINT + 3;
myDINT := DINT#-56;
myLINT := LINT#512;
mySINT := SINT#-5;
myUINT := myUINT + UINT#10000;
myUDINT := UDINT#512;
myULINT := ULINT#512;
myUSINT := USINT#5;
myREAL := REAL#5.0;
myLREAL := 3.14159;
myMotor.is_running := TRUE;
myMotor.power_consumption := REAL#10.0;
myMotor.hours_operating := myMotor.hours_operating + 1;
IF myINT MOD 2 = 0 THEN
myBOOL := TRUE;
myConveyor.Start();
ELSE
myBOOL := FALSE;
myConveyor.Stop();
END_IF;
mySimpleArray[0] := TRUE;
mySimpleArray[1] := FALSE;
mySimpleArray[2] := TRUE;
myArray[0,1] := 1;
myArray[0,2] := 2;
myArray[1,2] := 5;
myFBWithStatic();
END_PROGRAM
Build the program and download it to the SIMATIC 1500 PLC by performing these steps:
apax build
apax sld load --target 192.168.0.1 --input ./bin/plcsim/ --certificate ./cert.cer --password aSecurePassword --restart --accept-security-disclaimer