step7-pro
голосование
Чего не хватает сайту
поиска
новых статей
статей о подключении оборудования
примеров решения задач
форума
ничего не нужно
поиск


новости
Появился поиск по сайту. Обещаю его улучшить и сделать более адекватным
--------------11.10.11
Новая гостевая книга надеюсь избавит от спама. Еще немного и появится поис и многое другое
--------------11.07.11
C НАСТУПАЮЩИМ НОВЫМ ГОДОМ И РОЖДЕСТВОМ!
--------------30.12.10
Новые статьи по системным функциям и блокам
--------------25.12.10
Теперь у нас новый дизайн, конечно не супер но надеюсь всем понравиться
--------------05.12.10
Форум закрыт по причине ненадобности
--------------08.09.10
Гостевая книга временно отключена из спама
--------------15.10.10
Наш форум forum.step7-pro.ru общайтесь на здоровье!
--------------03.06.10
Наш сайт в twitter Вы сможете подписаться на рассылку новостей и узнавать о новых статьях на нашем сайте.
--------------20.03.10
После долгого перерыва наш сайт снова начал работать
--------------26.02.10
реклама

 

Инициализация области памяти с помощью SFC21 "FILL"

С помощью SFC 21 .FILL. Вы можете предварительно заполнить область памяти (целевую область) содержимым другой области памяти (исходной области). SFC копирует содержимое в заданную целевую область, пока эта область памяти не будет полностью записана.

Примечание
Исходный и целевой массив не должны перекрываться. Если целевая область, подлежащая инициализации, не является целым кратным длины входного параметра BVAL, то она, тем не менее, записывается до последнего байта. Если целевая область, подлежащая инициализации, меньше, чем исходная область, то копируется лишь столько данных, сколько может быть записано в целевую область.

 

Исключения

С помощью SFC 21 нельзя записывать значения в

 

Параметр Описание Тип данных Область памяти Характеристика
BVAL INPUT ANY I, Q, M, D, L Параметр BVAL содержит значение или описание области, содержимое которой будет использовано для инициализации целевой области(исходная область). Массивы, относящиеся к типу данных STRING, недопустимы.
RET_VAL OUTPUT INT I, Q, M, D, L Если во время обработки функции появляется ошибка, то возвращаемое значение содержит код ошибки.
BLK OUTPUT ANY I, Q, M, D, L Параметр BLK содержит описание области, подлежащей инициализации (целевой области). Массивы, относящиеся к типу данных STRING, недопустимы.

Входной параметр является структурой

Если в качестве входного параметра передается структура, то помните следующую особенность: STEP 7 всегда определяет длину структуры как четное число байтов. В результате структуре потребуется один байт дополнительного пространства в памяти, если Вы опишете структуру с нечетным числом байтов.

Пример
Структура описана следующим образом:
TYP_5_BYTE_STRUCTURE : STRUCT
BYTE_1_2 : WORD
BYTE_3_4 : WORD
BYTE_5 : BYTE
END_STRUCT
Описанная структура "TYP_5_BYTE_STRUCTURE" требует 6 байтов памяти.

 

 

Создание блока данных с помощью SFC22 "CREAT_DB"

С помощью SFC22 "CREAT_DB" (create data block [создать блок данных]), Вы создаете блок данных, который не содержит предварительно установленных значений. Этот SFC создает блок данных выбираемой длины с номером, взятым из заданного диапазона. SFC присваивает DB минимально возможный номер из заданного диапазона. Если Вы хотите создать DB с конкретным номером, то просто выберите диапазон, указывая одно и то же значение для верхней и нижней границы. Вы не можете назначить номер, если DB с таким же номером уже существует в программе пользователя. Длина DB должна быть четным числом байтов.

Возможность прерывания


SFC22 "CREAT_DB" может прерываться более приоритетными OB. Если SFC22 "CREAT_DB" вновь вызывается в OB более высокого приоритета, то этот вызов отвергается с кодом ошибки W#16#8091.

Параметр Описание Тип данных Область памяти Характеристика
LOW_LIMIT INPUT WORD I, Q, M, D, L,
константа
Нижнее граничное значение является минимальным номером в диапазоне номеров, которые Вы можете присвоить своему блоку данных.
UP_LIMIT INPUT WORD I, Q, M, D, L,
константа
Верхнее граничное значение является максимальным номером в диапазоне номеров, которые Вы можете присвоить своему блоку данных.
COUNT INPUT WORD I, Q, M, D, L,
константа
Числовое значение задает количество байтов данных, которое Вы хотите зарезервировать для своего блока данных. Здесь Вы должны задать четное число байтов (максимум 65534).
RET_VAL OUTPUT INT I, Q, M, D, L Если во время обработки функции появляется ошибка, то возвращаемое значение содержит код ошибки.
DB_NUMBER OUTPUT WORD I, Q, M, D, L Номер блока данных является номером созданного блока данных. Если происходит ошибка (бит 15 в RET_VAL был установлен), то в DB_NUMBER вводится значение 0.

 

Информация об ошибках

Код ошибки
(W#16#...)
Объяснение
0000 Нет ошибки
8091 Вы выполнили вложенный вызов SFC22.
8092

Функция "Создать DB" не может быть в данный момент выполнена, так как

  • в данный момент активна функция "Сжатие памяти пользователя"
  • в данный момент активна функция "Сохранение программы пользователя"
  • основной CPU выполняет функции соединения или обновления
  • программа из ПО WinAC Software CPU обнаружила ошибку в ОС компьютера, в котором инсталлирована система WinAC.
80A1

Ошибка в номере DB

  • Номер равен 0
  • Номер превышает количество DB для конкретного CPU
  • Параметр lower limit [нижняя граница] > upper limit [верхняя граница]
80A2

Ошибка в длине DB

  • Длина равна 0
  • Длина была задана как нечетное число
  • Длина больше, чем допускает CPU
80B1 Нет свободных номеров DB
80B2 Недостаточно свободной памяти
80B3 Недостаточно непрерывной памяти (устранение: провести сжатие!)

 

 

<-- Предыдущая статья   Следующая статья -->
сделано djoni политика конфидициальности Rambler's Top100