1. Берёте из модуля оба значения iRD и SRD
2. Делаете ФБ
3. На вход ФБ подаёте оба сигналаКод:UNCTION_BLOCK DECODE_Err VAR_INPUT iRD: INT; (*Датчик*) SRD: WORD; END_VAR VAR_OUTPUT Rezultat: INT; (*Результат*) Cod_Err: BYTE; (*Код ошибки измерения*) Err: BOOL; (*Наличее ошибки измерения*) END_VAR VAR END_VAR IF SRD <>0 THEN Err:=TRUE; (*Установить ошибку измерений*) CASE SRD OF 16#F000: Cod_Err:=1; (*Результаты измерения не верны*) 16#F006: Cod_Err:=2; (*Данные не готовы*) 16#F007: Cod_Err:=3; (*Датчик отключен*) 16#F00A: Cod_Err:=4; (*Измеренное значение слишком велико*) 16#F00B: Cod_Err:=5; (*Измеренное значение слишком мало*) 16#F00D: Cod_Err:=6; (*Обрыв датчика*) 16#F00F: Cod_Err:=7; (*Некорректный калибровочный коэффициент *) END_CASE ELSE Err:=FALSE; Cod_Err:=0; (*Нет ошибок измерений*) END_IF IF iRD<0 OR Err THEN Rezultat:=0; ELSE Rezultat:=iRD; END_IF
4. На выходе Rezultat будут или правильные значения или 0 пока мазут не прогрелся.
Это значение (Rezultat) используете в программе вместо iRD
5. Дополнительно получаете коды ошибок.




Ответить с цитированием