UniCON

Аватара пользователя
Disona
Сообщения: 92
Зарегистрирован: 28 ноя 2015, 22:03
Откуда: Москва

Re: UniCON

Сообщение Disona » 23 май 2022, 15:41

Disona писал(а):
23 май 2022, 15:01
Алексей Федоров! писал(а):
23 май 2022, 14:59
Здравствуйте.
Да, проект MotorControlDemo_035 последний коммит
Сейчас у себя проверим, как он работает.
Пока не очень понятно.
"У нас на столе всё работает", как говорится.

Скиньте, пожалуйста, файл с логами из папки "UniCON_CD_v.4.3.16\UniCON_CD\can_logs"
Там должно быть что-то вроде "CAN_log_22.05.23.txt"
С уважением,
Дмитрий Шпак
Telegram: +79773608997
shpak@motorcontrol.ru
Инженер-программист ООО "НПФ Вектор", Москва.

Алексей Федоров!
Сообщения: 7
Зарегистрирован: 10 июн 2020, 21:21

Re: UniCON

Сообщение Алексей Федоров! » 23 май 2022, 16:41

Да, нашел такой (добавил в архив, иначе не прикреплялся)
CAN_log_22.05.23.rar
(37.67 КБ) 288 скачиваний

Аватара пользователя
Disona
Сообщения: 92
Зарегистрирован: 28 ноя 2015, 22:03
Откуда: Москва

Re: UniCON

Сообщение Disona » 23 май 2022, 16:57

Алексей Федоров! писал(а):
23 май 2022, 16:41
Да, нашел такой (добавил в архив, иначе не прикреплялся)
CAN_log_22.05.23.rar
Так, видимо проблема в том, что у контроллера по какой-то причине номер узла в сети "0", поэтому Юникон на него не реагирует.

Правда не очень понятно, как так получилось. Возможно, есть какие-то проблемы с EEPROM-памятью.

Пока что предлагаю исправить это так:
В файле "Vscr/SM_Net.c" в функции "void SM_Net_Init(TSM_Net *p)" перед строкой

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

CANtoRS.nodeID = (Uint16*)&co1_vars.co_nodeID; //Номер узла из CANopen
добавить присваивание какого-нибудь значения в диапазоне от 1 до 127 в переменную "co1_vars.co_nodeID".

Например так:

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

////Работа с CANopen через UART (параллельно с CAN, нет конфликта)
	co1_vars.co_nodeID = 1;
	CANtoRS.nodeID = (Uint16*)&co1_vars.co_nodeID; //Номер узла из CANopen
        CANtoRS.callback = Z_co_receiveSDOrequest;//Указатель на функцию обратного вызова из драйвера CANopen по приходу SDO сообщения
	CANtoRS.init(&CANtoRS);
Это принудительно выставит номер устройства в сети равный "1" и Юникон его увидит.

Ждём от вас обратной связи.
С уважением,
Дмитрий Шпак
Telegram: +79773608997
shpak@motorcontrol.ru
Инженер-программист ООО "НПФ Вектор", Москва.

Алексей Федоров!
Сообщения: 7
Зарегистрирован: 10 июн 2020, 21:21

Re: UniCON

Сообщение Алексей Федоров! » 23 май 2022, 17:10

Да, спасибо, Узел 1 появился.
Дело в том, что я запускаюсь на отладке LDM-BB-K1921BK035.
На ней нет EEPROM, функции по работе с EEPROM я пока заглушил.
Приношу извинения, что сразу не выдал все исходные данные.

Аватара пользователя
Disona
Сообщения: 92
Зарегистрирован: 28 ноя 2015, 22:03
Откуда: Москва

Re: UniCON

Сообщение Disona » 23 май 2022, 17:21

Алексей Федоров! писал(а):
23 май 2022, 17:10
Да, спасибо, Узел 1 появился.
Дело в том, что я запускаюсь на отладке LDM-BB-K1921BK035.
На ней нет EEPROM, функции по работе с EEPROM я пока заглушил.
Приношу извинения, что сразу не выдал все исходные данные.
А как именно вы их заглушили?
Просто у нас драйвер CANopen устроен так, что если ему не удаётся восстановить данные из EEPROM, то он выставляет значения "по умолчанию", которые берутся из словаря.
А там по умолчанию стоит номер узла "1".

Может быть вы сделали так, что функция чтения из памяти в качестве прочитанных из памяти данных возвращает "0"?

В таком случае в драйвере может неправильно сработать алгоритм расчёта контрольной суммы и он подумает, что "0" - это правильные данные.
Поэтому если вы не используете EEPROM, то дополнительно стоит в той же функции инициализации в блоке настройки параметров CAN поставить:

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

co1_vars.settings.LoadParamsFromUserMemory_ena = 0;
Тогда драйвер не будет обращаться к EEPROM.
С уважением,
Дмитрий Шпак
Telegram: +79773608997
shpak@motorcontrol.ru
Инженер-программист ООО "НПФ Вектор", Москва.

Алексей Федоров!
Сообщения: 7
Зарегистрирован: 10 июн 2020, 21:21

Re: UniCON

Сообщение Алексей Федоров! » 24 май 2022, 09:57

Disona писал(а):
23 май 2022, 17:21
Алексей Федоров! писал(а):
23 май 2022, 17:10
Да, спасибо, Узел 1 появился.
Дело в том, что я запускаюсь на отладке LDM-BB-K1921BK035.
На ней нет EEPROM, функции по работе с EEPROM я пока заглушил.
Приношу извинения, что сразу не выдал все исходные данные.
А как именно вы их заглушили?
Просто у нас драйвер CANopen устроен так, что если ему не удаётся восстановить данные из EEPROM, то он выставляет значения "по умолчанию", которые берутся из словаря.
А там по умолчанию стоит номер узла "1".

Может быть вы сделали так, что функция чтения из памяти в качестве прочитанных из памяти данных возвращает "0"?

В таком случае в драйвере может неправильно сработать алгоритм расчёта контрольной суммы и он подумает, что "0" - это правильные данные.
Поэтому если вы не используете EEPROM, то дополнительно стоит в той же функции инициализации в блоке настройки параметров CAN поставить:

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

co1_vars.settings.LoadParamsFromUserMemory_ena = 0;
Тогда драйвер не будет обращаться к EEPROM.
Я закомментировал содержимое функций USERMEMORY_Init/Write/Read.
Но проблема была в том, что при отладке я закомментировал вызов co1_Init() и забыл)
Параметр LoadParamsFromUserMemory_ena я выключил, всё работает.
Спасибо.

Аватара пользователя
Disona
Сообщения: 92
Зарегистрирован: 28 ноя 2015, 22:03
Откуда: Москва

Re: UniCON

Сообщение Disona » 24 май 2022, 10:00

Алексей Федоров! писал(а):
24 май 2022, 09:57
Я закомментировал содержимое функций USERMEMORY_Init/Write/Read.
Но проблема была в том, что при отладке я закомментировал вызов co1_Init() и забыл)
Параметр LoadParamsFromUserMemory_ena я выключил, всё работает.
Спасибо.
Рады были помочь.
С уважением,
Дмитрий Шпак
Telegram: +79773608997
shpak@motorcontrol.ru
Инженер-программист ООО "НПФ Вектор", Москва.

Аватара пользователя
Eugene!
Сообщения: 25
Зарегистрирован: 18 июл 2022, 12:42
Откуда: Питер

Re: UniCON

Сообщение Eugene! » 26 июл 2022, 09:59

Здравствуйте!

Читаю описание к "MotorControlDemo" от 15.04.2019

Не очень понятно из описания, как в проекте нижнего уровня определять -- по CAN или по UART будет обмен, как перенастроить на другой uart, как подключить библиотеки к другому проекту. Было бы конечно удобнее, если бы номер uart и пины определялись дефайнами, а не искать и выправлять прям в коде инициализации.

А нет нигде инструкций, какие именно файлы надо прикрутить к другому проекту и что где вызывать, чтобы новый проект работал с UniCON?
Даже самую простую задачу можно сделать невыполнимой, если провести достаточное количество совещаний.

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

Re: UniCON

Сообщение Лашкевич Максим » 26 июл 2022, 10:56

Добрый день. Нет, таких подробных мануалов не писали. Обмен работает одновременно и по CAN и по UART, если UART разрешен (есть дефайн CANTORS_ENA - о нём вроде написано в мануале). Если определять все пины дефайнами во всём проекте (не только uart, а ещё тогда и ШИМ, АЦП и прочее) - то проект превратился бы в "универсальное" демо, которые поставляют STM и Texas к своим изделиям - там дефайнов у них в два раза больше, чем кода... Начинаются всякие модули типа Hardware Abstraction Layer, которые подключают всё ко всему через массивы указателей, и в этом можно утонуть тоже. Мы решили такого не делать. Если поискать по проекту, что делает дефайн CANTORS_ENA, то там сразу же находится конфиг GPIO.
2022-07-26_10-56-07.png
2022-07-26_10-56-07.png (49.21 КБ) 7852 просмотра
Что касается переноса драйвера в другой проект - читайте Описание драйвера CANopen v12.pdf и смотрите, как это сделано в motorcontroldemo. Прослойка для UART - V_CANtoRS.c в состав драйвера CANOpen не входит, её отдельно выковыривать из проекта надо. Думаю, будет быстрее из motorcontroldemo удалить всё лишнее и вставить своё.
С уважением,
Лашкевич Максим.
skype: maxlashk
Инженер-программист ООО "НПФ Вектор", Москва.

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

Re: UniCON

Сообщение Rine » 22 апр 2023, 17:40

Здравствуйте, в связи с невозможностью приобретения 1921вк01т, переходим на stm32. Хотелось бы остаться на Юниконе, очень уж удобная вещь получилась у Вас. Не подскажите - как можно реализовать свой драйвер CAN, чтоб полноценно работать с Юников(графики, параметрирование, вывод на график массива итд). Может есть специальные протоколы для работы с Юникон?

Ответить