PDA

Просмотр полной версии : вопросы по событиям плк110



Leonid
20.04.2010, 00:33
В программе открывается сокет, который закрывается по некоторым событиям. Реализовано это так:
SysCallbackRegister( INDEXOF(CallbackCloseSocket), EVENT_BEFORE_RESET );
SysCallbackRegister( INDEXOF(CallbackCloseSocket), EVENT_BEFORE_DOWNLOAD );
SysCallbackRegister( INDEXOF(CallbackCloseSocket), EVENT_SHUTDOWN );
На всякий случай еще добавил:
SysCallbackRegister( INDEXOF(CallbackCloseSocket), EVENT_STOP );
Ничего, кстати, не забыл?

Теперь, собственно, основной вопрос:
Хочется сделать что-то аналогичное вот с какой целью. При инициализации программы она загружает 50 байт из файла, который тут же закрывается. При наступлении указанных выше событий надо сохранить 50 байт в тот же файл. Но ПЛК не успеет это сделать (из-за остановки файлового кэша, может быть). Файл потом будет считаться не закрыт (и его даже потом не стереть). Как тут быть?

Дополнительные вопросы:
Когда случается событие EVENT_POWERFAIL?
Когда случается событие EVENT_SHUTDOWN? Успеет ли файл записаться?
Как поведет себя переменная "Time to backup power down, s" при наличии питания и при его отключении? (это могу и сам проверить, до кучи спросил)
Как можно отследить в программе ПЛК подключение к CoDeSys и отключение от среды?

Филоненко Владислав
20.04.2010, 08:32
EVENT_POWERFAIL - Из модуля статистики - успеет.
EVENT_SHUTDOWN - уже успеет только retain.

Как можно отследить в программе ПЛК подключение к CoDeSys и отключение от среды? - такого метода не предусмотрено. Можно только косвенно.

Leonid
20.04.2010, 23:07
EVENT_POWERFAIL аналогичен анализу булевой переменной из модуля статистики, как я понимаю? Ясно, спасибо.

Владислав, а как отследить CoDeSys косвенно? Не могу сообразить...

Филоненко Владислав
21.04.2010, 11:48
по увеличению времени цикла - связь со средой разработки требует ресурсов. но это высший пилотаж, разница невелика.

Leonid
21.04.2010, 12:40
Это действительно довольно сложно, потому как само время цикла сильно меняется в зависимости от фактически исполняемого в данный момент кода и сетевой активности. Нужны какие-то исследования на полностью законченной и отлаженной программе, а в этом случае и сама задача теряет для меня смысл. А нельзя ли как-то ослеживать из программы ПЛК активность по 1200 порту? Она довольно значительна при подключении к CoDeSys.