Генерация блоков данных в загружаемой памяти с помощью SFC82 "CREA_DBL"
С помощью SFC82 "CREA_DBL" (create date block in load memory [создание DB в загружаемой памяти]) Вы можете создать новый блок данных в загружаемой памяти (Memory Card . карта памяти). SFC82 генерирует DB с размером, заданным по умолчанию, и с номером из специального ряда. Функция SFC82 назначает наименьший из возможных номеров блоку. Вы можете задать номер DB путем назначения данного номера верхнему и нижнему граничным значениям для вышеуказанного специального ряда номеров. Невозможно задать уже используемый номер DB. Если уже существует блок с данным номером в рабочей памяти и/или загружаемой памяти, то будет выдано сообщение об ошибке.
С помощью SFC24 "TEST_DB" Вы можете определить, существует ли уже DB с заданным номером.
Содержание области данных, на которую указывает параметр SRCBLK записывается в DB. Эта область данных должна быть DB с типом данных BLOCK_DB или областью из DB. Чтобы обеспечить корректность, Вы не должны изменить(заменить) эту область данных, во время работы SFC 82. С помощью SFC 82 может быть создан и инициализирован DB с атрибутом READ_ONLY. SFC 82 не изменяет контрольную сумму программы пользователя.
Принцип работы
SFC82 "CREA_DBL" работает асинхронно, т.е. время ее работы может
перекрывать несколько вызовов функции. Запуск функции SFC82 осуществляется с
REQ =1.
Состояние работы функции можно контролировать с помощью выходных параметров
RET_VAL и BUSY.
Также для асинхронно работающих функций контролируйте значения REQ, RET_VAL
и BUSY.
Параметр | Описание | Тип данных | Область памяти | Характеристика | ||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|
REQ | INPUT | BOOL | I, Q, M, D, L | REQ = 1: Запрос на генерацию блока данных | ||||||||
LOW_LIMIT | INPUT | WORD | I, Q, M, D, L | Наименьший номер для последовательности номеров из ряда для назначения вновь создаваемым DB | ||||||||
UP_LIMIT | INPUT | WORD | I, Q, M, D, L | Наибольший номер для последовательности номеров из ряда для назначения вновь создаваемым DB | ||||||||
COUNT | INPUT | WORD | I, Q, M, D, L | Значение счетчика определяет количество байтов данных, которые резервируются для DB. Здесь необходимо определить четное число байтов. | ||||||||
ATTRIB | INPUT | BYTE | I, Q, M, D, L | Характеристики DB:
|
||||||||
SRCBLK | INPUT | ANY | D | Указатель на область данных, в которой DB инициализирован | ||||||||
RET_VAL | OUTPUT | INT | I, Q, M, D, L | Код ошибки | ||||||||
BUSY | OUTPUT | BOOL | I, Q, M, D, L | BUSY = 1: (состояние работы): Процесс не завершен | ||||||||
DB_NUM | OUTPUT | WORD | I, Q, M, D, L | Номер сгенерированного DB |
Информация об ошибках
Код ошибки (W#16#...) | Объяснение |
---|---|
0000 | Ошибок не было |
0081 | Область назначения (целевая) больше области исходной (источника). Исходная информация полностью записывается в область назначения. Свободные байты области назначения заполняются нулями |
7000 | Первый вызов с REQ=0: передача данных не активирована; параметр BUSY имеет значение 0 |
7001 | Первый вызов с REQ=1: передача данных не активирована; параметр BUSY имеет значение 1 |
7002 | Промежуточное обращение (REQ незначащий): передача данных уже активирована; BUSY имеет значение 1 |
8081 | Область назначения (целевая) меньше области исходной (источника). Область назначения полностью заполняется. Непоместившаяся в ней часть исходной информации игнорируется. |
8091 | Имеются вложенные вызовы функции SFC82 |
8092 |
Генерация DB не выполняется, т.к.:
|
8093 | Для параметра SCRBLK нет блока или нет соответствующего выполняемого блока (параметр инициализации блока) |
8094 | Еще не поддерживается атрибут, который был определен для параметра ATTRIB |
80A1 |
Ошибка нумерации DB:
|
80A2 |
Ошибка размера DB:
|
80B1 | Нет свободных номеров для DB |
80B2 | Недостаточно свободной памяти |
80B3 | Недостаточно непрерывной памяти (необходимо провести сжатие) |
80BB | Недостаточно загружаемой памяти |
80C0 | Область назначения используется в настоящее время другой функцией SFC или функцией связи |
80C3 | В настоящее время требуемые ресурсы недоступны |
8xyy |
Общая ошибка программы, например:
|
<-- Предыдущая статья | Следующая статья --> |