Блоки чтения-записи ПЗУ¶
Сохранение переменных в энергонезависимой памяти (EEPROM, электрически стираемая память) предназначено для обеспечения сохранения измененных значений переменных при отключении питания контроллера. К таким переменным относятся настроечные параметры программы, счетчики событий и другие параметры, которые должны сохранять свои значения после выключения и включения питания.
Однако, следует учитывать, что количество циклов перезаписи EEPROM ограничено (обычно от 10^6 до 10^12). Кроме того, процесс записи данных сопровождается временной приостановкой выполнения программы. В связи с этим, запись данных не должна быть непрерывной. Несвоевременная запись данных может привести к потере последних изменений при неожиданном отключении питания контроллера.
Работа с ПЗУ может выполняться двумя способами:
1. ПЗУ-переменные
Переменные FBD-программы имеют флаг Запись в ПЗУ
, при включении которого данная переменная должна сохраняться в ПЗУ FBD-ядром контроллера. В дальнейшем такие переменные будут называться ПЗУ-переменные. Для каждой ПЗУ-переменной резервируется место (адрес) в ПЗУ, по размеру соответствующее выбранному типу данных. Адреса всех переменных задаются в окне Переменные ПЗУ
в контекстном меню программы. При проверке FBD-программы перед программированием контроллера всегда проверяется, чтобы каждая ПЗУ-переменная имела отдельный адрес (диапазон адресов), не пересекающийся с адресами других ПЗУ-переменных.
ПЗУ-переменные обрабатываются FBD-ядром контроллера следующим образом:
При включении питания контроллера FBD-ядро устанавливает во все переменные значения по умолчанию. Затем выполняется проверка целостности содержимого ПЗУ путем проверки значений служебных ПЗУ-переменных (например, «Адрес подчиненного устройства Modbus»), хранимых в ПЗУ. Если целостность ПЗУ соблюдена, значения всех переменных копируются из ПЗУ в оперативную память, иначе - выполняется запись в ПЗУ значений по умолчанию всех переменных. Далее FBD-ядро выполняет основной цикл FBD-программы.
В течение работы контроллера FBD-программа периодически устанавливает признак, который проверяется между шагами выполнения FBD-схемы. Если признак установлен - выполняется запись в ПЗУ значений всех ПЗУ-переменных из оперативной памяти.
!!!Внимание!!! Копирование значений из ПЗУ в оперативную память ПЗУ-переменных в основном цикле программы не выполняется.
Для установки этого признака служит блок Запись переменных, который должен быть создан пользователем. Этот блок имеет 1 логический вход, выходов не имеет. Если на вход подан 0, блок ничего не выполняет. Если подана 1 - он устанавливает признак, по которому после выполнения всех блоков в текущем шаге выполнения программы, т.е. между шагами, будет выполнена запись всех ПЗУ-переменных. Подробное описание блока - Блок Запись переменных (EEPROM).
Другой вариант - установка опций автоматического выполнения записи при определенных событиях (FBD-программа).
2. Блоки произвольного доступа в ПЗУ
Блоки произвольного доступа в ПЗУ предназначены для чтения-записи произвольных (динамических) адресов ПЗУ, записи-чтения динамических массивов, например журналов событий. Указанные данные могут быть с трудом сохранены с использованием переменных ПЗУ, поскольку количество переменных ПЗУ и их адреса не могут быть изменены в процессе функционирования FBD-программы. Пользователь самостоятельно разрабатывает схему, осуществляющую математическое вычисление адреса чтения и записи, а также схему для управления разрешением операций чтения и записи. Все адреса ПЗУ доступны для доступа, поэтому пользователь должен самостоятельно обеспечивать целостность данных, включая предотвращение возможного искажения значений переменных ПЗУ в результате выполнения указанных команд.