UniCON

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

Re: UniCON

Сообщение Илья! » 06 май 2022, 17:41

Disona писал(а):
06 май 2022, 17:33
Я правильно понял, что вы с Rine, так сказать, коллеги и пишете об одной и той же задаче?

Вы планируете использовать наш драйвер CANopen, но верхний уровень у вас будет не UniCON, а своё какое-то ПО разрабатываете?
Да. Мы используем Ваш драйвер, но верхний уровень свой.

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

Re: UniCON

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

Илья! писал(а):
06 май 2022, 17:16
А почему бы не сделать при прошивке автоматическое заполнение пользовательской Флэш, что исключило бы необходимость первичного сохранения параметров в пользовательскую Флэш?
Отдельной проверки "на пустоту" памяти нет. Драйвер CANopen проходится по EEPROM, предполагая, что параметры в ней хранятся в том же порядке и количестве, что и в текущем словаре объектов. Если это будет не так, то не сойдётся контрольная сумма при проверке сохранённых данных. С этой точки зрения пустая пользовательская память неотличима от набора параметров от другого словаря.

Если параметры загрузить из EEPROM не удаётся, то драйвер загружает параметры "по умолчанию", которые являются неотъемлемой частью исполняемой программы и прошиваются вместе с ней в Основную флеш память.

Поэтому в принципе, если бы было сделано так, как предлагаете вы - если при запуске программы память пустая, то залить в неё то текущие значения - это было бы то же самое, что ничего не делать. В параметры попадут дефолтные значения.

Илья! писал(а): физ линия CAN, протокол CanOpen
Да. Мы используем Ваш драйвер, но верхний уровень свой.
Сейчас проконсультируюсь с коллегами.
С уважением,
Дмитрий Шпак
Telegram: +79773608997
shpak@motorcontrol.ru
Инженер-программист ООО "НПФ Вектор", Москва.

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

Re: UniCON

Сообщение Илья! » 06 май 2022, 18:02

Disona писал(а):
06 май 2022, 17:43
Если параметры загрузить из EEPROM не удаётся, то драйвер загружает параметры "по умолчанию", которые являются неотъемлемой частью исполняемой программы и прошиваются вместе с ней в Основную флеш память.
Я так понял, что при прошивке чистого контроллера пользовательская флэш остается пустой до первого сохранения параметров. Соответственно параметры загрузить из нее не удастся и драйвер загрузит параметры по умолчанию (а при этом они прописываются в пользовательскую флэш?). И так будет происходить постоянно до выполнения процедуры Сохранить параметры? И при этом будет еще генериться ошибка драйвера о невозможности восстановить параметры? Если я все так понял, то отключив данную ошибку, я могу работать с системой, в которой установлены параметры по умолчанию. Так?


Благодарю

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

Re: UniCON

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

Илья! писал(а):
06 май 2022, 18:02

Я так понял, что при прошивке чистого контроллера пользовательская флэш остается пустой до первого сохранения параметров. Соответственно параметры загрузить из нее не удастся и драйвер загрузит параметры по умолчанию. И так будет происходить постоянно до выполнения процедуры Сохранить параметры? И при этом будет еще генериться ошибка драйвера о невозможности восстановить параметры? Если я все так понял, то отключив данную ошибку, я могу работать с системой, в которой установлены параметры по умолчанию. Так?

Благодарю
Да, всё верно.
Если вам нужно сохранить параметры только для того, чтобы не мешала ошибка, то лучше просто эту ошибку убрать из модуля защит (SM_Prot).

Я посмотрел описание драйвера - вам нужен пункт "4.5.3 Функции сохранения и загрузки параметров".
Эти функции объявлены в заголовочном файле "CANopen_drv.h" и вы можете вызывать их в любом месте своей программы. Ну, то есть, в фоновом цикле. В прерывании этого делать нельзя, потому что выполнение функций занимает много времени.
Там также приведён пример того, как надо вызвать функции, чтобы сохранить/загрузить/установить по умолчанию значения всех параметров.

Я думаю, для вас наилучшим вариантом будет такой:
1. Создать в словаре объектов какой-нибудь RW-параметр, который вы будете использовать для управления записью значений параметров. Например - если записать в этот параметр "1", то нужно сохранить значения в EEPROM. Если записать "2" - нужно загрузить из EEPROM. Если записать "3" - нужно загрузить в параметры значения по умолчанию.
2. Внутри программы реализовать вызов функций "co_ODexpositor_instaurationDefault" / "co_ODexpositor_paramConservation" / "co_ODexpositor_paramInstauration" в зависимости от значения упомянутого параметра.

То есть, примерно так:
Развернуть

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

if (controlVar == 2) {
	controlVar = 0;
	
	// Восстановить значения всех типов во всех диапазонах
	co_ODexpositor_paramInstauration(&co2_vars, 1, 1); 
	co_ODexpositor_paramInstauration(&co2_vars, 2, 1); 
	co_ODexpositor_paramInstauration(&co2_vars, 3, 1); 
	co_ODexpositor_paramInstauration(&co2_vars, 1, 2); 
	co_ODexpositor_paramInstauration(&co2_vars, 2, 2); 
	co_ODexpositor_paramInstauration(&co2_vars, 3, 2); 
	co_ODexpositor_paramInstauration(&co2_vars, 1, 3); 
	co_ODexpositor_paramInstauration(&co2_vars, 2, 3); 
	co_ODexpositor_paramInstauration(&co2_vars, 3, 3); 
	co_ODexpositor_paramInstauration(&co2_vars, 1, 4); 
	co_ODexpositor_paramInstauration(&co2_vars, 2, 4); 
	co_ODexpositor_paramInstauration(&co2_vars, 3, 4); 
	co_ODexpositor_paramInstauration(&co2_vars, 1, 5); 
	co_ODexpositor_paramInstauration(&co2_vars, 2, 5); 
	co_ODexpositor_paramInstauration(&co2_vars, 3, 5);
} else if ...
Потому что вариант реализовывать ту же логику, которая реализована в юниконе - а юникон использует специальный интерпретатор команд, который ещё надо всё время опрашивать на предмет того, свободен он или нет и как прошла операция - довольно сложно.
С уважением,
Дмитрий Шпак
Telegram: +79773608997
shpak@motorcontrol.ru
Инженер-программист ООО "НПФ Вектор", Москва.

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

Re: UniCON

Сообщение Илья! » 06 май 2022, 18:54

Disona писал(а):
06 май 2022, 18:21
Илья! писал(а):
06 май 2022, 18:02

Я так понял, что при прошивке чистого контроллера пользовательская флэш остается пустой до первого сохранения параметров. Соответственно параметры загрузить из нее не удастся и драйвер загрузит параметры по умолчанию. И так будет происходить постоянно до выполнения процедуры Сохранить параметры? И при этом будет еще генериться ошибка драйвера о невозможности восстановить параметры? Если я все так понял, то отключив данную ошибку, я могу работать с системой, в которой установлены параметры по умолчанию. Так?

Благодарю
Да, всё верно.
Если вам нужно сохранить параметры только для того, чтобы не мешала ошибка, то лучше просто эту ошибку убрать из модуля защит (SM_Prot).
Скажите пожалуйста, уточню, при первой прошивке контроллера драйвер загрузит значения по умолчанию и в пользовательскую флэш?
И при последующем сбросе питания параметры будут уже загружены из пользовательской флэш и ошибка генериться не будет? Или же без нажатия Сохранить параметры пользовательская флэш будет всегда пустой?

Благодарю

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

Re: UniCON

Сообщение Disona » 06 май 2022, 18:59

Илья! писал(а):
06 май 2022, 18:54

Скажите пожалуйста, уточню, при первой прошивке контроллера драйвер загрузит значения по умолчанию и в пользовательскую флэш? т.е. без нажатия Сохранить параметры в пользовательской флэш будут параметры по умолчанию или она остается пустой ?

Благодарю
Нет, не так.

Если память пустая, то он загрузит в параметры словаря значения по умолчанию, но в EEPROM их самостоятельно не сохранит.

Драйвер не запишет в EEPROM значения, пока вы не нажмёте "Сохранить параметры" или не вызовете функцию "co_ODexpositor_paramIConservation();"
С уважением,
Дмитрий Шпак
Telegram: +79773608997
shpak@motorcontrol.ru
Инженер-программист ООО "НПФ Вектор", Москва.

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

Re: UniCON

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

Добрый день.
У меня затруднение с подключением UniCON к отладочной плате с 1921ВК035.
Выбираю модуль связи USB RS, задаю нужный COM порт.
При этом становится статус: работа и Ожидание устройств в сети...
Счетчик пакетов в статусной строке снизу увеличивается (Rx: ), но список устройств пустой.
1.png
1.png (24.37 КБ) 8943 просмотра
Далее я посмотрел формат heartbeat-посылок сторонней программой.
2.png
2.png (1.86 КБ) 8943 просмотра
Он с виду корректный: DLC=1, ID=0x700, data[0]=0x05, период 1 секунда, скорость передачи 57600 Кбит/с.
Но в UniCON узел не виден. Пробовал запускать разные версии из bitbucket.
Прошу помочь советом.

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

Re: UniCON

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

Алексей Федоров! писал(а):
23 май 2022, 14:27
Добрый день.
У меня затруднение с подключением UniCON к отладочной плате с 1921ВК035.
Выбираю модуль связи USB RS, задаю нужный COM порт.
Здравствуйте.

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

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

Re: UniCON

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

Здравствуйте.
Да, проект MotorControlDemo_035 последний коммит

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

Re: UniCON

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

Алексей Федоров! писал(а):
23 май 2022, 14:59
Здравствуйте.
Да, проект MotorControlDemo_035 последний коммит
Сейчас у себя проверим, как он работает.
С уважением,
Дмитрий Шпак
Telegram: +79773608997
shpak@motorcontrol.ru
Инженер-программист ООО "НПФ Вектор", Москва.

Ответить