Цитата Сообщение от volodya Посмотреть сообщение
DECODE_FLOAT корректно работает с ПЛК154 (токовые входы)?
Про ПЛК154 не скажу, с ним не работал, но ПЛК160 для датчика 4-20 мА, обрыв не покажет, а покажет "Сигнал на входе меньше возможного".
Что вполне логично. Ведь датчик может быть и 0-20 мА и 0-5 мА. Как отличить в этом случае обрыв датчика от нижнего значения диапазона измерения?
Идеология у обоих ПЛК я думаю одинаковая
Я сделал свой блок для обработки результатов измерения датчиков 4-20 мА
Код:
FUNCTION_BLOCK DECODE_AI
VAR_INPUT
	ai: REAL;		(*Датчик*)
END_VAR
VAR_OUTPUT
	Rezultat: REAL;		(*Результат*)
	Cod_Err: BYTE;		(*Код ошибки измерения*)
	Err: BOOL;		(*Наличее ошибки измерения*)
END_VAR
VAR
	pt:POINTER TO DWORD;
	bar:BYTE;
END_VAR

Err:=TRUE;	(*Установить ошибку измерений*)
pt:=ADR(ai);
bar:=DWORD_TO_BYTE(SHR(pt^,24));
CASE bar OF
16#F1: Cod_Err:=bar-240; Rezultat:=3.5;	(*Результаты измерения не верны*)
16#F6: Cod_Err:=bar-240; Rezultat:=3.5;	(*Результаты измерения не готовы*)
16#F7: Cod_Err:=bar-240; Rezultat:=3.5;	(*Канал отключен в конфигурации*)
16#FA: Cod_Err:=bar-240; Rezultat:=21;	(*Сигнал на входе больше возможного*)
16#FB: Cod_Err:=bar-240; Rezultat:=3.5;	(*Сигнал на входе меньше возможного*)
16#FC: Cod_Err:=bar-240; Rezultat:=21;	(*Перегрузка в канале измерения тока*)
16#FD: Cod_Err:=bar-240; Rezultat:=3.5;	(*Обрыв датчика*)
ELSE
Err:=FALSE;
Cod_Err:=0;	(*Нет ошибок измерений*)
Rezultat:=ai;
END_CASE
Минимальные и максимальные значения переменной Rezultat 3.5 и 21 потому, что в конфигурации аналоговых входов задаю MinFV=4,00 MaxFV=20.00 Т.е так, как приходит с датчика. Масштабирование диапазона измерения в программе, а не в конфигурации.
Что бы показания на панели не мельтешили, сигнал с выхода этого функц.блока пропускаю через OSCATовскую функцию ROUND, оставляю например 2 знака после запятой.
Реально проверил только коды F7, FA, FB, FC остальные отловить не удалось.
При обрыве датчика будет код FB. А код FD, похоже не для моего контроллера (ПЛК160), но этот код то же оставил.
Код ошибки у меня идет на панель для динамического текста и там дешифруется
Текст 1 - "Результаты измерения не верны"
Текст 6 - "Результаты измерения не готовы"
Текст 7 - "Канал отключен в конфигурации"
Текст 10 - "Сигнал на входе больше возможного"
Текст 11 - "Сигнал на входе меньше возможного"
Текст 12 - "Перегрузка в канале измерения тока"
Текст 13 - "Обрыв датчика"