Образец программы для получения мгновенного расхода и счетчика накопленного объема по каналу №1 адрес прибора 9, протестировал на ПЛК-100, ПЛК-110, работает стабильно
dlina:=LEN(COMANDA);
IF RS485ISOK THEN
IF WAITFORANSWER THEN
PT:=GetByte (0);
STR:=RBDATA_TO_STRING(PT);
RS485DATA:=CONCAT(RS485DATA,STR);
I:=I+1;
IF I > 14 THEN
WAITFORANSWER:=FALSE;
I:=0;
END_IF;
ELSE
IF dlina>0 THEN
SetByte(0,comanda , Dlina);
WAITFORANSWER:=TRUE;
END_IF;
END_IF;
ELSE
a:=LockDevice(0);
IF a=1 THEN
RS485ISOK:=TRUE;
END_IF;
END_IF;
X1:=FIND(RS485DATA, '$R');
x2:=MID(rs485DATA,8, X1-8);
x3:=MID(X2, 5,2);
IF LEN(X3)>0 THEN
X4:= STRING_TO_REAL(X3);

END_IF;
IF LEN(RS485DATA)>78 THEN
RS485DATA:='';
WAITFORANSWER:=FALSE;
END_IF;

IF ZAPROSVOL= TRUE THEN
CASE STAT OF
0:
COMANDA:='#092BE$0D$0A';
IF COMANDA= '#092BE$0D$0A' AND X4<> 0 THEN
VOLUME1:=X4*100;
STAT:= 1;
ELSE
STAT:=0;
END_IF;
1:
COMANDA:='#093BF$0D$0A';
IF COMANDA='#093BF$0D$0A' AND X4<> 0 THEN
VOLUME2:=X4/1000;
ELSE
STAT:=1;
END_IF
END_CASE;
VOLUME:= VOLUME1+VOLUME2; (*Счетчик накопленного объема*)
X4:=0;
END_IF;

IF ZAPROSQ= TRUE THEN
COMANDA:='#090BC$0D$0A';
IF COMANDA= '#090BC$0D$0A' THEN
Q:=X4; (*Мгновенный расход*)
END_IF;
X4:=0;
END_IF;