PDA

Просмотр полной версии : Перезагрузка 304 ПЛК средствами CoDeSys v3.4



GeLeX
20.01.2012, 21:37
Возникла необходимость время от времени перезагружать ПЛК, во избежании багов которые вылезали во время разработки ПО (отваливается 485 или 232 интерфейс, и пока не выполняется перезагрузка обратно связь не поднимается). Каким ФБ можно выполнять плановую перезагрузку и в какой библиотеке можно его найти?

GeLeX
21.01.2012, 03:04
Так же встал вопрос по поводу установки времени напрямую из CoDeSys, т.к. при отключении питания на пару дней время сбрасывается, а доступ к оборудованию толко через удаленку(RS232). С помощью стандартных библиотек реализовать это не получилось

GeLeX
21.01.2012, 07:02
Т.е. к ныне существующим багам, Вы хотите добавить еще код, который потенциально принесет Вам еще дополнительные баги. Раз будете править программу, может лучше занятся устранением старых ошибок

Возможно оно и лучше, но никак не в режиме сильно ограниченного времени, когда исходный код весит более полумегабайта. В данном случае гораздо надежней при невозможности считать или записать регистр выполнить перезагрузку, а в случае когда это не помогает, сигнализировать о критической ошибке. Повторюсь, оборудование находится в очень труднодоступном месте и связь будет только через RS-232.

GeLeX
21.01.2012, 08:33
Тогда может быть библиотека SysPlcCtrl23 и в ней функция SysResetPlcProgram. RESET_MODE должет быть расписан в библиотеках для КДС23

Как вариант можно записывать файл, а в линуксе через крон, проверять скриптом наличие файла, если есть то перегружать ПЛК

К сожалению не смог найти хоть какую то документацию по этой библиотеке, попробовал сделать интуитивно, не получилось. С большой вероятностью эта функция есть в библиотеках 3 кодесиса, не портированная с 2.3. Но вот где она и документация к ней, это вопрос.

Малышев Олег
24.01.2012, 15:29
Подключить библиотеку sysexec.library
SysExecute('/sbin/reboot');

Малышев Олег
25.01.2012, 13:34
Библиотека будет работать только на 304-М01 (нет в продаже).
На модусе и 207 работает

rs485
12.04.2014, 18:06
Подключить библиотеку sysexec.library
SysExecute('/sbin/reboot');

Покажите пожалуйста пример на FBD блоке.

Заранее спасибо.

rs485
14.04.2014, 06:51
В библиотеке Sysexec есть модуль (FBD) SysExecute. Я не могу понять как им воспользоваться в моей программе, для перезагрузки ПЛК (программа составлена из FBD блоков).

если можно покажите пример с этим модулем.

rs485
14.04.2014, 11:26
В том то и дело я вижу как эта функция будет выглядеть в фбд и могу её вставить в программу, я не могу разобраться как правильно подать команду на этот блок , и что должно быть на выходе этого блока?

capzap
14.04.2014, 14:00
В том то и дело я вижу как эта функция будет выглядеть в фбд и могу её вставить в программу, я не могу разобраться как правильно подать команду на этот блок , и что должно быть на выходе этого блока?

не пойму, что у Вас вызывает опасение. Это же не команда саоуничтожения, запустите в разных вариациях и разберетесь, какой вариант правильный. Если беспокоитесь за выход, то обычно это результат выполнения, как мне кажется если ноль то все нормально, если что то пошло не так то будет значение отличное от нуля. Единственно, надо понимать что операционная система после получения этой команды начнет перегрузку контроллера и поэтому после выполнения этой функции не стоит исполнять еще какой либо код, так что надеяться на анализ полученного результата не стоит

rs485
15.04.2014, 06:27
Большое спасибо разобрался!

Подскажите какие ещё есть команды для СПК207 (или где прочитать) ?
кроме:
('/sbin/ifconfig eth0 down');
('/sbin/ifconfig eth0 up');
('/sbin/reboot');