FL_WR - запись данных из массива в файл

Назначение.
Функциональный блок используется для записи данных из массива в файл.
Состав структурной переменной.
Переменная со структурным типом FL_WR будет добавлена в локальный словарь автоматически при добавлении блока в редактор.

Описание алгоритма.
-
На вход FILE_ID передается уникальный идентификатор файла, полученный при его открытии с использованием блока FL_OPEN.
-
Если файл открыт только для чтения, попытка записи завершиться ошибкой.
-
Определяется начальная позиция курсора в файле, с которой начнется запись данных. Количество байт, на которое нужно сместить курсор относительно начала файла задается входным параметром FILE_OFF.
-
Осуществляется последовательная запись в файл элементов массива DATA[DATA_OFF], DATA[DATA_OFF+1] ... DATA[OFF+DATA_CNT-1]. Если после установленной позиции курсора в файле имеются данные, то они будут перезаписаны. При необходимости, размер файла автоматически увеличивается, если записываемые данные в него не умещаются.
-
На выход ELEM_CNT выводится количество элементов массива, которые удалось записать в файл, а на выход FAULT код ошибки. Список ошибок размещен в конце раздела "FL_OPEN - открытие файла".На следующем изображении приведен пример, когда запись начинается со смещением в 4 байта от начала файла, а данные записываются блоками по 4 байта, т.к. массив DATA имеет тип данных INTEGER. В файл всего записано 5 блоков данных, начиная со значения элемента DATA[4], а размер файла при этом увеличился.

Пример синтаксиса на языке ST.
//вызов функционального блока FL_WR
Block.FL_WR(FILE_ID, FILE_OFF, DATA, DATA_OFF, DATA_CNT);
//чтение количества записанных в файл элементов
ELEM_CNT := Block.ELEM_CNT;
//чтение кода ошибки
FAULT := Block.FAULT;
|
