СТАРТОВАЯ ИНФОРМАЦИЯ OB
Каждый организационный блок имеет стартовую информацию в 20 байтов локальных данных, предоставляемых операционной системой при запуске ОВ. Стартовая информация указывает на событие, вызвавшее запуск ОВ, дату и время запуска ОВ, возникшие ошибки и диагностические события.
Например, ОВ40, ОВ аппаратных прерываний, содержит в своей стартовой информации, адрес модуля, который сгенерировал прерывание.
ОТМЕНЕННЫЕ ОВ ПРЕРЫВАНИЙ
Если вы назначаете класс приоритета 0 или назначаете менее 20 байтов локальных данных классу приоритета, то выбор соответствующего ОВ прерываний отменяется. Обработка отмененных ОВ прерываний ограничена следующим образом:
•В режиме RUN они не могут быть скопированы в вашу пользовательскую программу или связаны с ней.
•В режиме STOP они могут быть скопированы в вашу пользовательскую программу или связаны с ней, но когда CPU проходит через "теплый" рестарт, они останавливают запуск, и делается запись в диагностический буфер.
Отменяя выбор ОВ прерываний, которые вам не нужны, вы увеличиваете размер имеющейся в распоряжении области локальных данных, а это может быть использовано для сохранения временных данных в других классах приоритета.
ЦИКЛИЧЕСКАЯ ОБРАБОТКА ПРОГРАММЫ
Циклическая обработка программы – это "стандартный" способ исполнения программы в программируемых логических контроллерах, означающий, что операционная система работает в программном цикле и вызывает организационный блок ОВ1 один раз в каждом цикле главной программы. Поэтому программа пользователя в ОВ1 исполняется циклически.
Операционная система |
Программа пользователя |
|
Включение питания |
|
|
Цикл |
Главная |
|
программа |
||
|
ОБРАБОТКА ПРОГРАММЫ, УПРАВЛЯЕМАЯ СОБЫТИЯМИ
Циклическая обработка программы может быть прервана определенными событиями (прерываниями). Если такое событие происходит, то блок, обрабатываемый в это момент времени, прерывается на границе команды, и
10
вызывается другой организационный блок, назначенный соответствующему событию. Как только этот организационный блок завершает свою работу, циклическая программа возобновляется с точки, на которой она была прервана.
Операционная система |
Программа пользователя |
||
Питание |
|
|
|
включено |
Программа |
|
|
|
|
|
|
|
|
запуска |
|
|
|
Главная |
|
|
Цикл |
програм- |
|
|
ма |
Прерываю- |
|
|
Прерыва- |
Преры- |
|
< |
вание |
щая про- |
|
ние> |
грамма |
||
<Ошибка>> |
Преры- |
Обработка |
|
|
|
вание |
ошибки |
Это значит, что имеется возможность обрабатывать части программы пользователя, которые не должны обрабатываться циклически, а только тогда, когда они необходимы. Программа пользователя может быть разделена на "подпрограммы" и распределена между различными организационными блоками. Если программа пользователя должна реагировать на важный сигнал, который появляется относительно редко (например, датчик граничного значения для измерения уровня в резервуаре сообщает, что достигнут максимальный уровень), то подпрограмма, которая должна обрабатываться, когда выдается этот сигнал, может быть помещена в ОВ, обработка которого управляется событиями.
ИЕРАРХИЯ ВЫЗОВОВ В ПРОГРАММЕ ПОЛЬЗОВАТЕЛЯ
Для функционирования программы пользователя составляющие ее блоки должны вызываться. Это делается с помощью специальных команд step 7, вызовов блоков, которые могут быть запрограммированы и запущены только в логических блоках.
ПОРЯДОК И ГЛУБИНА ВЛОЖЕНИЯ
Порядок и вложение вызовов блоков называется иерархией вызовов. Количество блоков, которые могут быть вложены друг в друга (глубина вложения), зависит от конкретного CPU.
Следующий рисунок иллюстрирует порядок и глубину вложения вызовов блоков внутри цикла обработки программы.
11
|
Начало |
|
Глубина вложения |
||
|
|
|
|
|
|
система |
цикла |
|
FB 1 |
FC 1 |
|
|
OB 1 |
|
|||
|
Экземплярный |
|
|
||
|
|
|
|
||
|
|
DB 1 |
|
|
|
Операционная |
|
|
FB 2 |
FB 1 |
SFC 1 |
|
|
Экземплярный |
Экземплярный |
|
|
|
|
DB 2 |
DB 1 |
DB 1 |
|
|
|
FC 1 |
|
||
|
|
|
|
||
|
|
|
|
|
|
Существует установленный порядок создания блоков: |
|
||||
•Блоки создаются сверху вниз, то есть вы начинаете с верхнего ряда
блоков.
•Каждый вызываемый блок уже должен существовать, т. е. внутри ряда блока они должны создаваться справа налево.
•Последним создается блок OB1.
Применение этих правил на практике для приведенного на рисунке примера дает следующую последовательность создания блоков:
FC1 > FB1 + экземплярный DB1 > DB1 > SFC1 > FB2 +
экземплярный DB2 > OB1
Замечание Если глубина вложения слишком велика (слишком много уровней), то
стек локальных данных может переполниться
ВЫЗОВЫ БЛОКОВ
На следующем рисунке показана последовательность вызова блоков внутри программы пользователя. Программа вызывает второй блок, команды которого затем полностью выполняются. Как только второй, или вызываемый, блок выполнен, исполнение прерванного блока, который произвел вызов, возобновляется с команды, следующей за вызовом блока.
12
Вызывающий блок |
Вызываемыйблок |
|
(OB, FB, FC) |
(FB, FC, SFBили SFC) |
|
Исполнение |
|
|
программы |
Исполнение |
|
Команда, |
||
программы |
||
вызывающая |
||
другойблок |
|
|
|
Конец блока |
Перед программированием блока вы должны указать, какие данные будут использоваться вашей программой, иными словами, вы должны описать переменные блока.
Замечание Выходные параметры должны быть описаны для каждого вызова блока.
Замечание
Операционная система сбрасывает экземпляры SFB3 "TP", когда выполнен холодный рестарт. Если вы хотите инициализировать экземпляры этого SFB после холодного рестарта, вы должны вызвать соответствующие экземпляры этого SFB с РТ=0 мс через ОВ100. Вы можете это сделать, например, выполнив программу инициализации в блоках, содержащих экземпляры этого
SFB.
4. ТИПЫ БЛОКОВ И ЦИКЛИЧЕСКАЯ ОБРАБОТКА ПРОГРАММЫ
ОРГАНИЗАЦИОННЫЙ БЛОК ДЛЯ ЦИКЛИЧЕСКОЙ ОБРАБОТКИ ПРОГРАММЫ (OB1)
Циклическая обработка программы – это "стандартный" тип исполнения программы в программируемых логических контроллерах. Операционная система вызывает ОВ1 циклически, и этим вызовом она начинает циклическое исполнение программы пользователя.
ПОСЛЕДОВАТЕЛЬНОСТЬ ЦИКЛИЧЕСКОЙ ОБРАБОТКИ ПРОГРАММЫ
В следующей таблице показаны фазы циклической обработки программы:
13
Шаг |
Последовательность |
|
в |
Последовательность в новых CPU (с |
||||||||||
|
существующих CPU |
|
|
10/98) |
|
|
|
|
|
|||||
1. |
Операционная система запускает |
Операционная |
система запускает |
|||||||||||
|
время контроля цикла. |
|
время контроля цикла. |
|
|
|||||||||
2. |
CPU считывает состояния входов |
CPU записывает значения из таблицы |
||||||||||||
|
модулей |
ввода |
и |
обновляет |
образа процесса на выходах в модули |
|||||||||
|
таблицу |
образа |
процесса |
на |
вывода. |
|
|
|
|
|
||||
|
входах. |
|
|
|
|
|
|
|
|
|
|
|
|
|
3. |
CPU |
обрабатывает |
программу |
CPU |
считывает |
состояния |
входов |
|||||||
|
пользователя |
и |
|
исполняет |
модулей ввода и обновляет таблицу |
|||||||||
|
содержащиеся в ней команды. |
|
образа процесса на входах. |
|
||||||||||
4. |
CPU |
записывает |
значения |
из |
CPU |
|
обрабатывает |
программу |
||||||
|
таблицы |
образа |
процесса |
на |
пользователя |
и |
исполняет |
|||||||
|
выходах в модули вывода. |
|
содержащиеся в ней команды. |
|||||||||||
5. |
В конце |
цикла |
операционная |
В |
конце |
цикла |
операционная |
|||||||
|
системы выполняет все ждущие |
системы |
|
выполняет |
все |
ждущие |
||||||||
|
своей очереди задачи, например, |
своей очереди задачи, например, |
||||||||||||
|
загрузка и удаление блоков, |
загрузка и удаление блоков, прием и |
||||||||||||
|
прием |
и |
передача |
глобальных |
передача глобальных данных. |
|||||||||
|
данных. |
|
|
|
|
|
|
|
|
|
|
|
|
|
6. |
Наконец, CPU возвращается к |
Наконец, CPU возвращается к началу |
||||||||||||
|
началу цикла |
и |
перезапускает |
цикла |
и |
перезапускает |
время |
|||||||
|
время контроля цикла. |
|
контроля цикла. |
|
|
|
||||||||
ОБРАЗ ПРОЦЕССА
Чтобы в CPU во время циклической обработки программы находился непротиворечивый образ сигналов процесса, CPU обращается не непосредственно к адресным областям входов (I) и выходов (Q) на модулях ввода/вывода, а к области внутренней памяти CPU, содержащей образ входов и выходов.
ПРОГРАММИРОВАНИЕ ЦИКЛИЧЕСКОЙ ОБРАБОТКИ ПРОГРАММЫ
Циклическая обработка программы программируется записью программы пользователя в ОВ1 и в блоки, вызываемые внутри ОВ1 с помощью
STEP 7.
Циклическая обработка программы начинается, как только завершается без ошибок программа запуска.
ПРЕРЫВАНИЯ Циклическая обработка программы может быть прервана в результате:
•прерывания
•команды STOP (переключатель выбора режимов, опция меню на устройстве программирования, SFC46 STP, SFB20 STOP)
14