DATA_BLOCK DB 1
TITLE =
VERSION : 0.1
STRUCT
aData : ARRAY [1 .. 10 ] OF //Temporary placeholder variable
STRING [20 ];
aResults : ARRAY [1 .. 10 ] OF REAL ;
END_STRUCT ;
BEGIN
aData[1] := 'M +2.546m';
aData[2] := 'M +2.547m';
aData[3] := 'M +2.546m';
aData[4] := 'M -2.546m';
aData[5] := 'M +0.999m';
aData[6] := 'M -0.999m';
aData[7] := 'M +999.999m';
aData[8] := 'M -999.999m';
aData[9] := 'M +800.999m';
aData[10] := 'M -800.999m';
aResults[1] := 0.000000e+000;
aResults[2] := 0.000000e+000;
aResults[3] := 0.000000e+000;
aResults[4] := 0.000000e+000;
aResults[5] := 0.000000e+000;
aResults[6] := 0.000000e+000;
aResults[7] := 0.000000e+000;
aResults[8] := 0.000000e+000;
aResults[9] := 0.000000e+000;
aResults[10] := 0.000000e+000;
END_DATA_BLOCK
FUNCTION FC 6 : VOID
TITLE =
VERSION : 0.1
VAR_INPUT
Ascii : POINTER ;
END_VAR
VAR_OUTPUT
rResult : REAL ;
END_VAR
VAR_TEMP
iDb : INT ;
dwptr : DWORD ;
rSum : REAL ;
rSign : REAL ;
iInteger : INT ;
rFraction : REAL ;
END_VAR
BEGIN
NETWORK
TITLE =pointer to string data
L P##Ascii;
LAR1 ;
L W [AR1,P#0.0];
T #iDb;
OPN DB [#iDb];
L D [AR1,P#2.0];
T #dwptr;
LAR1 ;
NETWORK
TITLE =find the sign
L 0.000000e+000;
T #rSum;
sign: L B [AR1,P#0.0];
+AR1 P#1.0;
L '+';
==I ;
JC plus;
TAK ;
L '-';
==I ;
JC mins;
JU sign;
plus: L 1.000000e+000;
JU sig;
mins: L -1.000000e+000;
sig: T #rSign;
NETWORK
TITLE =get units until '.'
unit: L B [AR1,P#0.0];
+AR1 P#1.0;
L '.';
==I ;
JC unid;
TAK ;
L '0';
-I ;
T #iInteger;
L #rSum;
L 1.000000e+001;
*R ;
L #iInteger;
DTR ;
+R ;
T #rSum;
JU unit;
unid: NOP 0;
NETWORK
TITLE =now get fractional part
L 1.000000e-001;
T #rFraction;
dec: L B [AR1,P#0.0];
+AR1 P#1.0;
L 'm';
==I ;
JC end;
TAK ;
L '0';
-I ;
DTR ;
L #rFraction;
*R ;
L #rSum;
+R ;
T #rSum;
L #rFraction;
L 1.000000e+001;
/R ;
T #rFraction;
JU dec;
end: NOP 0;
NETWORK
TITLE =
L #rSum;
L #rSign;
*R ;
T #rResult;
END_FUNCTION
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
END_VAR
BEGIN
NETWORK
TITLE =
CALL FC 6 (
Ascii := DB1.DBB 0,
rResult := DB1.DBD 220);
NOP 0;
NETWORK
TITLE =
CALL FC 6 (
Ascii := DB1.DBB 22,
rResult := DB1.DBD 224);
NOP 0;
NETWORK
TITLE =
CALL FC 6 (
Ascii := DB1.DBB 44,
rResult := DB1.DBD 228);
NOP 0;
NETWORK
TITLE =
CALL FC 6 (
Ascii := DB1.DBB 66,
rResult := DB1.DBD 232);
NOP 0;
NETWORK
TITLE =
CALL FC 6 (
Ascii := DB1.DBB 88,
rResult := DB1.DBD 236);
NOP 0;
NETWORK
TITLE =
CALL FC 6 (
Ascii := DB1.DBB 110,
rResult := DB1.DBD 240);
NOP 0;
NETWORK
TITLE =
CALL FC 6 (
Ascii := DB1.DBB 132,
rResult := DB1.DBD 244);
NOP 0;
NETWORK
TITLE =
CALL FC 6 (
Ascii := DB1.DBB 154,
rResult := DB1.DBD 248);
NOP 0;
NETWORK
TITLE =
CALL FC 6 (
Ascii := DB1.DBB 176,
rResult := DB1.DBD 252);
NOP 0;
NETWORK
TITLE =
CALL FC 6 (
Ascii := DB1.DBB 198,
rResult := DB1.DBD 256);
NOP 0;
END_ORGANIZATION_BLOCK