PDA

Просмотр полной версии : подскажите по плк 150



evgen86
26.11.2012, 15:03
Заранее извеняюсь может и есть в топике ответы но 150 страниц просматривать((вобщем потихоньку просматриваю))но может ответ придет быстрей) Вообщем проблема такая; релейный выход сработал и если выключить питание на контролер и потом включить обратно то релейный выход опять замыкается не зависимо от сигнала на включения он остается замкнутым.даже когда нажимаеш кнопку старт стоп на конт.не реагирует.вопрос как сделать сброс или регулировать запуск системы или остановку с помощью кнопки старт/стоп или както обнулять значения реле?

Flint
26.11.2012, 15:48
Не совсем понятны условия, чем выход управлялся, если стоял Blink, то это реальный баг Codesys, если пропадает разрешение на входе в блинк, а блинк взведен, то он так и останется взведенным сколь угодно долго, пока in снова не придет. Я, когда ставлю блинк, всегда прописываю доп. условия.
А при нормальной работе программа, залитая как загрузочная, должна стартовать автозапуском, и выполняться в соответствии с логикой, а добавленный Button в конфигурацию ПЛК вобще исключает кнопку старт/стоп с лица.

lpv22
13.12.2012, 11:39
Добрый день всем!!
Подскажите, пожалуйста, как на ПЛК150 вывести информацию об ошибках аналоговых входов, например на обрыв датчика?

IF TE1=16#FD THEN
alarm_TE1:=TRUE;
END_IF

На объекте попробовал, но alarm_TE1 не перешел в состояние TRUE...
Может я неправильно код ошибки написал, поправьте пожалуйста

kgsh82
13.12.2012, 13:30
Что есть TE1?
Вот так у меня работало (ПЛК160):

ptr_t1:=ADR(t1);
ptr_t1:=ptr_t1+3;
IF ptr_t1^ = 241 OR ptr_t1^ = 246 OR ptr_t1^ = 250 OR ptr_t1^ = 251OR ptr_t1^ = 252 OR ptr_t1^ = 253 THEN
fault11_1:=TRUE;
END_IF

ЗЫ: А может всё таки переходит, а потом назад? Поставьте тригер.

lpv22
13.12.2012, 14:27
ТЕ1 - это имя аналогового входа на ПЛК150 с датчика термосопротивления.
Спасибо, буду пробовать на объекте.

ЗЫ: нет, не переходит, т.к. переменная alarm_TE1 далее пойдет на вход тригера

lpv22
15.12.2012, 02:06
странно... не реагирует никак ПЛК150 на обрыв датчика...
Вопрос актуален, подскажите, пожалуйста, как в программе правильно прописать код ошибки аналогового датчика (ПЛК150)?

capzap
15.12.2012, 08:56
в документации же все написано, надо только учитывать что рассматривать необходимо четыре байта, а в 16ричном формате это восемь символов

kgsh82
15.12.2012, 19:01
странно... не реагирует никак ПЛК150 на обрыв датчика...
Вопрос актуален, подскажите, пожалуйста, как в программе правильно прописать код ошибки аналогового датчика (ПЛК150)?

Код в студию!

ЗЫ: ptr_t1 - указатель на байт, t1 - данные типа real

capzap
15.12.2012, 19:15
странно... не реагирует никак ПЛК150 на обрыв датчика...
Вопрос актуален, подскажите, пожалуйста, как в программе правильно прописать код ошибки аналогового датчика (ПЛК150)?

попробуйте взглянуть, правда не помню дописалли я и попрвил ли как надо, сейчас нет под рукой ни проекта ни пк с КДС
http://www.owen.ru/forum/showpost.php?p=90395&postcount=4

petera
16.12.2012, 23:43
странно... не реагирует никак ПЛК150 на обрыв датчика...
Вопрос актуален, подскажите, пожалуйста, как в программе правильно прописать код ошибки аналогового датчика (ПЛК150)?
Для датчика 4-20 мА, обрыв не покажет, а покажет "Сигнал на входе меньше возможного"
Я делаю так

FUNCTION_BLOCK DECODE_AI
VAR_INPUT
ai: REAL; (*Датчик*)
END_VAR
VAR_OUTPUT
Rezultat: REAL; (*Результат*)
Cod_Err: BYTE; (*Код ошибки измерения*)
END_VAR
VAR
pt:POINTER TO DWORD;
bar:BYTE;
END_VAR

pt:=ADR(ai);
bar:=DWORD_TO_BYTE(SHR(pt^,24));
CASE bar OF
16#F1: Cod_Err:=bar-240; Rezultat:=0; (*Результаты измерения не верны*)
16#F6: Cod_Err:=bar-240; Rezultat:=0; (*Результаты измерения не готовы*)
16#FA: Cod_Err:=bar-240; Rezultat:=20; (*Сигнал на входе больше возможного*)
16#FB: Cod_Err:=bar-240; Rezultat:=0; (*Сигнал на входе меньше возможного*)
16#FC: Cod_Err:=bar-240; Rezultat:=20; (*Перегрузка в канале измерения тока*)
16#FD: Cod_Err:=bar-240; Rezultat:=0; (*Обрыв датчика*)
ELSE
Cod_Err:=0; (*Нет ошибок измерений*)
Rezultat:=ai;
END_CASE

У меня в конфигурации аналоговых входах MinFV=4,00 MaxFV=20.00 Т.е так, как приходит с датчика. Масштабирование диапазона измерения в программе, а не в конфигурации.
Что бы показания на панели не мельтешили, сигнал с выхода этого функц.блока пропускаю через OSCATовскую функцию ROUND, оставляю например 2 знака после запятой.

Реально проверил только коды FA, FB, FC остальные отловить не удалось.
При обрыве датчика будет код FB. А код FD, похоже не для моего контроллера (ПЛК160)
Код ошибки у меня идет на панель для динамического текста и там дешифруется
Текст 1 - "Результаты измерения не верны"
Текст 6 - "Результаты измерения не готовы"
Текст 10 - "Сигнал на входе больше возможного"
Текст 11 - "Сигнал на входе меньше возможного"
Текст 12 - "Перегрузка в канале измерения тока"
Текст 13 - "Обрыв датчика"

lpv22
17.12.2012, 22:54
Ребята, спасибо всем Вам громаднейшее за консультативную помощь!!! Все получилось!