да, но в архиве огромное количество записей. энергонезависимой памяти может не хватить...
да, но в архиве огромное количество записей. энергонезависимой памяти может не хватить...
Причем, не понимаю, почему после отключения питания программа в ПЛК не работает хотя бы N-й промежуток времени. Читаю про ПЛК-100 на сайте www.owen.ru:
Конкурентные преимущества ПЛК 100 встроенный аккумулятор, позволяющий «пережидать» пропадание питания – выполнять программу при пропадании питания, и переводить выходные элементы в «безопасное состояние».
В руководстве к ПЛК-100 заявлено: при случайном отключении основного питания контроллер переходит на аварийное питание и сохраняет промежуточные результаты вычислений и работоспособность интерфейсов Ethernet и Debug RS&232 в течение 10 минут.
Светодиодная индикация и выходные элементы контроллера при этом не запитываются и не функционируют. При включении основного питания во время работы на аварийном питании контроллер сразу приступает к выполнению пользовательской программы, не тратя времени на загрузку ядра CoDeSys и сохраняя все промежуточные результаты вычислений.
Так объясните, пожалуйста, программа будет работать N-е время после выключения питания? Например, у меня выставиться флаг flag в true после отключения питания, если он в разделе описания не объявлен как retain переменная?
И что подразумевается под выполнением программы после выключения питания?
Это значит ровно следующее:
В контроллере встроен аккумулятор. При пропадании питания он на какое то время обеспечивает работу:
Ethernet, 232 и обсчет программы (сохраняется в ОЗУ). Ни выхода ни что либо еще не питается - потребление большое.
В момент, когда аккумулятор понимает, что все - записывает Retain.
В случае, если ресурс аккумулятора полный, и он полностью заряжен - программа до перезагрузки ПЛК может "крутиться" в контроллере до 10 мин.
Если во время, пока аккумулятор держит питание вернуть, то контроллер не будет перезагружаться и начинать с начала, а продолжит с запомненного места.
Архив нужно сбрасывать буферами во флэш во время нормальной работы. Держать в памяти можно только текущий буфер, который при пропадании питания поместиться в retain область микропрограммой самого контроллера. Проблема в том что скорость физической записи во флэш невысока, и при записи будет конкурировать ваша программа и прошивка контроллера (которая победит! гы ))) Кроме того, в реальной эксплуатации, часто аккумулятор не успевает зарядиться за время появления питания для обеспечения достаточного времени сохранения данных, и при последовательных выключениях будет сбой архива.
И еще, это не комп, не пытайтесь дописывать данные в файл, весь файл будет перезаписан физически - это время и ресурс флэша - пишите маленькие файлики. Не пытайтесь придумывать динамические имена файлам - очень легко потерять текущий дескриптор и забить всю память флэша.