Из статьи вы узнаете об устройстве и методах использования энергонезависимой (retentive) памяти в контроллерах Omron серии CP1
Введение
Зачастую требуется сохранить данные настроек программы между выключениями оборудования. В контроллерах Omron серии CP1 в этом деле очень помогает отдельно заказываемая батарейка, которая позволит надолго (5 лет при 25°C) сохранить данные в некоторых областях памяти при отключении питания. Привожу таблицу из руководства (1).
![]() |
| Красным выделено, что будет с определенной областью памяти при отключении питания |
Нестабильность означает, что определенное время после пропадания питания состояние памяти поддерживается за счет остаточного заряда конденсаторов, после исчерпания которого биты примут случайное состояние. Для серии CPU E-Type это время составит 50 часов при температуре 25°C. Для CPU N/NA-Type 40 часов. С ростом температуры время уменьшается.
Для области памяти A нестабильность означает, что встроенные часы реального времени после включения покажут неправильную дату и время (одно из самых неудобных следствий).
А что делать, если батарейки нет или если её не успеют вовремя заменить? Omron предлагает решение с сохранением во встроенную EEPROM память части области D (1500 или 7000 регистров, в зависимости от модели).
Настройки контроллера
Нас интересует меню "PLC Settings", вкладка "Startup/CPU Settings" , поле "Startup Data Read". Во-первых, если нет батарейки, то необходимо поставить галочку "Clear retained memory area". Эта настройка-указание контроллеру обнулять указанные области памяти при включении. Так мы сразу ставим крест на использовании остаточного заряда конденсаторов или батарейки - работает только механизм DM-backup memory. А главное - избавляемся возможного мусора в памяти при включении контроллера после его простоя.
![]() |
| Окно настроек ПЛК Omron CP1 в CX-One |
Далее указываем, сколько регистров мы планируем использовать под хранение информации, которую мы не хотим потерять при выключении питания. Нумерация идет с нуля, так что, если указано как в примере 14 регистров, то это D0..D13.
Требования к схеме
Необходимо определить момент пропадания питания. Это можно сделать, просто поставив реле перед питающим трансформатором или на входе в шкаф. Пока питание есть - контакты замкнуты. Как пропало - они размыкаются, сигнал пропадает - пора сохранять данные. Теоретически, контроллеру хватит времени работы на остаточном заряде конденсаторов для сохранения информации. Но это теоретически... Хорошую службу тут сыграет простой источник бесперебойного питания (на него, кстати, можно повесить не только контроллер), который предоставит возможность нормально завершить работу. Я не говорю тут о крупных или отказоустойчивых системах, на которую вы, конечно, захотите поставить серьёзную систему обеспечения бесперебойного питания соответствующей мощности. Кстати, приведу тут удобную страничку для выбора ИБП фирмы APC (2).
С использованием ИБП можно повесить сигнал на нормально закрытые контакты, что повысит безопасность системы. Без него только на нормально открытые (а то где вы питание будете брать? =) ).
Вызов сохранения данных
Если отсутствует ИБП, неплохо приведенную ниже конструкцию поместить в прерывание, дабы сохранить данные как можно быстрее. Особенно важно указать обработку по фронту или спаду. В момент исполнения данного кода вы должны быть уверены в корректности сохраняемых данных в D0...Dxxxx. Или сделать их таковыми по сигналу пропадания питания.
![]() |
| Корректная обработка пропадания питания |
А после включения контроллера уже можно использовать нашу драгоценную информацию. Приведу на ST, а то картинка получится очень уж длинной.
' Восстановление данных в рабочую область памяти после включенияLD P_First_CycleOUT TR0ANDNOT A751.11MOV(021) &1 D7100MOV(021) D0 D7001MOV(021) D1 D7002MOV(021) D2 D7003MOV(021) D3 D7004MOV(021) D4 D7106MOV(021) D5 D7200MOV(021) D6 D7201MOV(021) D7 D7202MOV(021) D8 D7203MOV(021) D9 D7204MOV(021) D10 D7205MOV(021) D11 D7206MOV(021) D12 D7207MOV(021) D13 D7208MOV(021) #1510 D7006MOV(021) D7204 D7007MOV(021) D7208 D7008MOV(021) #0000 D7009MOV(021) #0000 D7010LD TR0AND A751.11SET W40.01MOV(021) &4 D7100
Ссылки к статье



Комментариев нет:
Отправить комментарий