Обозначение


Описание

Блок обеспечивает хранение данных в архиве на диске контроллера в виде файла.

Имя файла и путь к нему задается на входе fnm, может быть пустым, тогда имя файла будет выбрано автоматически.

Данные организуются в виде переменных ini с жестко заданным типом typi:
DI - 8-ми битный регистр
AI - вещественное значение float
II - 16-ти битный регистр
Поскольку входы ini имеют тип any необходимо строго соблюдать правила преобразования типов при проведении связей.

Количество переменных в архиве можно менять после создания блока.

Важно!
Поскольку операции файлового ввода/вывода занимают значительное время, данный блок следует размещать только в Фоне.

Назначение входов и выходов

ВходыТипОписание
rstbсброс ошибок записи
fnms40имя файла и путь к нему, может быть пустым
wrbзапись на диск
inianyзначение переменной
typienmтип переменной (DI, AI, II)
iniifltзначение инициализации
ВыходыТипОписание
nexts40следующий файл
enbi16разрешение работы блока (1 - работает, 0 - заблокирован)
stsi160 - после сброса, 1 - записан, 2 - прочитан
goodu16удачных записей
badu16ошибок записей
reju16отклонённых записей
oianyтекущее значение параметра

Инициализация

  1. Если файл существует на диске, выходы инициализируются сохраненными значениями.
  2. Если файла не существует выходы инициализируются значениями инициализации inii.

Алгоритм

  1. Для надежной сохранности данных одновременно на диске находятся два файла, соответствующие одному архиву. Поэтому, если контроллер будет перезагружен в момент записи на диск, данные не пропадут, а будут доступны предыдущие значения переменных, записанные в другом файле.
  2. При первом запуске на диске создается файл, который инициализируется значениями инициализации inii.
  3. Затем запись в файл осуществляется каждый раз, когда изменяются значения на входах.
  4. В случае однократной ошибки при записи файла на диск, блок пытается переименовать текущий файл и снова произвести запись. Если повторная запись оказывается удачной, то продолжается работа в обычном режиме, а выход bad инкрементируется. В этом случае необходимо принять меры по диагностике или замене носителя поскольку сбои при записи могут быть следствием скорого выхода его из строя.
  5. Файл, на котором произошел сбой, остается на диске под тем же именем с добавленным к нему суффиксом равным метке времени сбоя (в нс от 1 января 1970 г). Удалять его не желательно, чтобы повторно не использовать потенциально сбойный сектор.
Примечание:
При чтении содержимое файла контролируется с помощью контрольной суммы, и только при ее корректности выдается на выходы (поэтому в случае, например, добавления новой переменной, значения записанные в файл сбросятся на инициализирующие inii).
Важно!
Если происходит повторный сбой записи, то блок блокируется (выход enb = 0) и больше не производит попыток переименований файлов и записи до тех пор, пока ошибки не будут сброшены фронтом на входе rst.

Ссылки