Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

1882

.pdf
Скачиваний:
6
Добавлен:
15.11.2022
Размер:
978.4 Кб
Скачать

СТАРТОВАЯ ИНФОРМАЦИЯ 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

выхода из строя питания

появления неисправности или ошибки в программе

ВРЕМЯ ВЫПОЛНЕНИЯ ЦИКЛА

Время выполнения цикла – это время, необходимое операционной системе для выполнения циклической программы и всех программных секций, прерывающих цикл (например, выполнение других организационных блоков), и системных операций (например, обновления образа процесса). Это время контролируется.

Время выполнения цикла (TC) не одинаково в каждом цикле. На следующих рисунках показаны различные времена выполнения циклов (TC1 TC2) для существующих и новых CPU:

Различные времена выполнения цикла для существующих CPU

 

Текущий цикл

Следующий цикл

Следующий

 

 

TЦ1

 

 

TЦ2

 

цикл

Обновление таб-

 

OB10

Обновление таб-

Обновление таб-

 

Обновление таб-

Обновление таб-

OB1

лицы образа про-

OB1

лицы образа про-

лицы образа про-

OB1

лицы образа про-

лицы образа про-

цесса на входах

OB1цесса на выходах

цесса на входах

цесса на выходах

цесса на входах

МАКСИМАЛЬНОЕ ВРЕМЯ ЦИКЛА

С помощью STEP 7 вы можете изменить максимальное время цикла, установленное по умолчанию. Когда это время истекает, или CPU переходит в режим STOP, или вызывается ОВ80, в котором вы можете определить, как CPU должен реагировать на эту ошибку.

МИНИМАЛЬНОЕ ВРЕМЯ ЦИКЛА

С помощью STEP 7 вы можете установить минимальное время цикла для S7-400 и CPU 318. Это полезно в следующих ситуациях:

если интервал, с которым запускается исполнение программы в ОВ1 (проход главной программы), всегда должен быть одним и тем же;

если таблицу образа процесса не нужно обновлять излишне часто без необходимости, когда время цикла слишком коротко.

15

 

 

Время контроля цикла для существующих CPU

 

 

Текущий

 

 

 

 

Следующий

Тмах

 

 

 

 

 

 

 

 

 

Резерв

 

 

 

 

Тмin

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ТC

 

 

Тожи

 

 

 

PC16

 

 

 

 

 

OB40

 

 

PC07

 

OB10

 

 

OB10

 

 

 

Обновление

Обновление

 

 

Обновление

 

таблицы

об-

таблицы

об-

 

 

таблицы

об-

OB1

раза процесса OB1

OB1 раза процесса

 

 

раза процесса

PC01 на входах

 

на выходах

 

 

 

на входах

 

 

PC29

 

 

 

OB90

OB90

OB90

 

 

Тмах – максимальное время цикла, которое может быть установлено;

 

 

Тмin – минимальное время цикла, которое может быть установлено;

 

 

ТC – время исполнения текущего цикла;

 

 

 

 

 

 

Тожид – разность между Тмin и временем текущего цикла. В это время могут

 

 

обрабатываться произошедшие прерывания и фоновый ОВ ;

 

 

 

РС класс приоритета.

 

 

 

 

 

 

КОММУНИКАЦИОННАЯ НАГРУЗКА

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

Когда вы принимаете решение о нагрузке, добавляемой к циклу коммуникациями, помните, что время работы операционной системы дополнительно увеличивает время исполнения. Если вы устанавливаете коммуникационную нагрузку в 50 %, то это не удваивает, а более чем удваивает первоначальное время исполнения, дополнительное увеличение времени зависит от используемого CPU. Это иллюстрируется примером, основанным на наихудшей ситуации.

Случай 1:

Время работы операционной системы составляет 250 мс на 1 секунду времени цикла.

Программа пользователя имеет время исполнения 750 мс.

16

Нагрузка на цикл, вызванная коммуникациями, тестовыми функциями

иподготовительными функциями, составляет 0 %.

Цикл может быть представлен в упрощенной форме следующим образом:

0

 

1

 

2

 

3

 

 

 

 

 

 

t

Опс.

Прп.

O пс.

Прп.

Опс.

Прп.

с

250 мс

750 мс

250 мс

750 мс

250 мс

750 мс

 

 

время цикла 1000

 

 

 

 

Общеее время цикла = 1000 мс

 

 

 

 

Опс загрузка этапа выполнением функций операционной

 

Опс. = Загрузка этапа выполнения работой операционной системы

 

системы;

 

 

 

 

 

Прп. = Загрузка этапа выполнения программой пользователя

 

 

Случай 2:

Время работы операционной системы продолжает составлять 250 мс на 1 секунду времени цикла.

Программа пользователя продолжает работать 750 мс.

Нагрузка на цикл, вызванная коммуникациями, тестовыми функциями

иподготовительными функциями, теперь установлена на 50 %.

0

 

 

1

 

 

 

2

 

 

3

t

 

 

 

 

 

 

 

 

 

 

 

Опс.

Комм.

Прп.

Опс.

 

Комм.

Прп.

Опс.

Комм.

Прп.

с

250 мс

500 мс

250 мс

250 мс

500 мс

250 мс

250 мс

500 мс

250 мс

 

 

 

 

Общее

время цикла = 3000 мс

 

 

 

 

 

 

время цикла = 3000 мс

 

 

 

 

 

 

Коммуникации = 1500 мс

 

 

 

 

 

 

 

Коммуникации = 1500 мс

 

 

 

 

Опс загрузка этапа выполнением функций операционной системы;

 

 

Комм загрузка этапа коммуникационными операциями;

 

 

 

Опс.

= Загрузка этапа выполнения работой операционной системы

 

 

Комм. = Заг

 

в полнения коммуникациями

 

 

 

 

Прп загрузкаэтапа выполнением программы пользователя.

 

 

Прп.

= Загрузка этапа выполнения программой пользователя

 

 

 

Таким образом, загрузка этапа выполнения коммуникациями составляет 1500 мс на цикл.

В этом примере установка коммуникационной нагрузки на 50 % увеличивает время цикла с 1 секунды до 3 секунд, иными словами, общее время цикла утраивается.

Коммуникационная нагрузка должна приниматься в расчет при установке минимального времени цикла, иначе возникнут ошибки, связанные со временем.

ФУНКЦИИ (FC)

Функции (FC) относятся к блокам, которые вы программируете сами.

17

Функция – это логический блок "с памятью". Временные переменные, принадлежащие FC, хранятся в стеках локальных данных. После того как FC выполнена, эти данные теряются. Чтобы хранить эти данные постоянно, функции могут также использовать разделяемые (глобальные) блоки данных.

Так как FC не имеет собственной памяти, то вы всегда должны определять для нее фактические параметры. Для локальных данных FC нельзя назначать начальные значения.

Применение

FC содержит программную секцию, которая выполняется всегда, когда FC вызывается другим логическим блоком. Функции можно использовать для следующих целей:

для возврата значения функции в вызывающий блок (пример: математические функции);

для выполнения технологической функции (пример: отдельная функция управления с битовой логической операцией).

Назначение фактических параметров формальным параметрам

Формальный параметр – это макет для "фактического" параметра. Фактические параметры заменяют формальные параметры при вызове функции. Вы всегда должны ставить в соответствие фактические параметры формальным параметрам FC (например, фактический параметр "E3.6" формальному параметру "Start"). Входные, выходные параметры и параметры типа вход/выход, используемые FC, хранятся как указатели на фактические параметры логического блока, который вызвал FC.

ФУНКЦИОНАЛЬНЫЕ БЛОКИ (FB)

Функциональные блоки (FB) относятся к блокам, которые вы программирует сами. Функциональный блок – это логический блок "с памятью". В качестве памяти ему назначается блок данных (экземплярный блок данных). В экземплярном DB сохраняются параметры, передаваемые FB, и статические переменные. Временные переменные хранятся в стеке локальных данных.

Данные, сохраняемые в экземплярном DB, не теряются, когда исполнение FB завершено. Однако, данные, сохраняемые в стеке локальных данных, теряются, теряются, когда исполнение FB завершено.

ПРИМЕНЕНИЕ

FB содержит программу, которая исполняется всегда, когда FB вызывается другим логическим блоком. Функциональные блоки значительно облегчают программирование часто встречающихся сложных функций.

18

ФУНКЦИОНАЛЬНЫЕ БЛОКИ И ЭКЗЕМПЛЯРНЫЕ БЛОКИ ДАННЫХ

Экземплярный блок данных назначается каждому вызову функционального блока, который передает параметры.

Вызывая более одного экземпляра FB, можно с помощью одного FB управлять более чем одним устройством. Например, FB для некоторого класса двигателей может управлять различными двигателями, используя различные наборы экземпляров данных для разных двигателей. Данные для каждого двигателя (например, скорость, накопленное время работы и т. д.) могут быть сохранены в одном или нескольких экземплярных DB.

На следующем рисунке показаны формальные параметры FB, который использует фактические параметры, сохраненные в экземплярном DB.

Формальныепараметры

Фактическиепараметры

Старт

INT

IN

IN

Целое (16бит): пуск

Скорость

INT

Целое (16бит): скорость

История DT IN_OUT

Время_работы TIME IN_OUT

Дата и время (48 бит):

 

 

 

 

 

указательнаадресистории

 

 

 

 

 

Время (32 бита): времяработы

FB20: Двигатель

DB202:Двигатель _2

Переменные, имеющие тип данных FB

Если ваша пользовательская программа структурирована таким образом, что некоторый FB содержит вызовы других, уже существующих функциональных блоков, вы можете включить FB, подлежащие вызову, в таблицу писания переменных вызывающего блока в качестве статических переменных, имеющих тип данных FB. Этот способ позволяет вам "вкладывать" переменные и концентрировать экземпляры данных в одном блоке данных (мультиэкземплярном).

НАЗНАЧЕНИЕ ФАКТИЧЕСКИХ ПАРАМЕТРОВ ФОРМАЛЬНЫМ ПАРАМЕТРАМ

В STEP 7 в общем случае нет необходимости назначать фактические параметры формальным параметрам FB. Однако имеется исключение из этого правила. Фактические параметры должны быть назначены в следующих ситуациях:

для параметра вход/выход (in/out) сложного типа данных (например, STRING, ARRAY или DATE_AND_TIME);

19

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]