Jump to content

    
Sign in to follow this  
baritono

Дешёвый способ посадить устройство на CAN?

Recommended Posts

40 минут назад, mantech сказал:

Всякую муть типа, широковещательное чудо-юдо с 48, 64 битными уникальными кодами, таблицы хэшей и пр... были отвергнуты сразу по причине ненадежности и значительному усложнению кода. Данный протокол предназначался для 8 и 32х битных контроллеров...

Потому и "чудо-юдо", что, даже имея уникальные коды в каждом устройстве, на шине RS-485 нельзя сделать нормальное обнаружение подключённых устройств. Потому что нет арбитража.

А на CAN шине - можно.

Share this post


Link to post
Share on other sites
23 hours ago, mantech said:

Здесь нет смысла впиндюривать КАН. Самое удачное - RS-485. Очень дешево и сердито, уарт есть в каждом МК сегодня...

UART - это правильно. Но непонятно зачем к нему приделывать такое допотопное угробище, как RS485 трансивер. Никто не мешает использовать совместно с UART трансивер CAN. Со всеми полагающимися при этом плюшками: отсутствием мастера, парадигмой "производитель-потребитель", избеганием столкновений (CSMA-CA) или в крайнем случае обнаружением столкновений (CSMA-CD), и т.п.

 

А вот контроллер CAN и протокол CAN, действительно, обычно и нафиг не нужны. Я думаю, что их используют в основном в силу косности мышления, "чтобы не думать". Равно как RS485 трансивер с UART используют ровно по той же причине.

 

Пример интерфейса на связке UART + трансивер CAN, без протокола CAN и без контроллеров CAN,  можно посмотреть здесь. Все делается на самой дешевой Ардуинке. 

Share this post


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

UART - это правильно. Но непонятно зачем к нему приделывать такое допотопное угробище, как RS485 трансивер. Никто не мешает использовать совместно с UART трансивер CAN. Со всеми полагающимися при этом плюшками: отсутствием мастера, парадигмой "производитель-потребитель", избеганием столкновений (CSMA-CA)

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

19 минут назад, =AK= сказал:

А вот контроллер CAN и протокол CAN обычно и нафиг не нужны. Чаще всего их используют в силу косности мышления, "чтобы не думать".

Вот тут сомневаюсь - посмотрел на доки по собственно контроллеру - так мне с уартом куда проще, чем разгребать все эти мейлбоксы, фильтры и пр...  Причем на разных МК все это по-разному конфигурируется. ЗЫ. не имею ввиду "кубокодеров", у которых вроде, как все просто, но потом кучи вопросов тут на форуме, что что-то все не работает никак...

Share this post


Link to post
Share on other sites
Just now, mantech said:

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

Никто не запрещает использовать "мастер-слэйв" связке (UART + трансивер CAN). В приведенном выше примере шина работает в двух режимах; "мастер-слэйв" при конфигурировании узлов и "производитель-потребитель"  в рабочем режиме. Одно другому не мешает.

Share this post


Link to post
Share on other sites
3 минуты назад, =AK= сказал:

Никто не запрещает использовать "мастер-слэйв" связке (UART + трансивер CAN).

Как я и сказал - вполне годный вариант, про 485 говорил про сугубо мое мнение - ибо система уже более 5 лет назад разработана, полностью реализует весь необходимый функционал - так зачем что-то менять. В смысле новых разработок, с необходимостью работы напрямую устройство - устройство - вполне годный вариант.

Share this post


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

Т.е. на RS-485 можно сделать физически шинную топологию: один кабель на все устройства?

Так RS-485 именно для этого и придуман.

Чаще всего используют двухпроводную симметричную линию (витую пару), но есть вариант (и соответствующие ему микросхемы драйверов) с двумя парами, отдельно для приёма и передачи.

Share this post


Link to post
Share on other sites
On 2/1/2019 at 9:35 PM, baritono said:

 Нравится идея контроллера со встроенным трансивером, например NXP LPC11C24, но цена кусается ($20).

Ну что, тогда я прописал бы вам  Renesas - https://www.digikey.com/product-detail/en/R7FS128783A01CFJ%23AA1/R7FS128783A01CFJ%23AA1-ND/7670041?utm_campaign=buynow&WT.z_cid=ref_octopart_dkc_buynow&utm_medium=aggregator&curr=usd&site=us&utm_source=octopart

Там вы дополнительно получите EEPROM и USB. Благодаря этому сможете очень удобно конфигурировать свои устройства.
Сможете делать сенсорные кнопки и подключаться к умным системам освещения через DALI. 
А главное не придется ковыряться во всяческих сторонних проектах ради CAN-а или USB , все готовые стеки , фреймворки и API найдете в Synergy Software Package

Share this post


Link to post
Share on other sites
On 6/29/2019 at 10:54 AM, =AK= said:

UART - это правильно. Но непонятно зачем к нему приделывать такое допотопное угробище, как RS485 трансивер. Никто не мешает использовать совместно с UART трансивер CAN. 

На выходе получается очередное ущербное угробище. Приходилось несколько раз работать с таким. Перед началом работ с подобными приборами производитель говорит: "У нас CAN, всё работает". Начинаешь работать, и никакого CAN и в помине нет. А сроки уже обозначены, деньги получены. Приходится заниматься не работой, каким-то непотребством.

Share this post


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

Перед началом работ с подобными приборами производитель говорит: "У нас CAN, всё работает".

ИМХО С такими производителями, которые белое выдают за черное лучше вообще не работать. А про уарт с кан трансивером разработчики честно написали, что это "HBus". Хотя сам все-таки стараюсь делать если уж RS-485 так и вся обвеска соответствующая что и пишем везде...

Edited by mantech

Share this post


Link to post
Share on other sites
2 hours ago, one_eight_seven said:

На выходе получается очередное ущербное угробище. Приходилось несколько раз работать с таким. Перед началом работ с подобными приборами производитель говорит: "У нас CAN, всё работает". Начинаешь работать, и никакого CAN и в помине нет. А сроки уже обозначены, деньги получены. Приходится заниматься не работой, каким-то непотребством.

Угробище получается не из-за использованных составных частей, а из-за дырок в головах разработчиков. На такое и на "генетически чистом CAN" можно напороться. "Хождение по камушкам" (т.е. привязка к накатанным шаблонам) никак не гарантирует наличие мозгов.

Share this post


Link to post
Share on other sites
В 29.06.2019 в 12:54, =AK= сказал:

Пример интерфейса на связке UART + трансивер CAN, без протокола CAN и без контроллеров CAN,  можно посмотреть здесь. Все делается на самой дешевой Ардуинке. 

Подскажите, для чего в протоколе введён такой вариант:

0x1B-0x09 - insert 0x1B, 0x1B into data flow

? Для экономии трафика?

Share this post


Link to post
Share on other sites
16 hours ago, AHTOXA said:

Подскажите, для чего в протоколе введён такой вариант:


0x1B-0x09 - insert 0x1B, 0x1B into data flow

? Для экономии трафика?

Чтобы много памяти под буфера не отводить. Ну и трафик тоже. Хоть и далается вставка/удаление байтстаффинга "на лету", все же иногда приходится держать в буфере пакет с байтстаффингом.

Share this post


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

Подскажите, для чего в протоколе введён такой вариант:


0x1B-0x09 - insert 0x1B, 0x1B into data flow

? Для экономии трафика?

Думаю: для уменьшения оверхеда кодирования в тех случаях, когда данные состоят из множества подряд идущих 0x1B. Чтобы увеличение было не 2-кратным, а "только" 1.5-кратным.

Если не хочется большого оверхеда, то лучше использовать протокол COBS. Очень приятный протокол :wink:  С оверхедом всего-лишь порядка на +0.5%. Не зависимо от значений данных.

1 час назад, =AK= сказал:

все же иногда приходится держать в буфере пакет с байтстаффингом.

Зачем?

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