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
реклама

 

Обзор организационных блоков (OB)

Организационные блоки образуют интерфейс между операционной системой CPU и программой пользователя. OB используются для исполнения определенных разделов программы:

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

 

Организационный блок циклического выполнения программы (OB1)

Операционная система CPU S7 исполняет OB1 непрерывно. Когда OB1 исполнен, операционная система начинает его обработку вновь. Циклическая обработка OB начинается по окончании стадии запуска. Вы можете вызывать в OB1 функциональные блоки (FB, SFB) или функции (FC, SFC).

OB1 имеет самый низкий приоритет среди всех OB, время выполнения которых контролируется, иными словами, все остальные OB, кроме OB90, могут прерывать выполнение OB1. Операционная система вызывает OB1 при следующих событиях:
1. Завершение запуска     2.Конец обработки OB 1 (предыдущего цикла)

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

S7 осуществляет контроль максимальной длительности цикла сканирования, чем гарантируется максимальное время реакции. Значение максимальной длительности цикла сканирования установлено по умолчанию на 150 мс. Вы можете установить новое значение или перезапустить контроль времени в любой точке Вашей программы при помощи SFC43 "RE_TRIGR". Если время выполнения программы превышает максимальное время цикла OB 1, то операционная система вызывает OB 80 (OB ошибок времени); если OB 80 не запрограммирован, то CPU переходит в состояние STOP. Кроме контроля максимального времени цикла может быть гарантировано также минимальное время цикла сканирования. Операционная система задержит следующий запуск нового цикла (запись таблицы выходов образа процесса в модули вывода), пока не будет обеспечено минимальное время сканирования.

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

Следующая таблица описывает временные переменные (TEMP) для OB1. Имена переменных OB1 заданы по умолчанию.

Переменная
Тип
Описание
OB1_EV_CLASS BYTE Класс события и идентификаторы: B#16#11: OB1 активен
OB1_SCAN_1 BYTE B#16#01: завершение теплого рестарта
B#16#02: завершение горячего рестарта
B#16#03: завершение основного цикла
B#16#04: завершение холодного рестарта
OB1_PRIORITY BYTE Класс приоритета 1
OB1_OB_NUMBR BYTE Номер OB (01)
OB1_RESERVED_1 BYTE Резерв
OB1_RESERVED_2 BYTE Резерв
OB1_PREV_CYCLE INT Длительность предыдущего цикла (мс)
OB1_MIN_CYCLE INT Минимальная длительность цикла (мс) со
времени последнего запуска
OB1_MAX_CYCLE INT Максимальная длительность цикла (мс) со
времени последнего запуска
OB1_DATE_TIME DATE_AND_TIME Дата и время, когда был вызван OB

 

 

Организационные блоки прерываний по времени (OB10 - OB17)

STEP 7 предоставляет в распоряжение до восьми прерываний по времени (OB 10 - OB 17), которые могут запускаться однократно или периодически. Вы можете так параметрировать Ваше CPU при помощи SFC или STEP 7, что эти OB будут обрабатываться со следующими интервалами:

Чтобы запустить прерывание по времени, его необходимо вначале установить, а потом активировать. Существует три следующих способа запуска:

Интервал
Описание
Не активируется Прерывание по времени не исполняется, даже когда оно загружено в CPU. Оно может быть активировано вызовом SFC30.
Активируется только один раз OB прерывания по времени автоматически отменяется после того, как он исполняется однократно в указанное время. Ваша программа может с помощью SFC 28 заново установить прерывание по времени и вновь его активировать через SFC 30.
Активируется периодически Когда происходит прерывание по времени, CPU рассчитывает момент его следующего старта исходя из текущего времени и периода.



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


Прерывания по времени можно запретить или отложить и вновь разрешить с помощью системных функции39 - 42.


 

Условия, влияющие на ОВ прерываний по времени

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

Условие Результат
Программа вызывает SFC29 (CAN_TINT) и отменяет прерывание по времени. Операционная система стирает стартовое событие (дату и время) прерывания по времени. Вам необходимо вновь установить стартовое событие и активировать его прежде, чем OB прерываний по времени вновь можно будет вызвать.
Программа пыталась активировать OB прерывания по времени, который ко времени активации не был загружен в CPU. Операционная система вызывает OB 85. Если OB 85 не был запрограммирован (загружен в CPU), то CPU переводится в состояние STOP.
При синхронизации или коррекции системных часов CPU Вы переставили время вперед и пропустили стартовое событие, т.е. дату или время для OB прерывания по времени. Операционная система вызывает OB 80 и кодирует номер OB прерывания по времени и информацию стартового события в OB80. Операционная система обрабатывает затем OB прерывания по времени один раз независимо от того, сколько раз этот ОВ должен был бы обрабатываться. Информация о стартовом событии OB 80 показывает дату и время, когда OB прерывания по времени в первый раз был пропущен.
При синхронизации или коррекции системных часов CPU Вы перевели время назад так, что стартовое событие, т.е. дата или время для ОВ прерывания по времени повторяется. Если OB прерывания по времени был активирован
до того, как часы были переведены назад, то он не
будет вновь вызываться.
CPU выполняет теплый или холодный
рестарт.
Каждый OB прерывания по времени, который был сконфигурирован через SFC, вновь возвращается к конфигурации, заданной в STEP 7.
OB прерывания по времени еще обрабатывается, когда происходит стартовое событие для следующего интервала. Операционная система вызывает OB 80. Если OB 80 не был запрограммирован, то CPU переходит в состояние STOP. Если OB80 загружен, то сначала исполняются OB80 и OB прерывания по времени, а затем исполняется второе затребованное прерывание по времени.

 

Локальные данные OB прерываний по времени

Следующая таблица описывает временные переменные (TEMP) одного из OB прерываний по времени. В качестве имен переменных выбраны имена по умолчанию OB 10.

Переменная Тип Описание
OB10_EV_CLASS BYTE Класс события и идентификаторы: B#16#11 = прерывание активно
OB10_STRT_INFO BYTE B#16#11: запрос на запуск для OB10
(B#16#12: запрос на запуск для OB11)
....................
....................
(B#16#18: запрос на запуск для OB17)
OB10_PRIORITY BYTE Назначенный класс приоритета; по умолчанию 2
OB10_OB_NUMBR BYTE Номер OB (10 — 17)
OB10_RESERVED_1 BYTE Резерв
OB10_RESERVED_2 BYTE Резерв
OB10_PERIOD_EXE WORD OB обрабатывается с заданными интервалами:
W#16#0000: однократно
W#16#0201: ежеминутно
W#16#0401: ежечасно
W#16#1001: ежедневно
W#16#1201: еженедельно
W#16#1401: ежемесячно
W#16#1801: ежегодно
OB10_RESERVED_3 INT Резерв
OB10_RESERVED_4 INT Резерв
OB10_DATE_TIME DATE_AND_TIME Дата и время, когда был вызван OB.

 

 

Организационные блоки прерываний с задержкой (OB20 — OB23)

Программируемые контроллеры серии S7 предоставляет в распоряжение до четырех OB (OB 20 — OB 23), которые исполняются после заданной задержки. Каждый OB прерывания с задержкой запускается посредством вызова SFC32 (SRT_DINT). Время задержки является входным параметром SFC. Когда программа вызывает функцию SFC32 (SRT_DINT), то ей передается номер OB, время задержки и индивидуальный код пользователя. Через заданное время задержки стартует соответствующий OB. Имеется возможность отменить обработку прерывания с задержкой, которое еще не стартовало.

Принцип действия

По истечении времени задержки (его значение в миллисекундах передается блоку SFC32 вместе с номером OB) операционная система запускает
соответствующий. Чтобы использовать OB прерываний с задержкой, необходимо выполнить следующие задачи:

OB прерываний с задержкой исполняются только в том случае, когда CPU находится в режиме RUN. Теплый или холодный рестарт стирает любые стартовые события для OB прерываний с задержкой. Если прерывание с задержкой еще не запущено, то для отмены его исполнения можно использовать SFC33 (CAN_DINT).

Время задержки измеряется с точностью 1 мс. Время задержки может быть повторно запущено непосредственно после его окончания. С помощью SFC34 (QRY_DINT) Вы можете опросить состояние прерывания с задержкой. Операционная система вызывает OB асинхронных ошибок, если происходит одно из следующих событий:

Прерывания с задержкой можно запретить или отложить и вновь разрешить с помощью SFC 39 - 42.

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

Таблица описывает временные переменные (TEMP) OB прерывания с задержкой. В качестве имен переменных взяты имена по умолчанию OB20.

Переменная Тип Описание
OB20_EV_CLASS BYTE Класс события и идентификаторы: B#16#11: прерывание активно
OB20_STRT_INF BYTE B#16#21: требование запуска для OB20
(B#16#22: требование запуска для OB21)
(B#16#23: требование запуска для OB22)
(B#16#24: требование запуска для OB23)
OB20_PRIORITY BYTE Назначенный класс приоритета: значения по умолчанию от 3 (OB20) до 6 (OB23)
OB20_OB_NUMBR BYTE Номер OB (20 - 23)
OB20_RESERVED_1 BYTE Резерв
OB20_RESERVED_2 BYTE Резерв
OB20_SIGN WORD Идентификатор пользователя: входной параметр SIGN из вызова SFC32 (SRT_DINT)
OB20_DTIME TIME Истекшая часть времени задержки в мс
OB20_DATE_TIME DATE_AND_TIME Дата и время, когда был вызван OB.

 

 

Организационные блоки циклических прерываний(OB30 - OB38)

Программируемые контроллеры SIMATIC S7 предоставляют в распоряжение до девяти OB циклических прерываний (OB30 - OB38), которые прерывают Вашу программу через фиксированные интервалы времени. Таблица показывает установленные по умолчанию интервалы времени и классы приоритета для OB циклических прерываний.

Номер OB Интервал по умолчанию Класс приоритета по умолчанию
OB 30
5c
7
OB 31
2c
8
OB 32
1c
9
OB 33
500мс
10
OB 34
200мс
11
OB 35
100мс
12
OB 36
50мс
13
OB 37
20мс
14
OB 38
10мс
15

 

Примечание:
Нужно позаботиться о том, чтобы время работы Организационных блоков циклических прерываний было значительно меньше интервала времени, через который он вызывается. Если OB циклических прерываний еще не закончен, а в следствие истечения интервала времени должен обрабатываться вновь, запускается OB ошибок времени (OB 80). Циклическое прерывание, вызвавшее ошибку, будет отработано позднее.

 

Диапазон значений для периодичности, классов приоритета и фазового сдвига приводятся в технических данных контроллерах. Эти настройки можно изменить с помощью программы STEP7.

Следующая таблица временные переменные (TEMP) одного из OB циклических прерываний. В качестве имен переменных по умолчанию взяты
имена OB35.

Переменная Тип Описание
OB35_EV_CLASS BYTE Класс события и идентификаторы: B#16#11: прерывание активно
OB35_STRT_INF BYTE (B#16#31 : требование запуска для OB30)
...............
B#16#36 : требование запуска для OB35
................
(B#16#39 : требование запуска для OB38)
OB35_PRIORITY BYTE Назначенный класс приоритета: по умолчанию от 7 (OB30) до 15 (OB38)
OB35_OB_NUMBR BYTE Номер OB (30 - 38)
OB35_RESERVED_1 BYTE Резерв
OB35_RESERVED_2 BYTE Резерв
OB35_PHASE_OFFSET WORD Фазовый сдвиг [мс]
OB35_RESERVED_3 INT Резерв
OB35_EXC_FREQ INT Интервал в миллисекундах
OB20_DATE_TIME DATE_AND_TIME Дата и время, когда был вызван OB.

 

 

 

Организационные блоки аппаратных прерываний (OB40 - OB47)

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

Для CP и FM эти параметры назначаются с помощью их собственного программного обеспечения Классы приоритета для отдельных OB аппаратных прерываний устанавливаются с помощью STEP 7.

После запуска модулем аппаратного прерывания операционная система идентифицирует слот и соответствующий ОВ аппаратных прерываний. Если этот OB имеет более высокий приоритет, чем активный в данный момент класс приоритета, то он запускается. Соответствующее каналу квитирование выполняется после завершения этого OB аппаратных прерываний. Если в промежутке времени между идентификацией и квитированием аппаратного прерывания на том же самом модуле возникает еще одно событие, которое вызывает аппаратное прерывание, то:

 

Если аппаратное прерывание запускается, а его OB в данный момент активен из-за аппаратного прерывания из другого модуля, то новый запрос
регистрируется, а ОВ обрабатывается когда он будет свободен (только на S7-400). В случае S7-300 аппаратное прерывание теряется, если событие, вызывающее прерывание, не сохранилось после квитирования. Аппаратные прерывания можно запретить или отложить и вновь разрешить с помощью SFC 39 - 42.

Вы можете назначать параметры аппаратным прерываниям модуля не только при помощи STEP 7, но и при помощи системных функций SFC 55 - 57.

таблица описывает временные переменные (TEMP) одного из OB аппаратных прерывания. В качестве имен переменных выбраны имена по умолчанию OB40.

Переменная Тип Описание
OB40_EV_CLASS BYTE Класс события и идентификаторы: B#16#11: прерывание активно
OB40_STRT_INF BYTE B#16#41: прерывание через канал прерывания 1
B#16#42: прерывание через канал прерывания 2 (только для S7-400)
B#16#43: прерывание через канал прерывания 3 (только для S7-400)
B#16#44: прерывание через канал прерывания 4 (только для S7-400)
OB40_PRIORITY BYTE Назначенный класс приоритета: по умолчанию от 16 (OB40) до 23 (OB47)
OB40_OB_NUMBR BYTE Номер OB (40 - 47)
OB40_RESERVED_1 BYTE Резерв
OB40_IO_FLAG BYTE Модуль ввода: B#16#54
Модуль вывода: B#16#55
OB40_MDL_ADDR WORD Логический базовый адрес модуля, который запустил прерывание
OB40_POINT_ADDR DWORD Для цифровых модулей: битовый массив с состояниями входов на модуле (бит 0 соответствует первому входу) Для аналоговых модулей (CP или FM): состояние прерывания модуля (для пользователя значения не имеет)
OB20_DATE_TIME DATE_AND_TIME Дата и время, когда был вызван OB.
    Следующая статья-->
сделано djoni политика конфидициальности Rambler's Top100