Считывание информации из блока данных в загружаемой памяти с помощью SFC83 "READ_DBL"
С помощью SFC83 "READ_DBL" (read date block in load memory [чтение DB в загружаемой памяти]) Вы можете считывать данные из DB типа BLOCK_DB или из DB в загружаемой памяти (Memory Card . карта памяти) в область назначения DB (DB назначения). DB назначения должен быть выполняемым (иметь атрибут UNLINKED = 0). Исходная область, из которой производится считывание не обязательно должна быть связанной (может иметь атрибут UNLINKED = 1). Содержимое загружаемой памяти не изменяется в процессе выполнения операции чтения.
Для корректной работы функции нельзя изменять область назначения во время работы SFC83.
На параметры SRCBLK и DSTBLK накладываются следующие ограничения:
- Для указателя ANY типа BOOL длина должна делиться на 8
- Если указатель ANY имеет тип STRING, то заданная длина должна быть равна 1
При необходимости Вы можете определить размер исходной области с помощью функции SFC24 "TEST_DB".
Функция SFC83 может работать асинхронно, поэтому следует избегать частого чтения переменных из загружаемой памяти.
Будучи запущенной, функция SFC83 всегда должна без прерывания завершить работу, даже если используемые ею ресурсы запрашиваются заданием с более высоким приоритетом.
Принцип работы
Функция SFC83 предназначена для асинхронной работы, т.е. время ее работы может перекрывать несколько вызовов функции. Запуск функции SFC83 осуществляется с REQ =1. Состояние работы функции можно контролировать с помощью выходных параметров RET_VAL и BUSY. Также для асинхронно работающих функций контролируйте значения REQ, RET_VAL и BUSY.
Параметр | Описание | Тип данных | Область памяти | Характеристика |
---|---|---|---|---|
REQ | INPUT | BOOL | I, Q, M, D, L | REQ = 1: Запрос на чтение блока данных |
SRCBLK | INPUT | ANY | D | Указатель на область данных DB в загружаемой области, из которой производится чтение |
RET_VAL | OUTPUT | INT | I, Q, M, D, L | Код ошибки |
BUSY | OUTPUT | BOOL | I, Q, M, D, L | BUSY = 1: (состояние работы): Процесс не завершен |
DSTBLK | OUTPUT | ANY | D | Указатель на область данных целевого DB |
Информация об ошибках
Код ошибки (W#16#....) | Описание |
---|---|
0000 | Ошибок не было |
8081 | Область назначения (целевая) меньше области исходной (источника). Область назначения полностью заполняется. Непоместившаяся в ней часть исходной информации игнорируется. |
7000 | Первый вызов с REQ=0: передача данных не активирована; параметр BUSY имеет значение 0 |
7001 | Первый вызов с REQ=1: передача данных не активирована; параметр BUSY имеет значение 1 |
7002 | Промежуточное обращение (REQ незначащий): передача данных уже активирована; BUSY имеет значение 1 |
0081 | Область назначения (целевая) больше области исходной (источника). Исходная информация полностью записывается в область назначения. Значения свободных байтов области назначения не изменяются |
80C0 | Область назначения используется в настоящее время другой функцией SFC или функцией связи |
8093 | Для параметра SCRBLK нет блока или нет соответствующего выполняемого блока (параметр инициализации блока) |
80B1 | Для параметра DSTBLK нет блока или нет соответствующего выполняемого блока (параметр инициализации блока) |
80B4 | DB c F-атрибутом не может быть изменен |
80C3 | В настоящее время требуемые ресурсы недоступны |
8xyy | Общая ошибка программы |
Запись блока данных в загружаемой памяти с помощью SFC84 "WRITE_DBL"
С помощью SFC84 "WRITE_DBL" (write date block in load memory [запись DB в загружаемой памяти]) Вы можете записать данные исходного DB в DB типа BLOCK_DB или в область DB в загружаемой памяти (Memory Card . карта памяти). DB в загружаемой памяти (с параметром DSTBLK) может быть выполняемым или невыполняемым. Исходная область, из которой производится считывание, может быть типа BLOCK_DB или DB-содержимым в рабочей памяти, следовательно, исходный DB (с параметром SRCBLK) должен быть связанным (выполняемым), т.е. с параметром UNLINKED = 0. Кроме того, исходный DB может быть сгенерирован с помощью функции SCF22 "CREAT_DB".
Для корректной работы функции нельзя изменять область назначения во время работы SFC84.
На параметры SRCBLK и DSTBLK накладываются следующие ограничения:
- Для указателя ANY типа BOOL длина должна делиться на 8
- Если указатель ANY имеет тип STRING, то заданная длина должна быть равна 1
При необходимости Вы можете определить размер исходной области с помощью функции SFC24 "TEST_DB". Во время записи загруженного DB при первом входе в него изменяется контрольная сумма пользовательской программы.
Функция SFC84 может работать асинхронно, поэтому следует избегать частой записи переменных в загружаемой памяти. Частое использование данной функции, кроме того, укорачивает срок службы загружаемой памяти.
Принцип работы
SFC84 "WRITE_DBL"предназначена для асинхронной работы, т.е. время ее работы может перекрывать несколько вызовов функции. Запуск функции SFC83 осуществляется с REQ =1. Состояние работы функции можно контролировать с помощью выходных параметров RET_VAL и BUSY. Также для асинхронно работающих функций контролируйте значения REQ, RET_VAL и BUSY.
Параметр | Описание | Тип данных | Область памяти | Характеристика |
---|---|---|---|---|
REQ | INPUT | BOOL | I, Q, M, D, L | REQ = 1: Запрос на запись |
SRCBLK | INPUT | ANY | D | Указатель на область данных DB, из которой производится чтение |
RET_VAL | OUTPUT | INT | I, Q, M, D, L | Код ошибки |
BUSY | OUTPUT | BOOL | I, Q, M, D, L | BUSY = 1: (состояние работы): Процесс не завершен |
DSTBLK | OUTPUT | ANY | D | Указатель на область данных целевого DB в загружаемой памяти |
Код ошибки (W#16#....) | Описание |
---|---|
0000 | Ошибок не было |
8081 | Область назначения (целевая) меньше области исходной (источника). Область назначения полностью заполняется. Непоместившаяся в ней часть исходной информации игнорируется |
7000 | Первый вызов с REQ=0: передача данных не активирована; параметр BUSY имеет значение 0 |
7001 | Первый вызов с REQ=1: передача данных не активирована; параметр BUSY имеет значение 1 |
7002 | Промежуточное обращение (REQ незначащий): передача данных уже активирована; BUSY имеет значение 1 |
0081 | Область назначения (целевая) больше области исходной (источника). Исходная информация полностью записывается в область назначения. Значения свободных байтов области назначения не изменяются |
80C0 | Область назначения используется в настоящее время другой функцией SFC или функцией связи |
8092 | Крах ОС Windows NT (синий экран) |
8093 | Для параметра SCRBLK нет блока или нет соответствующего выполняемого блока (параметр инициализации блока) |
80B1 | Для параметра DSTBLK нет блока или нет соответствующего выполняемого блока (параметр инициализации блока) |
80B4 | DB c F-атрибутом не может быть изменен |
80C3 | В настоящее время требуемые ресурсы недоступны |
8xyy | Общая ошибка программы |
<-- Предыдущая статья | Следующая статья --> |