FUNCTION FC 11 : VOID
TITLE =
VERSION : 0.1
VAR_INPUT
PIW : ARRAY [1 .. 8 ] OF WORD ;
END_VAR
VAR_OUTPUT
Connected : BOOL ;
rActualPosition : REAL ;
END_VAR
VAR_TEMP
Drive : STRUCT
StatusWord : STRUCT
bConnected : BOOL ;
bbit1 : BOOL ;
bBit2 : BOOL ;
bBit3 : BOOL ;
bBit4 : BOOL ;
bBit5 : BOOL ;
bBit6 : BOOL ;
bBit7 : BOOL ;
bBit8 : BOOL ;
bBit9 : BOOL ;
bBit10 : BOOL ;
bBit11 : BOOL ;
bBit12 : BOOL ;
bBit13 : BOOL ;
bBit14 : BOOL ;
bBit15 : BOOL ;
END_STRUCT ;
diPositionFeedback : DINT ;
diSpeedFeedback : DINT ;
iFaultCode : INT ;
iFaultValue : INT ;
iSpareValue : INT ;
END_STRUCT ;
PIWWordArray : ARRAY [1 .. 8 ] OF WORD ;
iSFC20Return : INT ;
rTemp : REAL ;
END_VAR
BEGIN
NETWORK
TITLE =copy input parameters to local array of words
L #PIW[1];
T #PIWWordArray[1];
L #PIW[2];
T #PIWWordArray[2];
L #PIW[3];
T #PIWWordArray[2];
L #PIW[4];
T #PIWWordArray[4];
L #PIW[5];
T #PIWWordArray[5];
L #PIW[6];
T #PIWWordArray[6];
L #PIW[7];
T #PIWWordArray[7];
L #PIW[8];
T #PIWWordArray[8];
NETWORK
TITLE =copy array of words drive structure
CALL SFC20 (
SRCBLK := #PIWWordArray,
RET_VAL := #iSFC20Return,
DSTBLK := #Drive);
NOP 0;
NETWORK
TITLE =access named variable for drive
A #Drive.StatusWord.bConnected;
= #Connected;
NETWORK
TITLE =position feedback
A( ;
L #Drive.diPositionFeedback;
DTR ;
T #rTemp;
SET ;
SAVE ;
CLR ;
A BR;
) ;
JNB _001;
L #rTemp;
L 1.000000e+001;
/R ;
T #rActualPosition;
_001: NOP 0;
END_FUNCTION