- Введение
- Продукция
- Маркировка
- Функции
- Руководство пользователя
- О документации
- Меры безопасности
- Индикация
- Максимальная конфигурация
- CAN-топология
- Подключение CAN-шины
- Разъемы и провода
- Монтаж модулей
- Общие правила и нормы эксплуатации
- Технические характеристики
- Условия эксплуатации
- Использование по назначению
- Маркировка
- Техническое обслуживание
- Транспортирование и хранение
- Упаковка
- Гарантийные обязательства
- Обновление
- Платформа CAN bp
- CANopen
- ISOBUS (ISO 11783)
- Решения
- Параметризация
- Программирование
- Литература и источники
- Образование
- Дополнительная информация
Работа с словарем¶
SDO (service data object) используются для прямого доступа к объектному словарю устройства CANopen. С помощью команд SDO можно изменить объекты в словаре для настройки устройства. Для изменения некоторых объектов нужно перевести устройство в предварительный режим с помощью команд NMT.
Команда на чтение¶
Структура посылок SDO для параметризации описана ниже.
11 bit идентификатор |
8 byte данные |
|||||||
---|---|---|---|---|---|---|---|---|
0x600 + node ID |
0x40 |
Index0 |
Index1 |
SubIdx |
0x00 |
0x00 |
0x00 |
0x00 |
Параметр |
Пояснение |
---|---|
Index0 |
Младший байт индекса (Unsigned16, LSB) |
Index1 |
Старший байт индекса (Unsigned16, MSB) |
SubIdx |
Субиндекс (Unsigned8) |
11 bit идентификатор |
8 byte данные |
|||||||
---|---|---|---|---|---|---|---|---|
0x580 + node ID |
0x4x |
Index0 |
Index1 |
SubIdx |
0x00 |
0x00 |
0x00 |
0x00 |
Параметр |
Пояснение |
---|---|
Index0 |
Младший байт индекса (Unsigned16, LSB) |
Index1 |
Старший байт индекса (Unsigned16, MSB) |
SubIdx |
Субиндекс (Unsigned8) |
Data0 |
Младший байт данных (LLSB) |
Data3 |
Старший байт данных (MMSB) |
Параметры с типом данных Unsigned8 передаются в байте D0, параметры с типом данных Unsigned16 используют D0 и D1.
Количество действительных байтов данных кодируется следующим образом в первом байте данных CAN (0x4x):
Количество байт параметров |
||||
---|---|---|---|---|
Первый байт данных CAN |
0x4F |
0x4B |
0x47 |
0x43 |
Команда на запись¶
11 bit идентификатор |
8 byte данные |
|||||||
---|---|---|---|---|---|---|---|---|
0x600 + node ID |
0x22 |
Index0 |
Index1 |
SubIdx |
Data0 |
Data0 |
Data0 |
Data0 |
Параметр |
Пояснение |
---|---|
Index0 |
Младший байт индекса (Unsigned16, LSB) |
Index1 |
Старший байт индекса (Unsigned16, MSB) |
SubIdx |
Субиндекс (Unsigned8) |
Data0 |
Младший байт данных (LLSB) |
Data3 |
Старший байт данных (MMSB) |
Опционально можно указать количество байт данных в первом байте запроса CAN.
Количество байт параметров |
||||
---|---|---|---|---|
Первый байт данных CAN |
0x2F |
0x2B |
0x27 |
0x23 |
11 bit идентификатор |
8 byte данные |
|||||||
---|---|---|---|---|---|---|---|---|
0x580 + node ID |
0x60 |
Index0 |
Index1 |
SubIdx |
0x00 |
0x00 |
0x00 |
0x00 |
Параметр |
Пояснение |
---|---|
Index0 |
Младший байт индекса (Unsigned16, LSB) |
Index1 |
Старший байт индекса (Unsigned16, MSB) |
SubIdx |
Субиндекс (Unsigned8) |
Ошибки SDO¶
Обмен параметрами прерывается, если он неисправен. Для этой цели клиент или сервер отправляют телеграмму SDO следующей структуры:
11 bit идентификатор |
8 byte данные |
|||||||
---|---|---|---|---|---|---|---|---|
0x580(client) или 0x600(server)+node ID |
0x80 |
Index0 |
Index1 |
SubIdx |
Error0 |
Error1 |
Error2 |
Error3 |
Параметр |
Пояснение |
---|---|
Index0 |
Младший байт индекса (Unsigned16, LSB) |
Index1 |
Старший байт индекса (Unsigned16, MSB) |
SubIdx |
Субиндекс (Unsigned8) |
Error0 |
Младший младший байт кода ошибки SDO (LLSB) |
Error3 |
Старший байт кода ошибки SDO (MMSB) |
Код ошибки SDO |
Пояснение |
---|---|
0x05 03 00 00 |
Бит переключения не изменен |
0x05 04 00 01 |
Спецификатор команды SDO недействителен или неизвестен |
0x06 01 00 00 |
Доступ к этому объекту не поддерживается |
0x06 01 00 02 |
Попытка записи в параметр Read_Only |
0x06 02 00 00 |
Объект не найден в каталоге объектов |
0x06 04 00 41 |
Объект не может быть отображен в PDO |
0x06 04 00 42 |
Количество и/или длина отображаемых объектов превысит длину PDO |
0x06 04 00 43 |
Общая несовместимость параметров |
0x06 04 00 47 |
Общая внутренняя ошибка устройства |
0x06 06 00 00 |
Доступ прерван из-за аппаратной ошибки |
0x06 07 00 10 |
Тип данных или длина параметра не совпадают или неизвестны |
0x06 07 00 12 |
Тип данных не соответствует, длина параметра слишком велика |
0x06 07 00 13 |
Тип данных не соответствует, длина параметра слишком коротка |
0x06 09 00 11 |
Субиндекс отсутствует |
0x06 09 00 30 |
Общая ошибка диапазона значений |
0x06 09 00 31 |
Ошибка диапазона значений: слишком большое значение параметра |
0x06 09 00 32 |
Ошибка диапазона значений: значение параметра слишком |
0x06 0A 00 23 |
Ресурс недоступен |
0x08 00 00 00 |
Общая ошибка |
0x08 00 00 21 |
Доступ невозможен из-за локального приложения |
0x08 00 00 22 |
Доступ невозможен из-за текущего состояния |
Кроме того, для связи регистров были введены коды ошибок, зависящие от производителя (индекс 0x4500, 0x4501):
Код ошибки SDO |
Пояснение |
---|---|
0x06 02 00 11 |
Неверная таблица: таблица или канал отсутствуют |
0x06 02 00 10 |
Неверный регистр: таблица отсутствует |
0x06 01 00 22 |
Защита от записи все еще включена |
0x06 07 00 43 |
Неверное количество аргументов функции |
0x06 01 00 21 |
Функция все еще активна, повторите попытку позже |
0x05 04 00 40 |
Общая ошибка маршрутизации |
0x06 06 00 21 |
Ошибка доступа к таблице BC |
0x06 09 00 10 |
Общая ошибка связи с терминалом |
0x05 04 00 47 |
Тайм-аут связи с терминалом |
Пример: Чтение параметра¶
В примере чтение интервала сердцебиения
COB-ID |
DLC |
0 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
---|---|---|---|---|---|---|---|---|---|
600 + NodeID |
[8] |
40 |
17 |
10 |
00 |
00 |
00 |
00 |
00 |
NodeID - номер устройства в формате hex
COB-ID - 600 + NodeID (Сообщение SDO на устройство NodeID)
DLC - [8] (длина сообщения SDO всегда 8 байт)
Байт 0 - 0x40 - команда на чтение
Байт 1 - 0x17 - 2й байт номера регистра 0x1017
Байт 2 - 0x10 - 1й байт номера регистра 0x1017
Байт 3 - 0x00 - субрегистр
Байт 4-7 - не заполняется
COB-ID |
DLC |
0 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
---|---|---|---|---|---|---|---|---|---|
580 + NodeID |
[8] |
4B |
17 |
10 |
00 |
E8 |
03 |
00 |
00 |
Устройство отвечает ускоренной передачей (2 байта данных)
NodeID - номер устройства в формате hex
COB-ID - 580 + NodeID (Сообщение SDO с устройства NodeID)
DLC - [8] (длина сообщения SDO всегда 8 байт)
Байт 0 - 0x4B - команда ответа
Байт 1 - 0x17 - 2й байт номера регистра 0x1017
Байт 2 - 0x10 - 1й байт номера регистра 0x1017
Байт 3 - 0x00 - субрегистр
Байт 4-7 - E8 03 00 00 - данные в в порядке справа на лево 03E8h = 1000мс
Команды ответа отличаются в зависимости от размера полученных данных 1 - 4 байта.
0x43 - Получено 4 байта
0x47 - Получено 3 байта
0x4b - Получено 2 байта
0x4f - Получен 1 байт
Пример: Запись параметра¶
В примере изменение интервала сердцебиения
COB-ID |
DLC |
0 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
---|---|---|---|---|---|---|---|---|---|
600 + NodeID |
[8] |
2B |
17 |
10 |
00 |
88 |
13 |
00 |
00 |
NodeID - номер устройства в формате hex
COB-ID - 600 + NodeID (Сообщение SDO на устройство NodeID)
DLC - [8] (длина сообщения SDO всегда 8 байт)
Байт 0 - 0x2B - команда на запись (Отправить 2 байта)
Байт 1 - 0x17 - 2й байт номера регистра 0x1017
Байт 2 - 0x10 - 1й байт номера регистра 0x1017
Байт 3 - 0x00 - субрегистр
Байт 4-7 - 88 13 00 00 - данные в в порядке справа на лево 1388h = 5000мс
Для записи в объектный словарь необходимо указать команду в зависимости от размера данных 1 - 4 байта.
0x23 - Отправить 4 байта
0x27 - Отправить 3 байта
0x2b - Отправить 2 байта
0x2f - Отправить 1 байт
Пример: Адрес устройства¶
Чтение адреса устройства
COB-ID |
DLC |
0 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
---|---|---|---|---|---|---|---|---|---|
600 + NodeID |
[8] |
40 |
01 |
21 |
00 |
00 |
00 |
00 |
00 |
Изменение адреса устройства
COB-ID |
DLC |
0 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
---|---|---|---|---|---|---|---|---|---|
600 + NodeID |
[8] |
2F |
01 |
21 |
00 |
xx |
00 |
00 |
00 |
Байт 4 укажите новый NodeID
Изменения вступят только после сохранения конфигурации (см. в разделе ниже)
Пример: Сохранение конфигурации¶
COB-ID |
DLC |
0 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
---|---|---|---|---|---|---|---|---|---|
600 + NodeID |
[8] |
23 |
10 |
10 |
01 |
73 |
61 |
76 |
65 |
NodeID - номер устройства в формате hex
COB-ID - 600 + NodeID (Сообщение SDO на устройство NodeID)
DLC - [8] (длина сообщения SDO всегда 8 байт)
Байт 0 - 23 - команда на запись (Отправить 4 байта)
Байт 1 - 10 - 2й байт номера регистра 1010
Байт 2 - 10 - 1й байт номера регистра 1010
Байт 3 - 00 - субрегистр
Байт 4-7 - 73 61 76 65 - данные в в порядке справа на лево SAVE
Пример: Возврат заводских параметров¶
COB-ID |
DLC |
0 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
---|---|---|---|---|---|---|---|---|---|
600 + NodeID |
[8] |
23 |
11 |
10 |
01 |
6C |
6F |
61 |
64 |
NodeID - номер устройства в формате hex
COB-ID - 600 + NodeID (Сообщение SDO на устройство NodeID)
DLC - [8] (длина сообщения SDO всегда 8 байт)
Байт 0 - 23 - команда на запись (Отправить 4 байта)
Байт 1 - 11 - 2й байт номера регистра 1010
Байт 2 - 10 - 1й байт номера регистра 1010
Байт 3 - 00 - субрегистр
Байт 4-7 - 6C 6F 61 64 - данные в в порядке справа на лево LOAD