Jump to content

    
Sign in to follow this  
Z_h_e

Вопрос о протоколе верх. ур. для CAN и о CANopen в частности.

Recommended Posts

Доброго времени суток.

Еще очень давно мечтал сделать что-нибудь на CAN в своих радиолюбительских целях. И вот, похоже это время пришло :). Появилась задача удобно решаемая на CAN и достаточно раскуренный STM32.

Вопрос у меня стоит с выбором прикладного уровня протокола. В принципе можно придумать свой, все-таки я , как радиолюбитель, не зажат стандартами и другими требованиями и по срокам подгонять может меня только я, с ним я договорится могу :).  Но я пока кручусь  возле CANopen, как кот вокруг холодильника. В общих виде структура протокола CANopen мне вроде как понятна, нюансы, я считаю, лучше разбирать одновременно практически со штудированием документации.

Вот на этом этапе у меня и возник вопрос.  Изобретая какой-нибудь девайс, несомненно лучше всего его проверять  заведомо рабочим инструментом. И в моем случае, мне вроде как нужен какой-то CANopen конфигуратор. Тут я упираюсь в жесткое ограничение бюджета, имеющий крайне малый размер и его надзирателя по имени Жаба, который еще больше его ужимает.

Теперь сам вопрос. Существуют ли какие-либо бесплатные инструменты и работы с CANopen? Например, вроде как мне может помочь Kickdrive zero, но она требует некопеечного адаптера CAN-USB.  Я наверное ответ то знаю :), но вдруг я что-то упустил в гуглении и существует некий программный бесплатный продукт, пускай с сильно обрезанным функционалом и дешевым адаптером.  Китайцы какие-то адаптеры продают, только я не понял с чем они работают. 

Может можно самому преобразователь интерфейса сделать? Какой-нибудь CAN-232, так ведь надо знать что гнать в 232, вряд ли же есть программы для CANopen которым можно тупо гнать в 232 дублирование пакетов без какой-то служебной информации?

Из elm327 тоже наверное не получится сделать? Если я правильно понял, он чисто ат командами управляется.

Может есть более удобный протокол для радиолюбителя, но тоже "стандартный"?

Вопросы может не совсем корректно задал, каши в голове  еще пока много. Если что постараюсь уточнить. Спасибо.

 

Share this post


Link to post
Share on other sites

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

Для себя же все решается простыми С-и файлами с объявлением структур и организацией логики взаимодействия. 
Вы ж сами программируете все узлы в системе. Зачем еще привлекать лишние инструменты? 

CAN тем и хорош что позволяет обойтись без всякого протокола. 
В идентификаторе пакета уже зашит приоритет. Т.е. синхропакет выдаваемый мастером имеет наибольший приоритет, значит наименьший номер. Все остальные откликаются на него пакетами с большими номерами. Вот и вся логика. 
Перечислили в общем хидере все дефайны пакетов по приоритета какие вам нужны (номерам ID) и таким образом получили общую для всех настройку сети. 

Кто, что передает по CAN можете видеть в окне live view отладчика по SWD. Выводите туда счетчики, буфера, структуры и все видно как на ладони. Для этого вообще ничего писать не надо.  Причем можно наблюдать с точки зрения каждого узла, а не с какого-то стороннего адаптера.  

Share this post


Link to post
Share on other sites
2 часа назад, Z_h_e сказал:

Появилась задача удобно решаемая на CAN и достаточно раскуренный STM32.

Только вот на раскуренном STM, can реализован через одно место.

 

2 часа назад, Z_h_e сказал:

Но я пока кручусь  возле CANopen

AlexandrY. Вам уже все написал, CANopen действительно нафиг не нужен, как и всякие протоколы.

2 часа назад, Z_h_e сказал:

Какой-нибудь CAN-232

Однозначно не 232

2 часа назад, Z_h_e сказал:

Из elm327 тоже наверное не получится сделать?

Не получится, потому что он не способен передавать в шину, только слушать.

2 часа назад, Z_h_e сказал:

Тут я упираюсь в жесткое ограничение бюджета, имеющий крайне малый размер и его надзирателя по имени Жаба

Ну если все так жестко, что потратить сотню евро на инструмент большая проблема, и хочется секса, постройте себе

https://www.mictronics.de/projects/usb-can-bus/

Кривова-то но как-то работает.

 

 

Share this post


Link to post
Share on other sites
1 час назад, AlexandrY сказал:

CAN тем и хорош что позволяет обойтись без всякого протокола.

Ну какой-либо протокол верхнего уровня все равно нужен будет в любом случае. Собственно я изначально и планировал (ю) сделать что-то свое. А тут глянул что есть в природе, заинтересовало. При наличии отсутствия халявного инструментария отладки  CANopen видимо пройдет мимо меня. Но спросить об этом думаю имело смысл.

37 минут назад, Vasily_ сказал:

AlexandrY. Вам уже все написал, CANopen действительно нафиг не нужен

Мне это сразу понятно, что он не нужен мне с точки зрения затратности разработки.  Бывает просто интересно сделать.

41 минуту назад, Vasily_ сказал:

Однозначно не 232

Если не 232 (или виртуальный 232) то нужен будет драйвер или  делать какой-то клон.  Пока я реально себе сделаю can-232, чтобы компом слушать шину и что-нибудь туда закидывать. У меня stm32F103 , он не может одновременно CAN и USB. Сеть макетную устойчиво разверну, куплю какой-нибудь 107 или 105.

46 минут назад, Vasily_ сказал:

Только вот на раскуренном STM, can реализован через одно место.

Мне сравнивать пока не с чем, на каких камнях как CAN реализован. Наверное и не буду на других. Время на все не хватит.

 

47 минут назад, Vasily_ сказал:

постройте себе

https://www.mictronics.de/projects/usb-can-bus/

Кривова-то но как-то работает.

Ок. Постараюсь ознакомится что это. Спасибо. 

Share this post


Link to post
Share on other sites
26 minutes ago, Z_h_e said:

Если не 232 (или виртуальный 232) то нужен будет драйвер или  делать какой-то клон.  Пока я реально себе сделаю can-232, чтобы компом слушать шину и что-нибудь туда закидывать. У меня stm32F103 , он не может одновременно CAN и USB. Сеть макетную устойчиво разверну, куплю какой-нибудь 107 или 105.

 Есть тут тема про скорость приема RS232 на PC.  На простеньком адаптере с FT234XD-R вы вытянете 3 мегабита легко. Это перекроет все скрости CAN (кроме FD).
Так что UART я бы даже рекомендовал для анализа CAN трафика. 

Share this post


Link to post
Share on other sites

Я изначально думал физический канал передачи CAN радиомудулями с пределами 9600бод организовать. Но оставил это пока, может потом, там граблей думаю много можно найти.  Я к тому что 10кбод мне хватает, но остаюсь без резерва, что конечно недопустимо. Но и Мега скорость мне не нужна будет точно.

Я , кстати, в инете видел проги  CAN снифферы как раз для 232, не качал, но скорее всего работают. Так что можно будет тут то свое не изобретать.  А потом может USB CDC забубеню. Слава богу у меня дидлайнов нет в этом вопросе. Про FT234XD-R  зарубил, спасибо.

Share this post


Link to post
Share on other sites
3 часа назад, Z_h_e сказал:

Вопрос у меня стоит с выбором прикладного уровня протокола. В принципе можно придумать свой, все-таки я , как радиолюбитель, не зажат стандартами и другими требованиями и по срокам подгонять может меня только я, с ним я договорится могу :).  Но я пока кручусь  возле CANopen, как кот вокруг холодильника.

Для освоения CANopen нужны анализатор протокола верхнего уровня, конфигуратор и хотя бы одно эталонное устройство прошедшее CANopen conformance test и в котором есть интересующие вас профили и сервисы. Это ДОРОГО. Бесплатных решений нет.

 

2 часа назад, AlexandrY сказал:

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

Мишура потребуется когда возникнет линейка продуктов и регулярные инсталяции сторонним персоналом. Тогда возникнет острая потребность в функциях и инструментах для администрирования сети.

В случае самопального протокола  Network managment придется изобретать самостоятельно. Самостийное изобретение всегда будет ущербным по сравнению с устоявшимся промышленным стандартом.

 

Share this post


Link to post
Share on other sites
Только что, _3m сказал:

Для освоения CANopen нужны анализатор протокола верхнего уровня, конфигуратор и хотя бы одно эталонное устройство прошедшее CANopen conformance test и в котором есть интересующие вас профили и сервисы.

Именно так я и думал. Просто иногда бывают решения готовые  халявные и обидно их находить, в тот момент когда ты уже свой велосипед собрал :).

Share this post


Link to post
Share on other sites
50 минут назад, Z_h_e сказал:

Я изначально думал физический канал передачи CAN радиомудулями с пределами 9600бод организовать. Но оставил это пока, может потом, там граблей думаю много можно найти.  Я к тому что 10кбод мне хватает, но остаюсь без резерва, что конечно недопустимо. Но и Мега скорость мне не нужна будет точно.

Тогда вам надо глядеть в сторону ESP32. Там и радиоканал и кан имеется. Контроллер CAN в ESP32 работает я проверял.

Share this post


Link to post
Share on other sites

Ага. Запомню. Но сначала все же буду  заводить на "автомобильном" физ уровне, а там уже не проблема менять каналы передачи. А  пока на ТТЛьном уровне пакетами швырялся.

 

Edited by Z_h_e

Share this post


Link to post
Share on other sites
1 час назад, Z_h_e сказал:

в инете видел проги  CAN снифферы как раз для 232

Не путайте RS232 и виртуальный ком порт, это совершенно разные вещи.

2 часа назад, Z_h_e сказал:

Если не 232 (или виртуальный 232) то нужен будет драйвер

С драйверами проблем нет.

Share this post


Link to post
Share on other sites
2 часа назад, Z_h_e сказал:

Мне сравнивать пока не с чем, на каких камнях как CAN реализован.

И не надо сравнивать, надо сразу взять нормальный камень, тот-же кортекс М3 только другого производителя.

Share this post


Link to post
Share on other sites

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

Edited by Z_h_e

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this