Работа по протоколу CANopen

Плата поддерживает асинхронный обмен SDO, а также периодическую запись в частотный преобразователь четырех объектов данных RPDO и периодическое чтение из частотного преобразователя четырех объектов данных TPDO.

В качестве способа обнаружения ошибок работы устройств в сети CAN используется контрольное тактирование (протокол Heartbeat).

Для высокоприоритетных сообщений об ошибках (срочных сообщений) используются объекты Emergency.

Идентификатор CAN-сообщения (COB ID)

CAN-сообщение содержит идентификатор сообщения (COB ID). COB ID для соответствующих типов сообщений приведены в таблице.

COB ID сообщений
Тип сообщенияCOB ID (hex)

NMT

0x000

SYNC

0x080

EMCY

0x80+NodeID

SDO Send

0x600+NodeID

SDO Receive

0x580+NodeID

RPDO1

0x200+NodeID

RPDO2

0x300+NodeID

RPDO3

0x400+NodeID

RPDO4

0x500+NodeID

TPDO1

0x180+NodeID

TPDO2

0x280+NodeID

TPDO3

0x380+NodeID

TPDO4

0x480+NodeID

Примечание
NodeID – адрес (номер) устройства в сети CAN

Доступ к параметрам через SDO

Параметры ПЧВ отображаются в объектах CANopen с использованием индекса (index) и субиндекса (subindex) объектного словаря CANopen.

При этом, индекс включает в себя номер группы параметров ПЧВ, а субиндекс – номер конкретного параметра ПЧВ:

Index = 0x2000 + номер группы параметров
Subindex = 1+ номер параметра
Graphic
Пример

У параметра F01.05 номер группы параметров: 01, номер параметра: 05.

Следовательно, доступ к параметру F01.05 осуществляется через объект:

index = 0х2001 subindex = 0х06.

Для записи параметров в энергонезависимую память используются объекты в соответствии с таблицей.

Индексы и субиндексы для групп параметров ПЧВ при записи в энергонезависимую память
Группа параметров ПЧВIndexSubindex

F00 – F15

0х20f0 – 0х20ff соответственно

Subindex = 1+ номер параметра

F16 – F31

0х20a0 – 0х20af соответственно

Чтение и запись параметров через SDO

Команда чтения параметра через SDO
ПолеДанныеОписание

ID

0x600 + NodeID

Идентификатор, содержащий адрес устройства (NodeID)

RTR

0

Data0

0x40

Команда на чтение

Data1

Index, младший байт

Data2

Index, старший байт

Data3

Subindex

Data4 – Data7

Резерв

Ответ на команду чтения
ПолеДанныеОписание

ID

0x580 + NodeID

Идентификатор, содержащий адрес устройства (NodeID)

RTR

0

Data0

0x43

0x4b

0x4f

0x80

0x43 – успешно, 4 байта данных

0x4b – успешно, 2 байта данных

0x4f – успешно, 1 байт данных

0x80 – ошибка чтения

Data1

Index, младший байт

Data2

Index, старший байт

Data3

Subindex

Data4 – Data7

Данные или код ошибки

(Data4 – младший байт,

Data7 – старший байт)

Коды ошибок – см. таблицу

Команда записи параметра через SDO
ПолеДанныеОписание

ID

0x600 + NodeID

Идентификатор, содержащий адрес устройства (NodeID)

RTR

0

Data0

0x23

0x2b

0x2f

0x23 – запись 32 бита

0x2b – запись 16 бит

0x2f – запись 8 бит

Data1

Index, младший байт

Data2

Index, старший байт

Data3

Subindex

Data4 – Data7

Данные

(Data4 – младший байт,

Data7 – старший байт)

Ответ на команду записи
ПолеДанныеОписание

ID

0x580 + NodeID

Идентификатор, содержащий адрес устройства (NodeID)

RTR

0

Data0

0x60

0x80

0x60 – успешно

0x80 – ошибка

Data1

Index, младший байт

Data2

Index, старший байт

Data3

Subindex

Data4 – Data7

В случае ошибки записи – код ошибки

(Data4 – младший байт,

Data7 – старший байт)

Если запись успешна – 0 (нет ошибок)

Коды ошибок – см. таблицу

Коды ошибок
Код (hex)Описание

0х05040000

Превышен таймаут

0х05040001

Неверная команда SDO

0х06010002

Запись в объект, доступный только для чтения

0х06020000

Объект не найден

0х06040041

Объект невозможно назначить в PDO

0х06040042

Длина PDO превышает допустимую

0х06070010

Несуществующий тип данных

0х06090011

Subindex не существует

0х06090030

Значение вне допустимого диапазона

0х08000000

Неизвестная ошибка

0х08000020

Невозможно изменить данные в текущем состоянии

Примеры чтения и записи параметров ПЧВ через SDO приведены ниже.

Пример

Чтение параметра ПЧВ F02.02 (адрес 0х0202):

ИдентификаторRTRДанные (hex)

0x602

0

40 02 20 03 00 00 00 00

Ответ ПЧВ:

ИдентификаторRTRДанные (hex)

0x582

0

4b 02 20 03 00 00 00 00

Пример

Запись значения 3 в параметр ПЧВ F02.02 (адрес 0х0202):

ИдентификаторRTRДанные (hex)

0x602

0

2b 02 20 03 03 00 00 00

Пример

Чтение параметра ПЧВ C00.26 с адресом 0x211A (номинальное напряжение ПЧВ):

ИдентификаторRTRДанные (hex)

0x602

0

40 21 20 1b 00 00 00 00

Ответ ПЧВ:

ИдентификаторRTRДанные (hex)

0x582

0

4b 21 20 1b dc 00

Пример

Чтение коммуникационных переменных (на примере адреса 0x3006):

ИдентификаторRTRДанные (hex)

0x602

0

40 30 20 07 00 00 00 00

Ответ ПЧВ:

ИдентификаторRTRДанные (hex)

0x582

0

4b 30 20 07 00 00

Пример

Запись коммуникационных переменных (на примере адреса 0x3006, значение 100):

ИдентификаторRTRДанные (hex)

0x602

0

2b 30 20 07 64 00

Ответ ПЧВ:

ИдентификаторRTRДанные (hex)

0x582

0

60 30 20 07