Введение в протокол DeviceNet

DeviceNet предназначен для объединения промышленных устройств в единую сеть с общей шиной. DeviceNet - сетевое решение, которое предоставляет полноценную инфраструктуру для установления соединений между устройствами с поддержкой полной взаимозаменяемости устройств разных производителей. DeviceNet - открытый стандарт, и производители не обязаны приобретать лицензии для разработки DeviceNet совместимых устройств. Любой может приобрести спецификацию DeviceNet в ODVA. Любая компания может стать членом ODVA, и принимать участие в рабочей группе по дальнейшему усовершенствованию стандарта.

Соединения (Connections)

DeviceNet - это протокол ориентированный на соединения. Прежде чем между двумя узлами сети могли быть переданы какие-либо данные, должно быть установленно сетевое соединение. Для установления сетевых соединений узел использует либо Unconnected Message Manager (UCMM - менеджер сообщений без установления соединения), либо Unconncted Port. Для обмена данными в DeviceNet используются два основных типа сообщений:

  • явные сообщения (explicit messages)
  • сообщения ввода-вывода (I/O messages).

     Явные сообщения представляют собой обмен запрос-ответ, имеющий своей целью обеспечение служебных функций, например, таких, как удаленная конфигурация узла и настройка параметров соединения. Сообщения ввода-вывода предназначены для быстрого обмена данными. Сообщения обоих типов могут обрабатывать данные любой длины благодаря поддерживаемому механизму фрагментации (без фрагментации максимальная длина сообщения - 7 байт).

DeviceNet использует поле идентификатора CAN кадра для поддержки схемы адресации в сети. DeviceNet поддерживает до 64 узлов. Все идентификаторы поделены на группы (рис. 1).

Рис. 1. Поле идентификатора в DeviceNet.

  • Группа 1 - содержит наиболее приоритетные идентификаторы. Всего 1024 идентификатора, т.е. по 16 на каждый узел.
  • Группа 2 - отличается внутренним использованием битов. Она введена для поддержки CAN контроллеров, которые фильтруют поступающие сообщения только по первым восьми битам. Это так называемые Basic-CAN контроллеры. Некоторые идентификаторы 2-ой группы используются системой в специальных целях.
  • Группа 3 - предоставляет для каждого узла по 7 низкоприоритетных идентификаторов.
  • Группа 4 - используется для обработки внештатных ситуаций, таких, например, как восстановление работоспособности узла после сбоя.

Для адресации узла каждому узлу в сети DeiceNet назначается так называемый MAC ID (Media Access Control Identificator - Идентификатор контроля доступа к сети). Размер поля MAC ID составляет 6 бит, поэтому в сети Device Net может находится до 64 узлов. Уникальность каждого MAC ID обеспечивается процедурой проверки уникальности MAC ID, которую проходит каждый узел сети во время подключения. Если узел при подсоединении к сети обнаруживает, что в сети уже работает узел с таким же MAC ID, то он регистрирует ошибку и отключается от сети.

Узел сети DeviceNet может быть клиентом или сервером. Сервер и клиент могут или отправлять сообщения (producer), или принимать сообщения (consumer), или одновременно и отправлять и принимать. Следует отметить, что с точки зрения схемы Master/Slave, Master является клиентом, а Slave - сервером. Обычно клиент посылает (produce) какое-либо сообщение, и принимает (consume) ответ на него. Сервер обычно принимает (consume) запрос и посылает (produce) ответ на него. DeviceNet имеет несколько вариаций этой стандартной модели. Некоторые соединения в клиенте или сервере могут только принимать сообщения. Ети соединения представляют собой конечные пункты доставки сообщений типа Cyclic или Change-of-State (см. ниже). А соединения используемые только для передачи, представляют собой источники сообщений типа Cyclic или Change-of-State.

Объектная модель

DeviceNet использует абстрактную объектную модель для описания набора доступных сетевых сервисов, видимого снаружи поведения узлов сети, а также общих способов доступа к информации внутри узла и обмена этой информацией между узлами. Каждый узел сети DeviceNet описывается как набор объектов (рис. 2). Каждый объект узла сети имеет строго определенные спецификацией атрибуты, которые задают его свойства и сервисы (службы), определяющие его поведение. Взаимодействие между объектами внутри узла и взаимодействие объектов друг с другом через сеть происходит посредством изменения этих атрибутов и обмена запросами к сервисам. Поясним назначение отдельных объектов в схеме на рис. 2.

Рис. 2. Узел сети DeviceNet.

  • Сonnection Object - обеспечивает взаимодействие данного узла с другими узлами по сети Device Net. Каждый узел имеет как минимум два таких объекта. Каждый такой объект представляет одну из конечных точек соединения между двумя узлами. Два объекта соответствуют двум типам соединения: Explicit Messaging and I/O Messaging. Explicit сообщения содержат адрес атрибута, значение атрибута и код сервиса, который необходимо осуществить. I/O сообщения содержат только данные. Вся информация о том что необходимо делать с этими данными содержится в Connection объекте ассоциированным с этим I/O соединением.
  • Аssembly Object - группирует данные от разных объектов данного узла в один блок данных для последующей передачи как целого.
  • Application Object - задает специфику поведения данного устройства (содержит специфичный для данного узла код приложения).
  • Device Net Object - определяет конфигурацию и статус физического соединения с сетью Device Net. Содержит следующие атрибуты: адрес узла (MAC ID), baudrate, обработчик события Bus-Off, Bus-Off счетчик и т.п.
  • Identity Object - содержит такие данные об устройстве как, VendorID, тип устройства, Product code, версия, статус, сериальный номер, название устройства.
  • Message Router - направляет приходящие Explicit сообщения объектам, которым эти сообщения были адресованы. Этот объект является внутренним для устройства и не виден со стороны сети.
  • Parameter Object - содержит основные данные о конфигурации устройства, и предоставляет средствам конфигурации возможность удаленно оперировать устройством.

Предопределенный набор соединений Master/Slave (Predefined Master/Slave Connection Set)

В целом DeviceNet предполагает динамическое установление и конфигурирование соединений между устройствами. Однако большинство устройств имеют детерминированное и жестко заданное поведение. Расходовать дополнительные вычислительные ресурсы на динамическое конфигурирование соединений в таких устройствах нецелесообразно. Предопределенный набор соединений Master/Slave предназначен как раз для таких устройств, состояние соединений которых определено раз и навсегда, а конфигурирование соединений происходит при включении питания. Все что нужно Master устройству для начала работы с такими Slave устройствами - это объявить себя Master'ом. Предопределенный набор соединений Master/Slave состоит из одного explicit соединения, которое позволяет устанавливать несколько типов I/O соединений:

  • Bit-Strobe соединения используются для быстрого обмена I/O данными между Master'ом и его Slave'ми. Bit-Strobe Command посылает один бит информации каждому Slave'у чей MAC ID находится в скан списке Master'а. Bit-Strobe Command содержит битовую строку длиной 64 бит (8 байт), по одному биту на каждый MAC ID сети DeviceNet. Bit-Strobe Response возвращает Master'у до 8 байт данных (один CAN-frame) от каждого запрошенного Slave'а.
  • Poll соединения используются для обмена I/O данными любой длины между Master'ом и его Slave'ами (данные отсылаются по запросу с использованием механизма фрагментации).
  • Change of State/Cyclic соединения для обмена I/O данными любой длины между Master'ом и его Slave'ами с использованием Change of State и Cyclic способов передачи данных (данные отсылаются или при изменении состояния устройства, или периодически).

The Predefined Set contains one explicit messaging connection and allows several different I/O connections including Bit Strobed Command/Response, Change-of-State and Cyclic

Профили устройств

Профили устройств используются в DeviceNet для того, чтобы устройства одного типа разных производителей были взаимозаменяемы. Спецификация DeviceNet описывает множество типичных профилей устройств. Профиль устройства содержит:

  • определение объектной модели устройства (какие объекты и в каком количестве содержит устройство, поведение этих объектов),
  • формат I/O данных устройства (включает в себя определение объекта Assembly),
  • определение конфигурационных параметров устройства и их интерфейс доступа (обычно оформляется в виде так называемой Electronic Data Sheet (EDS)).