Страница 2 из 15

Re: CANOPEN драйвер

Добавлено: 26 окт 2017, 16:16
Rine
Спасибо!
А если я, как указано выше, поменяю значения параметров по умолчанию(к примеру номер узла). И захочу это сохранить в эн.памяти, то я должен использовать функцию -void co_ODexpositor_paramConservation?
И при следующем включении МК параметры будут считаны уже измененные?

Re: CANOPEN драйвер

Добавлено: 26 окт 2017, 16:56
Лашкевич Максим
Правильно. Также можно дать команду на сохранение юниконом.

Re: CANOPEN драйвер

Добавлено: 27 окт 2017, 09:17
Rine
А не подскажите в штатном ПО motorcontroldemo где происходит считывание параметров из энергонезависимой памяти При включении МК, я так понял это в функции can инициализации?

Re: CANOPEN драйвер

Добавлено: 27 окт 2017, 11:12
Лашкевич Максим
Параметры CANopen драйвер восстанавливает внутри своей библиотеки, а для доступа к энергонезависимой памяти используются пользователские функции co_UserMemoryRead и co_UserMemoryWrite, которые вызывает библиотека. Конкретно параметры восстанавливаются в момент вызова

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

co2_Init(&co2_vars); //Инициализация драйвера CANOpen
внутри этой функции.

Re: CANOPEN драйвер

Добавлено: 27 окт 2017, 13:02
Rine
Спасибо! А если у меня несколько блоков в одной сети, можно ли их всех проинициилизировать из Юникона, у каждого блока свои параметры. Как лучше быть в данном случае. Набор параметров практически одинаковый, а сами данные разные. Блоки все включены, у них разные номера узлов. Можно ли через Юникон одновременно в разные узлы отправлять свои настройки? Или нужно к каждому блоку подключаться отдельно и вбивать вручную параметры?

Re: CANOPEN драйвер

Добавлено: 27 окт 2017, 13:11
Лашкевич Максим
Для этого есть, во-первых, функция переноса параметров, во-вторых групповые операции. Можно сливать и заливать на компьютер параметры с разных устройств со всей сети автоматически. Читайте справку на юникон, там все описано.

Re: CANOPEN драйвер

Добавлено: 07 фев 2018, 15:22
rasulikv
Добрый день! Круто, что юникон появился в свободном доступе на битбакете. Очень полезная вещь, спасибо. С проектом motorcontroldemo он у меня сцепился без проблем. Но вот в моем собственном проекте у меня все крашится на функции

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

co2_Init(&co2_vars); 
. Возникает косяк, похожий на описанный на форуме нииэта http://forum.niiet.ru/viewtopic.php?f=3 ... t=30#p3506
Тоже попадает в вечный цикл обработчика вотчдога, и регистр xPSR говорит о том, что это хард фолт. Вроде я всю инициализацию сделал по аналогии с motorcontroldemo, но что то идет не так. Я так понял, что функция

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

co_CAN2GpioInit();
UserMem.init(&UserMem); 
и вызывается как в раз в этой функции драйвера. Сам код такой

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

co2_vars.settings.LoadParamsFromUserMemory_ena = 1;//Разрешить загружать значения параметров из ЭНОЗУ
		co2_vars.settings.CAN_ISR_priority = IRQ_PRIORITY_CAN;//Присвоение приоритета перывания 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
Чего этой функции для работы может не хватать? Может приоритеты прерываний не так заданы?

Может ли дело быть в словаре объектов? Я пока свой не составлял, тупо закомментил в старом неотносящиеся к моему проекту строчки и все

Re: CANOPEN драйвер

Добавлено: 07 фев 2018, 19:46
Лашкевич Максим
Добрый день. Словарь объектов комментировать руками - плохая идея, воспользуйтесь COODEdit для удаления объектов, он сгенерирует корректный словарь. Из-за этого скорее всего и сыпется, структура словаря побилась.

Re: CANOPEN драйвер

Добавлено: 06 авг 2018, 15:43
!klyaksa
Добрый день! Не могли бы Вы описать формат пакета при работе блочной передачи данных?

Re: CANOPEN драйвер

Добавлено: 06 авг 2018, 17:02
motorcontrol
Формат пакета блочной передачи следующий:
Идентификатор:
0x0780 + № узла (одинаковый для приема и передачи - узел не может одновременно принимать и отправлять пакет данных).
Структура пакета:
  • Размер блока (16 бит). Определяет размер блока в словах минус один (одно слово = 16 бит). Допустимые значения 0-255, что соответствует размерам блоков от 1 до 256 слов по 16 бит в каждом.
  • Данные. От 1 до 256 слов по 16 бит в каждом.
  • Контрольная сумма CRC16 (16 бит).
Размер CAN сообщения всегда 8 байт. Соответственно, в последнем CAN сообщении помимо остатка данных пакета и контрольной суммы могут быть несколько (в зависимости от размера блока) неиспользуемых байт.