PDA

Просмотр полной версии : Контроль за работой ПЛК



quark76
08.11.2012, 17:18
Здравствуйте. Вопрос - как возможно контролировать работу ПЛК, к примеру отследить что программа ПЛК "зависла". ПЛК любой. Есть идея формировать с какого-либо выхода импульсы с частотой 1 Гц, а наличие импульсов отслеживает СИ8, ну и при их отсутствии срабатывает выходное реле, а его уж использовать в схеме защиты.
Может у кого есть другое решение?

JIexa21
09.11.2012, 10:31
Предыдущее сообщение потерли - правда то она часто не нравится... :)

Тогда напишу более толерантно: используйте контроллер, который не зависнет.
Ну или использовать два одинаковых контроллера с одинаковой программой и чтобы друг друга контролировали - сдох один, перехватил управление другой, с выдачей аварийного сообщения...

quark76
09.11.2012, 15:04
Ну, в принципе все верно, но я и на более серьезных контроллерах видел подобную защиту, но она специфическая и работает только с ними. А вот к Овенам что можно применить?

quark76
09.11.2012, 15:16
А два контроллера ставить параллельно, вроде бы и выход...но по уму их надо тогда в разных местах ставить что бы по питанию развязать, в основном из-за сбоя питания и зависают, это дополнительная обвязка, затраты. Бесперебойники тоже дорого, если контролеров много, обслуживание в копеечку обойдется.
Так думаю. Что-нибудь простое и оригинальное бы

JIexa21
09.11.2012, 15:18
Ну можно соединить парой проводов через RS-485 и проверять данные в регистрах: если ведомый не отдал новое значение - висит слейв, если ведущий не поменял ведомому регистр - висит мастер.
Вообще придумать можно что угодно. Все зависит от конкретного применения и бюджета.

quark76
09.11.2012, 15:59
Да в принципе так и делаем, но кривое решение какое-то, к началу первого ответа твоего отправляет ))))

JIexa21
09.11.2012, 16:11
Проблема в том, что на зависшем плк выходы могут быть в любом состоянии, поэтому контролировать можно только программным способом...
Ну а как бороться со сбоями по питанию, то тут тоже большое поле для деятельности. :)
Все заземлить, силовые и контроллерные цепи по разным лоткам и по разным фазам и т.д. Обычно соблюдение этих простых правил при разработке практически сводит к нулю сбои по питанию.

quark76
09.11.2012, 16:42
У нас сибирь! )) Весной, осенью грозы ветра, часто просадки напряжения, обычные реле, контакторы выдерживают, не отпадают, а контроллера подвешиваются в непредсказуемом состоянии, если бы тупо отключались куда нишло, а то двигатель от АПВ или АВР продолжает работать, а устройство его контролирующее с ума сходит

Nik
10.11.2012, 08:08
Прочитайте в инструкции про watch-dog. В некоторых случаях помогает. Есть устройства бесперебойного питания.....

quark76
10.11.2012, 11:09
А будет ли сторожевой тайме работать при зависании контроллера? Как проверить? Так понимаю он все события отрабатывает когда "живой".
Была ведь проблема, сами разработчики писали, ПЛК уходил в стоповый режим, решением предлагали переназначить старт-стоповую кнопку

Atman
10.11.2012, 11:49
Самое простое решение , это сделать устройство на 1 микросхеме логики, и с контроллера подавать меандр 1гц, на выходе логики реле , при отсутствии меандра перезбросит крнтроллер, и если надо включит сигнализацию

quark76
10.11.2012, 12:17
Самое простое решение , это сделать устройство на 1 микросхеме логики, и с контроллера подавать меандр 1гц, на выходе логики реле , при отсутствии меандра перезбросит крнтроллер, и если надо включит сигнализацию

Да, такой путь и кажется приемлемым, только один момент смущает, если есть только релейные выходы, то по заявленному ресурсу производителей 500000 циклов включений, реле "умрет" через 2 месяца. Интересно кто-нибудь делает защиту от "зависаний" контроллера и каким образом?
У нас есть два контроллера разных производителей, у одних "сторожевой таймер" как отдельное устройство, у других нет ничего, типа никогда не "зависал"

capzap
10.11.2012, 12:23
мне бы программу найти с которой плк зависнет, тогда бы возможно и появился опыт как бороться с зависанием

Yegor
10.11.2012, 12:30
Следующие темы:
Как контролировать работу устройства, которое контролирует работу ПЛК? Как контролировать работу устройства, которое контролирует работу устройства, которое контролирует работу ПЛК? Как контролировать работу устройства, которое контролирует работу устройства, которое контролирует работу устройства, которое контролирует работу ПЛК? Почему ничего не работает?

Дисциплина называется «резервирование». По ней целые книги пишут.
мне бы программу найти с которой плк зависнет, тогда бы возможно и появился опыт как бороться с зависаниемУ меня есть код, в котором если заменить SysMemCpy на доступ по указателю (число байт и адреса одинаковые), то контроллер перезагружается.

Atman
10.11.2012, 12:39
Да, такой путь и кажется приемлемым, только один момент смущает, если есть только релейные выходы, то по заявленному ресурсу производителей 500000 циклов включений, реле "умрет" через 2 месяца. Интересно кто-нибудь делает защиту от "зависаний" контроллера и каким образом?
У нас есть два контроллера разных производителей, у одних "сторожевой таймер" как отдельное устройство, у других нет ничего, типа никогда не "зависал"

Если нету в контролере транзисторного выхода, можно сделать меандр 1 раз в минуту, но схему устройства придется изменить, с такой частотой устройство можно сделать на интегральном таймере.

эту защиту рекомендую делать на любом контроллере, не зависимо от производителя, на кону стоит: безопасность,надежность проэкта, и что не мало важно, репутация конторы, которая делает проэкт.

capzap
10.11.2012, 13:11
Следующие темы:
Как контролировать работу устройства, которое контролирует работу ПЛК? Как контролировать работу устройства, которое контролирует работу устройства, которое контролирует работу ПЛК? Как контролировать работу устройства, которое контролирует работу устройства, которое контролирует работу устройства, которое контролирует работу ПЛК? Почему ничего не работает?

Дисциплина называется «резервирование». По ней целые книги пишут.У меня есть код, в котором если заменить SysMemCpy на доступ по указателю (число байт и адреса одинаковые), то контроллер перезагружается.

Ну так ведь перегружается, а как выглядит зависание

quark76
10.11.2012, 13:37
Мы сейчас делаем только визуальный контроль, на панель оператора выводим квадратик, который закрашивается раз в секунду, если перестал то что то не так. Но этот контроль, только на совести обслуживающего персонала

Atman
10.11.2012, 13:53
Следующие темы:
Как контролировать работу устройства, которое контролирует работу ПЛК? Как контролировать работу устройства, которое контролирует работу устройства, которое контролирует работу ПЛК? Как контролировать работу устройства, которое контролирует работу устройства, которое контролирует работу устройства, которое контролирует работу ПЛК? Почему ничего не работает?

Дисциплина называется «резервирование». По ней целые книги пишут.У меня есть код, в котором если заменить SysMemCpy на доступ по указателю (число байт и адреса одинаковые), то контроллер перезагружается.

Устройство защиты, должно бить выполнено не на контроллере, тоесть должно быть не цыфровое, а аналоговое, при использовании качественных комплектующих, будем иметь 100 процентную гарантию защиты.

quark76
10.11.2012, 13:57
Если нету в контролере транзисторного выхода, можно сделать меандр 1 раз в минуту, но схему устройства придется изменить, с такой частотой устройство можно сделать на интегральном таймере.

эту защиту рекомендую делать на любом контроллере, не зависимо от производителя, на кону стоит: безопасность,надежность проэкта, и что не мало важно, репутация конторы, которая делает проэкт.

Пожалуй самое приемлемое решение, только хотим не сами ваять, а взять готовое, того же Овена. Счетчик импульсов у них есть СИ8

Atman
10.11.2012, 14:14
Пожалуй самое приемлемое решение, только хотим не сами ваять, а взять готовое, того же Овена. Счетчик импульсов у них есть СИ8

опять, же си8 устройство на контроллере, где гарантия. что от помехи по питанию, си8 не зависнет в месте с плк.
ТОЛЬКО АНАЛОГОВАЯ схема, сможет выполнить поставленую задачу.
ДА И ЦЕНА СИ8 ПОЧТИ 100 ДОЛ.

Думаю разработать даный девайс на продажу.

Интересно, на сколько актуальное на даный момент это устройство,
интересно мнение коллег-форумчан, и какой функционал вы бы хотели иметь на борту в даном девайсе.

quark76
10.11.2012, 14:19
опять, же си8 устройство на контроллере, где гарантия. что от помехи по питанию, си8 не зависнет в месте с плк.
ТОЛЬКО АНАЛОГОВАЯ схема, сможет выполнить поставленую задачу.
ДА И ЦЕНА СИ8 ПОЧТИ 100 ДОЛ.

Думаю разработать даный девайс на продажу.

Интересно, на сколько актуальное на даный момент это устройство,
интересно мнение коллег-форумчан, и какой функционал вы бы хотели иметь на борту в даном девайсе.

Честно говоря по цене не смотрел, 100 сопоставимо с ценой контроллера, а желательно на порядок дешевле. А АНАЛОГОВАЯ схема что из себя представляет, какой принцип действия?

Atman
10.11.2012, 16:58
Честно говоря по цене не смотрел, 100 сопоставимо с ценой контроллера, а желательно на порядок дешевле. А АНАЛОГОВАЯ схема что из себя представляет, какой принцип действия?

Аналоговая схема- это схема выполненая на аналоговых микросхемах
(без применения микроконтролеров), тоесть апаратный принцип действия,
на микроконтроллере -(аппаратно-програмный).

Валенок
10.11.2012, 17:12
.У меня есть код, в котором если заменить SysMemCpy на доступ по указателю (число байт и адреса одинаковые), то контроллер перезагружается.
pointer to word/dword ? (не рулит выравнивание)

Я, как и capzap, не видел зависших ПЛК. Вачдог же вроде как аппаратно реализован.

И кто контролирует проверятеля ?

quark76
10.11.2012, 18:53
выявляется ошибка с самопроизвольным запуском\остановкой программы в плк.
проблема до конца не ясна, так как повторить на контроллере без добавочной внешней переферии и использования специальных библиотек не удалось. о чем есть отчет отдела тестирования.
при нахождении ошибки будет обязательное уведомление в данной теме форума.
На данный момент обойти вопрос можно переназначением кнопки Start\stop (добавления Button) контроллера в PLC Configuration.

Валенок
10.11.2012, 19:26
Проблема с этой кнопой обсосана до нельзя. Вставили button - и забыли. Зависание-то где нашли ?

quark76
10.11.2012, 21:18
Так это только один из примеров что может случиться. Если что-то возможно, так обязательно происходит

Валенок
11.11.2012, 11:30
Если что-то возможно ? ))) Обязательно делайте защиту от зависания.
А что в итоге обнаружения ? Действия ?

Atman
11.11.2012, 13:31
Если что-то возможно ? ))) Обязательно делайте защиту от зависания.
А что в итоге обнаружения ? Действия ?

здесь уже все зависит от обстоятельств, можно остановить линию конвеера ,включить сигнализацию, пересбросить питание плк, и так далее...

capzap
11.11.2012, 14:07
здесь уже все зависит от обстоятельств, можно остановить линию конвеера ,включить сигнализацию, пересбросить питание плк, и так далее...

И всё это должен сделать зависший плк или компьютер или оператор?

lara197a
11.11.2012, 15:07
По моему это тема для выноса мозга.
Пусть идет к Семен Семенычу. У них есть спаренные контроллеры для систем с резервированием, для ответственных применений. Что-то от 4т евро. И ни каких проблем.
Даже могу ссылку дать.

Atman
11.11.2012, 15:42
И всё это должен сделать зависший плк или компьютер или оператор?

И все это должен сделать девайс о котором здесь идет речь.

Atman
11.11.2012, 15:44
По моему это тема для выноса мозга.
Пусть идет к Семен Семенычу. У них есть спаренные контроллеры для систем с резервированием, для ответственных применений. Что-то от 4т евро. И ни каких проблем.
Даже могу ссылку дать.

В том то и вопрос :Что-то от 4т евро.

capzap
11.11.2012, 16:19
И все это должен сделать девайс о котором здесь идет речь.

Вы это серьезно, так сразу бы шли с таким предложением в сименс, они там годами бились как создать систему резервирования, а тут на тебе маленькая доработка в виде платы по копеечной цене. Они сразу могут процентов 30 скинуть за свои системы, а Вам премию в виде мерседеса :)
Могу дать контакты ихних инженеров

lara197a
11.11.2012, 18:12
Могу дать контакты ихних инженеров
И я то же. Отличные парни. Лучшей службы техподдержки я не встречал.
Такое впечатление, что с родными людьми общаешься.
:p

Terrano1992
12.11.2012, 13:04
Думаю разработать даный девайс на продажу.
Интересно, на сколько актуальное на даный момент это устройство
Урвать кусочек рынка у множества производителей стандартного изделия по имени "Off-delay timer" (всех, начиная от Омрона, Сименса, Шнайдера, кончая миллиардом китайцев) вы с помощью этой разработки явно не сможете. Составить конкуренцию производителям сертифицированных "реле безопасности" (Pilz PNOZ, Schneider Preventa и т.п.) - тем более не удастся. В чем тогда ее смысл?

Yegor
12.11.2012, 14:22
pointer to word/dword ? (не рулит выравнивание)Нет. В любом случае DWORD. То есть я SysMemCpy(X, X, 4) заменяю на доступ через POINTER TO DWORD и контроллер перезагружается. Причём как-то не целиком: до нажатия кнопки RESET или отключения питания невозможно подключиться кодесисом. Забавно то, что число под указателем в панели с текущими значениями переменных при этом правильное, но скопировать его в DWORD невозможно.

Валенок
12.11.2012, 18:40
Нет. В любом случае DWORD. .
Право же Yegor ))) Именно выравнивание.
SysMemCpy(X, X, 4);
X mod 4 = 0 ? (не X^) Если нет, то ни о какой замене на pointer to dword и речи быть не может.
X откуда взят ?


число под указателем в панели с текущими значениями переменных при этом правильное, но скопировать его в DWORD невозможно.
Не совсем понял, но заранее не верю в "невозможно" :)

Yegor
13.11.2012, 13:34
Право же Yegor ))) Именно выравнивание.
SysMemCpy(X, X, 4);
X mod 4 = 0 ? (не X^) Если нет, то ни о какой замене на pointer to dword и речи быть не может.
X откуда взят ?X из массива байтов. Версия с выравниванием противоречит тому, что в онлайне под указателем отладчик кодесиса показывает правильное значение. Я пока дома сижу и реальный код показать не могу; ситуация на поверхности примерно такая:

PROGRAM PLC_PRG
VAR
buf: ARRAY [0..31] OF BYTE;
ptr: POINTER TO DWORD;
val: DWORD;
crash: BOOL;
END_VAR

ptr := ADR(buf);
IF NOT crash THEN
SysMemCpy(ADR(val), ADR(buf), 4); (* Способ 1, всё ок — в val попадает нужное значение *)
ELSE
val := ptr^; (* Способ 2, облом — контроллер перезагружается *)
END_IFТо есть я буквально заменяю строку с SysMemCpy строкой с разыменованием указателя, и контроллер говорит «пиии», и всё. Как окажусь на работе, постараюсь сделать проект, где баг проявляет себя.

Валенок
13.11.2012, 13:49
buf: ARRAY [0..31] OF BYTE;
ptr: POINTER TO DWORD;
val: DWORD;
ok,crash: BOOL;

ptr := ADR(buf);
ok := (ptr mod 4) = 0; (*?*)

Случайно не буффер ли от RTU ?

capzap
13.11.2012, 13:49
buf: ARRAY [0..31] OF BYTE; это видимо у Вас количество бит :) поставте например такую строчку: ptr := ADR(buf[0]) , что будет?

Валенок
13.11.2012, 14:10
Нюанс тут простой - основа этого массива - байты. Байт может быть расположен по любому адресу > начатся этот массив байт (как и string) может с любого адреса > buf[0] ничего не изменит.

Перед массивом нужно разместить dword/real/struct/fb/pointer. Это выровняет массив под кварту.Например :

ptr: POINTER TO DWORD;
buf: ARRAY [0..31] OF BYTE;
val: DWORD;
crash: BOOL;

capzap
13.11.2012, 14:18
вообще я обычно пользуюсь указателем на байт, это снимает всякие разногласия, правда приходится цикл добавлять чтоб заполнить, другой размерности, типы.
А по поводу [0] у меня прокатывало, когда не шло с просто командой ADR

Yegor
13.11.2012, 18:58
поставте например такую строчку: ptr := ADR(buf[0])ADR(buf) равно ADR(buf[0]).
ok := (ptr mod 4) = 0; (*?*)Да как бы пофигу, из какого места массива брать. Одинаковое поведение в любом случае.
Случайно не буффер ли от RTU ?Для RTU. Плиз континью.

Валенок
13.11.2012, 20:32
Для RTU. Плиз континью.
И берем buf[3] ?


Одинаковое поведение в любом случае.
Не в любом :) если из случайных мест - в 25% случаях нормально )))