CANOPEN драйвер

Rine
Сообщения: 49
Зарегистрирован: 28 апр 2017, 09:25

CANOPEN драйвер

Сообщение Rine » 23 окт 2017, 17:24

Здравствуйте такой вопрос. Допустим мне нужно отправлять каждые 10мс на другое устройство данные( к примеру токи). Во первых, мне нужно для своего устройства сконфигурировать адрес отправляемого сообщения(расширенный идентификатор). К примеру я хочу чтоб идентификатор моего сообщения был 3007(дес).
Вопрос,- как мне проинициализировать адрес? Предполагаю использовать режим PDO. Там есть параметр "Идентификатор PDO-сообщения, отправляемого по каналу TPDOx". Где мне его проинициализировать, и правильно я понял, что этот параметр и есть расширенный идентификатор отправляемого сообщения?

Аватара пользователя
Лашкевич Максим
Сообщения: 342
Зарегистрирован: 30 дек 2015, 10:38

Re: CANOPEN драйвер

Сообщение Лашкевич Максим » 24 окт 2017, 12:26

Добрый день. В CANopen идентификатор нельзя выбирать свободно. Идентификатор уже задан априори и зависит от номера узла и номера используемого PDO сообщения по формулам, описанным в описании на CANopen.
Вложения
2017-10-24_12-25-27.png
2017-10-24_12-25-27.png (112.1 КБ) 23038 просмотров
С уважением,
Лашкевич Максим.
skype: maxlashk
Инженер-программист ООО "НПФ Вектор", Москва.

Rine
Сообщения: 49
Зарегистрирован: 28 апр 2017, 09:25

Re: CANOPEN драйвер

Сообщение Rine » 24 окт 2017, 12:59

Добрый день, а номер узла, где можно присвоить?

Аватара пользователя
Лашкевич Максим
Сообщения: 342
Зарегистрирован: 30 дек 2015, 10:38

Re: CANOPEN драйвер

Сообщение Лашкевич Максим » 24 окт 2017, 13:12

Параметр CAN NODE-ID [2000.00] в словаре объектов.
С уважением,
Лашкевич Максим.
skype: maxlashk
Инженер-программист ООО "НПФ Вектор", Москва.

Rine
Сообщения: 49
Зарегистрирован: 28 апр 2017, 09:25

Re: CANOPEN драйвер

Сообщение Rine » 24 окт 2017, 13:52

А таким образом можно в коде проиницилизировать?

Код: Выделить всё

co1_Init(&co1_vars); // инициализация драйвера 
co1_vars.co_nodeID = 0x001; 
co_ReInit(&co1_vars); // возвращает 1 в случае успеха

И еще вопрос, допустим мне должно придти сообщение с ID, к примеру, 1000.
Я должен выбрать RPDO6 ("0x0300 + nodeID – для приема TPDO6")
И в параметр co_RPDO6COBID записать 0x03E8?

Аватара пользователя
Лашкевич Максим
Сообщения: 342
Зарегистрирован: 30 дек 2015, 10:38

Re: CANOPEN драйвер

Сообщение Лашкевич Максим » 25 окт 2017, 14:15

1. Да.
2. Для приема COBID можно настроить произвольно вообще и принять в любой RPDO.
С уважением,
Лашкевич Максим.
skype: maxlashk
Инженер-программист ООО "НПФ Вектор", Москва.

Rine
Сообщения: 49
Зарегистрирован: 28 апр 2017, 09:25

Re: CANOPEN драйвер

Сообщение Rine » 25 окт 2017, 17:36

Спасибо!
А скажите пожалуйста есть ли возможность общаться с этим драйвером через систему верхнего уровня, но не через Юникон, а через свою собственную? Если да, то Что нужно, чтоб конфигурировать параметры и отображать данные?

Аватара пользователя
Лашкевич Максим
Сообщения: 342
Зарегистрирован: 30 дек 2015, 10:38

Re: CANOPEN драйвер

Сообщение Лашкевич Максим » 26 окт 2017, 15:23

Используйте что угодно, поддерживающее стандарт CANopen. Юникон работает через expedited-SDO сервис. Чтобы написать свою систему, нужно разобраться с протоколом CANopen и реализовать нужную его часть.
С уважением,
Лашкевич Максим.
skype: maxlashk
Инженер-программист ООО "НПФ Вектор", Москва.

Rine
Сообщения: 49
Зарегистрирован: 28 апр 2017, 09:25

Re: CANOPEN драйвер

Сообщение Rine » 26 окт 2017, 15:48

А если мне нужно сделать запрос на блочную передачу данных, к примеру, тока? Что я должен указать в запросе от системы верхнего уровня?

Аватара пользователя
Лашкевич Максим
Сообщения: 342
Зарегистрирован: 30 дек 2015, 10:38

Re: CANOPEN драйвер

Сообщение Лашкевич Максим » 26 окт 2017, 16:10

Интерфейс пользователя блочной передачи описан в документе Описание драйвера CANopen.pdf, примеры использования можно найти в коде работы существующего осциллографа проекта motorcontroldemo. Возможно, описание не достаточно полное, так как мы не знаем, какие аспекты могут потребоваться пользователям. Если будут вопросы, можно будет дополнить описание. Блочная передача в данной реализации - это наша надстройка над протоколом CANopen, в стандарте CANopen её в таком виде нет. Кроме того, массив данных вполне можно загрузить по одному элементу использую чисто SDO сервис, так это и делает UniCON для осциллографа при недоступности блочной передачи (при работе CANopen через UART, например).
С уважением,
Лашкевич Максим.
skype: maxlashk
Инженер-программист ООО "НПФ Вектор", Москва.

Ответить