DATA_BLOCK "b"
TITLE =
VERSION : 0.1
STRUCT
a : REAL ;
b : ARRAY [0 .. 5 ] OF INT := 0, 1, 2, 3, 4, 5;
END_STRUCT ;
BEGIN
a := 0.000000e+000;
b[0] := 0;
b[1] := 1;
b[2] := 2;
b[3] := 3;
b[4] := 4;
b[5] := 5;
END_DATA_BLOCK
FUNCTION FC 1 : VOID
TITLE =
VERSION : 0.1
VAR_INPUT
IN : ANY ; //Any pointer
SET : INT ; //How many elements ?
END_VAR
VAR_OUTPUT
OUT : ANY ; //"BLKMOV" Any
END_VAR
VAR_TEMP
saveAR1 : DWORD ; //save AR1
END_VAR
BEGIN
NETWORK
TITLE =
TAR1 #saveAR1;
NETWORK
TITLE =
L P##IN;
LAR1 ;
L P##OUT;
LAR2 ;
L D [AR1,P#0.0];
T D [AR2,P#0.0];
L D [AR1,P#4.0];
T D [AR2,P#4.0];
L W [AR1,P#8.0];
T W [AR2,P#8.0];
NETWORK
TITLE =
L P##OUT;
LAR1 ;
[COLOR="Red"] L #SET;
T W [AR1,P#2.0]; [/COLOR]
L B [AR1,P#6.0];
L B#16#87;
==D ;
JCN VL;
L B#16#86;
T B [AR1,P#6.0];
VL: A( ;
L W [AR1,P#4.0];
L L#0;
<>D ;
) ;
A( ;
L W [AR1,P#4.0];
L DINO;
==D ;
) ;
A( ;
L B [AR1,P#6.0];
L B#16#84;
==D ;
) ;
JCN DI;
L B#16#85;
T B [AR1,P#6.0];
DI: L D [AR1,P#6.0];
LAR1 ;
NETWORK
TITLE =
LAR1 #saveAR1;
END_FUNCTION
FUNCTION_BLOCK "fb"
TITLE =
VERSION : 0.1
VAR_INPUT
x : ARRAY [0 .. 5 ] OF INT ;
END_VAR
VAR
y : ARRAY [0 .. 5 ] OF INT ;
END_VAR
VAR_TEMP
z : ARRAY [0 .. 5 ] OF INT ;
Any1 : ANY ;
Any2 : ANY ;
err : INT ;
END_VAR
BEGIN
NETWORK
TITLE =
L 0;
T #y[0];
T #y[1];
T #y[2];
T #y[3];
T #y[4];
T #y[5];
NETWORK
TITLE =
CALL FC 1 (
IN := [B]"b".b[2][/B],//play with this
[COLOR="Red"]SET := 2[/COLOR],//play with this[B]![/B]
OUT := [COLOR="Blue"]#Any1[/COLOR]);
NETWORK
TITLE =
CALL FC 1 (
IN := [B]#y[1][/B],//play with this
[COLOR="red"]SET := 12345[/COLOR],//play with this
OUT := [COLOR="SeaGreen"]#Any2[/COLOR]);
NETWORK
TITLE =
CALL "BLKMOV" (
SRCBLK := [COLOR="Blue"]#Any1[/COLOR],
RET_VAL := #err,
DSTBLK := [COLOR="SeaGreen"]#Any2[/COLOR]);
NETWORK
TITLE =
L #y[0];
T MW 0;
L #y[1];
T MW 2;
L #y[2];
T MW 4;
L #y[3];
T MW 6;
L #y[4];
T MW 8;
L #y[5];
T MW 10;
L #err;
T MW 12;
END_FUNCTION_BLOCK
DATA_BLOCK "i"
TITLE =
VERSION : 0.0
"fb"
BEGIN
x[0] := 0;
x[1] := 0;
x[2] := 0;
x[3] := 0;
x[4] := 0;
x[5] := 0;
y[0] := 0;
y[1] := 0;
y[2] := 0;
y[3] := 0;
y[4] := 0;
y[5] := 0;
END_DATA_BLOCK
ORGANIZATION_BLOCK OB 1
TITLE = "Main Program Sweep (Cycle)"
VERSION : 0.1
VAR_TEMP
OB1_EV_CLASS : BYTE ; //Bits 0-3 = 1 (Coming event), Bits 4-7 = 1 (Event class 1)
OB1_SCAN_1 : BYTE ; //1 (Cold restart scan 1 of OB 1), 3 (Scan 2-n of OB 1)
OB1_PRIORITY : BYTE ; //Priority of OB Execution
OB1_OB_NUMBR : BYTE ; //1 (Organization block 1, OB1)
OB1_RESERVED_1 : BYTE ; //Reserved for system
OB1_RESERVED_2 : BYTE ; //Reserved for system
OB1_PREV_CYCLE : INT ; //Cycle time of previous OB1 scan (milliseconds)
OB1_MIN_CYCLE : INT ; //Minimum cycle time of OB1 (milliseconds)
OB1_MAX_CYCLE : INT ; //Maximum cycle time of OB1 (milliseconds)
OB1_DATE_TIME : DATE_AND_TIME ; //Date and time OB1 started
w : ARRAY [0 .. 5 ] OF INT ;
END_VAR
BEGIN
NETWORK
TITLE =
CALL "fb" , "i" (
x := #w);
END_ORGANIZATION_BLOCK