1. Берёте из модуля оба значения iRD и SRD
2. Делаете ФБ
Код:
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
3. На вход ФБ подаёте оба сигнала

4. На выходе Rezultat будут или правильные значения или 0 пока мазут не прогрелся.
Это значение (Rezultat) используете в программе вместо iRD
5. Дополнительно получаете коды ошибок.