oder so...
CASE i OF
0: FB_MBCloseAll(
bExecute:=TRUE ,
tTimeout:= ,
bBusy=> ,
bError=> ,
nErrId=> );
IF NOT FB_MBCloseAll.bBusy THEN
i:=10;
END_IF
5: FB_MBReadRegs(
sIPAddr:=IP_Addr ,
nTCPPort:=503 ,
nUnitID:=1 ,
nQuantity:=4 ,
nMBAddr:=16#3032 ,
cbLength:=8 ,
pDestAddr:=ADR(Data) ,
bExecute:=TRUE ,
tTimeout:=t#3s ,
bBusy=> ,
bError=> ,
nErrId=> ,
cbRead=> );
IF NOT FB_MBReadRegs.bBusy THEN
IF NOT FB_MBReadRegs.bError THEN
i:=5;
ELSE
i:=10;
END_IF
FB_MBReadRegs(bExecute:=FALSE);
END_IF
10: ;(*ERROR*)
END_CASE
So ist es besser, wenn es zu schnell für den Slave ist dann noch mal 10 oder 100ms warten....