Program SR_NoncyclicalData
VAR
stUnconnectedMsg: IIoDrvEIPAcyclicServicesLibrary.EIP_SendUnconnectedMessage;
abyAdapterIp: ARRAY [0..3] OF BYTE := [192,168,0,2];
xGetData, xSetData: BOOL;
abyDataIn: ARRAY[0..119] OF BYTE;
abyDataOut: ARRAY[0..119] OF BYTE;
iState: INT;
END_VAR
// Noncyclical Data
IF xGetData THEN
xGetData:=FALSE;
iState:=10;
ELSIF xSetData THEN
xSetData:=FALSE;
iState:=20;
END_IF
CASE iState OF
10:
stUnconnectedMsg.abyIpAddress:= abyAdapterIp;
stUnconnectedMsg.byService:=14; //14 = Get Single,16 = Set Single
stUnconnectedMsg.uiClass:=105; //Data read CIP 105.0.0
stUnconnectedMsg.uiInstance:=0;
stUnconnectedMsg.uiAttribute:=0;
stUnconnectedMsg.pData:=ADR(abyDataIn);
stUnconnectedMsg.udiLength:=SIZEOF (abyDataIn);
stUnconnectedMsg.xEnable:= TRUE;
iState:=11;
11:
//Ok
IF stUnconnectedMsg.udiState=4 THEN
stUnconnectedMsg.xEnable:= FALSE;
iState:=0;
//No connection to EIP adapter or wrong pointer to data
ELSIF stUnconnectedMsg.udiState=5 THEN
stUnconnectedMsg.xEnable:= FALSE;
iState:=999;
END_IF
20:
stUnconnectedMsg.abyIpAddress:= abyAdapterIp;
stUnconnectedMsg.byService:=16; //14 = Get Single,16 = Set Single
stUnconnectedMsg.uiClass:=105; //Data write CIP 105.1.0
stUnconnectedMsg.uiInstance:=1;
stUnconnectedMsg.uiAttribute:=0;
stUnconnectedMsg.pData:=ADR(abyDataOut);
stUnconnectedMsg.udiLength:=SIZEOF (abyDataOut);
stUnconnectedMsg.xEnable:= TRUE;
iState:=21;
21:
//Ok
IF stUnconnectedMsg.udiState=4 THEN
stUnconnectedMsg.xEnable:= FALSE;
iState:=0;
//No connection to EIP adapter or wrong pointer to data
ELSIF stUnconnectedMsg.udiState=5 THEN
stUnconnectedMsg.xEnable:= FALSE;
iState:=999;
END_IF
END_CASE
EIPS_Scanner.IoDrvSendUnconnectedMessage(stUnconnectedMsg);