Example: Noncyclical Data Between Scanner and Adapter

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);