Организационные блоки запуска (OB100, OB101 и OB102)
Типы запуска
Различают следующие типы запуска:
- Горячий рестарт (нет у S7-300 и S7-400H)
- Теплый рестарт
- Холодный рестарт
В следующей таблице можно увидеть, какой OB вызывается операционной системой во время запуска.
Тип запуска | Соответствующий OB |
---|---|
Горячий рестарт | OB101 |
Теплый рестарт | OB100 |
Холодный рестарт | OB102 |
Более подробную информацию о типах запуска можно прочесть в руководстве "Программирование и конфигурирование аппаратных средств с помощью STEP 7" и "S7-400H Programmable Controller". к сожалению эти разделы я пока еще не представил, но для начальных знаний и понимания написанной здесь информации Вам должно хватить.
Стартовые события для запуска
CPU выполняет запуск в следующих случаях:
- после включения питания
- всякий раз, когда Вы переводите переключатель режимов работы из STOP в RUN-P
- после запроса, использующего коммуникационную функцию (посредством команды меню из устройства программирования или вызова коммуникационных функциональных блоков 19 "START" или 21 "RESUME" в другом CPU)
- синхронизация в многопроцессорном режиме
- в H-системе после соединения (только в резервном CPU).
В зависимости от стартового события, конкретного CPU и его параметров вызывается соответствующий OB запуска (OB100, OB101 или OB102). Посредством подходящего программирования Вы можете настраивать определенные параметры Вашей циклической программы (исключение: в H-системе, когда подключен резервный CPU, в резервном CPU имеет место запуск, но OB запуска не вызывается).
Локальные данные для OB запуска
Следующая таблица описывает временные (TEMP) переменные для стартовых OB. Имена переменных являются заданными по умолчанию именами OB100.
Переменная | Тип | Характеристика |
---|---|---|
OB10x_EV_CLASS | BYTE | Класс события и идентификаторы: B#16#13: активный |
OB10x_STRTUP | BYTE | Запрос запуска: B#16#81: Ручной теплый рестарт B#16#82: Автоматический теплый рестарт B#16#83: Запрос ручного горячего рестарта B#16#84: Запрос автоматического горячего рестарта B#16#85: Запрос ручного холодного рестарта B#16#86: Запрос автоматического холодного рестарта B#16#87: Главный: Запрос ручного холодного рестарта B#16#88: Главный: Запрос автоматического холодного рестарта B#16#8A: Главный: Запрос ручного теплого рестарта B#16#8B: Главный: Запрос автоматического теплого рестарта B#16#8C: Резервный: Запрос ручного рестарта B#16#8D: Резервный: Запрос автоматического рестарта |
OB10x_PRIORITY | BYTE | Класс приоритета: 27 |
OB10x_OB_NUMBR | BYTE | Номер OB (100, 101 или 102) |
OB10x_RESERVED_1 | BYTE | Резерв |
OB10x_RESERVED_2 | BYTE | Резерв |
OB10x_STOP | WORD | Номер события, вызвавшего останов CPU |
OB10x_STRT_INFO | DWORD | Дополнительная информация о текущем запуске |
OB10x_DATE_TIME | DATE_AND_TIME | Дата и время дня, когда вызывался OB |
переменные OB100_STR_INFO и OB101_STR_INFO.
№ бита | Значение | Возможные двоичные значения | Объяснение |
---|---|---|---|
31 - 24 | Стартовая информация |
0000 xxxx 0100 xxxx 1000 xxxx 0001 xxxx 0010 xxxx xxxx xxx0 xxxx xxx1 xxxx xx0x xxxx xx1x xxxx x0xx xxxx x1xx xxxx 0xxx xxxx 1xxx |
Номер стойки 0 (только H CPU) Номер стойки 1 (только H CPU) Номер стойки 2 (только H CPU) Многопроцессорный режим (только S7-400) Работа более одного CPU в сегментированной стойке (только S7-400) Нет различия между ожидаемой и фактической конфигурацией (только S7-300) Есть различие между ожидаемой и фактической конфигурацией (только S7-300) Нет различия между ожидаемой и фактической конфигурацией Есть различие между ожидаемой и фактической конфигурацией Не H CPU H CPU Часы для отметки времени при последнем включении питания без резервного батарейно гопитания Часы для отметки времени при последнем включении питания с резервным батарейным питанием |
23 - 16 | Запуск только что завершился | 0000 0001 0000 0011 0000 0100 0000 0101 0000 0011 0000 1000 0000 1010 0000 1011 0000 1100 0001 0000 0001 0001 0001 0011 0001 0100 0010 0000 0010 0001 0010 0011 0010 0100 1010 0000 |
Теплый рестарт в многопроцессорной системе обработки без изменения установки в CPU согласно назначению параметров (только S7-400) Рестарт (теплый), запущенный с помощью переключателя режимов работы Рестарт (теплый), запущенный командой через MPI Холодный рестарт в многопроцессорной системе обработки без изменения установки в CPU согласно назначению параметров (только S7-400) Холодный рестарт, запущенный с помощью переключателя режимов работы Холодный рестарт, запущенный командой через MPI Горячий рестарт в многопроцессорной системе обработки без изменения установки в CPU согласно назначению параметров (только S7-400) Горячий рестарт, запущенный с помощью переключателя режимов работы (только S7-400) Горячий рестарт, запущенный командой через MPI (только S7-400) Автоматический рестарт (теплый) после включения питания при наличии резервного батарейного питания Автоматический холодный рестарт после включения питания при наличии резервного батарейного питания Рестарт (теплый), запущенный с помощью переключателя режимов работы; последнее включение питания при наличии резервного батарейного питания Рестарт (теплый), запущенный командой через MPI; последнее включение питания при наличии резервного батарейного питания Автоматический рестарт (теплый) после включения питания при наличии резервного батарейного питания (со сбросом памяти системой) Автоматический холодный рестарт после включения питания при наличии резервного батарейного питания (со сбросом памяти системой) Рестарт (теплый), запущенный с помощью переключателя режимов работы; последнее включение питания без резервного батарейного питания Рестарт (теплый), запущенный командой через MPI; последнее включение питания без резервного батарейного питания Автоматический горячий рестарт после включения питания при наличии резервного батарейного питания согласно назначению параметров (только S7-400) |
15 - 12 | Допустимость автоматического запуска | 0000 0001 0111 1111 |
Автоматический запуск запрещен, требуется сброс памяти Автоматический запуск запрещен, необходимы изменения параметров и т.д. Автоматический запуск (теплый) разрешен Автоматический запуск (теплый/горячий) разрешен (только S7-400) |
11 - 8 | Допустимость ручного запуска | 0000 0001 0111 1111 |
Запуск запрещен, запрошен сброс памяти Запуск запрещен, запрошены изменения параметров и т.д. Запуск (теплый) разрешен Запуск (теплый/горячий) разрешен (только S7-400) |
7 - 0 | Последнее допустимое вмешательство или установка автоматического запуска при включении питания | 0000 0000 0000 0001 0000 0011 0000 0100 0000 1010 0000 1011 0000 1100 0001 0000 0001 0011 0001 0100 0010 0000 0010 0011 0010 0100 1010 0000 |
Нет запуска Теплый рестарт в многопроцессорной системе без изменения установки в CPU согласно назначению параметров (только S7-400) Рестарт (теплый), запущенный с помощью переключателя Рестарт (теплый), запущенный командой через MPI Горячий рестарт в многопроцессорной системе без изменения установки в CPU согласно назначению параметров (только S7-400) Горячий рестарт, запущенный с помощью переключателя режимов работы (только S7-400) Горячий рестарт, запущенный командой через MPI (только S7-400) Автоматический рестарт (теплый) после включения питания при наличии резервного батарейного питания Рестарт (теплый), запущенный командой через MPI; последнее включение питания при наличии резервного батарейного питания Рестарт (теплый), запущенный командой через MPI; последнее включение питания при наличии резервного батарейного питания Автоматический рестарт (теплый) после включения питания при наличии резервного батарейного питания (со сбросом памяти системой) Рестарт (теплый), запущенный с помощью переключателя режимов работы; последнее включение питания без резервного батарейного питания Рестарт (теплый), запущенный командой через MPI; последнее включение питания без резервного батарейного питания Автоматический горячий рестарт после включения питания при наличии резервного батарейного питания согласно назначению параметров (только S7-400) |
Организационный блок ошибок программирования (OB121)
Операционная система CPU вызывает OB 121 в тех случаях, когда происходит событие, вызванное ошибкой, связанной с обработкой программы.Например, Вы вызвали в своей программе блок, который не был загружен в CPU, то вызывается OB 121.
Принцип работы OB ошибок программирования
OB121 исполняется в том же классе приоритета, что и прерванный блок. Если OB121 не был запрограммирован, то CPU переходит в состояние STOP. S7 предоставляет в распоряжение следующие SFC, с помощью которых Вы можете маскировать и демаскировать стартовые события OB 121 во время обработки Вашей программы:
- SFC36 (MSK_FLT): маскирует определенные коды ошибок
- SFC37 (DMSK_FLT): демаскирует коды ошибок, которые были замаскированы с помощью SFC36
- SFC38 (READ_ERR): читает регистр ошибок
таблица описывает временные (TEMP) переменные ОВ ошибок программирования. В качестве имен переменных взяты имена по умолчанию OB121.
Переменная | Тип | Описание |
---|---|---|
OB121_EV_CLASS | BYTE | Класс события и идентификаторы: B#16#25 |
OB121_SW_FLT | BYTE | Код ошибки : (возможные значения B#16#21, B#16#22, B#16#23, B#16#24, B#16#25, B#16#26, B#16#27, B#16#28, B#16#29, B#16#30, B#16#31, B#16#32, B#16#33, B#16#34, B#16#35, B#16#3A, B#16#3C, #16#3D, B#16#3E или B#16#3F) |
OB121_PRIORITY | BYTE | Класс приоритета: класс приоритета OB, в котором произошла ошибка На резервном CPU H-системы в режиме LINK-UP, STARTUP или UPDATE: Биты 0 - 2: Номер стойки Бит 3: 0=резервный CPU, 1=основной CPU Биты 4 - 7: 1111 |
OB121_OB_NUMBR | BYTE | Номер ОВ (121) |
OB121_BLK_TYPE | BYTE | Тип блока, в котором произошла ошибка (для S7-300 сюда не заносится никакого действительного значения): B#16#88: OB, B#16#8A: DB, B#16#8C: FC, B#16#8E: FB |
OB121_RESERVED_1 | BYTE | резерв |
OB121_FLT_REG | WORD | Источник ошибки (зависит от кода ошибки). Например: Регистр, в котором возникла ошибка преобразования Неправильный адрес (для ошибки чтения/записи) Неправильный номер таймера, счетчика или блока Неправильный идентификатор области памяти |
OB121_BLK_NUM | WORD | Номер блока с командой MC7, вызвавшей ошибку (для S7- 300 сюда не заносится никакого действительного номера) |
OB121_PRG_ADDR | WORD | Относительный адрес команды MC7, вызвавшей ошибку (для S7-300 сюда не заносится никакого действительного значения) |
OB121_DATE_TIME | DATE_AND_TIME | Дата и время, когда был вызван OB |
Переменные, зависящие от кодов ошибок, имеют следующие значения
Код ошибки | ||
---|---|---|
OB121_FLT_REG: | B#16#21: | Ошибка преобразования в BCD-код. OB121_FLT_REG: Идентификатор соответствующего регистра (W#16#0000: аккумулятор 1) |
OB121_FLT_REG: OB121_RESERVED_1: |
B#16#22: B#16#23: B#16#28: B#16#29: |
Ошибка длины области при чтении Ошибка длины области при записи Обращение для чтения к байту, слову или двойному словус указателем, битовый адрес которого не равен нулю. Обращение для записи к байту, слову или двойному слову с указателем, битовый адрес которого не равен нулю. Ошибочный байтовый адрес. Область данных и тип доступа можно считать из OB121_RESERVED_1. Биты 7 - 4 тип доступа. 0: битовый доступ, 1: байтовый доступ, 2: доступ к слову, 3: доступ к двойному слову Биты 3 - 0 область памяти: 0: область периферии, 1: таблица образа процесса на входах, 2: таблица образа процесса на выходах, 3: память с побитовым доступом (меркеры), 4: глобальный DB, 5: экземпляр DB, 6: собственные локальные данные, 7:локальные данные вызывающего блока |
OB121_FLT_REG: | B#16#24: B#16#25: |
Ошибка области при чтении Ошибка области при записи Содержит в младшем байте идентификатор недопустимой области (B#16#86 из области собственных локальных данных) |
OB121_FLT_REG: | B#16#26: B#16#27: |
Ошибка номера таймера Ошибка номера счетчика Недопустимый номер |
OB121_FLT_REG: | B#16#30: B#16#31: B#16#32: B#16#33: |
Попытка записи в защищенный от записи глобальный DB Попытка записи в защищенный от записи экземпляр DB Ошибка номера DB при обращении к глобальному DB Ошибка номера DB при обращении к экземпляру DB Недопустимый номер DB |
OB121_FLT_REG: | B#16#34: B#16#35 B#16#3A: B#16#3C: B#16#3D: B#16#3E: B#16#3F: |
Ошибка номера FC при вызове FC Ошибка номера FB при вызове FB Обращение к незагруженному DB; номер DB находится в допустимом диапазоне Обращение к незагруженной FC; номер FC находится в допустимом диапазоне Обращение к незагруженной SFC; номер SFC лежит в допустимом диапазоне Обращение к незагруженному FB; номер FB лежит в допустимом диапазоне Обращение к незагруженному SFB; номер SFB лежит в допустимом диапазоне Недопустимый номер |
Организационный блок ошибок доступа к периферии(OB122)
Операционная система CPU вызывает OB 122 в случае, если при обращении к данным какого-либо модуля происходит ошибка. Например, CPU распознает ошибку чтения при обращении к данным модуля ввода/вывода, то операционная система вызывает OB122.
Принцип работы OB ошибок доступа к периферии
OB122 исполняется в том же классе приоритета, что и прерванный блок. Если OB 122 не запрограммирован, то CPU переходит из RUN в STOP. S7 предоставляет следующие SFC, с помощью которых можно маскировать и демаскировать стартовые события ОВ 122 во время исполнения Вашей программы (то есть теже что и для OB 121):
- SFC36 (MSK_FLT): маскирует определенные коды ошибок
- SFC37 (DMSK_FLT): демаскирует коды ошибок, замаскированные с помощью SFC36
- SFC38 (READ_ERR): читает регистр ошибок
В таблице описаны временные (TEMP) переменные ОВ ошибок программирования. В качестве имен переменных взяты имена по умолчанию OB122.
Переменная | Тип | Описание |
---|---|---|
OB122_EV_CLASS | BYTE | Класс события и идентификаторы: B#16#29 |
OB122_SW_FLT | BYTE | Код ошибки: B#16#42 Для S7-300 и CPU 417: ошибка доступа к периферии при чтении. Для всех остальных CPU S7-400: ошибка при первом обращении для чтения после появления ошибки B#16#43 Для S7-300 и CPU 417: ошибка доступа к периферии при записи. Для всех остальных CPU S7-400: ошибка при первом обращении для записи после появления ошибки B#16#44 (только для S7-400, кроме CPU 417) ошибка при n-ом обращении для чтения (n > 1) после появления ошибки B#16#45 (только для S7-400, кроме CPU 417) ошибка при n-ом обращении для записи (n > 1) после появления ошибки |
OB122_PRIORITY | BYTE | Класс приоритета: Класс приоритета ОВ, в котором произошла ошибка На резервном CPU H-системы в режиме LINK-UP, STARTUP или UPDATE: Биты 0 - 2: Номер стойки Бит 3: 0=резервный CPU, 1=основной CPU Биты 4 - 7: 1111 |
OB122_OB_NUMBR | BYTE | Номер ОВ (122) |
OB122_BLK_TYPE | BYTE | Тип блока, в котором произошла ошибка (B#16#88: OB, B#16#8A: DB, B#16#8C: FC, B#16#8E: FB) (для S7-300 здесь не вводится никакого действительного значения) |
OB122_MEM_AREA | BYTE | Область памяти и тип доступа: Биты 7 - 4 тип доступа: 0: битовый доступ 1: байтовый доступ 2: доступ к слову 3: доступ к двойному слову Биты 3 - 0 область памяти: 0: область периферии, 1: образ процесса на входах 2: образ процесса на выходах |
OB122_MEM_ADDR | WORD | Адрес в памяти, на котором произошла ошибка |
OB122_BLK_NUM | WORD | Номер блока с командой MC7, вызвавшей ошибку (для S7- 300 здесь не вводится никакого действительного номера) |
OB122_PRG_ADDR | WORD | Относительный адрес команды MC7, вызвавшей ошибку (для S7-300 здесь не вводится никакого действительного значения) |
OB122_DATE_TIME | DATE_AND_TIME | Дата и время, когда был вызван OB |
<-- Предыдущая статья | Следующая статья --> |