Среда разработки Unimod PRO 2 (версия 2.3.40)
 Руководство по программированию
×

FL_OPEN - открытие файла


Назначение.
Функциональный блок используется для открытия файла.
 
Состав структурной переменной.
Переменная со структурным типом FL_OPEN будет добавлена в локальный словарь автоматически при добавлении блока в редактор.
Описание алгоритма.
  • На вход PATH в виде строки передается полное имя файла, включая путь к файлу в файловой системе мастер-модуля и его расширение:
  • '/sd/<имя_файла>.<расширение>' - для мастер-модуля M1201E;
  • /unimod/usr/<имя_файла>.<расширение>' - для прочих мастер-модулей.
    2. Если файл имеет двоичный формат, необходимо установить входной параметр BIN=TRUE.
    3. По указанному адресу PATH проверяется наличие файла, при его отсутствии в указанной директории создается новый файл с указанным именем и расширением. Каждому открытому файлу присваивается уникальный идентификатор, который передается на выход FILE_ID. Если файл на момент выполнения блока находится в открытом состоянии, на выход FILE_ID передается ранее присвоенный файлу уникальный идентификатор.
    4. После открытия текущая позиция курсора устанавливается в начало файла.
    5. При возникновении ошибки открытия, ее код будет передан на выход FAULT, при этом FILE_ID=0. Список ошибок с кратким описанием приведен в конце настоящего раздела.
     
Режимы открытия файла.
Режим работы с открытым файлом определяется входным сигналом RDONLY:
  • RDONLY=FALSE - файл доступен для чтения и записи;
  • RDONLY=TRUE - файл доступен только для чтения.
 
Ограничение размера файла.
Размер открываемого файла может быть ограничен с использованием входного параметра SIZE:
  • SIZE=-1 - файл открывается полностью, без ограничений;
  • SIZE >= 0 - будет открыта начальная часть файла, ограниченная размером SIZE, а оставшаяся часть файла останется закрытой и недоступной для чтения или записи.
 
Работа с текстовыми файлами.
При работе с текстовыми файлами по умолчанию в качестве разделителя данных используется символ перевода на новую строку, при этом входной параметр SEP должен принимать значение по умолчанию SEP=0. Другие разделители в настоящее время не поддерживаются.
 
Пример синтаксиса на языке ST.
//вызов функционального блока
Block.FL_OPEN(PATH, RDONLY, BIN, SEP, SIZE);
//чтение уникального идентификатора открытого файла
FILE_ID := Block.FILE_ID;
//чтение кода ошибки
FAULT := Block.FAULT;
Список возможных ошибок на выходе FAULT.
Код ошибки
Краткое описание
0
Ошибок нет
1
Операция не поддерживается
2
Путь к файлу некорректен, или попытка создать новый файл при установленном флаге RDONLY
3
Недопустимые входные параметры
4
Операция прервана системным сигналом
5
Ошибка чтения/записи на устройство
6
Устройство не найдено
9
Задан неверный идентификатор файла
12
Файл не открыт
13
Доступ запрещен
14
Ошибка доступа к массиву
16
Ошибка открытия файла
20
Путь к директории задан некорректно
21
Указано имя директории
23
Открыто слишком много файлов
24
Открыто слишком много файловых дескрипторов
27
Размер файла превышает допустимое значение
28
Недостаточно свободного места на диске
30
Файл доступен только для чтения
78
Слишком длинное имя файла
79
Размер файла превышает допустимое значение
89
Операция для указанной файловой системы не поддерживается
302
Ошибка файловой системы