Блоки чтения-записи ПЗУ

Сохранение переменных в ПЗУ (Постоянное Запоминающее Устройство или EEPROM, электрически стираемая энергонезависимая память) используется для хранения измененных значений переменных при выключенном питании контроллера. Пример таких переменных - настроечные величины («уставки») программы, счетчики событий, и прочие переменные, которые не должны после выключения-включения питания контроллера сбрасывать свои значения на значения по умолчанию.

В связи с тем, что количество циклов перезаписи ПЗУ ограничено (обычно от 10^6. до 10^12 раз), и что в течение записи происходит пауза в выполнении программы, запись нельзя выполнять постоянно. Если запись выполнять несвоевременно, то при неожиданном выключении питания контроллера последние изменения значений переменных будут утеряны.

Работа с ПЗУ может выполняться двумя способами:

1. ПЗУ-переменные

Переменные FBD-программы имеют флаг Запись в ПЗУ, при включении которого данная переменная должна сохраняться в ПЗУ FBD-ядром контроллера. В дальнейшем такие переменные будут называться ПЗУ-переменные. Для каждой ПЗУ-переменной резервируется место (адрес) в ПЗУ, по размеру соответствующее выбранному типу данных. Адреса всех переменных задаются в окне Переменные ПЗУ в контекстном меню программы. При проверке FBD-программы перед программированием контроллера всегда проверяется, чтобы каждая ПЗУ-переменная имела отдельный адрес (диапазон адресов), не пересекающийся с адресами других ПЗУ-переменных.

ПЗУ-переменные обрабатываются FBD-ядром контроллера так:

При включении питания контроллера FBD-ядро устанавливает во все переменные значения по умолчанию. Затем выполняется проверка целостности содержимого ПЗУ путем проверки значений служебных ПЗУ-переменных (например, «Адрес подчиненного устройства Modbus»), хранимых в ПЗУ. Если целостность ПЗУ соблюдена, значения всех переменных копируются из ПЗУ в оперативную память, иначе - выполняется запись в ПЗУ значений по умолчанию всех переменных. Далее FBD-ядро выполняет основной цикл FBD-программы.

В течение работы контроллера FBD-программа периодически устанавливает признак, который проверяется между шагами выполнения FBD-схемы. Если он равен 1 - выполняется запись в ПЗУ значений всех ПЗУ-переменных из оперативной памяти.

Внимание! Копирование значений из ПЗУ в оперативную память ПЗУ-переменных в основном цикле программы не выполняется.

Для установки этого признака служит блок Запись переменных, который должен быть создан пользователем. Другой вариант - установка опций автоматического выполнения записи при определенных событиях (см. раздел FBD-программа).

  • Блок Запись переменных (EEPROM)

Этот блок имеет 1 логический вход, выходов не имеет. Если на вход подан 0, блок ничего не выполняет. Если подана 1 - он устанавливает признак, по которому после выполнения всех блоков в текущем шаге выполнения программы, т.е. между шагами, будет выполнена запись всех ПЗУ-переменных.

2. Блоки произвольного доступа в ПЗУ

Блоки произвольного доступа в ПЗУ предназначены для чтения-записи произвольных (динамических) адресов ПЗУ, записи-чтения динамических массивов, например журналов событий. Такие данные не могут быть только с большим трудом записаны с использованием ПЗУ-переменных, т.к. количество ПЗУ-переменных и их адреса не могут изменяться в течение работы FBD-программы. Пользователь самостоятельно создает схему, математически вычисляющую адрес чтения записи, и схему для разрешения чтения-записи. Для доступа доступны все адреса ПЗУ, поэтому пользователь сам должен обеспечивать целостность данных, в том числе чтобы этими командами не испортить значения ПЗУ-переменных.

  • Блок Чтение из ПЗУ (EEPROMRead)
  • Блок Запись в ПЗУ (EEPROMWrite)