CAN Open

CANopen

CANopen - протокол более высокого уровня. Это означает, что шина CAN (ISO 11898) служит «транспортным средством»

Использует 11 бит идентификатор, 1 бит RTR и 64 бита данных.

6-ть ключевых аспектов CANopen

  • Communication Models. Существует 3 модели связи между устройством и узлом: Master/slave, client/server и producer/consumer
  • Communication Protocols. Протокол связи состоит из настройка узлов (SDO) или передачи данных в реальном времени (PDO)
  • Device States. Устройство поддерживает разные состояния. «Master» узел может изменить состояние «Slave» узла, например: сброс настроек
  • Object Dictionary. Каждое устройство имеет OD с записями, которые определяют, например. конфигурация устройства. Доступ к нему можно получить через SDO.
  • Electronic Data Sheet. EDS — это стандартный формат файла для записей OD
  • Device Profiles. Стандарты описывают, например, модули ввода-вывода (CiA 401) и управление движением (CiA 402).

CANopen фрейм

can-open-frame.jpg

Пример разбора фрейма

          code  node id
ID189 =>  00011 0001001
  • functional code = 011 (Transmit PDO1)
  • Node Id = 1001 (0x189 иил 393 dec)

Максимальное количество узлов = 127.

COB

can-open-cob-functions.jpg

Описание COB

1. NMT (Network Managemant)

Служба NMT используется для управления состоянием устройств CANopen (например, предоперационное, рабочее, остановленное) с помощью команд NMT (например, запуск, остановка, сброс)

Чтобы изменить состояние, мастер NMT отправляет 2-байтовое сообщение с CAN ID 0 (т. е. код функции 0 и идентификатор узла 0). Все подчиненные узлы обрабатывают это сообщение. Первый байт данных CAN содержит запрошенное состояние, а второй байт данных CAN содержит идентификатор целевого узла. Идентификатор узла 0 указывает широковещательную команду.

         code & node-id   staste    node id
ID000 =>  00000 0000000 # 000000001 00000101

Возможные команды:

  • 01 - переход в рабочий режим
  • 02 остановленный
  • 80 предоперационный режим
  • 81 сброс приложения
  • 82 сброс связи
2. SYNC

SYNC используется, например. для синхронизации считывания входов и срабатывания нескольких устройств CANopen – обычно запускается мастером приложения.

Мастер приложения отправляет сообщение SYNC (COB ID 080) в сеть CANopen (со счетчиком SYNC или без него). Несколько подчиненных узлов могут быть настроены так, чтобы реагировать на SYNC

3. EMCY

Emergency Service - Служба экстренной помощи используется в случае, если в устройстве произошла фатальная ошибка (например, сбой датчика), что позволяет ему сообщить об этом остальной части сети.

Затронутый узел отправляет в сеть одно сообщение EMCY (например, с COB-ID 085 для узла 5) с высоким приоритетом. Байты данных содержат информацию об ошибке, подробности которой можно просмотреть.

COB-ID 085

          code node id
ID000 =>  0001 0000101 # 
4. TIME [PDO]

С помощью этой службы связи можно распределять время глобальной сети. Служба TIME содержит 6-байтовую информацию о дате и времени

Мастер приложения отправляет сообщение TIME с CAN ID 100, где первые 4 байта данных содержат время в мс после полуночи, а следующие 2 байта содержат количество дней с 1 января 1984 года.

5. PDO Process Data Object [PDO]

Служба PDO используется для передачи данных в реальном времени между устройствами - например. измеренные данные, такие как положение или данные команд, такие как запросы крутящего момента.

6. SDO Service Data Object

Службы SDO используются для доступа/изменения значений в словаре объектов устройства CANopen - например. когда устройству "master" необходимо изменить определенные конфигурации устройства CANopen.

7. Node monitoring(Heartbeat) [SDO]

Служба Heartbeat преследует две цели: предоставить «активное» сообщение и подтвердить команду NMT

Подчиненное устройство NMT периодически отправляет (например, каждые 100 мс) сообщение Heartbeat (например, с CAN ID 705 для узла 5) с «состоянием» узла в 1-м байте данных.

«Потребитель» сообщения Heartbeat (например, мастер NMT и, возможно, любое другое устройство) затем реагирует, если в течение определенного периода времени сообщение не получено.

Службы PDO и SDO особенно важны, поскольку они составляют основу большинства коммуникаций CANopen

CANopen Словарь объектов (Object Dictionary)

Все узлы CANopen должны иметь словарь объектов (OD) — но что это такое?

Словарь объектов представляет собой стандартизированную структуру, содержащую все параметры, описывающие поведение узла CANopen.

Записи OD ищутся по 16-битному индексу и 8-битному субиндексу. Например, индекс 1008 (субиндекс 0) OD узла, совместимого с CANopen, содержит имя узлового устройства.

В частности, запись в словаре объектов определяется атрибутами:

  • Index: 16-битный базовый адрес объекта
  • Object name: Название устройства производителя
  • Object code: Массив, переменная или запись
  • Data type: Например. VISIBLE_STRING, или UNSIGNED32, или "имя записи".
  • Access: rw (чтение/запись), ro (только чтение), wo (только запись)
  • Category: Указывает, является ли этот параметр обязательным/необязательным (M/O).

Стандартизированные разделы ОД

Словарь объектов разделен на стандартизированные разделы, некоторые записи из которых являются обязательными, а другие настраиваются.

OD Index(16 bit)    Description
0000                Reserved
0000 - 025F         Data types
0260 - 0FFF         Reserved
1000 - 1FFF         Communication object area
2000 - 5FFF         Manufacturer specific area
6000 - 9FFF         Device profile specific area
A000 - BFFF         Interface profile specific area
C000 - FFFF         Reserved

Важно отметить, что записи OD устройства (например, ведомого) могут быть доступны другому устройству (например, ведущему) через CAN, используя, например, SDO.

Например, это может позволить master устройству изменить подчиненный узел, например обработку датчика ли частоту выборки сигнала.

Electronic Data Sheet and Device Configuration File (Электронный паспорт и файл конфигурации устройства)

EDS OBJECT 1006             Комментарий                 DCF OBJECT 1006
;vale for object 1006h      Поле комментария            ;value of object 1006h
[1006]                      16 бит Индекс обЪекта       [1006]
SubNumber=9                 Номер ПодИндекса            SubNumber=0
ParameterName=ParaName      Имя объекта                 ParameterName=ParaName
ObjectType=0x7              Тип обЪекта (7 = VAR)       ObjectType=0x7
DataType=0x0007             Индекс типа даннх           DataType=0x0007 
LowLimin=10000              Минимальный лимит           LowLimin=10000   
DefaultValue=20000          Значение по умолчанию*      DefaultValue=20000
HighLimit=20000             Максимальный лимит          HighLimit=20000
AccessType=ro               Тип доступа: чтение  (ro)   AccessType=ro
PDOMapping=0                PDO распределение даннх     PDOMapping=0  
                            Конкретный параметр         ParameterValue=15000

Как уже упоминалось, DCF обычно создается при интеграции устройства. Однако часто бывает необходимо прочитать и/или изменить значения объекта узла после первоначальной настройки — именно здесь в игру вступает служба CANopen SDO.

SDO — настройка сети CANopen

Служба CANopen PDO используется для эффективного обмена оперативными данными в реальном времени между узлами CANopen.

Как упоминалось в разделе «модели связи», службы CANopen SDO используют поведение «client/server».

Целью может быть обновление записи OD (так называемая «загрузка SDO») или чтение записи («загрузка SDO»).

В простых сетях master/slave узел с функциями главного устройства NMT действует как клиент для всех подчиненных узлов NMT, читающих или записывающих данные в свои OD.

Описание ферейма

bandicam_2024-07-09_12-30-38-636.jpg

Передача SDO 585, Получение SDO 605

Как только кадр CAN отправляется master (client), подчиненный узел 5 (server) отвечает посредством «передачи SDO» с COB-ID 585. Ответ содержит индекс/субиндекс и 4 пустых байта данных. Естественно, если клиентский узел вместо этого запросит загрузку (т. е. чтение данных из узла 5 OD), узел 5 ответит соответствующими данными, содержащимися в байтах 4-7.

SDO являются гибкими, но несут много накладных расходов, что делает их менее идеальными для операционных данных в реальном времени. Здесь на помощь приходит PDO.

PDO Описание

Служба CANopen PDO используется для эффективного обмена оперативными данными в реальном времени между узлами CANopen.

Служба CANopen PDO используется для эффективного обмена оперативными данными в реальном времени между узлами CANopen.

Например, PDO будет передавать данные о давлении от датчика давления или данные о температуре от датчика температуры.

Пример сообщения

COB-ID
Byte 0-1 : Данные параметра 1
Byte 2-3 : Данные параметра 2
Byte 4-7 :  Данные параметра 3

Дополнительные материалы

Ссылки

canopen

Оставьте комментарий

Обратите внимание, что мы не будем показывать ваш адрес электронной почты другим пользователям и не будем использовать его для отправки нежелательных электронных писем.