Страница 1 из 2 12 ПоследняяПоследняя
Показано с 1 по 10 из 11

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

  1. #1

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

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

  2. #2

    По умолчанию

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

  3. #3

    По умолчанию

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

  4. #4

    По умолчанию Я уже свою функцию накатал которая успешно выдает три ошибки - обрыв, и превышение

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

  5. #5

    По умолчанию

    Цитата Сообщение от Stas Посмотреть сообщение
    Можете написать как реализовали ошибку-"Обрыв"?
    Вот экспортированный функциональный блок. На вход подаете или WORD с кодом ошибки и REAL со значением если ошибка содержится в нем. Ну и если у вас токовый вход то REAL обязательно. На выходе получаете биты ошибок.
    Функциональный блок обработки ошибок аналоговых входов

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

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

  6. #6

    По умолчанию

    DECODE_FLOAT корректно работает с ПЛК154 (токовые входы)?

  7. #7
    Пользователь Аватар для petera
    Регистрация
    06.05.2011
    Адрес
    Минск
    Сообщений
    3,825

    По умолчанию

    Цитата Сообщение от 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 - "Обрыв датчика"
    Мой канал на ютубе
    https://www.youtube.com/c/ПетрАртюков
    Библиотека ГМ для СП300
    https://disk.yandex.com/d/gHLMhLi8x1_HBg

  8. #8

    По умолчанию

    petera, спасибо за ответ

  9. #9

    По умолчанию

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

  10. #10

    По умолчанию

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

Страница 1 из 2 12 ПоследняяПоследняя

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •