PDA

Просмотр полной версии : ПЛК 73 перезагружается время от времени.



Lode Runner
26.11.2013, 08:51
Здравствуйте. Запускаем котельную с тремя горелками ГБЛ-1.
Каждой горелкой управляет ПЛК73, есть ещё один щит с ПЛК110, который по Modbus задаёт уставку мощности
для этих трёх ПЛК73. В основном всё работает нормально, но время от времени, по нескольку раз в сутки, сами перезагружаются ПЛК73. В сервисном меню при этом
записывается код ошибки 3 (перезагрузился по Watchdog) или 7 (информации об этом коде в РЭ нет).
Происходит это только когда горелка запущена, пламя горит и от режима работы это не зависит (есть три режима: ручное управление заслонкой газ-воздух,
автономный режим с ПИД-регулированием температуры и slave-режим, когда мощность задаёт master)
При этом иногда (не каждый раз) как-то не так сохраняется Retain и он переключается в автономный режим (переменная режима работы
была равна 2, а стала равна 1). В проекте изменение режима происходит только с клавиатуры и когда пользователь перешёл на определённый экран.
Больше ни одного присвоения значения этой переменной в проекте нет.

И ещё один момент. Отпадают датчики температуры обратной линии у всех трёх ПЛК73 также время от времени (ТСП1000). Горелка гаснет и процесс запуска начинается сначала.
DECODE_FLOAT на этих датчиках при этом выдаёт код ошибки 6, о котором в документации сказано "нет данных". При этом с датчиками температуры подачи, точно такими же
и так же обрабатываемыми, подобных проблем не возникает.

Эти два странных симптома не случались одновременно, случается либо первое, либо второе.

Будем рады любым идеям и подсказкам. Свои идеи уже исчерпаны.
Особенно интересно, что значит код 7 в сервисном меню, почему срабатывает Watchdog, если время цикла в среднем не больше 20 мс и никогда не поднимается выше 60 мс
и что значит ошибка датчика 6 "нет данных".

Ах да, замену прошивки ПЛК73 уже пробовали, сейчас версия прошивки 2.16, пересоздать проект и скопировать в него текст программы из старого тоже пробовали.
В программе только короткие циклы от 1 до 3, ветвления и присваивания.

Николаев Андрей
26.11.2013, 11:07
1. Надо внимательно смотреть программу. Переход из режима в режим с очень большой долей вероятности программная ошибка.
2. По перезагрузке. Таких жалоб на данный ПЛК не слышал. Единственный раз я слышал про перезагрузку ПЛК63 (читай ПЛК73) при работе с реле Finder.
Долго искали проблему, подключали пускатели второй величины... Ничего.
Когда привезли шкаф собранный, включили... при замыкании Finder ИСКРИЛИ... в этот момент контроллер перезагружался.
Проверьте выходные цепи контроллера. Через что управляете ИМ?
Ну и заодно просмотрите входные линии, особенно аналоговые - нет ли наводки или падения высоковольтного кабеля на измерительные провода.

Lode Runner
26.11.2013, 13:47
1. Программная ошибка - это первое, что было проверено. Единственное изменение режима в проекте - это в PRG, отвечающей за пользовательский интерфейс. Во время работы горелки интерфейс в большинстве случаев переключен на другой экран. Уточню: если контроллер включился в автономном, во время работы переключить "от сети", и произошла перезагрузка, то он перейдет снова в автономный, т.е. он не сохранит это в ретейн (т. е., когда плк73 сохраняет в ретейн?)
2. Тоже были мысли о пускателях, но на момент перезагрузки всё уже запущено, ничего не включается и не выключается. Пускателей - по два на каждый плк73, довольно сомнительно, что это они виноваты, на всех трёх контроллерах симптомы одинаковые. Ещё уточнение: когда контроллеры работали в автономном режиме, а мастер был выключен из сети - перезагрузок не наблюдалось. RS-485 протянут витой парой.
А могут ли наводки по питанию или сигнальным линиям вызывать перезагрузку контроллера?

petera
26.11.2013, 16:28
Скорей всего это проявление коммутационных помех. В момент размыкания контактов выходных реле ПЛК, например управляющих заслонкой газ-воздух, из-за ЭДС самоиндукции между контактами реле возникает дуговой разряд. Реле находятся внутри ПЛК непосредственно возле электронных компонентов, что вызывает сбои в работе процессора или периферийных модулей.
В поддержку этого говорит то, что эти сбои возникают на всех ПЛК и тогда, когда горелки находятся в рабочем состоянии. При работе ПИД регулятора будут присутствовать импульсы управления заслонкой.
Нужно шунтировать индуктивную нагрузку(привод заслонки) RC цепочкой (конденсатор 0,1 мкф 600В + резстор 100-120 Ом). И шунтировать именно нагрузку реле, а не их контакты.
Похожие симптомы имели место в моей практике.

ЗЫ. У ПЛК 73 нельзя использовать ретайн переменные, т.к. у них отсутствует флеш память.

kgsh82
26.11.2013, 17:20
Уважаемый petera, Вы не правы, retain у ПЛК73 очень даже замечательно записывается

Николаев Андрей
26.11.2013, 23:53
Retain по определению есть в ПЛК.
В какую физическую память он записывается - вопрос второй.

Lode Runner
27.11.2013, 06:45
В общем, провели эксперимент.
Здесь F1 и F2 меняют значение x, которая прописана в GLOBAL RETAIN PERSISTENT, зажатая F3 вызывает перезагрузку по watchdog.
Загрузили этот код в контроллер и попробовали менять значение x, а потом зацикливать до перезагрузки.
Значения переменных RETAIN не сохраняются при перезагрузке по watchdog. Это объясняет, почему контроллер переключается в предыдущий режим.
Может быть, кому-то пригодится.
Зацикливаний в проекте управления горелкой нет, так что будем проверять версию petera (есть вероятность, что это наводки вызывают зависание контроллера).



ShowDint (0, 0, 0, 'x = %2u', x);

IF kbrd.0 THEN
x := x - 1;
END_IF;
IF kbrd.1 THEN
x := x + 1;
END_IF;
IF kbrd.8 THEN
FOR i := 0 TO 100 DO
i := i - 1;
END_FOR;
END_IF;

Vovaer
27.11.2013, 08:12
А что за "зверь" код ошибки контроллера №7 (в режиме отладки)
10874
Также в РЭ отмечено "Ошибки с кодом 0…6 являются не критичными, индицируются на ЖКИ в отладочном режиме только по запросу пользователя и не сопровождаются звуковой сиг-нализацией.
Ошибки с кодами большими400 являются критичными. Работа программы кон-троллера останавливается, контроллер переходит в режим индикации кода ошибок
на экране, сопровождающийся звуковой сигнализацией


7-ая ошибка, как-то не попала в промежутки.

Lode Runner
27.11.2013, 15:00
Поставили на выходы, управляющие заслонкой, RC-фильтры - не помогло...
Выкладываю проект, потому что не исключено, что я что-то упустил: код унаследован от предшественника и довольно запутан.

kgsh82
28.11.2013, 06:31
От вашей программы мозг перезагружается время от времени. Шутка)))
По датчикам температуры: Сделайте задержку срабатывания аварии 2-3 секунды - должно помочь.
По перезагрузки: Попробуйте разбить программу на куски с помощью оператора CASE.

ЗЫ: У меня как-то ПЛК73 не записывал выхода. Причем в режиме отладки в программе значения записывал, а физически выход значения не менял. Разбил на куски - проблема решилась

Lode Runner
28.11.2013, 07:08
Спасибо, что откликнулись.


От вашей программы мозг перезагружается время от времени. Шутка)))
Да, у меня тоже :) Были мысли взять и переписать всё с нуля, но пока нет на это времени.


По датчикам температуры: Сделайте задержку срабатывания аварии 2-3 секунды - должно помочь.
Авария возникает только на датчике температуры обратки, а он используется только для того, чтобы прижать клапан регулировки отопления когда обратка приходит слишком холодная, чтоб успевала прогреваться.
Да и нет в проекте обработки аварии этого датчика, продувку и закрытие заслонки туда добавить не было бы проблемой.
Пробовал на стенде отключать этот датчик: аварии не возникает, горелка не отключается, температура обратки просто игнорируется.
На объекте же горелка просто встаёт и начинает снова процесс запуска: старт дутьевого насоса, продувка и т. д.
Хотя на любую аварию, судя по тому, что я вижу в программе, должна реагировать закрытием газа,
продувкой камеры сгорания и ожиданием сброса ошибки с клавиатуры.


По перезагрузки: Попробуйте разбить программу на куски с помощью оператора CASE.
ЗЫ: У меня как-то ПЛК73 не записывал выхода. Причем в режиме отладки в программе значения записывал, а физически выход значения не менял. Разбил на куски - проблема решилась
Пробовали: вы же видите в PLC_PRG закомментированы CASE/END_CASE?
Не помогло, да и не удивительно: счётчик максимального времени цикла, расположенный в начале PLC_PRG, не поднимается выше 70 мс.
И поднимается он до таких значений только в момент подключения к контроллеру из CoDeSys, в штатном режиме время цикла держится около 2 - 25 мс.

Lode Runner
28.11.2013, 07:24
Поставили на выходы, управляющие заслонкой, RC-фильтры - не помогло...
И пускатели, простите.
RC - ближе к контроллеру.

Allod
15.08.2014, 07:37
А что за "зверь" код ошибки контроллера №7
Ошибка с кодом 7 – это ошибка чтения EEPROM, может быть вызвана из-за некорректной обработки ретайн-переменных (как программных, так и конфигурационных), либо из-за некорректно выполняемого алгоритма на каком-либо этапе работы программы. При возникновении данной ошибки необходимо произвести сброс EEPROM.

Ryzhij
15.08.2014, 08:07
Проходя, лениво пнул ;)

И пускатели, простите.
RC - ближе к контроллеру.Демпфирующие цепочки надо ставить как можно ближе к источнику помех, чтобы контуры проводов с помехами были минимального газмера.
Таким образом не случайно диодные, варисторные и RC-демпферы монтируют непосредственно на катушки реле, пускателей и контакторов.

Vovaer
15.08.2014, 12:59
Ошибка с кодом 7 – это ошибка чтения EEPROM
Простите, откуда данные?