Организационный блок прерывания статуса (OB55)
Организационный блок прерываний статуса ОВ 55 доступен только для CPU с PDV1.
Операционная система CPU вызывает ОВ55, если выполняется прерывание статуса от слота с ведомым устройством DPV1. Это происходит в случаях, когда компонент (модуль или стойка) из ведомых устройств DPV1 меняет свой рабочий режим, например, переходит от режима RUN к режиму STOP. Для получения подробной информации о событиях, вызывающих прерывание статуса, обратитесь к документации на DPV1 устройство.
Таблица описывает временные переменные (TEMP) OB прерывания статуса. В качестве имен переменных по умолчанию взяты
имена OB55.
Переменная
|
Тип
|
Описание
|
OB55_EV_CLASS | BYTE | Класс события и идентификаторы: B#16#11: (входное событие) |
OB55_STRT_INF | BYTE | B#16#55: (требование запуска для OB55) |
OB55_PRIORITY | BYTE | Назначенный класс приоритета: по умолчанию 2 |
OB55_OB_NUMBR | BYTE | Номер OB (55) |
OB55_RESERVED_1 | BYTE | Резерв |
OB55_IO_FLAG | BYTE | Входной модуль: B#16#54 Выходной модуль: B#16#55 |
OB55_MDL_ADDR | WORD | Логический базовый адрес вызвавшего прерывание компонента (модуля) |
OB55_LEN | BYTE | Размер блока данных |
OB55_TYPE | BYTE | Идентификатор для типа "прерывание статуса" |
OB55_SLOT | BYTE | Номер слота вызвавшего прерывание компонента (модуля) |
OB55_SPEC | BYTE | Спецификатор • Биты 0.1: спецификатор прерывания • Бит 2: Add_Ack (квитирование) • Биты 3.7: Seq.no. (порядковый номер) |
OB55_DATE_TIME | DATE_AND_TIME | Дата и время, когда был вызван OB |
Получить полную дополнительную информацию по сообщениям прерывания, вызвав функцию SFB54 "RALRM" с OB55.
Организационный блок прерывания модификации (OB56)
ОВ прерывания модификации (ОВ56) доступен только для CPU с PDV1.
Операционная система CPU вызывает ОВ56, если выполняется прерывание модификации от слота с ведомым устройством DPV1. Это происходит в случаях, когда меняются параметры для слота ведомого устройства DPV1 (посредством локального или удаленного доступа). Для получения подробной информации о событиях, вызывающих прерывание статуса, обратитесь к документации на DPV1 устройства.
Таблица описывает временные переменные (TEMP) OB прерывания модификации. В качестве имен переменных по умолчанию взяты
имена OB56.
Переменная
|
Тип
|
Описание
|
OB56_EV_CLASS | BYTE | Класс события и идентификаторы: B#16#11: (входное событие) |
OB56_STRT_INF | BYTE | B#16#56: (требование запуска для OB56) |
OB56_PRIORITY | BYTE | Назначенный класс приоритета: по умолчанию 2 |
OB56_OB_NUMBR | BYTE | Номер OB (56) |
OB56_RESERVED_1 | BYTE | Резерв |
OB56_IO_FLAG | BYTE | Входной модуль: B#16#54 Выходной модуль: B#16#55 |
OB56_MDL_ADDR | WORD | Логический базовый адрес вызвавшего прерывание компонента (модуля) |
OB56_LEN | BYTE | Длина блока данных |
OB56_TYPE | BYTE | Идентификатор для типа "прерывание модификаций" |
OB56_SLOT | BYTE | Номер слота вызвавшего прерывание компонента (модуля) |
OB56_SPEC | BYTE | Спецификатор • Биты 0.1: спецификатор прерывания • Бит 2: Add_Ack (квитирование) • Биты 3.7: Seq.no. (порядковый номер) |
OB56_DATE_TIME | DATE_AND_TIME | Дата и время, когда был вызван OB |
Получить полную дополнительную информацию по сообщениям прерывания, вызвав функцию SFB54 "RALRM" с OB56.
Организационный блок прерывания производителя (OB57)
Примечание
ОВ прерывания (ОВ57) доступен только для CPU с PDV1.
Операционная система CPU вызывает ОВ57, если выполняется прерывание, определенное производителем устройства, от слота с ведомым устройством DPV1. Таблица ниже описывает временные переменные (TEMP) OB прерывания, определенного производителем. В качестве имен переменных по умолчанию взяты имена OB57.
Переменная | Тип | Описание |
---|---|---|
OB57_EV_CLASS | BYTE | Класс события и идентификаторы: B#16#11: (входное событие) |
OB57_STRT_INF | BYTE | B#16#57: (требование запуска для OB57) |
OB57_PRIORITY | BYTE | Назначенный класс приоритета: по умолчанию 2 |
OB57_OB_NUMBR | BYTE | Номер OB (57) |
OB57_RESERVED_1 | BYTE | Резерв |
OB57_IO_FLAG | BYTE | Входной модуль: B#16#54 Выходной модуль: B#16#55 |
OB57_MDL_ADDR | WORD | Логический базовый адрес вызвавшего прерывание компонента (модуля) |
OB57_LEN | BYTE | Длина блока данных |
OB57_TYPE | BYTE | Идентификатор для типа "прерывание, определенное производителем" |
OB57_SLOT | BYTE | Номер слота вызвавшего прерывание компонента (модуля) |
OB57_SPEC | BYTE | Спецификатор • Биты 0.1: спецификатор прерывания • Бит 2: Add_Ack (квитирование) • Биты 3.7: Seq.no. (порядковый номер) |
OB57_DATE_TIME | DATE_AND_TIME | Дата и время вызова OB |
Получить дополнительную полную информацию по прерываниям, можно вызвав функцию SFB54 "RALRM" с OB57.
Организационный блок мультипроцессорных прерываний (OB60)
С помощью мультипроцессорного прерывания Вы можете обеспечить синхронную реакцию соответствующих CPU на событие при мультипроцессорной обработке. В отличи от аппаратных прерываний, запускаемых сигнальными модулями, мультипроцессорное прерывание может выдаваться только центральными процессорами.
Принцип действия OB мультипроцессорных прерываний
Мультипроцессорное прерывание инициируется вызовом SFC 35 .MP_ALM. При мультипроцессорной обработке это приводит к синхронизированному старту OB60 на всех установленных CPU данного шинного сегмента, если Вы не заблокировали OB60 (с помощью SFC 39 .DIS_IRT.) или не задержали его (с помощью SFC 41 .DIS_AIRT.). Если Вы не загрузили OB 60 в CPU, то соответствующий CPU немедленно возвращается в последний класс приоритета перед прерыванием и продолжает там обработку программы. В однопроцессорном режиме и при использовании сегментированных стоек OB60 запускается только на том CPU, на котором Вы вызвали SFC35 "MP_ALM".
Когда Ваша программа вызывает SFC 35 .MP_ALM., Вы передаете ей идентификатор задания. Этот идентификатор передается на все. Это позволяет Вам реагировать на конкретное событие. Если ОВ 60 на отдельных CPU запрограммирован по-разному, то время его обработки может оказаться различным. В этом случае CPU возвращаются к прерванному классу приоритета в различные моменты времени. Если следующее мультипроцессорное прерывание выдается одним CPU в то время, как другой еще занят обработкой ОВ 60 предыдущего мультипроцессорного прерывания, то запуска ОВ 60 не происходит ни на запрашивающем, ни на каком другом CPU, принадлежащем данному шинному сегменту. Это иллюстрируется на следующем рисунке на примере двух CPU. Вы извещаетесь о результате с помощью значения вызванной функции SFC35.
Следующая таблица описывает временные (TEMP) переменные OB мультипроцессорных прерываний. В качестве имен переменных взяты имена по умолчанию OB60
Переменная | Тип | Описание |
---|---|---|
OB60_EV_CLASS | BYTE | Класс события и идентификаторы: B#16#11: прерывание активно |
OB60_STRT_INF | BYTE | B#16#61: Мультипроцессорное прерывание запущено собственным CPU B#16#62: Мультипроцессорное прерывание запущено другим CPU |
OB60_PRIORITY | BYTE | Назначенный класс приоритета: по умолчанию 25 |
OB60_OB_NUMBR | BYTE | Номер OB: 60 |
OB60_RESERVED_1 | BYTE | Резерв |
OB60_RESERVED_2 | BYTE | Резерв |
OB60_JOB | INT | Идентификатор задания: входная переменная JOB SFC35 "MP_ALM" |
OB60_RESERVED_3 | INT | Резерв |
OB60_RESERVED_4 | INT | Резерв |
OB60_DATE_TIME | DATE_AND_TIME | Дата и время, когда был вызван OB. |
Организационный блок синхронного циклического прерывания (OB61)
Синхронное циклическое прерывание дает Вам возможность обеспечить синхронный запуск программ в цикле DP-периферии. ОВ61 выполняет роль интерфейсного ОВ для синхронного циклического прерывания TSAL1. Можно устанавить приоритетный класс для ОВ1 с номерами 0 (ОВ не выбран) и от 2 до 26.
Таблица ниже описывает переменные данного OB. В качестве имен переменных взяты имена по умолчанию OB61
Переменная | Тип | Описание |
---|---|---|
OB61_EV_CLASS | BYTE | Класс события и идентификаторы: B#16#11: прерывание активно |
OB61_STRT_INF | BYTE | B#16#64: требование запуска для OB61 |
OB61_PRIORITY | BYTE | Назначенный класс приоритета: по умолчанию 25 |
OB61_OB_NUMBR | BYTE | Номер OB: 61 |
OB61_RESERVED_1 | BYTE | Резерв |
OB61_RESERVED_2 | BYTE | Резерв |
OB61_GC_VIOL | BOOL | GC-нарушение |
OB61_FIRST | BOOL | Первый вызов после запуска или после режима STOP |
OB61_MISSED_EXEC | BYTE | Число невыполненных запусков OB61 после последнего выполнения ОВ61 |
OB61_DP_ID | BYTE | Идентификатор (ID) ведущего DP-устройства |
OB61_RESERVED_3 | BYTE | Резерв |
OB61_RESERVED_4 | BYTE | Резерв |
OB61_RESERVED_5 | WORD | Резерв |
OB61_DATE_TIME | DATE_AND_TIME | Дата и время вызова OB |
Организационный блок ошибок резервирования входов/выходов (OB70)
OB ошибок резервирования входов/выходов (OB70) может использоваться только в H CPU.
Операционная система H CPU вызывает OB70, когда имеет место потеря резервирования в PROFIBUS DP (например, когда происходит отказ шины активного ведущие DP-устройства или ошибка в интерфейсном модуле ведомых DP-устройств) или когда переключается активное ведущее устройство DP ведомых DP-устройств с подключенными входами/выходами. Если OB70 не запрограммирован и происходит стартовое событие, то CPU не переходит в состояние STOP. Если OB70 загружен и H-система находится в резервном режиме, то OB70 выполняется в обоих CPU. H-система остается в резервном режиме.
Таблица содержит временные переменные для Организационного блока ошибок входов/выходов. Выбранные имена переменных являются заданными по умолчанию именами OB70
Переменная | Тип | Характеристика |
---|---|---|
OB70_EV_CLASS | BYTE | Класс события и идентификаторы: B#16#78: наступающее событие B#16#79: уходящее событие |
OB70_FLT_ID | BYTE | Код ошибки (возможные значения): B#16#A2, B#16#A3 |
OB70_PRIORITY | BYTE | Назначенный класс приоритета: по умолчанию 25 |
OB70_OB_NUMBR | BYTE | Номер OB (70) |
OB70_INFO_1 | WORD | Зависит от кода ошибки |
OB70_INFO_2 | WORD | Зависит от кода ошибки |
OB70_INFO_3 | WORD | Зависит от кода ошибки |
OB70_RESERVED_1 | WORD | Резерв |
OB80_DATE_TIME | DATE_AND_TIME | Дата и время, когда вызывался OB |
Следующая таблица показывает, какое событие привело к запуску OB70
OB70_FLT_ID | Стартовое событие OB70 |
---|---|
B#16#A0 | Переключился резервный интерфейсный модуль DP вследствие отказа активного ведомые DP-устройства. |
B#16#A1 | Переключился резервный интерфейсный модуль DP вследствие отказа активного ведущие DP-устройства. |
B#16#A2 | Отказ пассивного ведущиго DP-устройства. |
B#16#A3 | Отказ пассивного ведомого DP-устройства. |
Переменные, зависящие от кода ошибки, имеют следующее значение:
Коды ошибки B#16#A2 | ||
OB70_INFO_1: | Логический базовый адрес неисправного ведущие DP-устройства | |
OB70_INFO_2: | Резерв | |
OB70_INFO_3: | Биты с 0 по 7: Биты с 8 по 15: |
Резерв Идентификатор master-системы DP неисправного ведущие DP-устройства |
Коды ошибки B#16#A3 | ||
OB70_INFO_1: | Логический базовый адрес ведущие DP-устройства | |
OB70_INFO_2: | Биты с 0 по 14: Бит 15: |
Неисправное ведомое DP-устройство: Логический базовый адрес, если используется slave-устройство S7, либо диагностический адрес, если используется стандартное ведомое DP-устройство. Идентификация входов/выходов |
OB70_INFO_3: | Биты с 0 по 7: Биты с 8 по 15: |
Номер станции DP Идентификатор master-системы DP |
Организационный блок ошибок резервирования CPU (OB72)
OB ошибок резервирования CPU (OB72) существует только у H CPU.
Операционная система H CPU вызывает OB72, когда происходит одно из следующих событий
- Потеря резервирования CPU
- Переключение на резервное ведущее устройство
- Ошибка синхронизации
- Ошибка в модуле синхронизации
- Прерывание обновления
- Ошибка сравнения (например, RAM, PIQ)
OB72 выполняется всеми CPU, которые находятся в режиме RUN или STARTUP, после соответствующего стартового события.
Следующая таблица содержит временные переменные OB ошибок резервирования CPU. Заданные по умолчанию имена OB72 были использованы как имена переменных.
Переменная | Тип | Характеристика |
---|---|---|
OB72_EV_CLASS | BYTE | Класс события и идентификаторы: B#16#73, B#16#75, B#16#79, B#16#78 |
OB72_FLT_ID | BYTE | Код ошибки (возможные значения: B#16#01, B#16#02, B#16#03, B#16#20, B#16#21, B#16#22, B#16#23, B#16#31, B#16#33, B#16#34, B#16#35, B#16#40, B#16#41, B#16#42, B#16#43, B#16#44, B#16#50, B#16#51, B#16#52, B#16#53, B#16#54, B#16#55, B#16#56, B#16#C1) |
OB72_PRIORITY | BYTE | Назначенный класс приоритета: значение по умолчанию 28 |
OB72_OB_NUMBR | BYTE | Номер OB (72) |
OB72_INFO_1 | WORD | (Не имеет значения для пользователя) |
OB72_INFO_2 | WORD | (Не имеет значения для пользователя) |
OB72_INFO_3 | WORD | (Не имеет значения для пользователя) |
OB72_RESERVED_1 | WORD | Резерв |
OB82_DATE_TIME | DATE_AND_TIME | Дата и время, когда вызывался OB |
Следующая таблица показывает, какое событие привело к запуску OB72.
OB72_FLT_ID | Стартовое событие OB72 |
---|---|
B#16#01 | Потеря резервирования (1 из 2) вследствие запуска CPU |
B#16#02 | Потеря резервирования (1 из 2) вследствие перехода в STOP в резерве, запущенном пользователем |
B#16#03 | H-система (1 из 2) переключилась в резервный режим |
B#16#20 | Ошибка при сравнении RAM |
B#16#21 | Ошибка при сравнении выходного значения образа процесса |
B#16#22 | Ошибка при сравнении битов памяти, таймеров или счетчиков |
B#16#31 | Переключение на резервное ведущее устройство вследствие отказа master-устройства |
B#16#33 | Переключение на резервное ведущее устройство вследствие вмешательства оператора |
B#16#34 | Переключение на резервное ведущее устройство вследствие проблемы соединения |
B#16#35 | Переключение на резервное ведущее устройство, запущенное SFC90 "H_CTRL". |
B#16#40 | Ошибка синхронизации в программе пользователя из-за истекшего времени ожидания |
B#16#41 | Ошибка синхронизации в программе пользователя из-за ожидания в различных точках синхронизации |
B#16#42 | Ошибка синхронизации в операционной системе из-за ожидания в различных точках синхронизации |
B#16#43 | Ошибка синхронизации в операционной системе из-за истекшего времени ожидания |
B#16#50 | Нет модуля синхронизации (SYNC) |
B#16#51 | Изменение в модуле синхронизации без включения питания |
B#16#52 | Модуль синхронизации удален/вставлен |
B#16#53 | Изменение в модуле синхронизации без сброса |
B#16#54 | Модуль синхронизации: номер стойки назначен дважды |
B#16#55 | Ошибка модуля синхронизации/устранена |
B#16#56 | В модуле синхронизации установлен запрещенный номер стойки |
B#16#C1 | Прерывание обновления |
<-- Предыдущая статья | Следующая статья --> |