Показано с 1 по 7 из 7

Тема: Коды ошибок ПЛК150 на входы AI1..AI4

  1. #1

    По умолчанию Коды ошибок ПЛК150 на входы AI1..AI4

    Исходная ситуация:
    1) К ПЛК150 на входы AI1 и AI4 подключены термопары ("хвосты" из т.п. провода)
    2) AI2 и AI3 свободны
    3) Пусть значение температуры в формате DWORD T = 16x11223344
    4) Выделяем байт 16x11 и считаем, что это ошибка err (по материалам с форума,
    предположительно, основание ниже)

    Для работающих термопар значение err=0x41, и держится устойчиво (часов 4-5 уже).
    Пустые входы сначала перебирали "по кругу" несколько значений, потом застолбили
    err=0xC1 И err=0xC0, которые также держатся устойчиво.
    (Позже пошло так : 0xC0 -> 0xbf -> 0xC0 -> 0xbf -> по кругу, и 0xbf встало).

    "Стандартная" DECODE_FLOAT определяет ситуацию с отключенными (2-м и 3-м)
    датчиками как "Некорректный калибровочный коэффициент", хотя файл калибровки
    присутствует, данные в нём похожи на правду и данные с термопар тоже правдивы.

    Темп_вх_ПЛК-ошибки.PNG Темп_вх_ПЛК-ошибки+.PNG

    ВОПРОС 1 к техническим специалистам ОВЕН и к тем кто знает
    Можно ли err <> 0x41 при подкл. т/п считать неисправностью канала?

    ВОПРОС 2 : Почему err2=0xC1, а err3=0xC0 - при одинаковых условиях?

    ВОПРОС 3: Можно ли узнать значение этого байта для всех полей таблицы,
    где три строки предположительно определены?

    0x41 Отсутствие ошибок
    ----- Нет данных
    0xC1 Датчик отключен
    ----- Велика температура холодного спая
    ----- Мала температура холодного спая
    ----- Вычисленное значение слишком велико
    ----- Вычисленное значение слишком мало
    ----- Короткое замыкание
    0xC0 Обрыв датчика
    ----- Отсутствие связи с АЦП
    ----- Некорректный калибровочный коэффициент

    Заранее спасибо. Хочется выдавать оператору подробную причину неработоспособности.

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

    По умолчанию

    Цитата Сообщение от plk Посмотреть сообщение
    Исходная ситуация:
    1) К ПЛК150 на входы AI1 и AI4 подключены термопары ("хвосты" из т.п. провода)
    2) AI2 и AI3 свободны
    3) Пусть значение температуры в формате DWORD T = 16x11223344
    4) Выделяем байт 16x11 и считаем, что это ошибка err (по материалам с форума,
    предположительно, основание ниже)

    Для работающих термопар значение err=0x41, и держится устойчиво (часов 4-5 уже).
    Пустые входы сначала перебирали "по кругу" несколько значений, потом застолбили
    err=0xC1 И err=0xC0, которые также держатся устойчиво.
    (Позже пошло так : 0xC0 -> 0xbf -> 0xC0 -> 0xbf -> по кругу, и 0xbf встало).

    "Стандартная" DECODE_FLOAT определяет ситуацию с отключенными (2-м и 3-м)
    датчиками как "Некорректный калибровочный коэффициент", хотя файл калибровки
    присутствует, данные в нём похожи на правду и данные с термопар тоже правдивы.

    Темп_вх_ПЛК-ошибки.PNG Темп_вх_ПЛК-ошибки+.PNG

    ВОПРОС 1 к техническим специалистам ОВЕН и к тем кто знает
    Можно ли err <> 0x41 при подкл. т/п считать неисправностью канала?

    ВОПРОС 2 : Почему err2=0xC1, а err3=0xC0 - при одинаковых условиях?

    ВОПРОС 3: Можно ли узнать значение этого байта для всех полей таблицы,
    где три строки предположительно определены?

    0x41 Отсутствие ошибок
    ----- Нет данных
    0xC1 Датчик отключен
    ----- Велика температура холодного спая
    ----- Мала температура холодного спая
    ----- Вычисленное значение слишком велико
    ----- Вычисленное значение слишком мало
    ----- Короткое замыкание
    0xC0 Обрыв датчика
    ----- Отсутствие связи с АЦП
    ----- Некорректный калибровочный коэффициент

    Заранее спасибо. Хочется выдавать оператору подробную причину неработоспособности.
    Какая странная метода
    3) Пусть значение температуры в формате DWORD T = 16x11223344
    4) Выделяем байт 16x11 и считаем, что это ошибка err (по материалам с форума,
    предположительно, основание ниже)
    Какой-такой DWORD? Модуль аналогового входа имеет два канала
    1.Канал Value («Значение»), формат Real – значение, получаемое на выходе ПЛК с учетом всех поправок, приведенное к значениям измеряемой физической величины.
    2.Канал Circular time («Циклическое время»), формат Word – значение циклического времени измерения в диапазоне от 0 до 65536 ед. (1 ед.=10 мс). Отсчет времени начинается от момента старта программы ПЛК и обнуляется при переходе через максимальное значение.
    Ну и где здесь DWORD
    При ошибке датчика (и выходе за диапазон) значение содержит код ошибки в специальном формате в самом значении Value т.е в REAL
    Коды ошибок передаются через канал Value.
    При возникновении ошибки, в старших четырех битах выставляются единицы, в следующих 4-х битах следует код ошибки (см. табл. В.1).
    Остальные три байта заполняются незначащей информацией.
    Таким образом коды ошибок начинаются с 0xF, и не могут быть 0xC1, 0xC0 и т.д.
    Захват-5.png
    Мой канал на ютубе
    https://www.youtube.com/c/ПетрАртюков
    Библиотека ГМ для СП300
    https://disk.yandex.com/d/gHLMhLi8x1_HBg

  3. #3

    По умолчанию Да, действительно, странная..

    Цитата Сообщение от petera Посмотреть сообщение
    Какая странная метода

    Какой-такой DWORD? Модуль аналогового входа имеет два канала
    1.Канал Value («Значение»), формат Real – значение, получаемое на выходе ПЛК с учетом всех поправок, приведенное к значениям измеряемой физической величины.
    2.Канал Circular time («Циклическое время»), формат Word – значение циклического времени измерения в диапазоне от 0 до 65536 ед. (1 ед.=10 мс). Отсчет времени начинается от момента старта программы ПЛК и обнуляется при переходе через максимальное значение.
    Ну и где здесь DWORD
    При ошибке датчика (и выходе за диапазон) значение содержит код ошибки в специальном формате в самом значении Value т.е в REAL
    Коды ошибок передаются через канал Value.
    При возникновении ошибки, в старших четырех битах выставляются единицы, в следующих 4-х битах следует код ошибки (см. табл. В.1).
    Остальные три байта заполняются незначащей информацией.
    Таким образом коды ошибок начинаются с 0xF, и не могут быть 0xC1, 0xC0 и т.д.
    Захват-5.png
    С наскоку не сразу прорубил, что код ошибки передается не всегда, а только при ошибке. Поэтому вышло странновато. Не судите строго.
    Проблема такая: нет этого кода - появляется но через несколько секунд заменяется отрицательной температурой. Контроллер новый.
    Вначале DECODE_FLOAT выдает код 15 - про плохую калибровку, но измеряет-то подключенными датчиками верно!
    От поисков по форумам без нахождения понятного ответа/решения возникает чувство тупика.
    Варианта два - или ответа нет вообще, или я не там рою. (А вроде бы умею)

    petera, спасибо Вам что откликнулись, и ласково поправляете. Если есть место, где подобное обсуждалось, может быть, напишете ссылку?
    Честно говоря, никак не ожидал, что придется вначале исследовать ПЛК, вместо подключения модулей и программирования алгоритма работы

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

    По умолчанию

    На счет ссылок не скажу, не знаю. Попробуйте расширенный поиск http://www.owen.ru/forum/search.php?searchid=13322
    Если ошибка "проскакивает" кратковременно и случайным образом, то может сделать так?
    Я вместо DECODE_FLOAT использую собственный ФБ аналогичного назначения
    Код:
    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;
        TMP:REAL;    (*Значение до ошибки*)
    END_VAR
    
    Err:=TRUE;    (*Установить ошибку измерений*)
    pt:=ADR(ai);
    bar:=DWORD_TO_BYTE(SHR(pt^,24));
    CASE bar OF
    16#F1:    Cod_Err:=bar-240;    (*1 Результаты измерения не верны*)
    16#F6:    Cod_Err:=bar-240;    (*6 Результаты измерения не готовы*)
    16#F7:    Cod_Err:=bar-240;    (*7 Канал отключен в конфигурации*)
    16#F8:    Cod_Err:=bar-240;    (*8 *)
    16#F9:    Cod_Err:=bar-240;    (*9 *)
    16#FA:    Cod_Err:=bar-240;    (*10 Сигнал на входе больше возможного*)
    16#FB:    Cod_Err:=bar-240;    (*11 Сигнал на входе меньше возможного*)
    16#FC:    Cod_Err:=bar-240;    (*12 Перегрузка в канале измерения тока*)
    16#FD:    Cod_Err:=bar-240;    (*13 Обрыв датчика*)
    16#FE:    Cod_Err:=bar-240;    (*14 *)
    16#FF:    Cod_Err:=bar-240;    (*15 *)
    ELSE
    Err:=FALSE;
    Cod_Err:=0;    (*Нет ошибок измерений*)
    END_CASE
    IF NOT Err THEN TMP:=ai;
    END_IF
    Rezultat:=TMP;
    Отличия от DECODE_FLOAT
    - работает в эмуляции;
    - в момент ошибки измерения на выходе имеет последнее правильное значение, а не фиксированное значение.
    Последнее отличие позволяет игнорировать одиночные ошибки измерения, не "мельтешить" цифрами на HMI и не бросать PID в крайние положения. Ну а факт действительного отказа можно сделать через разумную задержку сигнала "Err" на выходе данного ФБ.
    Последний раз редактировалось petera; 02.02.2015 в 16:11.
    Мой канал на ютубе
    https://www.youtube.com/c/ПетрАртюков
    Библиотека ГМ для СП300
    https://disk.yandex.com/d/gHLMhLi8x1_HBg

  5. #5

    По умолчанию

    Цитата Сообщение от petera Посмотреть сообщение
    На счет ссылок не скажу, не знаю. Попробуйте расширенный поиск http://www.owen.ru/forum/search.php?searchid=13322
    Если ошибка "проскакивает" кратковременно и случайным образом, то может сделать так?
    Я вместо DECODE_FLOAT использую собственный ФБ аналогичного назначения

    Спасибо за Ваш пример.

    Ещё одна большая благодарность за Вашу работу по СП270. Примеры ГМ для панели (и объяснения к ним) внесли внятность в проект и с'экономили время (а возможно и деньги на другую).

  6. #6

    По умолчанию

    http://www.owen.ru/forum/showthread.php?t=14336

    Видимо, подобный случай с небольшими вариациями. Очень жаль.

  7. #7

    По умолчанию

    P.S. по проблеме: Детектирования отсутствия (обрыва) термопары для AIs ПЛК1хх не получается.
    Прошивка у ПЛК 150 и 154 последняя, новые. Проверил найденные рекомендации по настройкам. Использовал DECODE_FLOAT и DECODE_AI.

    Поведение "висящих" (т.е. отсутствующих) каналов типа Termocouple Sensor на рисунке ниже. Для плат сбора данных это примерно называлось "большое межканальное прохождение". Ошибка FF начинает детектироваться после холодного старта и исчезает через несколько минут.
    Снимок-.png
    При использовании Unified signal sensor в режиме U0_10 (0..10 В) вроде бы всё в порядке ("импульсы" рукотворные).
    Снимок_0-10В.PNG

    Для понимания ситуации (может, кому пригодится) помогли читанные
    http://www.owen.ru/forum/showthread.php?t=14253
    http://www.owen.ru/forum/showthread.php?t=17433
    http://www.owen.ru/forum/showthread.php?t=11855
    http://www.owen.ru/forum/showthread.php?t=2695
    http://www.owen.ru/forum/showthread.php?t=15954
    http://www.owen.ru/forum/showthread.php?t=14612
    http://www.owen.ru/forum/showthread.php?t=2182
    http://www.owen.ru/forum/showthread.php?t=11294
    http://www.owen.ru/forum/showthread.php?t=14336
    http://www.owen.ru/forum/showthread....ight=calib.inc

Похожие темы

  1. коды ошибок мсд-100
    от eupsychian в разделе Помощь Разработчикам
    Ответов: 3
    Последнее сообщение: 28.06.2011, 08:17
  2. коды ошибок
    от gefan в разделе ПЛК1хх
    Ответов: 1
    Последнее сообщение: 11.02.2011, 11:51
  3. коды ошибок протокола Oven
    от Roman Karpuk в разделе ПЛК1хх
    Ответов: 5
    Последнее сообщение: 12.11.2010, 10:34
  4. коды ошибок в codesys
    от Антон12345 в разделе ПЛК1хх
    Ответов: 2
    Последнее сообщение: 04.12.2009, 07:15

Ваши права

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