добрый вечер, подскажите пожалуйста, если при опросе адреса переменных должны динамически меняться с панели( в примере пока статично 512 и 514) , организация опроса возможна только таким способом как описана ниже. Для каждой переменной свой блок?
CASE istatecom1 OF
0:
fbCom1 (
xenable:=TRUE,
udiComPort:=1,
udibaudrate:=udibaudrate1,
udibytesize:=udibytesize1,
eparity:= parity1,
estopbit:=stopbit1
)
;
IF fbcom1.xDone THEN istatecom1:=1;
END_IF
1:
fbpr1(
xExecute:=fbcom1.xActive,
tTimeout:=T#200MS,
usiRetry:=10,
hCom:=fbcom1.hCom,
xisasciimode:=xisasciimode1,
usislaveid:=16,
efunccode:=ocl.MB_FC.READ_HOLDING_REGISTERS,
uidataaddr:=512,
uidatacount:=1,
pdata:=ADR(type_station1),
szsize:=SIZEOF(type_station1)
);
IF fbpr1.xDone OR fbpr1.xError THEN fbpr1(xExecute:=FALSE);
istatecom1:=2;
2:
fbpr1(
xExecute:=fbcom1.xActive,
tTimeout:=T#200MS,
usiRetry:=10,
hCom:=fbcom1.hCom,
xisasciimode:=xisasciimode1,
usislaveid:=16,
efunccode:=ocl.MB_FC.READ_HOLDING_REGISTERS,
uidataaddr:=514,
uidatacount:=2,
pdata:=ADR(arr_DDin1),
szsize:=SIZEOF(arr_DDin1)
);
IF fbpr1.xDone OR fbpr1.xError THEN fbpr1(xExecute:=FALSE);
ddin1_pump_w2r.awmodbusReal:=arr_ddin1;
ddin1_pump:=ddin1_pump_w2r.rv;
istatecom1:=3;
END_IF