Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
STEP7_V53_Programming_r.pdf
Скачиваний:
5
Добавлен:
29.05.2025
Размер:
5.18 Mб
Скачать

Основы проектирования структуры программы

4.2Блоки в программе пользователя

4.2.1Блоки в программе пользователя

Программное обеспечение STEP 7 дает Вам возможность структурировать свою пользовательскую программу, иными словами, разбивать программу на отдельные автономные программные секции. Это дает следующие преимущества:

Такие программы проще для понимания.

Отдельные программные секции могут быть стандартизованы.

Упрощается организация программы.

Легче производить модификацию программы.

Отладка упрощается, так как можно тестировать отдельные секции.

Значительно упрощается прием системы в эксплуатацию.

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

4-2

Programming with STEP 7 V5.3

A5E00261405-01

Основы проектирования структуры программы

Типы блоков

Имеется несколько различных типов боков, которые Вы можете использовать внутри пользовательской программы S7:

Блок

Краткое описание функции

См. Также

Организационные блоки

OB определяют структуру программы

Организационные

(OB)

пользователя.

блоки и структура

 

 

программы

Системные

SFB и SFC встроены в CPU S7 и

Системные

функциональные блоки

обеспечивают Вам доступ ко всем важным

функциональные

(SFB) и системные

системным функциям.

блоки (SFB) и

функции (SFC)

 

системные функции

 

 

(SFC)

Функциональные блоки

FB – это блоки с "памятью", которые

Функциональные

(FB)

Вы можете программировать сами.

блоки (FB)

Функции (FC)

FC содержат программы для часто

Функции (FC)

 

встречающихся функций.

 

Экземплярные блоки

Экземплярные DB связываются с

Экземплярные блоки

данных

блоком, когда вызывается FB/SFB.

данных

(экземплярные DB)

Они создаются автоматически при

 

 

компиляции.

 

Блоки данных (DB)

DB – это области данных для

Глобальные блоки

 

хранения данных пользователя. Кроме

данных (DB)

 

данных, соответствующих

 

 

функциональному блоку, могут быть

 

 

определены также данные, совместно

 

 

используемые любыми блоками.

 

OB, FB, SFB, FC и SFC содержат секции программы и поэтому известны также как логические блоки. Допустимое количество блоков каждого типа и допустимая длина блоков зависят от CPU.

4.2.2Организационные блоки и структура программы

Организационные блоки (ОВ) образуют интерфейс между операционной системой и программой пользователя. Они вызываются операционной системой и управляют циклическим и по прерываниям исполнением программы, а также запуском программируемого логического контроллера. Они также обрабатывают реакцию на ошибки. Программируя организационные блоки, Вы определяете реакцию CPU.

Приоритет организационного блока

Организационные блоки определяют порядок, в котором исполняются отдельные программные секции. Исполнение ОВ может быть прервано вызовом другого ОВ. Какому ОВ разрешается прервать другой ОВ, зависит от его приоритета. ОВ с более высоким приоритетом могут прерывать ОВ с более низким приоритетом. Фоновый ОВ имеет самый низкий приоритет.

Типы прерываний и классы приоритета

События, которые приводят к вызову ОВ, известны как прерывания. Следующая таблица показывает типы прерываний в STEP 7 и приоритеты соответствующих им организационных блоков. Не все перечисленные

Programming with STEP 7 V5.3

4-3

A5E00261405-01

Основы проектирования структуры программы

организационные блоки и их классы приоритета доступны во всех CPU S7 (см. " S7-300 Programmable Controller, Hardware and Installation Manual [Программируемый контроллер S7-300. Руководство по аппаратному обеспечению и монтажу]" и "S7-400, M7-400 Programmable Controllers Module Specifications Reference Manual [Программируемые контроллеры S7-400, M7400. Спецификации модулей. Справочное руководство]").

Тип прерывания

Организационный блок

Класс приоритета

См. также

 

 

(по умолчанию)

 

Главный

OB1

1

Организационный блок для

программный цикл

 

 

циклической обработки

 

 

 

программы (OB1)

Прерывания по

OB10 − OB17

2

Организационные блоки

времени суток

 

 

прерываний по времени

 

 

 

(OB10 − OB17)

Прерывания с

OB20

3

Организационные блоки

задержкой

OB21

4

прерываний с задержкой

 

OB22

5

(OB20 − OB23)

 

 

 

OB23

6

 

Циклические

OB30

7

Организационные блоки

прерывания

OB31

8

циклических прерываний

 

OB32

9

(OB30 − OB38)

 

 

 

OB33

10

 

 

OB34

11

 

 

OB35

12

 

 

OB36

13

 

 

OB37

14

 

 

OB38

15

 

Аппаратные

OB40

16

Организационные блоки

прерывания

OB41

17

аппаратных прерываний

 

OB42

18

(OB40 − OB47)

 

 

 

OB43

19

 

 

OB44

20

 

 

OB45

21

 

 

OB46

22

 

 

OB47

23

 

Мультипроцессор

OB60

25

Многопроцессорный режим

ное прерывание

Многопроцессорный

 

Синхронная работа

 

режим

 

нескольких CPU

Ошибки

OB70 Ошибка

25

Организационные блоки

резервирования

резервирования

 

обработки ошибок (OB70 −

 

ввода/вывода (только в

28

OB87 / OB121 − OB122)

 

H-системах)

 

 

 

OB72 Ошибка

 

 

 

резервирования CPU

 

 

 

(только в H-системах)

 

 

 

 

 

 

4-4

Programming with STEP 7 V5.3

A5E00261405-01

Основы проектирования структуры программы

Тип прерывания

Организационный блок

Класс приоритета

См. также

 

 

(по умолчанию)

 

Асинхронные

OB80 Временная ошибка

26

Организационные блоки

ошибки

OB81 Ошибка по

(или 28, если ОВ

обработки ошибок (OB70 −

 

питанию

асинхронных

OB87 / OB121 − OB122)

 

OB82 Диагностическое

ошибок существует

 

 

прерывание

в программе

 

 

OB83 Ошибка

запуска)

 

 

 

 

 

установки/удаления

 

 

 

модуля

 

 

 

OB84 Аппаратная

 

 

 

неисправность CPU

 

 

 

OB85 Ошибка класса

 

 

 

приоритета

 

 

 

OB86 Неисправность

 

 

 

стойки

 

 

 

OB87 Ошибка связи

 

 

Фоновый цикл

OB90

29 1)

Фоновый организационный

 

 

 

блок (OB90)

Запуск

OB100 Теплый рестарт

27

Организационные блоки

 

OB101 Горячий рестарт

27

запуска

 

OB102 Холодный

27

(OB100/OB101/OB102)

 

 

 

рестарт

 

 

Синхронные

OB121 Ошибка

Приоритет ОВ,

Организационные блоки

ошибки

программирования

вызвавшего ошибку

обработки ошибок (OB70 −

 

OB122 Ошибка доступа

 

OB87 / OB121 − OB122)

1) Класс приоритета 29 соответствует приоритету 0,29. Фоновый цикл имеет более низкий приоритет, чем свободный цикл.

Изменение приоритета

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

Приоритет организационных блоков в CPU S7-300 фиксирован.

У CPU S7-400 (и CPU 318) Вы можете изменять приоритет следующих организационных блоков с помощью STEP 7:

OB10−OB47

OB70 − OB72 (только H-CPU) и OB81 − OB87 в режиме RUN.

Разрешены следующие классы приоритета:

классы приоритета от 2 до 23 для OB10 − OB47

классы приоритета от 2 до 28 для OB70 − OB72

классы приоритета от 24 до 26 для OB81 − OB87. Середина 2001 (Версия 3.0) диапазон расширен: классы приоритета от 2 до 26 могут быть установлены для OB 81 до OB 84 так и для OB 86 и OB 87.

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

Programming with STEP 7 V5.3

4-5

A5E00261405-01

Основы проектирования структуры программы

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

Локальные данные

При создании логических блоков (OB, FC, FB) Вы можете описать временные локальные данные. Область локальных данных в CPU делится между классами приоритета.

В S7-400 Вы можете изменить количество локальных данных, выделенных классу приоритета, в блоке параметров ”priority classes [классы приоритета]" с помощью STEP 7..

Стартовая информация OB

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

Например, ОВ40, ОВ аппаратных прерываний, содержит в своей стартовой информации, адрес модуля, который сгенерировал прерывание.

Отмененные ОВ прерываний

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

В режиме RUN они не могут быть скопированы в вашу пользовательскую программу или связаны с ней.

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

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

Циклическая обработка программы

Циклическая обработка программы – это "стандартный" способ исполнения программы в программируемых логических контроллерах, означающий, что операционная система работает в программном цикле и вызывает организационный блок ОВ1 один раз в каждом цикле главной программы. Поэтому программа пользователя в ОВ1 исполняется циклически.

4-6

Programming with STEP 7 V5.3

A5E00261405-01

Основы проектирования структуры программы

Операционная ситема

Программа пользователя

Включение

 

питания

 

Цикл

Главная

 

программа

Обработка программы, управляемая событиями

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

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

Питание

 

 

включено

Программа

 

 

запуска

 

 

Главная

Цикл

програм-

 

ма

 

Преры-

Прерываю-

<Прерыва-

щая програ-

вание

ние>

 

мма

<Ошибка>

Преры-

Обработка

вание

ошибки

 

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

Programming with STEP 7 V5.3

4-7

A5E00261405-01

Основы проектирования структуры программы

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

Линейное и структурное программирование

Вы можете записать всю свою программу в ОВ1 (линейное программирование). Это целесообразно только в случае простых программ, написанных для CPU S7-300 и требующих мало памяти.

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

Линейное программирование

Структурное программирование

Главная программа

= OB 1

Главная программа

OB 1

FB 1

FC 1

4-8

Programming with STEP 7 V5.3

A5E00261405-01

 

Основы проектирования структуры программы

Иерархия вызовов в программе пользователя

 

Для функционирования программы пользователя составляющие ее блоки

должны вызываться. Это делается с помощью специальных команд STEP 7,

вызовов блоков, которые могут быть запрограммированы и запущены только

в логических блоках.

 

 

 

Порядок и глубина вложения

 

 

 

Порядок и вложение вызовов блоков называется иерархией вызовов.

Количество блоков, которые могут быть вложены друг в друга (глубина

вложения), зависит от конкретного CPU.

 

 

Следующий рисунок иллюстрирует порядок и глубину вложения вызовов

блоков внутри цикла обработки программы.

 

 

Начало

Глубина вложения

 

цикла

 

 

 

OB 1

FB 1

FC 1

 

 

Экземплярный DB 1

 

 

 

FB 2

FB 1

SFC 1

 

ЭкземплярныйDB 2

ЭкземплярныйDB 1

 

 

FC 1

 

DB 1

 

 

 

Существует установленный порядок создания блоков:

Блоки создаются сверху вниз, то есть Вы начинаете с верхнего ряда блоков.

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

Последним создается блок OB1.

Применение этих правил на практике для приведенного на рисунке примера дает следующую последовательность создания блоков:

FC1 > FB1 + экземплярный DB1 > DB1 > SFC1 > FB2 +

экземплярный DB2 > OB1

Замечание

Если глубина вложения слишком велика (слишком много уровней), то стек локальных данных может переполниться (см. также Стек локальных данных).

Programming with STEP 7 V5.3

4-9

A5E00261405-01

Основы проектирования структуры программы

Вызовы блоков

На следующем рисунке показана последовательность вызова блоков внутри программы пользователя. Программа вызывает второй блок, команды которого затем полностью выполняются. Как только второй, или вызываемый, блок выполнен, исполнение прерванного блока, который произвел вызов, возобновляется с команды, следующей за вызовом блока.

Вызывающий блок

Вызываемый блок

(OB, FB, FC)

(FB, FC, SFB или SFC)

Исполнение

 

программы

 

 

Исполнение

Команда, вызывающая

программы

 

другой блок

 

Конец блока

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

Указание

Выходные параметры должны быть описаны для каждого вызова блока.

Если Вы хотите инициализировать экземпляры этого SFB после холодного рестарта, Вы должны вызвать соответствующие экземпляры этого SFB с РТ=0 мс через ОВ100. Вы можете это сделать, например, выполнив программу инициализации в блоках, содержащих экземпляры этого SFB.

4-10

Programming with STEP 7 V5.3

A5E00261405-01