PDA

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



plk
02.02.2015, 13:06
Исходная ситуация:
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-м)
датчиками как "Некорректный калибровочный коэффициент", хотя файл калибровки
присутствует, данные в нём похожи на правду и данные с термопар тоже правдивы.

16521 16522

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

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

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

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

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

petera
02.02.2015, 14:24
Исходная ситуация:
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-м)
датчиками как "Некорректный калибровочный коэффициент", хотя файл калибровки
присутствует, данные в нём похожи на правду и данные с термопар тоже правдивы.

16521 16522

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

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

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

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

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

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

plk
02.02.2015, 15:41
Какая странная метода:rolleyes:

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

С наскоку не сразу прорубил, что код ошибки передается не всегда, а только при ошибке. Поэтому вышло странновато. Не судите строго.
Проблема такая: нет этого кода - появляется но через несколько секунд заменяется отрицательной температурой. Контроллер новый.
Вначале DECODE_FLOAT выдает код 15 - про плохую калибровку, но измеряет-то подключенными датчиками верно!
От поисков по форумам без нахождения понятного ответа/решения возникает чувство тупика.
Варианта два - или ответа нет вообще, или я не там рою. (А вроде бы умею)

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

petera
02.02.2015, 16:09
На счет ссылок не скажу, не знаю. Попробуйте расширенный поиск 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" на выходе данного ФБ.

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



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

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

plk
03.02.2015, 06:52
http://www.owen.ru/forum/showthread.php?t=14336

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

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

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

Для понимания ситуации (может, кому пригодится) помогли читанные
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.php?t=12840&highlight=calib.inc