Использование Beckhoff Novram
Использование Beckhoff Novram
В случае внезапного сброса питания все значения точек в программе обнулятся. Это особенно нежелательно если вы осуществляете подсчёт с импульсных счётчиков или калькулируете суммарную мощность с показаний мониторов сети, например.
Для сохранения данных в энергонезависимую память, контроллер Beckhoff CX9001 имеет два возможных пути.
Флэш память. Имеет ограниченное кол-во циклов перезаписи (ок. 1000000). Но большой объём 16МБ. Её рассматривать не будем.
Novolatile memory NOV-RAM. Только 124кб. Но неограниченное количество циклов записи.
Сразу скажу, галочка на RETAIN на CX эффекта не даст, как впрочем, и на любом контроллере под Windows. Галочка на PERSISTANT, совместно с функциональным блоком FB_WritePersistantData отвечает за работу с flash памятью.
Использование NOVRAM.
Тут есть два пути: быстрый-простой и посложнее-но-получше.
Просто и быстро. Привязать в System Manger. В образе NOV-RAM создаём точку и привязываем её к выходу или входу AT%Q* контроллера. В настройках образа NOV-RAM во вкладке Generic DPRAM, ставим галочку Auto Init Linked PLC outputs. Теперь значение выхода не пропадёт при сбросе питания. Недостаток в ухудшении производительности. Дело в том, что запись происходит каждый цикл, а доступ к NOVRAM занимает значительно больше ресурсов чем доступ к программной памяти.
Доступ к NOVRAM из алгоритма программы TwinCat. Нужен ФБ FB_NovRamReadWriteEx из TcIoFunctions.lib. Блоку можно задать периодичность записи в память память, например 15 сек. А считывать при первом цикле программы, сразу после запуска программы.
Наиболее экономичный выход , это производить запись в энергонезависимую память, только по сигналу о пропаже питания. В CX50xx CX80xx есть встроенный 1sec-UPS на пару секунд. Узнать об исчезнувшем питании, на поможет блок из библиотеки TwinCAT TcSUPS.lib FB_S_UPS. Прошу обратить внимание CX90xx такого нет.