PDA

Просмотр полной версии : Нет ошибки с аналогового входа ПЛК150 при обрыве токового датчика



RV9WFJ
12.07.2011, 14:41
Обычно использую модули ввода аналоговые и там без проблем обрабатывается обрыв датчиков.
А сейчас вот заказчику приперло именно ПЛК150, завел сигнал со входа на ФБ DECODE_FLOAT, _ERR выдает 0 при отсутствующем датчике. Аналоговый вход на ПЛК150 настроен на 4-20 мА.
Повесил резистор с БП, кручу от 1 до 20 мА, ошибок нет, в переменной входа идет значение тока.
Вопрос - это нормальное поведение входа или я что-то не так делаю. Мне в целом не сложно и самому по току выявить ошибку, но хотелось согласно мануала все сделать, тем более что уже готовая библиотечка своя для этого есть.
P.S. Что-то похожее видел на форуме пару лет назад, но сегодня сколько не искал так и не нашел. :-(

Николаев Андрей
12.07.2011, 15:50
Действительно есть такой БАГ - некорректные показания с датчиков контроллер не отслеживает... :(
И Decoad Float в этом случае просто не работает (контроллер в канале измерения формировал код ошибки).

RV9WFJ
12.07.2011, 21:45
Я уже свою функцию накатал которая успешно выдает три ошибки - обрыв, и превышение вверх, вниз. Жаль только убитое время на поиски истины :-)

Stas
25.07.2011, 12:42
Можете написать как реализовали ошибку-"Обрыв"?

RV9WFJ
25.07.2011, 13:42
Можете написать как реализовали ошибку-"Обрыв"?Вот экспортированный функциональный блок. На вход подаете или WORD с кодом ошибки и REAL со значением если ошибка содержится в нем. Ну и если у вас токовый вход то REAL обязательно. На выходе получаете биты ошибок.
Функциональный блок обработки ошибок аналоговых входов (http://www.ustavka.ru/download/sensor.zip)

Есть только маленькая проблема, у меня если на МВА8 на один вход приходит сигнал, на остальных уже почему-то тоже что-то появляется, наводки какие-то. Соответственно в этом случае толку с этого функционального блока нету. Но я все равно использую даже с МВА8.

P.S. Да забыл сказать, шкалу я всегда задаю в ПЛК, почему-то все просят универсальность. Поэтому с МВА8 я читаю только 4-20 в REAL.

volodya
26.03.2013, 23:17
DECODE_FLOAT корректно работает с ПЛК154 (токовые входы)?

petera
27.03.2013, 04:20
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 - "Обрыв датчика"

volodya
27.03.2013, 20:44
petera, спасибо за ответ

Вован84
15.08.2014, 12:16
Petera, Сможете сваять пример с вашим функциональным блоком в CFC? Например измеряя температуру от 0 до 120 градусов, уставка на сигнализацию 65 градусов. Датчик токовый 4-20 мА. И отслеживание обрыва датчика естественно

Junoka
12.08.2022, 12:19
Добрый день!
Для обновленной ПЛК160 [М02] блок DECODE_FLOAT работает так же как и для прошлой версии?

Никита Сергеев
12.08.2022, 13:42
Добрый день!
Для обновленной ПЛК160 [М02] блок DECODE_FLOAT работает так же как и для прошлой версии?

Да, работает также.