
Сообщение от
ward
Так ну имеем, - адрес регистра 4000, ip 192.168.0.1 и больше ничего. Что в ST написать?). Соотнесением пользоваться нельзя. Это теоретически, интересно возможно ли так
Код:
CASE iState OF
0: //Открытие соединения
fbTCPClient(
xEnable:=TRUE ,
tTimeout:=T#5S ,
sIpAddr:='192.168.0.1',
uiPort:=502);
IF fbTCPClient.xActive THEN
iState := 1;
END_IF
IF fbTCPClient.xError THEN
fbTCPClient(xEnable:=FALSE);
END_IF
1:
fbModbus(
xExecute:=TRUE ,
tTimeout:=T#50MS ,
usiRetry:=3 ,
hConnection:=fbTCPClient.hConnection ,
xIsRtuOverTcpMode:=FALSE ,
usiUnitId:=1 ,
eFuncCode:=OCL.MB_FC.READ_HOLDING_REGISTERS,
uiDataAddr:=4000 ,
uiDataCount:=2 ,
pData:=ADR(arWORD) ,
szSize:=SIZEOF(arWORD) ,
xDone=> ,
xBusy=> ,
xError=> ,
eError=> );
IF fbModbus.xDone OR fbModbus.xError THEN
fbModbus(xExecute:=FALSE);
iState := 0;
ReadValue1 := OCL.WORD2_TO_REAL(wInput1:=arWORD[1] , wInput2:=arWORD[0] , xSwapBytes:=FALSE );
END_IF
END_CASE
Дальше сами адаптируете по свою непонятную задачу.