CANOPEN драйвер

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

Re: CANOPEN драйвер

Сообщение Rine » 29 май 2021, 11:11

Добрый день! Второй can может работать одновременно с первым, но на другой скорости?

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

Re: CANOPEN драйвер

Сообщение Лашкевич Максим » 31 май 2021, 11:19

Добрый день, да, должен мочь.
С уважением,
Лашкевич Максим.
skype: maxlashk
Инженер-программист ООО "НПФ Вектор", Москва.

YaroslavVR!
Сообщения: 9
Зарегистрирован: 04 мар 2021, 15:06

Re: CANOPEN драйвер

Сообщение YaroslavVR! » 09 июн 2021, 10:43

Добрый день!

Можно ли задать значения по умолчанию для номера узла(co_nodeID) и скорости передачи(co_bitRate) так,
чтобы они выставлялись при отключенной загрузке из EEPROM (co2_vars.settings.LoadParamsFromUserMemory_ena = 0;)?

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

Re: CANOPEN драйвер

Сообщение Лашкевич Максим » 09 июн 2021, 11:33

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

YaroslavVR!
Сообщения: 9
Зарегистрирован: 04 мар 2021, 15:06

Re: CANOPEN драйвер

Сообщение YaroslavVR! » 09 июн 2021, 11:47

Это первое, что я пробовал. Я даже создал словарь только с этими 2мя обьектами.
Как будто инициализация его игнорирует и в co2_Init все равно выставляет bitRate = 3, а nodeID = 0

А если выставить значения после инициализации и сделать co_ReInit(&co2_vars);
то вообще все в 0 сбрасывается и перестает работать.

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

Re: CANOPEN драйвер

Сообщение Лашкевич Максим » 09 июн 2021, 17:48

Я даже создал словарь только с этими 2мя обьектами.
Так делать нельзя – объекты словаря до индекса 3000h (не включительно) являются служебными и нужны для нормальной работы драйвера – их нужно оставить как в исходном проекте.
Для достижения вашей цели должен помочь следующий рецепт:

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

    
    co2_vars.settings.LoadParamsFromUserMemory_ena = 0;//Не загружать значения параметров из ЭНОЗУ
    ... //остальные настройки
    co2_Init(&co2_vars); //Инициализация драйвера CANOpen
    
    //выставляем нужный номер узла (1-126) и скорость (1-6 - см. canSpeedTable в файле CANOpenUDfuncs.c)
    co2_vars.co_nodeID = 50;
    co2_vars.co_bitRate = 6; // 1000 kb/s
    co_ReInit(&co2_vars);
    
С уважением,
Лашкевич Максим.
skype: maxlashk
Инженер-программист ООО "НПФ Вектор", Москва.

YaroslavVR!
Сообщения: 9
Зарегистрирован: 04 мар 2021, 15:06

Re: CANOPEN драйвер

Сообщение YaroslavVR! » 10 июн 2021, 09:20

Я вернул корректный словарь и после этого рецепт сработал!

Спасибо!

Илья!
Сообщения: 114
Зарегистрирован: 09 ноя 2018, 16:55

Re: CANOPEN драйвер

Сообщение Илья! » 28 окт 2021, 17:39

Здравия желаю.
Давайте разберемся с работой двух CAN-ов одновременно.
До сих пор работал с CAN2, все хорошо. Встала необходимость использовать оба кэна.
Подключил библиотеку для двух кэнов.
Проинициализировал CAN1 аналогично инициализации CAN2. Прошиваю. Не работают оба кэна.
Отключаю в ПО инициализацию CAN1, CAN2 начинает работать правильно.
Подскажите пожалуйста что я делаю не так.
Благодарю.

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

Re: CANOPEN драйвер

Сообщение Лашкевич Максим » 29 окт 2021, 11:30

Добрый день, покажите код инициализации, пожалуйста. В примере MotorControlDemo есть два кена. Оттуда брали?
С уважением,
Лашкевич Максим.
skype: maxlashk
Инженер-программист ООО "НПФ Вектор", Москва.

Илья!
Сообщения: 114
Зарегистрирован: 09 ноя 2018, 16:55

Re: CANOPEN драйвер

Сообщение Илья! » 29 окт 2021, 11:38

void SM_Net_Init(TSM_Net *p) {

p->state = 0;
p->state_prev = 0xff;


//Настройка драйвера CANOpen модуля CAN1
co1_vars.settings.LoadParamsFromUserMemory_ena = 1; // Разрешить загружать значения параметров из ЭНОЗУ
co1_vars.settings.CAN_ISR_priority = IRQ_PRIORITY_CAN1; // Присвоение приоритета перывания CAN (обработчик внутри библиотеки)
co1_vars.settings.MultiPDO_ena = 0; // Отключение обработки PDO без учета номера узла (спец. функция)
co1_vars.settings.RX_PDO_Callback_ena = 0; // Не вызывать функции обратного вызова при приеме PDO
co1_vars.settings.AutoBusON_ena = 1; // Автоматически перезапускать CAN при ошибках на линии
co1_vars.settings.BlockTransfer_ena = 1; // Разрешить блочную передачу (нужна для осциллографа)
co1_Init(&co1_vars); // Инициализация драйвера CANOpen

//Настройка драйвера CANOpen модуля CAN2
co2_vars.settings.LoadParamsFromUserMemory_ena = 1; // Разрешить загружать значения параметров из ЭНОЗУ
co2_vars.settings.CAN_ISR_priority = IRQ_PRIORITY_CAN2; // Присвоение приоритета перывания CAN (обработчик внутри библиотеки)
co2_vars.settings.MultiPDO_ena = 0; // Отключение обработки PDO без учета номера узла (спец. функция)
co2_vars.settings.RX_PDO_Callback_ena = 0; // Не вызывать функции обратного вызова при приеме PDO
co2_vars.settings.AutoBusON_ena = 1; // Автоматически перезапускать CAN при ошибках на линии
co2_vars.settings.BlockTransfer_ena = 1; // Разрешить блочную передачу (нужна для осциллографа)
co2_Init(&co2_vars); // Инициализация драйвера CANOpen



файл CANOpen_drv.h :
//!Включатель CAN 1
#define CAN_1_ENABLE
//********************************************************************************************
//!Включатель CAN 2
#define CAN_2_ENABLE

Ответить