DATA_BLOCK "dbStrings"
TITLE =
VERSION : 0.1
STRUCT
sString : STRING [14 ] := '+0.1234567e+00'; //initialised string (note it occupies 16 bytes and cannot be monitored in DB)
acString1 : STRUCT //string made from chars for monitoring
byMaxLength : BYTE ;
byLength : BYTE ;
acString : ARRAY [1 .. 14 ] OF CHAR ;
END_STRUCT ;
acString2 : STRUCT //string made from chars for monitoring
byMaxLength : BYTE ;
byLength : BYTE ;
acString : ARRAY [1 .. 14 ] OF CHAR ;
END_STRUCT ;
END_STRUCT ;
BEGIN
sString := '+0.1234567e+00';
acString1.byMaxLength := B#16#0;
acString1.byLength := B#16#0;
acString1.acString[1] := ' ';
acString1.acString[2] := ' ';
acString1.acString[3] := ' ';
acString1.acString[4] := ' ';
acString1.acString[5] := ' ';
acString1.acString[6] := ' ';
acString1.acString[7] := ' ';
acString1.acString[8] := ' ';
acString1.acString[9] := ' ';
acString1.acString[10] := ' ';
acString1.acString[11] := ' ';
acString1.acString[12] := ' ';
acString1.acString[13] := ' ';
acString1.acString[14] := ' ';
acString2.byMaxLength := B#16#0;
acString2.byLength := B#16#0;
acString2.acString[1] := ' ';
acString2.acString[2] := ' ';
acString2.acString[3] := ' ';
acString2.acString[4] := ' ';
acString2.acString[5] := ' ';
acString2.acString[6] := ' ';
acString2.acString[7] := ' ';
acString2.acString[8] := ' ';
acString2.acString[9] := ' ';
acString2.acString[10] := ' ';
acString2.acString[11] := ' ';
acString2.acString[12] := ' ';
acString2.acString[13] := ' ';
acString2.acString[14] := ' ';
END_DATA_BLOCK
FUNCTION FC 2 : VOID
TITLE =Initialise a string
VERSION : 0.1
VAR_INPUT
sAny : ANY ;
cInit : CHAR ;
END_VAR
VAR_TEMP
iLoopCount : INT ;
iDBNo : INT ;
END_VAR
BEGIN
NETWORK
TITLE =init a string
L P##sAny;
LAR1 ;
L W [AR1,P#2.0];
T #iLoopCount;
L W [AR1,P#4.0];
T #iDBNo;
L D [AR1,P#6.0];
LAR1 ;
OPN DB [#iDBNo];
L #iLoopCount;
+ -2;
T B [AR1,P#0.0];
T B [AR1,P#1.0];
Loop: T #iLoopCount;
L #cInit;
T B [AR1,P#2.0];
+AR1 P#1.0;
L #iLoopCount;
LOOP Loop;
SET ;
SAVE ;
END_FUNCTION
FUNCTION FC 1 : VOID
TITLE =R_String demo
VERSION : 0.1
VAR_TEMP
sTempString : STRING [14 ];
END_VAR
BEGIN
NETWORK
TITLE =Initialise a string in temp local data
CALL FC 2 (
sAny := #sTempString,
cInit := '_');
NOP 0;
NETWORK
TITLE =convert Real to string to temp area
CALL FC30 (
IN := 9.000000e-001,
RET_VAL := #sTempString);
NOP 0;
NETWORK
TITLE =copy temp result to displayable string variable in DB
CALL SFC20 (
SRCBLK := #sTempString,
RET_VAL := MW 0,
DSTBLK := "dbStrings".acString1);
NOP 0;
NETWORK
TITLE =convert Real to string to DB
CALL FC30 (
IN := 9.876543e+000,
RET_VAL := "dbStrings".sString);
NOP 0;
NETWORK
TITLE =copy string in DB to displayable string variable in DB
CALL SFC20 (
SRCBLK := "dbStrings".sString,
RET_VAL := MW 0,
DSTBLK := "dbStrings".acString2);
NOP 0;
END_FUNCTION