../_images/canbp.png

Service Data Objects (SDO)

Объект служебных данных реализует прямой канал связи для доступа к словарю объектов. Для объектов сервисных данных (SDO) реализован базовый метод связи клиент/сервер, как режим связи «точка-точка», который позволяет выполнять чтение или запись данных в словаре узла.

Сообщения SDO содержат запросы или ответы в/из словаря объектов. Из-за его накладных расходов протокола и принципа связи, управляемым мастером, это не хорошо подходит для передачи технологических данных.

Соединение SDO обычно инициируется ведущим приложением (мастером), которое выступает в качестве клиента SDO и управляет всеми каналами связи SDO. Ввод-вывод устройства предоставляют серверы SDO, что означает, что они предоставляют или получают данные от клиента по запросу (например, PLC).

Словарь объектов состоит из 16-битного индекса и 8-битного субиндекса, которые адресуют соответствующие записи в каталоге объектов.

../_images/sdo.gif

Протокол SDO: доступ к каталогу объектов

При размере передаваемого параметра не более 4 байт достаточно одного рукопожатия (одна телеграммная пара): Для загрузки клиент отправляет данные вместе со своим индексом и субиндексом, а сервер подтверждает прием. . Для загрузки клиент запрашивает данные, передавая индекс и субиндекс желаемого параметра, а сервер отправляет параметр (включая индекс и субиндекс) в своей ответной телеграмме.

Одна и та же пара идентификаторов используется как для загрузки, так и для скачивания. Телеграммы, длина которых всегда составляет 8 байт, в первом байте данных кодируют различные услуги. Все параметры, за исключением объектов 1008h, 1009h и 100Ah (имя устройства, версии аппаратного и программного обеспечения), имеют длину не более 4 байт, поэтому это описание ограничено передачей в ускоренном режиме.

С помощью сервисных объектов данных (SDO) предоставляется запись в OD устройства. Так как эти данные могут содержать данные произвольного размера, и тип данных SDO может быть использован для передачи нескольких наборов данных (каждый из которых может содержать произвольно большой блок данных) от клиента к серверу, и наоборот. Клиент может управлять через мультиплексор (индекс и sub-индекс словаря OD), какой набор данных должен передаваться. Содержимое набора данных определяется в OD.

Обычно SDO передается как последовательность сегментов. Перед передачей сегментов присутствует фаза инициализации, где клиент и сервер подготавливают самих себя к передаче сегментов. Для SDO также можно передавать набор данных до 4 байт включительно сразу на фазе инициализации. Этот механизм называется ускоренной передачей (expedited transfer).

Опционально SDO может быть передан как последовательность блоков, где каждый блок это последовательность до 127 сегментов, содержащих номер сегмента и данные. Перед передачей блоков здесь есть фаза инициализации, где клиент и сервер могут подготовить самих себя для передаче блоков, и обмениваются количеством сегментов в одном блоке. После передачи блоков присутствует фаза завершения, где клиент и сервер опционально проверяют корректность предыдущих передач данных путем сравнения контрольных сумм, вычисленных от набора данных. Вышеупомянутый тип передачи называется блоковой передачей, который осуществляется быстрее, чем сегментированная передача большого набора данных.

Возможна выгрузка блока SDO (SDO Block Upload), с которой размер набора данных не выровнен по передаче блока, потому что подразумевается дополнительная нагрузка на протокол. В этих случаях на фазе инициализации может быть реализована поддержка отступа для сегментированной или ускоренной передачи. Поскольку предположение о минимальном размере набора данных, для которого блочная передача выигрывает по сравнению с другими типами передачи, зависит от различных параметров, клиент на фазе инициализации показывает это пороговое значение в байтах для сервера. Для блочной передачи используется схема Go-Back-n ARQ (Automatic Repeat Request, автоматический запрос повтора) для подтверждения каждого блока.

После загрузки блока (download) сервер показывает клиенту последний успешно принятый сегмент этой блочной передачи путем подтверждения этого последовательного номера сегмента. Делая так, сервер неявно подтверждает все сегменты, которые предшествовали этому сегменту. Клиент должен начать передачу следующего блока с повторной передачей всех не подтвержденных данных. Дополнительно сервер должен показать количество сегментов на блок для следующей передачи блока.

После выгрузки блока (upload) клиент показывает серверу последний успешно принятый сегмент этого блока путем подтверждения последовательного номера сегмента. Делая так, клиент неявно подтверждает все сегменты, предшествующие этому сегменту. Сервер должен начать передачу следующего блока с повторной передачи всех не подтвержденных данных. Дополнительно клиент должен показать количество сегментов на блок для следующей передачи блока.

Для всех типов передач инициатива передачи находится на стороне клиента. Владельцем OD, к которому осуществляется доступ, является сервер SDO. Обе стороны - и клиент, и сервер могут взять инициативу по обрыву передачи SDO (abort).

С помощью SDO между устройствами устанавливается канал связи точка-точка (peer-to-peer). Устройство может поддерживать больше чем один объект SDO. В случае по умолчанию поддерживается один Server-SDO (SSDO), так называемый SDO по умолчанию (Default SDO).

Объекты SDO описываются записью параметра коммуникации SDO (SDO communication parameter record, 22h). Структура этого типа данных объясняется в «Структура словаря». SDO communication parameter описывает возможности коммуникации для объектов Server-SDO и Client-SDOs (CSDO). Индексы соответствующих записей OD вычисляются по следующим формулам:

  • SSDO communication parameter index = 1200h + номер_SSDO - 1

  • CSDO communication parameter index = 1280h + номер_CSDO - 1

Для каждого SDO являются обязательными параметры коммуникации. Если существует только один SSDO, то параметры коммуникации могут быть опущены.