3.2. Передача сообщений
Profibus использует два типа сервисов для передачи сообщений: SRD (Send and Receive Data with acknowledge - "отправка и прием данных с уведомлением") и SND (Send Data with No acknowledge - "отправка данных без уведомления").
Сервис SRD позволяет отправить и получить данные в одном цикле обмена. Этот способ обмена наиболее распространен в Profibus и очень удобен при работе с устройствами ввода-вывода, поскольку в одном цикле можно и отправить, и получить данные.
Сервис SND используется, когда надо отправить данные одновременно группе ведомых устройств (многоабонентский режим) или всем ведомым устройствам (широковещательный режим). При этом ведомые устройства не отправляют свои уведомления мастеру.
Сообщение в Profibus называется телеграммой. Телеграмма может содержать до 256 байт, из них 244 байта данных, плюс 11 служебных байт (заголовок телеграммы). Все телеграммы имеют заголовки одинаковой длины, за исключением телеграммы с названием Data_Exchange. Заметим, что 11 байт служебной информации делают Profibus очень неэффективным при передаче коротких сообщений. Однако при больших объемах данных такой формат телеграммы достаточно эффективен.
Рис. 2. Структура телеграммы Profibus
|
Поля телеграммы на рис. 2. имеют следующее содержание:
SD - стартовый разделитель. Используется для указания начала телеграммы и ее формата. Имеется четыре типа разделителей для телеграмм запроса и ответа и один тип для короткого уведомления. Короткое уведомление имеет поле SD, но не в начале телеграммы;
LE - длина передаваемых данных (DA+SA+FC+DSAP+SSAP+DU);
LEr - повторение поля LE с целью его резервирования;
DA - адрес устройства-получателя телеграммы;
SA - адрес отправителя;
FC - код типа телеграммы (запрос, уведомление, ответ, диагностические данные, тип устройства - мастер или ведомый, приоритет, уведомление);
DSAP - устройство-получатель использует это поле чтобы определить, какой тип сервиса нужно выполнить;
SSAP - COM порт отправителя;
DU - данные длиной от 1 до 244 байт;
FCS - контрольная сумма телеграммы (сумма значений полей DA+SA+ FC+DU, по модулю 255);
ED - признак конца.