Общие сведения о FC
Функциональные блоки (FC) поставляются со стандартным пакетом STEP 7. Следующий список содержит номера блоков при их поставке. При желании их можно изменить.
Номер блока | Название FC |
1 | DP_SEND |
2 | DP_RECV |
3 | DP_DIAG |
4 | DP_CTRL |
5 | AG_SEND |
6 | AG_RECV |
50 | AG_LSEND* |
60 | AG_LRECV* |
Примечание:
Функции FC50 (AG_LSEND) и FC60 (AG_LRECV) могут использоваться с коммуникационным процессором PROFIBUS как альтернатива для FC5 и FC6. Разницы в интерфейсе или функционировании нет. При использовании сети Industrial Ethernet, функциональные блоки AG_LSEND и AG_LRECV могут пересылать большие блоки данных (от 240 байт до 8 килобайт). Если при помощи этих FC вы передаете большие объемы данных по Ind. Ethernet, вы также можете использовать их и для работы с PROFIBUS. Однако для PROFIBUS, при использовании этих же FC, вы сможете передавать блоки не более 240 байт.
Указание адреса CP
При вызове FC, в качестве параметра CPLADDR или LADDR вы должны передать начальный адрес коммуникационного процессора PROFIBUS CP. Начальный адрес коммуникационного процессора вы можете найти в диалоговом окне «Hardware Configuration» (конфигурация аппаратуры) (детальный режим – параметр «Address/Input» (адрес/вход)), появляющимся при установке коммуникационного процессора.
Запрос адреса CP
Вы можете получить начальный адрес модуля,по назначению адреса сигнальным модулям в данном слоте. Информация по аналоговым модулям применима и коммуникационному процессору.
Указание области данных в CPU
При вызове FC, вы передаете начальный адрес передачи и размер передаваемой области CPU. Помните, что размер передаваемой области ограничен 240 байтами.
Возвращаемые параметры FC при инициализации CP
При перезапуске системы или перезапуске коммуникационного процессора (после активации переключателя на модуле), выходным параметрам FC присваиваются следующие значения:
• DONE = 0
• NDR = 0
• ERROR = 0
• STATUS = 8180H или 8181H
Реакция на неправильный адрес
Если S7–CPU не может связаться с коммуникационным процессором по указанному адресу модуля, система реагирует одним из перечисленных ниже образов.
Коммуникационный процессор PROFIBUS CP адресуется SIMATIC S7 PLC как аналоговый модуль. Это означает, что если указан неправильный адрес, сообщение об ошибке не может быть выдано самой функцией.
Причина | Реакция / Код |
Адрес CP указывает на несуществующий модуль CP или дискретный модуль. | CPU остается в режиме STOP по причине системной ошибки. |
Адрес CP указывает на модуль с аналоговыми I/O. | Возможные коды ошибок в переменной STATUS: 8184H - Ошибка системы 80B0H - Модуль не распознает запись данных. 80C0H - Данные не могут быть прочитаны. 80C3H - Ресурсы недоступны (память). 80D2H - Неправильный локальный базовый адрес. |
Функции режима DP для S7-300
Следующие функциональные блоки используются для режимов DP-мастер и DP-ВУ в S7–300
FC | FC может использоваться: |
Назначение | |
DP-мастер | DP-ВУ | ||
DP_SEND | X | X | передача данных |
DP_RECV | X | X | получение данных |
DP_DIAG | X | — | диагностика, запускаемая с DP-мастер |
DP_CTRL | X | — | управляющие функции |
Следующая диаграмма иллюстрирует использование функций DP_SEND и DP_RECV на DP-мастер и DP-ВУ.
Функциональный блок DP_SEND
Функция DP_SEND посылает данные в коммуникационный процессор (PROFIBUS CP). В зависимости от режима процессора, функция выполняет следующие действия:
- В DP-мастер
Блок передает данные из указанной области вывода в коммуникационный процессор для рассылки по распределенной системе I/O. - В DP-ВУ
Блок передает данные из указанной области CPU в буфер PROFIBUS CP для посылки в DP-мастере (ведущий модуль).
Указываемая для пересылки область может быть частью образа процесса, частью меркерной памяти или блока данных. Если вся область данных может быть получена CP, выставляется сигнал об успешном завершении. Помните, что в пользовательской программе функция DP_SEND должна быть вызвана, по крайней мере, один раз для мастера и ВУ.
Интерфейс вызова
Принцип работы блока
Следующая рисунок переходов иллюстрирует обычную последовательность действий при вызове функции DP_SEND из пользовательской программы. Каждый вызов DP_SEND из пользовательской программы приводит к установке коммуникационным процессором возвращаемых параметров DONE, ERROR и STATUS.
Гарантия передачи данных
Диаграмма показывает, что возвращаемые параметры DONE=1, ERROR=0 и STATUS=0000, о правильном функционировании связи между партнерами. В данном контексте это означает следующее: данные текущего вызова DP_SEND приняты PROFIBUS CP. Данные предыдущего вызова DP_SEND переданы по сети PROFIBUS.
- В режиме DP-ВУ для надежной передачи:
Бит 1 в слове DPSTATUS для функции DP_RECV должен быть равен «0».
Для гарантирования надежного получения данных, DP-мастер должен по-
лучать данные от DP-ВУ не реже чем раз в 200 мс. В противном случае
через 200 мс FC подтвердит передачу данных выводом DONE=1,
ERROR=0 и STATUS=0000, хотя на самом деле передача данных не была
совершена (см. также Раздел 5.3.1). - В режиме DP-мастер для надежной передачи:
Выбрать режим RUN при помощи бит 4 и 5 в слове DPSTATUS функции
DP_RECV.
Описание формальных параметров
Следующая таблица описывает все формальные параметры функции DP_SEND:
Параметр | Объявле-ние | Тип | Принимаемые значения |
Комментарии |
CPLADDR | INPUT | WORD | Начальный адрес модуля При конфигурировании CP при помощи ПО STEP, начальный адрес модуля задается в таблице параметров. Укажите этот адрес здесь. | |
SEND | INPUT | ANY | Адрес и размер получаемой информации: Возможные области памяти: - Образ процесса – Меркерная память – Блок данных Длина может варьироваться для: - DP-мастер: от 1 до 240 – DP-ВУ: от 1 до 86 |
|
DONE | OUTPUT | BOOL | 0: - 1: новые данные |
Этот параметр определяет, был ли последний вызов завершен без ошибок. Значение параметров DONE, ERROR и STATUS см. таблицу ниже. |
ERROR | OUTPUT | BOOL | 0: - 1: ошибка |
Код ошибки Значение параметров DONE, ERROR и STATUS см. таблицу ниже. |
STATUS | OUTPUT | WORD | см. таблицу ниже. | Код состояния Значение параметров DONE, ERROR и STATUS см. таблицу ниже. |
Возвращаемые значения
Следующая таблица содержит информацию по значениям переменных DONE, ERROR и STATUS, которые должны обрабатываться пользователь ской программой.
Информацию по строкам со значениями STATUS = 8FxxH можно найти в справочном руководстве STEP 7: Стандартные и системные функции. Раз- дел, описывающий обработку ошибок с использованием возвращаемого значения RET_VAL содержит более детальную информацию.
Табл. 7–1 Возвращаемые значения функции DP_SEND | |||
DONE
|
ERROR
|
STATUS
|
Значение
|
0 | 0 | 8180H | Запуск: Служба DP запущена, но работа с данными еще не возможна Обычное функционирование: Выполняется передача данных. |
1 | 0 | 0000H | Новые данные получены без ошибок. |
0 | 1 | 8183H | Конфигурация не загружена или еще не запущен сервер DP в PROFIBUS CP. |
0 | 1 | 8184H | Ошибка системы. |
0 | 1 | 8F22H | Неправильная длина области (чтение) (напр. DB слишком мал). |
0 | 1 | 8F23H | Неправильная длина области (запись) (напр. DB слишком мал). |
0 | 1 | 8F24H | Неправильная область чтения параметра. |
0 | 1 | 8F25H | Неправильная область записи параметра. |
0 | 1 | 8F28H | Ошибка выравнивания при чтении параметра. |
0 | 1 | 8F29H | Ошибка выравнивания при записи параметра. |
0 | 1 | 8F30H | Параметр в защищенном от записи первом активном блоке данных. |
0 | 1 | 8F31H | Параметр в защищенном от записи втором активном блоке данных. |
0 | 1 | 8F32H | Слишком большой номер DB. |
0 | 1 | 8F33H | Неправильный номер DB. |
0 | 1 | 8F3AH | Область назначения не загружена (DB). |
0 | 1 | 8F42H | Превышение времени чтения параметра из области I/O. |
0 | 1 | 8F43H | Превышение времени записи параметра в область I/O. |
0 | 1 | 8F44H | Адрес считываемого параметра блокирован в треке доступа. |
0 | 1 | 8F45H | Адрес записываемого параметра блокирован в треке доступа. |
0 | 1 | 8F7FH | Внутренняя ошибка, напр. неправильная ссылка ANY. |
0 | 1 | 8090H | Не существует модуля с заданным адресом. |
0 | 1 | 8091H | Логический базовый адрес не выровнен по двойному слову. |
0 | 1 | 80A1H | Невозможно писать в модуль. |
0 | 1 | 80B0H | Модуль не распознает данные. |
0 | 1 | 80B1H | Указанная длина записи не верна. Режим мастера: Размер области, указанный в SEND, данных больше максимального значения для отправляемых данных в CP. Режим ВУ: Размер области данных, указанный в SEND, больше максимального значения. |
0 | 1 | 80C0H | Данные не могут быть считаны. |
0 | 1 | 80C1H | Указанная область данных в данный момент обрабатывается. |
0 | 1 | 80C2H | Слишком много незавершенных задач. |
0 | 1 | 80C3H | Ресурсы (память) недоступны. |
0 | 1 | 80C4H | Коммуникационная ошибка (иногда встречается, обычно необходимо просто повторить вызов из пользовательской программы). |
0 | 1 | 80D2H | Неправильный логический адрес. |
Функциональный блок DP_RECV
Функциональный блок DP_RECV используется для получения данных по се ти PROFIBUS. В зависимости от режима коммуникационного процессора блок DP_RECV используется:
- В DP-мастере
DP_RECV получает информацию с распределенных I/O и записывает ее в определенную область памяти DP или считывает байт состояния. - В DP-ВУ
DP_RECV получает данные DP, передаваемые ведущим модулем из буфера коммуникационного процессора и помещает их в DP область CPU.
Область, указанная для приема данных может находиться в образе процесса, меркерной памяти или блоке данных. Если вся область данных может быть получена CP, выставляется сигнал об успешном завершении. Помните, что в пользовательской программе функция DP_RECV должна быть вызвана, по крайней мере, один раз для мастера и ВУ.
Дополнительная задача: ввод байта состояния
Функция DP_RECV используется для следующих операций:
- Обновление байта состояния DP - DPSTATUS. При этом функция DP_RECV выполняет операции для DP_DIAG (функции диагностики). Если нет получаемой информации, DP_RECV должен быть вызван с длиной области 255 для обновления байта DPSTATUS (эта функция работает только для ведущих модулей; для ВУ байт состояния не может быть прочитан без получения данных).
- Разрешение списка станций (см. DP_DIAG, Раздел 7.2.3).
Интерфейс вызова:
Принцип работы блока
Диаграмма ниже иллюстрирует нормальную последовательность работы с данными при вызове DP_RECV из пользовательской программы. Каждый вызов задачи DP_RECV из пользовательской программы подтверждается установкой значений выходных переменных NDR, ERROR и STATUS.
Гарантии получения данных
Из диаграммы видно, что значения выходных переменных NDR=1, ERROR=0 и STATUS=0000 соответствуют правильному получению данных. Условие: мастер и ВУ находятся в фазе передачи данных. Примите во внимание следующее:
- Для ведущего модуля:
Если ВУ не находится в фазе передачи данных, область получения данных обнуляется.
Если ведущий модуль не находится в состоянии RUN или CLEAR (биты 4 и 5 в DPSTATUS), все принимаемые данные обнуляются.
Если со времени последнего вызова DP_RECV данные были посланы ВУ несколько раз, то при следующем вызове DP_RECV будет считан только последний пакет. Такое переполнение получаемых данных будет отображено битом 6 в DPSTATUS. - Для ВУ:
Если ВУ не находится в фазе передачи (бит 1 в DPSTATUS) или ведущий модуль находится в состоянии CLEAR (бит 2 в DPSTATUS), все получаемые данные сбрасываются в 0.
Если со времени последнего вызова DP_RECV данные были получены от ведущего модуля несколько раз, то при следующем вызове DP_RECV будет считан только последний пакет. Такое переполнение получаемых данных будет отображено битом 4 в DPSTATUS.
Описание формальных параметров
Следующая таблица содержит описание всех формальных параметров функции DP_RECV:
Параметр
|
Объявление
|
Тип
|
Принимаемые значения
|
Комментарии
|
CPLADDR | INPUT | WORD | Начальный адрес модуля. При конфигурировании CP при помощи ПО STEP, начальный адрес модуля задается в таблице параметров. Укажите этот адрес здесь. | |
RECV | INPUT | ANY | Адрес и размер получаемой информации: Возможные области памяти: - Образ процесса – Маркерная память – Блок данных Длина может варьироваться для: - DP-мастер: от 1 до 240 - DP-ВУ: от 1 до 86 - DP-мастер; получение байта состояния: 255 |
|
NDR | OUTPUT | BOOL | 0: - 1: получены новые данные |
Параметр выставляется, только если получены новые данные. Значение параметров NDR, ERROR и STATUS см. в соответствующей таблице. |
ERROR | OUTPUT | BOOL | 0: - 1: ошибка |
Код ошибки Значение параметров NDR, ERROR и STATUS см. в соответствующей таблице. |
STATUS | OUTPUT | WORD | см. след. табл. | Значение параметров NDR, ERROR и STATUS см. в соответствующей таблице. |
DPSTATUS | OUTPUT | BYTE | Для программирования. См. ниже DPSTATUS |
Код состояния DP. |
Возвращаемые значения
Таблица, приведенная ниже, содержит расшифровку информации возвращаемой в параметрах NDR, ERROR и STATUS, которая должна обрабатываться пользователем.
Информацию по строкам со значениями STATUS = 8FxxH можно найти в справочном руководстве STEP 7: Стандартные и системные функции. Раз- дел, описывающий обработку ошибок с использованием возвращаемого зна- чения RET_VAL содержит более детальную информацию.
Табл. 7–2 Возвращаемые значения функции DP_RECV | |||
NDR | ERROR | STATUS | Значение |
0 | 0 | 8180H | Запуск: Служба DP запущена, но работа с данными еще не возможна. Обычное функционирование: Выполняется получение данных. |
1 | 0 | 0000H | Новые данные получены без ошибок. |
0 | 1 | 8183H | Конфигурация не загружена или еще не запущен сервер DP в PROFIBUS CP. |
0 | 1 | 8184H | Ошибка системы. |
0 | 1 | 8F22H | Неправильная длина области (чтение) (напр. DB слишком мал). |
0 | 1 | 8F23H | Неправильная длина области (запись) (напр. DB слишком мал). |
0 | 1 | 8F24H | Неправильная область чтения параметра. |
0 | 1 | 8F25H | Неправильная область записи параметра. |
0 | 1 | 8F28H | Ошибка выравнивания при чтении параметра. |
0 | 1 | 8F29H | Ошибка выравнивания при записи параметра. |
0 | 1 | 8F30H | Параметр находится в защищенном от записи первом активном блоке данных. |
0 | 1 | 8F31Н | Параметр находится в защищенном от записи втором активном блоке данных. |
0 | 1 | 8F32H | Слишком большой номер DB. |
0 | 1 | 8F33H | Неправильный номер DB. |
0 | 1 | 8F3AH | Область назначения не загружена (DB). |
0 | 1 | 8F42H | Превышение времени чтения параметра из области I/O. |
0 | 1 | 8F43H | Превышение времени записи параметра в область I/O. |
0 | 1 | 8F44H | Адрес считываемого параметра блокирован в треке доступа. |
0 | 1 | 8F45H | Адрес записываемого параметра блокирован в треке доступа. |
0 | 1 | 8F7FH | Внутренняя ошибка, напр. неправильная ссылка ANY. |
0 | 1 | 8090H | Не существует модуля с заданным адресом. |
0 | 1 | 8091H | Логический базовый адрес не выровнен по двойному слову. |
0 | 1 | 80A0H | Невозможно писать в модуль. |
0 | 1 | 80B0H | Модуль не распознает данные. |
0 | 1 | 80B1H | Указанная длина записи не верна. Режим ВУ: Размер области приема больше максимального значения, указанного в информации о продукте. Режим мастера: Размер области приема больше размера принимаемой информации, настроенного в данном CP. |
0 | 1 | 80C0H | Данные не могут быть считаны. |
0 | 1 | 80C1H | Указанная область данных в данный момент обрабатывается. |
0 | 1 | 80C2H | Слишком много незавершенных задач. |
0 | 1 | 80C3H | Ресурсы (память) недоступны. |
0 | 1 | 80C4H | Коммуникационная ошибка (иногда встречается, обычно необходимо просто повторить вызов из пользовательской программы). |
0 | 1 | 80D2H | Неправильный логический адрес. |
Значения DPSTATUS
Кодировка байта состояния DPSTATUS отличается для мастера и ВУ:
• DP-мастер:
Табл. 7–3 Значения бит DPSTATUS для DP-мастера | |
Бит | Значение |
7
|
не используется |
6
|
1: переполнение полученных данных ВУ посылает данные быстрее, чем они могут быть обработаны мастером в вызове блока из CPU. Модуль всегда считывает последние данные из всех, посланных ВУ со времени последнего вызова функции. |
5,4
|
Состояние DP-мастера: 00 RUN 01 CLEAR 10 STOP 11 OFFLINE |
3
|
1: Активная циклическая синхронизация. |
2
|
0: Новых диагностических данных нет. 1: По крайней мере, одна станция содержит новую диагностическую информацию. |
1
|
0: Все ВУ находятся в фазе передачи данных. 1: Просмотр списка станций. |
0
|
Режим DP 0: Режим мастера (ведущего модуля) Остальные биты имеют описанное выше значение только, когда этот бит сброшен. |
• ВУ DP:
Табл. 7–4 Значения DPSTATUS для DP-ВУ | |
Бит | Значение |
7-5 | не используется |
4 | 1: переполнение полученных данных Мастер посылает входные данные быстрее, чем они могут быть обработаны модулем в вызове блока из CPU. Модуль всегда считывает последние данные из всех, посланных мастером со времени последнего вызова функции. |
3 | 1: Модуль не получил специального сигнала от мастера за определенный промежуток времени(watchdog time). Если этот бит установлен, то бит 1 также установлен. |
2 | 1: DP-мастер 1 находится в состоянии CLEAR. ВУ получает 0 для всей входной информации. Это не отражается на передаваемых данных. |
1 | 1: Конфигурирование/назначение параметров не завершено. |
0 | Режим DP 1: ВУ DP. Остальные биты имеют указанное выше значение только, когда этот бит установлен. |
Функциональный блок DP_DIAG
Назначение блока
Функциональный блок DP_DIAG используется для получения диагностической информации. Возможны следующие операции:
- Запрос списка DP станций
- Запрос диагностического списка DP
- Запрос диагностики одного DP
- Ациклическое считывание I/O DP-ВУ
- Считывание состояния DP.
Диагностическая информация также может быть запрошена для конкретного ВУ по указанному адресу станции.
Для передачи диагностической информации в CPU вы должны зарезервировать область памяти в CPU и указать ее адрес при вызове функции. Область может располагаться в маркерной памяти или блоке данных. При вызове функции помимо начального адреса необходимо указывать и ее размер.
Функция DP_DIAG может быть использована только на мастере DP.
Отсутствие новой входной информации
В процессе выполнения блока информация на его входах не должна меняться. Исключение: Запрос списка станций или диагностического списка.
Пример на языке STL функционального блока DP_DIAG
Работа с интерфейсом вызова (последовательность действий)
Вызов функции DP_DIAG обрабатывается в цикле исполнения пользовательской программы следующим образом: Операция запускается по первому вызову. Диагностическая информация возвращается в ответ на один из последующих запросов.
Обозначения:
1) Передача параметров NDR, ERROR, STATUS
После вызова функции DP_DIAG, вы получите информацию, описывающую одну из следующих ситуаций:
- NDR=0, ERROR=0, STATUS=8181
Пока выходные значения равны NDR=0, ERROR=0 и STATUS=8181, входные параметры блока изменять нельзя. - NDR=1
Значение NDR=1 выставляется, когда диагностическая информация получена. Дополнительные данные содержатся в переменной STATUS. - NDR=0, ERROR=1
Произошла ошибка и диагностическая информация не верна. Переменная STATUS содержит код ошибки.
Описание формальных параметров
Следующая таблица содержит описание всех формальных параметров функции DP_DIAG:
Параметр | Объявление | Тип | Принимаемые значения |
Комментарии |
CPLADDR | INPUT | WORD | Начальный адрес модуля При конфигурировании CP при помощи ПО STEP, начальный адрес модуля задается в таблице параметров. Укажите этот адрес здесь. | |
DTYPE | INPUT | BYTE | 0: список станций 1: диагностический список 2: текущ. диагностика 3: старая диагностика 7: чтение входной информации (ацикл.) 8: чтение выходной информации (ацикл.) |
Тип диагностики |
STATION | INPUT | BYTE | Адрес станции DP-ВУ | |
DIAG | INPUT | ANY | Размер может изменяться от 1 до 240 | Указывает адрес и длину области памяти для получения данных. Может указывать на – образ процесса – маркерную память или – блок данных Примечание: Если диагностическая информация не помещается в указанной области, будет получены только первые n байт. Размер полной диагностической информации содержится в DIAGLNG. |
NDR | OUTPUT | BOOL | 0: - 1: новые данные |
Параметр показывает, была ли получена новая информация. Значение параметров NDR, ERROR и STATUS см. в соответствующей таблице. |
ERROR | OUTPUT | BOOL | 0: - 1: ошибка |
Код ошибки Значение параметров NDR, ERROR и STATUS см. в соответствующей таблице. |
STATUS | OUTPUT | WORD | см. список | Код ошибки Значение параметров NDR, ERROR и STATUS см. в соответствующей таблице. |
DIAGLNG | OUTPUT | BYTE | см. список | Содержит длину (в байтах) данных, доступных из PROFIBUS CP, вне зависимости от размера буфера, указанного параметре DIAG. |
Типы операций
Следующий обзор содержит возможные комбинации входных параметров DTYPE, STATION и DIAGLNG и их назначение.
Табл. 7–5 Типы операций функции DP_DIAG | ||||
DTYPE | Соответствует операции | Параметр STATION | DIAGLNG | Код подтверждения содержится в переменной STATUS; описан в Табл. 7–6) |
0
|
Считать список станций DP | --- | >=16 | Начальный адрес модуля При конфигурировании CP при помощи STEP 7, задается его начальный адрес. Укажите этот адрес здесь. |
1
|
Считать диагностический список DP | --- | >=16 | Диагностический список сообщает программе CPU о DP-ВУ с новой диагностической информацией. (см. Разделы 4.2.3, 4.2.4) |
2
|
Считать диагн. информацию с одного DP | от 0 до 126 |
>=6 | Получение текущей диагностической информации с DP-ВУ (см. Раздел 4.2.5). |
3
|
Считать старую диагн. информацию с одного DP | от 0 до 126 |
>=6 | Получение более старой диагностической информации с DP-ВУ (см. Раздел 4.2.5). Эта информация хранится в PROFIBUS CP и считывается по принципу: последним вошел - первым вышел из кольцевого буфера. Структура буфера описана ниже. Если диагностическая информация меняется очень быстро, эта функция позволяет мастеру получить и обработать все сообщения ВУ. |
4
|
Считать операционный режим, запрошенный операцией DPCTRL (CYTPE=4). | >=0 | С помощью этой операции вы можете получить состояние DP. Возможны следующие состояния – RUN – CLEAR – STOP – OFFLINE См. также Раздел 3.10 |
|
5
|
Считать состояние DP для CPU в режиме STOP | >=0 | Эта операция позволяет получить состояние, в которое перейдет PROFIBUS CP, если CPU перевести в режим STOP: - RUN – CLEAR – STOP – OFFLINE По умолчанию PROFIBUS CP переходит в состояние CLEAR, если CPU переводится в STOP. см. также Раздел 3.10 |
|
6
|
Считать состояние DP для CP в режиме STOP | >=0 | Эта операция позволяет получить состояние, в которое перейдет PROFIBUS CP, если CP перевести в режим STOP: - RUN – CLEAR – STOP – OFFLINE По умолчанию PROFIBUS CP переходит в состояние OFFLINE, если CPU переводится в STOP. см. также Раздел 3.10 |
|
7
|
Считать входную информацию | 0...126 | >=1 | С помощью этой операции DP-мастер (класс 2) считывает входные данные ВУ. Эта функция также известна как распределенный ввод. |
8
|
0...126 | >=1 | С помощью этой операции DP-мастер (класс 2) считывает выходные данные ВУ. Эта функция также известна как распределенный вывод. | |
10
|
0...126 | >=0 | Эта операция считывает текущее состояние ВУ. Возможны следующие варианты: • Циклический обмен данными с мастером. • Циклическое чтение входных данных. • Циклическое чтение выходных данных. • Отсутствие циклической обработки. |
Кольцевой буфер диагностической информации
Следующая диаграмма иллюстрирует процесс чтения диагностической информации с использованием функции «считать старую диагностическую информацию». Сначала читаются самые свежие сообщения.
Когда текущая диагностическая информация считана, позиция чтения перемещается на предыдущую запись.
Возвращаемые значения
Таблица, приведенная ниже, содержит комбинации возвращаемых параметров NDR, ERROR и STATUS, которые должны обрабатываться пользовательской программой.
Информацию по строкам со значениями STATUS = 8FxxH можно найти в справочном руководстве STEP 7: Стандартные и системные функции. Раз- дел, описывающий обработку ошибок с использованием возвращаемого зна- чения RET_VAL содержит более детальную информацию.
Табл. 7–6 Возвращаемые значения функции DP_DIAG | ||||
NDR | ERROR | STATUS | Возможно вместе с DTYPE | Значение |
0 | 0 | 8181H | 2-10 | Операция активна. |
0 | 0 | 8182H | 0 | Операция нецелесообразна. |
0 | 0 | 8182H | 1 | Отсутствует новая диагностическая информация. |
1 | 0 | 0000H | 1-10 | Операция завершена без ошибок. |
1 | 0 | 8222H | 7,8 | Операция завершена без ошибок. Длина считанной из DP информации не соответствует ожидаемой мастером на основании списка ВУ в базе данных CP. |
1 | 0 | 8227H | 7,8 | Операция завершена без ошибок. Сообщение: информация отсутствует. |
1 | 0 | 8131H | 4,5,6 | Операция завершена без ошибок. Сообщение: DP уже находится в состоянии «RUN» |
1 | 0 | 8132H | 4,5,6 | Операция завершена без ошибок. Сообщение: DP уже находится в состоянии «CLEAR» |
1 | 0 | 8133H | 4,5,6 | Операция завершена без ошибок. Сообщение: DP уже находится в состоянии «STOP» |
1 | 0 | 8134H | 4,5,6 | Операция завершена без ошибок. Сообщение: DP уже находится в состоянии «OFFLINE» |
1 | 0 | 823AH | 2,3,7,8 | Операция завершена без ошибок. Сообщение: Прочитано 241 или 242 байта данных. 240 байт доступно. |
1 | 0 | 8241H | 2,3,10 | Операция завершена без ошибок. Сообщение: Указанное ВУ не отконфигурировано. |
1 | 0 | 8243H | 2,3,10 | Операция завершена без ошибок. Сообщение: список ВУ в базе CP содержит только пустые модули. |
1 | 0 | 8245H | 2,3,10 | Операция завершена без ошибок. Сообщение: ВУ находится в состоянии «циклическое чтение входных данных» |
1 | 0 | 8246H | 2,3,10 | Операция завершена без ошибок. Сообщение: ВУ находится в состоянии «циклическое чтение выходных данных» |
1 | 0 | 8248H | 2,3,10 | Операция завершена без ошибок. Сообщение: список модулей DP-ВУ в базе CP содержит I/О модули. |
1 | 0 | 8249H | 2,3,10 | Операция завершена без ошибок.Сообщение: ВУ пассивно из-за изменения режима DP (напр. переключатель режима CP установлен в STOP) |
1 | 0 | 824AH | 2,3,10 | Операция завершена без ошибок. Сообщение: ВУ пассивно из-за выполнения в CPU функции DP_CTRL. |
0 | 1 | 8090H | 0-10 | Неправильный логический базовый адрес модуля |
0 | 1 | 80B0H | 0-10 | Модуль не распознает данные или выполняет переход RUN --> STOP. |
0 | 1 | 80B1H | 0-10 | Указанная длина записи данных не верна. |
0 | 1 | 80C0H | 0-10 | Невозможно считать данные. |
0 | 1 | 80C1H | 0-10 | Указанная запись данных уже обрабатывается. |
0 | 1 | 80C2H | 0-10 | Слишком много незавершенных операций. |
0 | 1 | 80C3H | Ресурсы (память) недоступны. | |
0 | 1 | 80C4H | 0-10 | Коммуникационная ошибка (иногда встречается, обычно необходимо просто повторить вызов из поль- зовательской программы). |
0 | 1 | 80D2H | 0-10 | Неправильный логический базовый адрес. |
0 | 1 | 8183H | 0-10 | DP-мастер не отконфигурирован. |
0 | 1 | 8184H | Ошибка системы. | |
0 | 1 | 8311H | 2-10 | Неправильное значение параметра DTYPE. |
0 | 1 | 8313H | 2,3,7,8,10 | Неправильное значение параметра STATION. |
0 | 1 | 8313H | 2-10 | ВУ предоставляет только неправильные данные. |
0 | 1 | 8326H | 7-8 | ВУ содержит более 242 байт информации. PROFIBUS CP поддерживает не более 242 байт. |
0 | 1 | 8335H | 7-8 | PROFIBUS CP находится в состоянии PROFIBUS: станция вне кольца. |
0 | 1 | 8341H | 2,3,10 | Указанное ВУ не отконфигурировано. |
0 | 1 | 8342H | 7,8 | ВУ с адресом, указанным в STATION не доступно. |
0 | 1 | 8F22H | 0-10 | Неправильная длина области (чтение) (напр. DB слишком мал). |
0 | 1 | 8F23H | 0-10 | Неправильная длина области (запись) (напр. DB слишком мал). |
0 | 1 | 8F24H | 0-10 | Неправильная область чтения параметра. |
0 | 1 | 8F25H | 0-10 | Неправильная область записи параметра. |
0 | 1 | 8F28H | 0-10 | Ошибка выравнивания при чтении параметра. |
0 | 1 | 8F29H | 0-10 | Ошибка выравнивания при записи параметра. |
0 | 1 | 8F30H | 0-10 | Параметр принадлежит защищенному от записи первому активному блоку данных. |
0 | 1 | 8F31H | 0-10 | Параметр принадлежит защищенному от записи второму активному блоку данных. |
0 | 1 | 8F32H | 0-10 | Слишком большой номер DB. |
0 | 1 | 8F33H | 0-10 | Неправильный номер DB. |
0 | 1 | 8F3AH | 0-10 | Область не загружена (DB). |
0 | 1 | 8F42H | 0-10 | Превышение времени чтения параметра из области I/O. |
0 | 1 | 8F43H | 0-10 | Превышение времени записи параметра в область I/O. |
0 | 1 | 8F44H | 0-10 | Адрес считываемого параметра блокирован в треке доступа. |
0 | 1 | 8F45H | 0-10 | Адрес записываемого параметра блокирован в треке доступа. |
0 | 1 | 8F7FH | 0-10 | Внутренняя ошибка, напр. неправильная ссылка ANY. |
Функциональный блок DP_CTRL
Функциональный блок DP_CTRL передает управление PROFIBUS CP. Можно использовать поле операции (параметр CONTROL) для более конкретного указания операции. Существуют следующие типы операции:
- Глобальное управление циклическое/ациклическое
- Удаление старой диагностической информации
- Установка текущего режима DP
- Установка режима DP для состояния STOP у PLC или CP
- Циклическое чтение входной/выходной информации
- Установка операционного режима DP-ВУ.
Функция DP_CTRL может использоваться только мастером DP.
Отсутствие новой информации
В процессе выполнения блока информация на его входах не должна меняться.
Пример на языке STL функционального блока DP_CTRL
Работа с интерфейсом вызова (последовательность действий)
Вызов функции DP_CTRL обрабатывается в цикле исполнения пользовательской программы следующим образом: Операция запускается по первому вызову. Диагностическая информация возвращается в ответ на один из последующих запросов.
После вызова функции DP_CTRL, вы получите информацию, описывающую одну из следующих ситуаций:
- DONE=0, ERROR=0, STATUS=8181
Пока выходные значения равны DONE=0, ERROR=0 и STATUS=8181, входные параметры блока изменять нельзя. - DONE=1
Значение DONE=1 выставляется, когда операция завершена. Дополнительные данные содержатся в переменной STATUS. - DONE=0, ERROR=1
Произошла ошибка. Переменная STATUS содержит код ошибки.
Следующая таблица содержит описание всех формальных параметров функции DP_CTRL.
Параметр | Объявление | Тип | Принимаемые значения | Комментарии |
CPLADDR | INPUT | WORD | Начальный адрес модуля При конфигурировании CP при помощи ПО STEP, начальный адрес модуля задается в таблице параметров. Укажите этот адрес здесь. | |
CONTROL | INPUT | ANY | Размер может варьироваться от 1 до 240 | Указывает адрес и длину области памяти для управляющей операции. Может указывать на – образ процесса – маркерную память или – блок данных Размер должен быть не меньше количества параметров. |
DONE | OUTPUT | BOOL | 0: - 1: Операция завершена без ошибок. |
Отражает безошибочное завершение операции. Значение параметров DONE, ERROR и STATUS см. в соответствующей таблице. |
ERROR | OUTPUT | BOOL | 0: - 1: ошибка |
Код ошибки Значение параметров DONE, ERROR и STATUS см. в соответствующей таблице. |
STATUS | OUTPUT | WORD | см. Табл. Возвращаемые значения | Код состояния Значение параметров DONE, ERROR и STATUS см. в соответствующей таблице. |
Управляющее поле имеет следующую структуру:
Пример поля операции
Поле операции, представленное ниже, синхронизирует глобальное циклическое управление и посылает сигнал «unfreeze» (разморозка) без опции автоматической очистки группам 4 и 5.
Длина указателя ANY Должна быть не менее 4 байт (в примере было выбрано значение 30).
Описания возможных операций сгруппированы в зависимости от значения CTYPE и помещены в таблицу ниже.
Табл. 7–7 Типы операций функции DP_CTRL | ||||
CTYPE | Соответствует операции | Параметры в поле операции Название | Кол-во | Значение |
0 | Запустить глобальное управление |
1ый байт: командный режим 2ой байт: выбор группы (см. Раздел после табл.) |
2 | Глобальная управляющая операция посылается DP-ВУ, выбранным 2ым байтом (см.Раздел 3.2). Командный режим указывает на одну из следующих глобальных операций: - SYNC (синхронизация) – UNSYNC (рассинхронизация) – FREEZE (блокирование) – UNFREEZE (разблокирование) – CLEAR (очистка) Можно указать более одной операции в командном режиме. |
1 | Запустить циклическое глобальное управление | 1ый байт: командный режим 2ой байт: выбор группы 3ий байт: автоочистка (см. след.Раздел) |
3 | Глобальная циклическая управляющая операция посылается DP-ВУ, выбранным 2ым байтом (см. Раздел 3.2). Параметр «автоочистка» обрабатывается совместно с глобальной операцией SYNC. Если хотя бы одно из ВУ в выбранной группе не находится в фазе передачи данных и автоочистка=1, активируется операция CLEAR и выходные данные DP-ВУ сбрасываются в «0». Следующие глобальные операции могут быть активированы: - SYNC – FREEZE - CLEAR (CLEAR бит = 1) или отменены: - UNSYNC – UNFREEZE - UNCLEAR (CLEAR бит = 0) Можно указать более одной операции в командном режиме. Активная глобальная циклическая операция может быть прервана только другой глобальной операцией (циклической или нет). Для завершения операции, указанной в командном режиме, она должна быть отменена. Например, операция SYNC отменяется операцией UNSYNC. |
3 | Удалить старую диагностическую информацию | 1ый адрес ВУ 0 - 126 127 = все ВУ |
1 | Старая диагностическая информация PROFIBUS CP удаляется для одного или всех ВУ. |
4 | Установить текущий режим DP | 1.RUN=00H 1.CLEAR=01H 1.STOP=02H 1.OFFLINE=03H 1. RUN с autoclear=04H 1.RUN без autoclear=05H |
1 | Этой операцией можно установить один из следующих режимов DP: - RUN - CLEAR - STOP - OFFLINE (см. также Раздел 3.10) Параметр autoclear означает, что DP-мастер первого класса автоматически переходит в режим CLEAR когда хотя бы одно из ВУ, с которым происходит обмен информацией, не находится в фазе передачи данных. RUN без autoclear отменяет автоочистку. |
5 | Установить режим DP для состояния CPU stop | 1.RUN =00H 1.CLEAR =01H 1.STOP =02H 1.OFFLINE=03H |
1 | Этой операцией можно установить режим DP, в который переходит PROFIBUS CP, когда CPU переходит в stop. - RUN - CLEAR - STOP - OFFLINE По умолчанию PROFIBUS CP переходит в режим CLEAR при остановке CPU. Этот режим сохраняется, когда CP переходит RUN --> STOP --> RUN. (см. также Р. 3.10) |
6 | Установить режим DP для состояния CP stop | 1.STOP =02H 1.OFFLINE =03H |
1 | Этой операцией можно установить режим DP, в который переходит PROFIBUS CP, когда CP переходит в stop. - STOP - OFFLINE По умолчанию PROFIBUS CP переходит в режим OFFLINE при остановке CP. Этот режим сохраняется, когда CP переходит RUN --> STOP --> RUN. (см. также Р 3.10) |
7 | Циклическое чтение входной информации | 1ый байт: адрес ВУ 0 - 125 |
1 | Эта операция активирует циклическое чтение входных данных DP-ВУ в коммуникационный процессор, работающий как DP-мастер (класс2). Обычно, DP-ВУ назначен другому DP-мастеру (класс 1). Данные сохраняются в конфигурированной области DP-ВУ и могут быть получены пользователем с помощью функции DP_RECV. Эта функция также известна как распределенный ввод. |
8 | Циклическое чтение выходной информации | 1ый байт: адрес ВУ 0 - 125 |
1 | Эта операция активирует циклическое чтение выходных данных DP-ВУ в коммуникационный процессор, работающий как DP-мастер (класс 2). Обычно, DP-ВУ назначено другому DP-мастеру (класс 1). Данные сохраняются в конфигурированной области DP-ВУ и могут быть получены пользователем с помощью функции DP_RECV. Эта функция также известна как распределенный ввод. |
9 | Отмена циклического чтения информации. | 1ый байт: адрес ВУ 0 - 125 |
1 | Эта операция прерывает циклическое чтение входных или выходных данных DP-ВУ или передачу данных (DP-мастер класс 1). В таком случае DP-ВУ больше не обрабатывается PROFIBUS CP в качестве DP-мастер класс 2. Это переводит DP-ВУ в пассивное состояние. |
10 |
Отмена циклического чтения информации. Начать передачу данных DP-мастером класса 1. |
1ый байт: адрес ВУ 0 - 125 |
1 | Операция начинает передачу данных (DP-мастер класс 1). Предыдущая операция (пассивное состояние или циклическое чтение) завершается. Коммуникационный процессор, работающий как DP-мастер (класс 1) назначает параметры ВУ и начинает передачу данных Эта операция принадлежит режиму DP-мастер класс 1. |
Структура переменной «командный режим»
Переменная «командный режим» позволяет вам указать режим ввода и вывода данных для циклических и ациклических глобальных операций.
Значение:
1 = активный
0 = пассивный
Номер бита
Структура переменной «выбор группы»
Переменная «выбор группы» содержит группу адресуемую операцией, указанной в командном режиме. Она расположена во втором байте поля операции. Каждый бит определяет группу DP-ВУ.
Значение:
1 = назначена
0 = не назначена
Номер бита: Группа: |
![]() |
Возвращаемые значения
Следующая таблица содержит информацию по значениям переменных DONE, ERROR и STATUS, которые должны обрабатываться пользовательской программой.
Информацию по строкам со значениями STATUS = 8FxxH можно найти в справочном руководстве STEP 7: Стандартные и системные функции. Раз- дел, описывающий обработку ошибок с использованием возвращаемого зна- чения RET_VAL содержит более детальную информацию.
Табл. 7–8 Возвращаемые значения функции DP_CTRL | ||||
DONE | ERROR | STATUS | Возможные значения CTYPE |
Значение |
0 | 0 | 8181H | 0-10 | Операция активна |
1 | 0 | 0000H | 0-10 | Операция завершена без ошибок |
1 | 0 | 8214H | 1 | Операция завершена без ошибок. Сообщение: циклическая глобальная операция послана как ациклическая |
1 | 0 | 8215H | 0,1 | Операция завершена без ошибок. Все указанные в команде ВУ пассивны. |
1 | 0 | 8219H | 0,1 | Операция завершена без ошибок. Была сделана попытка послать уже выполняющуюся глобальную циклическую операцию. Глобальное управление осталось неизменным. |
1 | 0 | 8228H | 0,1 | Операция завершена без ошибок. Сообщение: адресуемые DP-ВУ не содержат входных модулей. |
1 | 0 | 8229H | 0,1 | Операция завершена без ошибок. Сообщение: адресуемые DP-ВУ не содержат выходных модулей. |
1 | 0 | 8231H | 4,5,6 | Операция завершена без ошибок. Сообщение: DP уже находится в режиме «RUN» |
1 | 0 | 8232H | 4,5,6 | Операция завершена без ошибок. Сообщение: DP уже находится в режиме «CLEAR» |
1 | 0 | 8233H | 4,5,6 | Операция завершена без ошибок. Сообщение: DP уже находится в режиме «STOP» |
1 | 0 | 8234H | 4,5,6 | Операция завершена без ошибок. Сообщение: DP уже находится в режиме «OFFLINE» |
1 | 0 | 8235H | 4 | Операция завершена без ошибок. Сообщение: DP уже находится в состоянии «RUN» с автоматической очисткой (autoclear) |
1 | 0 | 8236H | 4 | Операция завершена без ошибок. Сообщение: DP уже находится в состоянии «RUN» с автоматической очисткой (autoclear) |
1 | 0 | 8241H | 7-10 | Операция завершена без ошибок. Сообщение: указанное DP-ВУ не отконфигурировано. |
1 | 0 | 8243H | 7-10 | Операция завершена без ошибок. Сообщение: DP-ВУ уже пассивно, так как список ВУ в базе CP содержит только пустые модули. |
1 | 0 | 8245H | 7-10 | Операция завершена без ошибок. Сообщение: DP-ВУ уже находится в режиме циклического чтения входных данных |
1 | 0 | 8246H | 7-10 | Операция завершена без ошибок. Сообщение: DP-ВУ уже находится в режиме циклического чтения выходных данных |
1 | 0 | 8248H | 7-10 | Операция завершена без ошибок. Сообщение: список DP-ВУ в базе CP содержит входные, выходные или I/O модули. |
1 | 0 | 8249H | 7-10 | Операция завершена без ошибок. Сообщение: ВУ пассивно из-за изменения режима DP. |
1 | 0 | 824AH | 7-10 | Операция завершена без ошибок. Сообщение: DP-ВУ уже пассивно вследствие выполнения DP_CTRL |
0 | 1 | 8090H | 0-10 | Не существует модуля с заданным адресом. |
0 | 1 | 8091H | 0-10 | Логический базовый адрес не выровнен по двойному слову. |
0 | 1 | 80B0H | 0-10 | Модуль не распознает данные. |
0 | 1 | 80B1H | 0-10 | Указанная длина записи не верна. |
0 | 1 | 80C0H | 0-10 | Данные не могут быть считаны. |
0 | 1 | 80C1H | 0-10 | Указанная область данных в данный момент обрабатывается. |
0 | 1 | 80C2H | 0-10 | Слишком много незавершенных задач. |
0 | 1 | 80C3H | Ресурсы (память) недоступны. | |
0 | 1 | 8311H | 0-10 | Неправильное значение параметра CTYPE. |
0 | 1 | 8312H | 0-10 | Размер области памяти параметра CONTROL слишком мал. |
0 | 1 | 8313H | 3,7,8,10 | Адрес ВУ находится за пределами допустимых значений. |
0 | 1 | 8315H | 0,1 | Все DP-ВУ указанной группы пассивны (происходит всегда, если группа пуста). |
0 | 1 | 8317H | 8 | Размер посылаемых данных больше настроенной области приема на DP-ВУ. Активирование ВУ режима чтения выходной информации не возможно. |
0 | 1 | 8318H | 0,1,4,5,6 | Первый байт поля операции содержит недопустимое значение. Для глобального управления CLEAR использован с SYNC или глобальное управление с CLEAR назначено группе 0. |
0 | 1 | 831АH | 0,1 | По крайней мере, одно DP-ВУ не поддерживает FREEZE. |
0 | 1 | 831BH | 0,1 | По крайней мере, одно DP-ВУ не поддерживает SYNC. |
0 | 1 | 8333H | 0,1 | Операция не разрешена в режиме STOP. |
0 | 1 | 8334H | 0,1 | Операция не разрешена в режиме OFFLINE. |
0 | 1 | 8335H | 0,1 | PROFIBUS CP находится в состоянии PROFIBUS: станция вне кольца. |
0 | 1 | 8339H | 0,1 | Хотя бы одно DP-ВУ в выбранной группе не находится в фазе передачи данных. |
0 | 1 | 833СH | 1 | Циклическое глобальное управление не должно использоваться в режиме «PLC <-> CP free running» (свободное выполнение). Эта ошибка не может случиться в CP 3425 поскольку такой режим не поддерживается данным CP (для передачи данных всегда используются записи PBUS). |
0 | 1 | 8341H | 7-10 | Указанное DP-ВУ не отконфигурировано. |
0 | 1 | 8183H | 0-10 | DP-мастер не отконфигурирован. |
0 | 1 | 8184H | Ошибка системы. | |
0 | 1 | 8F22H | 0-10 | Неправильная длина области (чтение) (напр. DB слишком мал). |
0 | 1 | 8F23H | 0-10 | Неправильная длина области (запись) (напр. DB слишком мал). |
0 | 1 | 8F24H | 0-10 | Неправильная область чтения параметра. |
0 | 1 | 8F25H | 0-10 | Неправильная область записи параметра. |
0 | 1 | 8F28H | 0-10 | Ошибка выравнивания при чтении параметра. |
0 | 1 | 8F29H | 0-10 | Ошибка выравнивания при записи параметра. |
0 | 1 | 8F30H | 0-10 | Параметр лежит в первом текущем блоке, защищенном от записи. |
0 | 1 | 8F31H | 0-10 | Параметр лежит во втором текущем блоке, защищенном от записи. |
0 | 1 | 8F32H | 0-10 | Слишком большой номер DB. |
0 | 1 | 8F33H | 0-10 | Неправильный номер DB. |
0 | 1 | 8F3AH | 0-10 | Область назначения не загружена (DB). |
0 | 1 | 8F42H | 0-10 | Превышение времени чтения параметра из области I/O. |
0 | 1 | 8F43H | 0-10 | Превышение времени ожидания при записи в область I/O. |
0 | 1 | 8F44H | 0-10 | ХЗ* |
0 | 1 | 8F45H | 0-10 | ХЗ* |
0 | 1 | 8F7FH | 0-10 | Внутренняя ошибка, напр. неправильная ссылка ANY. |
0 | 1 | 80C4H | 0-10 | Коммуникационная ошибка (иногда встречается, обычно необходимо просто повторить вызов из пользовательской программы). |
0 | 1 | 80C4H | 0-10 | Неправильный логический базовый адрес. |
Функции FDL-соединения (интерфейс SEND/RECEIVE)
Следующие функциональные блоки используются для интерфейса SEND/RECEIVE при передаче данных по установленному FDL соединению:
FC
|
Назначение
|
AG_SEND / AG_LSEND | Для передачи данных |
AG_RECV / AG_LRECV | Для получения данных |
Функции FC50 (AG_LSEND) и FC60 (AG_LRECV) могут использоваться PROFIBUS CP как альтернатива FC5 и FC 6. При этом нет никакой разницы, как в интерфейсе, так и в способе функционирования. При использовании Industrial Ethernet, функции AG_LSEND и AG_LRECV могут передавать боль- шие объемы данных (от 240 байт до 8 Кбайт). Если вы используете эти блоки для передачи большого количества данных через Ind. Ethernet, вы также мо- жете использовать эти блоки для работы по PROFIBUS. Однако по PROFIBUS, даже при использовании этих функциональных блоков, вы смо- жете передавать записи не длиннее 240.
Следующая схема иллюстрирует способы использования блоков AG_SEND /AG_LSEND и
AG_RECV /AG_LRECV для двунаправленной передачи данных по одному FDL соединению. Некоторые типы соединений включают заголовок операции в пользовательскую область данных.
Приложения без заголовка операции
Для определенного FDL соединения адрес и заголовок операции указаны в настройках соединения. Пользовательская программа лишь копирует данные в область FDL при их посылке с помощью
AG_SEND /AG_LSEND или считывает данные с помощью AG_RECV / AG_LRECV. При этом может быть передано до 240 байт пользовательской информации. Это применимо к PROFIBUS для AG_SEND и AG_LSEND функций.
Приложения с заголовком операции
Следующие типы соединений требуют заголовок операции в FDL (пользовательской) области:
- Неопределенное FDL-соединение со свободным доступом к уровню 2
- FDL соединение с всеобщей рассылкой (broadcast)
- FDL соединение с множественной рассылкой
Следующая диаграмма показывает структуру буфера операции, а также значение и расположение параметров в операционном заголовке.
Размер блока данных не может превышать 240 байт. При этом можно использовать лишь 236 байт для собственно пользовательских данных. 4 байта резервируются для операционного заголовка.
Функциональный блок AG_SEND / AG_LSEND
AG_SEND / AG_LSEND функция пересылает данные в PROFIBUS CP для передачи по FDL соединению.
Данные могут находиться в области образа процесса, меркерной памяти или блоке данных. Успешное завершение работы функции индицируется когда весь FDL блок данных может быть послан по PROFIBUS.
Примечание: Информация, приведенная ниже, относится как к AG_SEND так и к AG_LSEND.
Пример на языке STL функционального блока AG_SEND / AG_LSEND
Вызовы с операционным заголовком
Таблица ниже содержит типы соединений и операции для которых должны быть определены параметры в операционном заголовке. Операционный заголовок расположен в начале FDL области данных. Он за-
нимает 4 байта и должен быть прибавлен к длине, указываемой в параметре LEN. Максимальная длина пользовательских данных для операций с заголовком, таким образом, уменьшена до 236 байт.
Табл. 7–9 Добавление операционного заголовка в пользовательской области данных | |||
Параметр | Свободный уровень 2 | Всеобщая рассылка | Множественная рассылка |
адрес PB | Адрес станции-приемника Значения: 0..126 в зависимости от станции / 127 для всеобщей /множественной рассылки |
Не важно, но должно быть зарезервировано. | Не важно, но должно быть зарезервировано |
LSAP | LSAP станции-приемника Значения: 0..62 в зависимости от станции / 63 для множественной рассылки |
Не важно, но должно быть зарезервировано. | Не важно, но должно быть зарезервировано. |
Службы | SDA (Посылка с подтверждением): Значение: 00H SDN (Посылка без подтверждения): Значение: 01H |
Не важно, но должно быть зарезервировано. | Не важно, но должно быть зарезервировано. |
Диаграмма ниже иллюстрирует обычную последовательность при передаче данных, активированной использованием в программе функции AG_SEND. Каждая операция AG_SEND в пользовательской программе подтверждается PROFIBUS CP заданием выходных параметров DONE, ERROR и STATUS.
Для обновления возвращаемого слова состояния без использования операции, параметр ACT должен быть сброшен в 0.
Следующая таблица содержит описание всех формальных параметров функции AG_SEND.
Параметр | Объявление | Тип | Принимаемые значения | Комментарии |
ACT | INPUT | BOOL | 0,1 | Если ACT=1, то посылается LEN байт из области FDL, определяемой параметром SEND. Если ACT=0, обновляются коды состояния DONE, ERROR и STATUS. |
ID | INPUT | INT | 1,2...16 | Переменная ID содержит номер FDL- соединения (см. настройку в Разделе 2) |
LADDR | INPUT | WORD | Начальный адрес модуля При конфигурировании CP при помощи ПО STEP, начальный адрес модуля задается в таблице параметров. Укажите этот адрес здесь. | |
SEND | INPUT | ANY | Адрес и размер FDL блока: Возможные области памяти: - Образ процесса – Меркерная память – Блок данных При вызове с операционным заголовком область FDL должна содержать сам заголовок и пользовательскую информацию. |
|
LEN | INPUT | INT | 1,2, до 240 (или длины, указанной в параметре SEND) | Количество байт посылаемых из области FDL текущей операцией. Принимаемые значения варьируются от 1 до длины, указанной в параметре SEND. При вызове с операционным заголовком LEN>= 4 из-за учета длины заголовка. |
DONE | OUTPUT | BOOL | 0: - 1: новые дан- ные |
Параметр свидетельствует о безошибочном окончании операции. Значения параметров DONE, ERROR и STATUS см. в соответствующей таблице. |
ERROR | OUTPUT | BOOL | 0: - 1: ошибка |
Код ошибки Значения параметров DONE, ERROR и STATUS см. в соответствующей таблице. |
STATUS | OUTPUT | WORD | см. таблицу ниже |
Код состояния Значения параметров DONE, ERROR и STATUS см. в соответствующей таблице. |
Возвращаемые значения
Таблица, приведенная ниже, содержит расшифровку информации возвращаемой в параметрах DONE, ERROR и STATUS, которая должна обрабатываться пользователем.
Информацию по строкам со значениями STATUS = 8FxxH можно найти в справочном руководстве STEP 7: Стандартные и системные функции. Раз- дел, описывающий обработку ошибок с использованием возвращаемого зна- чения RET_VAL содержит более детальную информацию.
Табл. 7–10 Возвращаемые значения функции AG_SEND | |||
DONE | ERROR | STATUS | Значение |
1 | 0 | 0000H | Операция завершена без ошибок. |
0 | 1 | 7000H | Код возможен только для S7–400; FC был вызван с ACT=0; однако операция не выполняется. |
0 | 0 | 8181H | Операция активна. |
0 | 1 | 8183H | Отсутствие настроек или служба FDL не запущена в PROFIBUS CP. |
0 | 1 | 8184H | FDL соединение без операционного буфера: системная ошибка FDL соединение с операционным буфером: параметр LEN<4 или неправильный параметр в заголовке (со свободным доступом к уровню 2). |
0 | 1 | 8185H | Параметр LEN длиннее, чем область, указанная в SEND. |
0 | 1 | 8186H | Неправильное значение ID. ID!=1,2 - 15,16. |
0 | 1 | 8301H | SAP не активна на станции-приемнике. |
0 | 1 | 8302H | Недостаточно ресурсов на приемнике: станция-приемник не может достаточно быстро обработать принимаемые данные или ресурсы приемника не подготовлены. |
0 | 1 | 8303H | Служба PROFIBUS (SDA SendDatawithAcknowledge) (посылка данных с подтверждением) не поддерживается SAP на станции-приемнике. |
0 | 1 | 8304H | FDL соединение не установлено. |
0 | 1 | 8311H | Станция-приемник не доступна по указанному адресу PROFIBUS. |
0 | 1 | 8312H | Ошибка PROFIBUS в CP; например, короткое замыкание на шине, выпадение станции из кольца. |
0 | 1 | 8315H | Внутренняя ошибка параметра в FDL соединении с операционным заголовком: параметр LEN<4 или неправильный параметр в заголовке (со свободным доступом к уровню 2). |
0 | 1 | 8F22H | Некорректная исходная область, например: область не существует в DB, параметр LEN < 0 |
0 | 1 | 8F24H | Неправильная область чтения параметра. |
0 | 1 | 8F28H | Ошибка выравнивания при чтении параметра. |
0 | 1 | 8F32H | Номер DB слишком велик. |
0 | 1 | 8F33H | Неправильный номер DB. |
0 | 1 | 8F3AH | Область не загружена (DB). |
0 | 1 | 8F42H | Превышение времени чтения параметра из области I/O. |
0 | 1 | 8F44H | Адрес считываемого параметра блокирован в треке доступа. |
0 | 1 | 8F7FH | Внутренняя ошибка, напр. неправильная ссылка ANY. Например, LEN=0 |
0 | 1 | 8090H | Не существует модуля с заданным адресом. |
0 | 1 | 8091H | Логический базовый адрес не выровнен по двойному слову. |
0 | 1 | 80B0H | Модуль не распознает данные. |
0 | 1 | 80B1H | Некорректная область приема, например, ее размер > 240 байт. |
0 | 1 | 80B2H | Не возможно установить соединение по шине между CPU и CP. |
0 | 1 | 80C0H | Данные не могут быть считаны. |
0 | 1 | 80C1H | Указанная область данных в данный момент обрабатывается |
0 | 1 | 80C2H | Слишком много незавершенных задач. |
0 | 1 | 80C3H | Ресурсы (память) недоступны. |
0 | 1 | 80C4H | Коммуникационная ошибка (иногда встречается, обычно необходимо просто повторить вызов из пользовательской программы). |
0 | 1 | 80D2H | Неправильный начальный адрес модуля. |
Функциональный блок AG_RECV / AG_LRECV
Функциональные блоки AG_RECV / AG_LRECV используются для получения данных по установленному FDL соединению через PROFIBUS CP. Область данных, указанная для приема может лежать в образе процесса,
меркерной памяти или блоке данных. Успешное завершение работы функции индицируется когда блок данных может быть получен из PROFIBUS CP.
Примечание: Информация, приведенная ниже, относится как к FC AG_RECV так и к AG_LRECV.
Пример на языке STL функционального блока AG_RECV / AG_LRECV
Вызовы с операционным заголовком
Таблица ниже содержит типы соединений и операции, для которых должны быть определены параметры в операционном заголовке. Операционный заголовок расположен в начале FDL области данных. Он занимает 4 байта и должен быть прибавлен к длине, указываемой в параметре LEN. Максимальная длина пользовательских данных для операций с заголовком, таким образом, уменьшена до 236 байт.
Табл. 7–11 Возвращаемые параметры операционного заголовка в области FDL | |||
Параметр | Свободный уровень 2 | Всеобщая рассылка | Множественная рассылка |
адрес PB | Адрес отправителя Значения: 0..126 в зависимости от станции | ||
LSAP | LSAP отправителя 0..63 в зависимости от станции | ||
Службы | Отображение SDN ( Посылка без подтверждения - индикация): Значение: 01H или Отображение SDA (Посылка с подтверждением индикация): Значение: 00H |
Отображение SDN ( Посылка без подтверждения - индикация): Значение: 7FH |
Отображение SDN ( Посылка без подтверждения - индикация): Значение: 01H |
Диаграмма ниже иллюстрирует обычную последовательность при передаче данных, активированной использованием в программе функции AG_RECV. Каждая операция AG_RECV в пользовательской программе подтверждается выходными параметрами NDR, ERROR и STATUS.
Следующая таблица содержит описание всех формальных параметров функции AG_RECV.
Параметр | Объявление | Тип | Принимаемые значения | Комментарии |
ID | INPUT | INT | 1,2...16 (S7–300) 1,2...32 (S7–400) |
Переменная ID содержит номер FDL- соединения (см. настройку в Разделе 2) |
LADDR | INPUT | WORD | Начальный адрес модуля. При конфигурировании CP при помощи ПО STEP, начальный адрес модуля задается в таблице параметров. Укажите этот адрес здесь. | |
RECV | INPUT | ANY | Адрес и размер FDL блока: Возможные области памяти: - Образ процесса – Меркерная память – Блок данных При вызове с операционным заголовком область FDL содержит заголовок и пользовательскую информацию. |
|
LEN | OUTPUT | INT | 1,2,...240 | Количество получаемой в область FDL информации из PROFIBUS CP. При вызове с операционным заголовком LEN >= 4 из-за учета длины заголовка. |
NDR | OUTPUT | BOOL | 0: - 1: новые данные |
Параметр свидетельствует о получении новых данных. Значения параметров NDR, ERROR и STATUS см. в соответствующей таблице. |
ERROR | OUTPUT | BOOL | 0: - 1: ошибка |
Код ошибки Значения параметров NDR, ERROR и STATUS см. в соответствующей таблице. |
STATUS | OUTPUT | WORD | см. таблицу ниже | Код состояния Значения параметров NDR, ERROR и STATUS см. в соответствующей таблице. |
Возвращаемые значения
Таблица, приведенная ниже, содержит расшифровку информации возвращаемой в параметрах NDR, ERROR и STATUS, которая должна обрабатываться пользователем.
Информацию по строкам со значениями STATUS = 8FxxH можно найти в справочном руководстве STEP 7: Стандартные и системные функции. Раз- дел, описывающий обработку ошибок с использованием возвращаемого зна- чения RET_VAL содержит более детальную информацию.
Табл. 7–12 Возвращаемые значения функции AG_RECV | |||
NDR
|
ERROR
|
STATUS
|
Значение
|
1 | 0 | 0000H | Получена новая информация |
0 | 0 | 8180H | Информация пока отсутствует |
0 | 0 | 8181H | Операция активна |
0 | 1 | 8183H | Отсутствие настроек или служба FDL не запущена в PROFIBUS CP. |
0 | 1 | 8184H | Ошибка системы. |
0 | 1 | 8185H | Буфер приемника (RECV) слишком мал. |
0 | 1 | 8186H | Неправильное значение ID. ID!=1,2 - 15,16. |
0 | 1 | 8304H | Соединение FDL не установлено. |
0 | 1 | 8F23H | Некорректная область источника, например: область в DB не существует. |
0 | 1 | 8F25H | Неправильная область записи параметра. |
0 | 1 | 8F29H | Ошибка выравнивания при записи параметра. |
0 | 1 | 8F30H | Параметр принадлежит защищенному от записи первому активному блоку данных. |
0 | 1 | 8F31H | Параметр принадлежит защищенному от записи второму активному блоку данных. |
0 | 1 | 8F32H | Номер DB слишком велик. |
0 | 1 | 8F33H | Неправильный номер DB. |
0 | 1 | 8F3AH | Область назначения не загружена (DB). |
0 | 1 | 8F43H | Превышение времени записи параметра в область I/O. |
0 | 1 | 8F45H | Адрес считываемого параметра блокирован в треке доступа. |
0 | 1 | 8F7FH | Внутренняя ошибка, напр. неправильная ссылка ANY. |
0 | 1 | 8090H | Не существует модуля с заданным адресом. |
0 | 1 | 8091H | Логический базовый адрес не выровнен по двойному слову. |
0 | 1 | 80A0H | Отсутствие подтверждения чтения из модуля. |
0 | 1 | 80B0H | Модуль не распознает данные. |
0 | 1 | 80B1H | Некорректная область приема. |
0 | 1 | 80B2H | Не возможно установить соединение по шине между CPU и CP. |
0 | 1 | 80C0H | Данные не могут быть считаны. |
0 | 1 | 80C1H | Указанная область данных в данный момент обрабатывается. |
0 | 1 | 80C2H | Слишком много незавершенных задач. |
0 | 1 | 80C3H | Ресурсы (память) недоступны. |
0 | 1 | 80C4H | Коммуникационная ошибка (иногда встречается, обычно необходимо просто повторить вызов из пользовательской программы). |
0 | 1 | 80D2H | Неправильный начальный адрес модуля. |
Характеристики / Используемые ресурсы FC
Табл. 7–13 Функциональные блоки для S7-400 | |||||
Название
|
Версия
|
Номер FC
|
Размер, байт
|
MC7
байт |
Локальные
данные, байт |
AG_SEND
|
0.3
|
5
|
738
|
540
|
20
|
AG_RECV
|
0.3
|
6
|
662
|
486
|
20
|
AG_LSEND
|
2.5
|
50
|
1148
|
934
|
54
|
AG_LRECV
|
2.4
|
60
|
1158
|
938
|
56
|
Табл. 7–13 Функциональные блоки для S7-300 | |||||
Название
|
Версия
|
Номер FC
|
Размер, байт
|
MC7
байт |
Локальные
данные, байт |
DP_SEND
|
1.11
|
1
|
384
|
260
|
18
|
DP_RECV
|
1.11
|
2
|
454
|
322
|
22
|
DP_DIAG
|
1.11
|
3
|
1060
|
854
|
34
|
DP_CTRL
|
1.11
|
4
|
630
|
488
|
30
|
AG_SEND
|
1.11
|
5
|
898
|
718
|
32
|
AG_RECV
|
1.11
|
6
|
666
|
504
|
20
|
AG_LSEND
|
2.5
|
50
|
996
|
766
|
52
|
AG_LRECV
|
2.4
|
60
|
1192
|
952
|
58
|
<--Предыдущая статья | Следующая статья--> |