Jump to content

    
bezobraznic

Перекличка блоков по CAN

Recommended Posts

1 hour ago, jcxz said:

PS: Вроде же совершенно примитивный способ. Неужто неясно? :unknw:

Можно еще проще сделать: выделить "служебный" идентификатор, скажем, 1 - его не занимать ничем, кроме "переклички". И периодически каждое звено шлет пакет с этим идентификатором. А в пакете  два байта данных — идентификатор устройства, которое шлет данный пакет.

И не нужно будет мучиться с 29-битными идентификаторами (тем более, никто их в реальной жизни не использует).

Share this post


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

Можно еще проще сделать: выделить "служебный" идентификатор, скажем, 1 - его не занимать ничем, кроме "переклички". И периодически каждое звено шлет пакет с этим идентификатором. А в пакете  два байта данных — идентификатор устройства, которое шлет данный пакет.

...И получить кучу ошибок на шине из-за коллизий в поле данных.

 

Цитата

И не нужно будет мучиться с 29-битными идентификаторами (тем более, никто их в реальной жизни не использует).

Не надо говорить за всех.

Share this post


Link to post
Share on other sites

Какие коллизии? Не бывает в CAN коллизий! Если шина занята, то просто отправляющий будет ждать, пока освободится. Другое дело, что если N устройств будет одновременно пытаться что-то в шину сказать, они одновременно и не "передумают". Я, например, ограничиваю количество попыток отправки сообщения. Как оно выходит, устанавливается соответствующая ошибка (например, отсутствие ACK, коллизия или еще что).

Edited by Eddy_Em

Share this post


Link to post
Share on other sites

Почему , считают что в CAN, все устройства должны постоянно стучать в шину . Можно назначить одно устройство мастером , и оно будет периодически отправлять сообщения например с ID 0x01 , и первый байт данных 01 затем 02 потом 03 итак далее в зависимости от количества узлов  . Остальные узлы настроены на приём IDx01 , и соответственно принимают все запросы мастера . После приёма сравнивают первый байт данных со своим уникальным номером , и если он совпадает ,один узел отправляет одно сообщение мастеру с другим ID например 02  и любых 8 байт данных о своём состояний  . Мастер принимает эти данные , и решает продолжать обмен с этим узлом или перейти к следующему .

Share this post


Link to post
Share on other sites
5 минут назад, геннадий75 сказал:

Почему , считают что в CAN, все устройства должны постоянно стучать в шину . Можно назначить одно устройство мастером ,

Потому что нужно читать исходную постановку задачи:

26.10.2020 в 10:20, bezobraznic сказал:

Есть N-блоков соединенных CAN-шиной.  Главного master-блока на шине нет, все равнозначные.

Share this post


Link to post
Share on other sites
On 10/27/2020 at 12:27 PM, jcxz said:

А теперь объясните - каким образом такое организовать поверх CAN? Вы знаете как он (CAN) работает?  :wink:

Вопрос был не о том какие есть красивые и мегастандартные протоколы, а о методе реализации поверх CAN.

Не совсем понимаю ваш вопрос, возможно у нас проблема с терминологией. В моем случае под CAN я понимаю общие физические принципы передачи данных по сети (типа RS485), под протоколами верхнего уровня SAE J1939 то, каким правилам подчиняются данные передаваемые по этой самой сети (типа MODBUS).

Т.е. ваша передача данных поверх CAN, если я все правильно понял, и есть то, что я понимаю под протоколами верхнего уровня, т.е. SAE J1939. И я не призываю использовать именно данный стандарт (кстати действительно мега-крутой, над ним не одна сотня голов поумнее наших с вами работала не один год). Вопрос был - как организовать сканирование устройств в сети, я и привел пример как это осуществляется в данном протоколе, который уже ни один год УСПЕШНО работает на сотнях тысяч грузовых машин ВСЕХ крупнейших производителей данной техники и помирать, что показательно, не собирается.

On 10/27/2020 at 12:27 PM, jcxz said:

Что за "сеть"? Речь идёт о CAN или о какой-то другой сети?

Если о CAN, то у ТС имхо не тот случай. Так как у него все узлы - одинаковые, с одинаковым ПО, различающиеся только уникальным ID (кстати - ТС так и не сказал какой разрядности у него ID?). И если этот ID имеет большую разрядность (>=29 бит), то таким образом, как Вы привели пример, по CAN обмен организовать не удастся. Без предварительного назначения более коротких адресов по какому-то алгоритму.

Чтобы было более понятно, подумайте что будет с "этими нафаршированными примочками" в вашем грузовом автомобиле, если в эту сеть добавить ещё один идентичный "контроллер двигателя"?... А если ещё 5 добавить? :biggrin:

 

PS: Вопрос к ТС - какова разрядность уникальных ID (серийных номеров) узлов у вас? А то может всё гораздо проще решается (если разрядность малая)...

Да, речь идет о CAN сети. Разрядность CAN ID - 29 бит. Протокол SAE J1939-81, который я привел в пример, в том числе и определяет каким образом блоки в сети договариваются о своих sourse address (младшие 8 бит CAN ID). 

Добавить еще один контроллер двигателя никто не мешает, если производителем контроллера это предусмотрено. По факту в подавляющем большинстве случаев контроллер двигателя относится к одноадресным неконфигурируемым устройствам (ни разу не видел автомобиль с двумя дизельными двигателями). Но! Если взять контроллер гидравлического распределителя (для грузоподъемной техники), управляемого по CAN, то там есть возможность задания адреса. Никто не станет делать отдельный уникальный девайс на каждую секцию гидрораспределителя, это попросту глупо. Что хорошо коррелирует с данным конкретным случаем. В качестве дополнительных примеров могу привести джойстики (устанавливается до 4 шт в систему) если поковыряться еще можно накопать устройств с одинаковым ПО.

Разрядность уникального идентификатора устройства составляет согласно спецификации 64 бита (т.е. все 8 байт информации), из них только 21 бит приходится на собственно идентификационный номер, остальные - код производителя, выполняемая функция и т.д.

Еще вопросы? (отвечаю медленно, т.к. часто в разъездах, работы много).

On 10/27/2020 at 11:52 AM, AlexandrY said:

Т.е. есть в сети J1939 координаторы и еще какие. И они обязательны. 

Назовите мне блок координатор в CAN сети, ну скажем грузовика производства КАМАЗ?? Ну или любого другого, на Ваш выбор. Просветите, кто там координатор, буду благодарен.

Share this post


Link to post
Share on other sites
25 minutes ago, Eddy_Em said:

Есть там координатор, он же мастер сети - ЭБУ, без которого машина с места не сдвинется сама...

ЭБУ - электронный блок управления, собирательное название. Конкретнее пожалуйста. Блок управления чем? Двигателем? Ясен пень, без него не двинется, ведь двигателем управлять нечему. Только причем тут координатор?

Share this post


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

Есть там координатор, он же мастер сети - ЭБУ

А фары, стеклоподъёмники, стеклоочистители и кто там ещё сидит на шине, смогут работать? Авайрийку элементарную включить же можно будет)

Share this post


Link to post
Share on other sites
2 minutes ago, haker_fox said:

А фары, стеклоподъёмники, стеклоочистители и кто там ещё сидит на шине, смогут работать? Авайрийку элементарную включить же можно будет)

Конечно смогут, если все устройства, завязанные на кнопки и исполнительные элементы в наличии. Если не верите - поэкспериментируйте: выдерните контроллер двигателя, а потом попробуйте поуправлять чем-либо, не завязанным на двигатель.

Или под ЭБУ вы имели ввиду контроллер управления электрооборудованием. Ясен пень, в этом случае стеклоподъемники работать не будут, ведь управляющие сигналы на двигатели стеклоподъемников формирует именно контроллер электрооборудования.

а аварийка как правило не завязана на какие-либо шины, а включается напрямую через специальное реле к поворотникам.

Share this post


Link to post
Share on other sites

Под ЭБУ я имел в виду блок управления двигателем. Который все эти датчики опрашивает и управляет инжектором и т.п. А если вы на CAN-шину двигателя еще и магнитолу повесите, то что-то я сомневаюсь, что такая машина сможет нормально ездить!

P.S. А у меня в "гешике" вообще CAN-шина есть только для подключения диагностики ☺

Все датчики и исполнительные устройства подключаются напрямую к ЭБУ.  Но у меня машинка старая - ей 10 лет уже. Возможно, в современных автомобилях заводят несколько CAN-шин. Но я сомневаюсь, что найдется горе-инженер, который на CAN-шину жизненно важных цепей (ESP, ABS и управление двигателем) повесит не особо важные вроде фар, стеклоподъемников и магнитол…

Edited by Eddy_Em

Share this post


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

А фары, стеклоподъёмники, стеклоочистители и кто там ещё сидит на шине, смогут работать?

Да, да и чаще всего периферия не сидит на кане.

Share this post


Link to post
Share on other sites
5 часов назад, AKK сказал:

По факту в подавляющем большинстве случаев контроллер двигателя относится к одноадресным неконфигурируемым устройствам

Вот! Вот в этом и причина почему это работает в той системе - адрес фиксированный и заранее известный всем остальным участникам обмена по шине. У ТС совсем другая ситуация, поэтому ваш пример с автомобилем не подходит к данной теме.

5 часов назад, AKK сказал:

Разрядность уникального идентификатора устройства составляет согласно спецификации 64 бита (т.е. все 8 байт информации), из них только 21 бит приходится на собственно идентификационный номер, остальные - код производителя, выполняемая функция и т.д.

Еще вопросы? (отвечаю медленно, т.к. часто в разъездах, работы много).

Мой вопрос касался конкретно процитированного фрагмента вашего поста:

27.10.2020 в 06:11, AKK сказал:

Если вкратце (исходя из SAE J1939): каждый блок, регистрируюсь в сети при включении посылает "address claim" со своим адресом и NAME

Если предположить, что уникальный ID устройства (его серийный номер, SN) не влазит внутрь 29-битного CAN-ID (например SN - 64-битный), то как это (процитированное) реализовать поверх CAN?

Только по существу, без отсылок во всякие умные стандарты.

 

PS: Как уже стало известно, у ТС ID == 11-битный. Поэтому его этот вопрос не касается - у него всё гораздо проще реализуется.

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.