Получение прерывания от ведомого DP-устройства посредством SFB54 "RALRM"
Интерфейс SFB54 идентичен FB "RALRM", определенному стандартом "PROFIBUS Guideline PROFIBUS Communication and Proxy Function Blocks according to IEC 61131-3" ("Принципы PROFIBUS в коммуникациях PROFIBUS и Proxy FB в соответствии со стандартом IEC 61131-3").
SFB "RALRM" получает прерывание со всей соответствующей информацией от периферийного модуля (централизованная структура) или от ведомого компонента DP. Эта информация помещается в его выходные параметры.
Информация в выходных параметрах содержит стартовую информацию вызываемого ОВ, также как и информацию источника прерывания.
Вызывайте SFB54 только в OB прерывания, запускаемого операционной системой CPU в результате обработки прерывания ввода-вывода.
Если Вы вызываете SFB 54 "RALRM" в OB, стартовое событие для которого было инициировано не периферией, SFB помещает соответственно "урезанную" информацию в выходные параметры. Обеспечьте использование различных экземпляров DB при вызове SFB 54 "RALRM" в разных OB. Более того, если Вы хотите проверять данные, полученные при вызове SFB 54 для несвязанного OB прерывания, Вы должны использовать отдельный экземпляр DB для OB стартового события.
Вызов SFB 54
Системный блок SFB 54 "RALRM" можно вызывать в трех режимах работы (MODE), показанно в следующей таблице
Режим | SFB 54 |
---|---|
0 | . показывает на компонент, который инициировал прерывание,
в выходном параметре ID и устанавливает выходной параметр NEW в состояние TRUE (ИСТИНА) |
1 | . описывает все выходные параметры, независимо от компонента,
который инициировал прерывание |
2 | . проверяет, действительно ли компонент, определенный во входном
параметре F_ID, инициировал прерывание: • если нет, то параметр NEW = FALSE (ЛОЖЬ); • если да, то параметр NEW = TRUE (ИСТИНА), и другие выходные параметры будут также описаны. |
Параметр | Описание | Тип данных | Область памяти | Характеристика |
---|---|---|---|---|
MODE | INPUT | INT | I, Q, M, D, L, константа | Режим работы |
F_ID | INPUT | DWORD | I, Q, M, D, L, константа | Логический начальный адрес DP- компонента (модуля), инициировавшего прерывание |
MLEN | INPUT | INT | I, Q, M, D, L, константа | Максимальная длина в байтах получаемых данных прерывания |
NEW | OUTPUT | BOOL | I, Q, M, D, L | Новое прерывание было получено |
STATUS | OUTPUT | DWORD | I, Q, M, D, L | Код ошибки от SFB или ведущего DB- устройства |
ID | OUTPUT | DWORD | I, Q, M, D, L | Логический начальный адрес компонента (модуля), инициировавшего прерывание. Старший бит содержит ID для I/O: 0 . для входного адреса, 1 . для выходного адреса |
LEN | OUTPUT | INT | I, Q, M, D, L | Длина в байтах полученных данных прерывания |
TINFO | IN_OUT | INT | I, Q, M, D, L | (информация задания) Область назначения для запуска OB информации управления |
AINFO | IN_OUT | ANY | I, Q, M, D, L | (информация прерывания) Область назначения для информации заголовка и дополнительной информации прерывания. Для AINFO Вы должны обеспечить область с размерами по крайней мере MLEN байтов |
Если Вы выбрали слишком малую область назначения TINFO или AINFO, то не вся информацияЮ, полученная SFB 54, будет записана.
Структура данных для области назначения TINFO
Байты | Значение |
---|---|
0...19 | Стартовая информация OB, из которого производится текущий вызов SFC 54 |
20...27 | Информация управления |
Структура информации управления
Байт № для TINFO | Тип данных | Значение | |||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
20 | BYTE | центральная: | 0 | ||||||||||||||||||
распределенная: | ID ведущего DP-устройства (возможные значения: 0...255) | ||||||||||||||||||||
21 | BYTE | центральная: | Номер модуля стойки (возможные значения: 0...31) | ||||||||||||||||||
распределенная: | Номер DP-станции (возможные значения: 0...127) | ||||||||||||||||||||
22 | BYTE | центральная: | 0 | ||||||||||||||||||
распределенная: |
|
||||||||||||||||||||
23 | BYTE | центральная: | 0 | ||||||||||||||||||
распределенная: |
|
||||||||||||||||||||
24 | BYTE | центральная: | 0 | ||||||||||||||||||
распределенная |
|
||||||||||||||||||||
25 | BYTE | центральная: | 0 | ||||||||||||||||||
распределенная |
|
||||||||||||||||||||
26, 27 | WORD | центральная: | 0 | ||||||||||||||||||
распределенная | ID-номер PROFIBUS |
Структура данных области назначения AINFO
Байт | Значение | |
---|---|---|
0...3 | Информация заголовка: | |
4...223 | Дополнительная информация прерывания: специальные данные модуля для соответствующего прерывания: | |
центральная: | Элементы массива ARRAY[0] ... ARRAY[220] | |
распределенная: | Элементы массива ARRAY[0] ... ARRAY[59] |
Структура данных заголовка Header Information
Байт | Тип данных |
Значение | ||
---|---|---|---|---|
0 | BYTE | Длина информации для соответствующего прерывания в байтах | ||
центральная: | 1...224 | |||
распределенная: | 4...63 | |||
1 | BYTE | центральная: | Резерв | |
распределенная: | ID соответствующего типа прерывания | |||
1: | Прерывание диагностики | |||
2: | Аппаратное прерывание | |||
3: | Прерывание удаления | |||
4: | Прерывание вставки | |||
5: | Прерывание статуса | |||
6: | Прерывание обновления (модификации) | |||
32...126 | Прерывание определенное изготовителем | |||
2 | BYTE | Номер слота компонента, вызвавшего прерывание | ||
3 | BYTE | центральная: | Резерв | |
распределенная: | Спецификация | |||
биты 0 и 1 | 0: больше нет информации 1: входящее событие, прерывание на слоте 2: исходящее событие, прерывание на слоте завершено 3: исходящее событие, прерывание на слоте все еще активно |
|||
бит 2: | Add_Ack (подтверждение) | |||
биты 3...7: | Порядковый номер |
Области назначения TINFO и AINFO
Степень заполнения областей назначения TINFO и AINFO зависит от OB, в котором вызывается функция SFB54. См. представленную ниже таблицу с данными по заполнению областей назначения TINFO и AINFO.
Тип прерывания | ОВ | TINFO информация состояния ОВ | TINFO информация управления | АINFO информация заголовка | АINFO дополнительная информация прерывания | |
---|---|---|---|---|---|---|
Аппаратное прерывание | 4x | Да | Да | Да | центральная: | Нет |
распределенная: | как выдает ведомое DP-устройство | |||||
Прерывание состояния | 55 | Да | Да | Да | Да | |
Прерывание модификации | 56 | Да | Да | Да | Да | |
Прерывание производителя | 57 | Да | Да | Да | Да | |
Прерывание при ошибке избыточности периферии | 70 | Да | Да | Нет | Нет | |
Прерывание диагностики | 82 | Да | Да | Да | центральная: | Запись данных 1 |
распределенная: | как выдает ведомое DP-устройство | |||||
Прерывание удаления/вставки | 83 | Да | Да | Да | центральная: | Нет |
распределенная: | как выдает ведомое DP-устройство | |||||
Прерывание при сбое модуля стойки/ станции | 86 | Да | Да | Нет | Нет | |
... | все прочие ОВ |
Да | Нет | Нет | Нет |
Информация об ошибках
Выходной параметр STATUS содержит информацию об ошибках. Он состоит из 4-хбайтового массива ARRAY[1.4] OF BYTE и имеет структуру, показанную в нижеследующей таблице:
Элемент массива | Имя | Значение |
---|---|---|
STATUS[1] | Function_Num | • B#16#00, если нет ошибки • ID функции из DPV1-PDU: в случае ошибки B#16#80 подключается с функцией OR. Если не используется протокол DPV1, B#16#C0. |
STATUS[2] | Error_Decode | Адрес ID ошибки |
STATUS[3] | Error_Code_1 | ID ошибки |
STATUS[4] | Error_Code_2 | Расширенная информация по ID ошибки производителя |
STATUS[2] может иметь следующие значения:
Error_Decode (B#16#...) | Источник | Значение |
---|---|---|
00..7F | CPU | Нет ошибок или нет предупреждений |
80 | DPV1 | Ошибка согласно IEC 61158-6 |
81...8F | CPU | B#16#8х указывает на ошибку в n-ном параметре вызова SFB |
FE, FF | DP Profile | Profile-ошибка |
STATUS[3] может иметь следующие значения:
Error_Decode (B#16#...) | Error_Code_1 (B#16#...) |
Объяснение в соответствии с DVP1 | Значение |
---|---|---|---|
00 | 00 | нет ошибок, нет предупреждений | |
70 | 00 | резервируется, отбрасывается | начальный вызов: нет передачи записи данных |
01 | резервируется, отбрасывается | начальный вызов: передача записи данных началась | |
02 | резервируется, отбрасывается | промежуточный вызов: ведется передача записи данных | |
80 | 90 | резервируется, проходит | некорректный начальный адрес |
92 | резервируется, проходит | некорректный тип указателя ANY | |
93 | резервируется, проходит | DP-компонент, адресуемый посредством ID или F_ID несконфигурирован | |
96 | CPU | Произошло переключение "ведущий - запасной" в H системе, и ранее активный ведущий CPU перешел в режим STOP. В то же время обрабатывался OB. SFB 54 не может выдать стартовую информацию ОВ, информацию управления, информацию заголовка или инфоромацию дополнительного прерывания. Вы можете считать стартовую информацию ОВ с помощью SFC 6 "RD_SINFO". Кроме того, Вы можете использовать SFC 13 "DPNRM_DG" для синхронного чтения текущей диагностической информации от поврежденного ведомого DP-устройства для блоков OB 4x, 55, 56, 57, 82 и 83 (Адресация из стартовой информации OB). | |
A0 | ошибка чтения | Не подтверждается чтение в модуле | |
A1 | ошибка записи | Не подтверждается запись в модуле | |
A2 | сбой модуля | Ошибка протокола DP в уровне, возможен сбой оборудования | |
A3 | резервируется, проходит | Ошибка протокола DP в DDLM или в уровне интерфейс пользователя - пользователь, возможен сбой оборудования | |
A4 | резервируется, проходит | Сбой в шине связи | |
A5 | резервируется, проходит | - | |
A7 | резервируется, проходит | Ведомое устройство DP или модули заняты (временная ошибка) | |
A8 | несовпадение версии | Ведомое устройство DP или модули сообщают о несовпадении версий | |
A9 | характеристика не поддерживается | Ведомое устройство DP или модули не поддерживают характеристику | |
AA...AF | определяется пользователем | Ведомое устройство DP или модули сообщают об определенной производителем ошибке в приложении. Обратитесь к документации по ведомому DP-устройству или модулям. | |
B0 | неверный индекс | Запись данных, не известная в модуле Запрещенный номер =>256 записи данных | |
B1 | ошибка размера записи | Неправильная длина указана в параметре RECORD ; для SFB54: ошибка длины в AINFO | |
B2 | ошибочный слот | Конфигурированный слот свободен | |
B3 | конфликт типов | Фактический тип модуля не соответствует определению | |
B4 | ошибка области | Ведомое устройство DP или модуль сообщают о доступе к неправильно заданной области | |
B5 | ошибка состояния | Ведомое устройство DP или модуль не в состоянии "Готов" | |
B6 | ошибка доступа | Ведомое устройство DP или модуль не не обеспечивают доступ | |
B7 | ошибка диапазона | Ведомое устройство DP или модуль сообщают о выходе параметра (сигнала) за разрешенный диапазон | |
B8 | ошибка параметра | Ведомое устройство DP или модули сообщают об ошибочном параметре | |
B9 | ошибка типа | Ведомое устройство DP или модули сообщают об ошибочном типе | |
BA...BF | определяется пользователем | Ведомое устройство DP или модуль сообщают об определенной производителем ошибке доступа. Обратитесь к документации по ведомому DP-устройству или модулю. | |
C0 | конфликт, возникший при чтении | В блоке имеется запись данных, однако, нет никаких считанных данных | |
C1 | конфликт, возникший при записи | Данные предыдущего запроса записи к модулю для той же самой записи данных еще не были обработаны модулем | |
C2 | ресурс занят | В настоящее время модуль обрабатывает максимально возможное число заданий для CPU | |
С3 | ресурс недоступен | Требуемый для выполнения задания ресурс занят. | |
С4 | Внутренняя временная ошибка. Задание не может быть выполнено. Повторите задание. При частом появлении подобной ошибки проверьте Вашу установкуна наличие источника электрических помех | ||
С5 | Ведомое устройство DP или модуль не доступен. | ||
С6 | Передача записи данных отменена из-за отмены (потери) приоритетного класса | ||
С7 | Выполнение задания отменено из-за рестарта (теплого рестарта) или холодного рестарта ведущего DP-устройства. | ||
C8...CF | Ведомое устройство DP или модуль сообщают об определенной производителем ошибке доступа к ресурсу. Обратитесь к документации по ведомому DP-устройству или модулю | ||
Dx | определяется пользователем | Параметр ведомого устройства DP. Обратитесь к документации по ведомому DP-устройству. | |
81 | 00...FF | Ошибка при первом вызове параметра (для SFB54: MODE) | |
00 | Неразрешенный рабочий режим | ||
82 | 00...FF | Ошибка при втором вызове параметра | |
88 | Ошибка при восьмом вызове параметра (для SFB54: TINFO) | ||
01 | Синтаксическая ошибка в ID | ||
23 | Превышено количество в группе данных или область назначения слишком мала. | ||
24 | Ошибка диапазона ID | ||
32 | Номер DB/DI за пределами диапазона пользователя. | ||
3A | Номер DB/DI равен NULL для области ID DB/DI или определяемый DB/DI не существует | ||
89 | 00...FF | Ошибка при девятом вызове параметра (для SFB54: AINFO) | |
01 | Синтаксическая ошибка в ID | ||
23 | Превышено количество в группе данных или область назначения слишком мала. | ||
24 | Ошибка диапазона ID | ||
32 | Номер DB/DI за пределами диапазона пользователя. | ||
3A | Номер DB/DI равен NULL для области ID DB/DI или определяемый DB/DI не существует | ||
8A | 00...FF | Ошибка в 10 вызове параметра | |
8F | 00...FF | Ошибка в 15 вызове параметра | |
FE, FF | 00...FF | Profile-ошибка |
При DPV1-ошибке ведущее DP-устройство передает CPU и SFB параметр состояния STATUS[4]. При отсутствии DPV1-ошибки значение параметра равно 0 при следующих исключениях для SFB52:
- STATUS[4] содержит размер области назначения от RECORD, если MLEN больше размера области назначения от RECORD
- STATUS[4] = MLEN, если фактическая длина записи данных меньше MLEN, а MLEN меньше размера области назначения от RECORD.
<-- Предыдущая статья | Следующая статья --> |