Перейти к содержанию
    

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

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

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

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

23 hours ago, mantech said:

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

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

 

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

 

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

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

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

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

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Just now, mantech said:

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

14 минут назад, baritono сказал:

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

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В 28.06.2019 в 17:56, mantech сказал:

Как ни странно - да! ...  Не вижу ничего плохого в опросе. 

Спасибо, уже наелись.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

On 6/29/2019 at 10:54 AM, =AK= said:

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

20 минут назад, one_eight_seven сказал:

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

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

Изменено пользователем mantech

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

2 hours ago, one_eight_seven said:

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В 29.06.2019 в 12:54, =AK= сказал:

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

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

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

16 hours ago, AHTOXA said:

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


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

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

18 часов назад, AHTOXA сказал:

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


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

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

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

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

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

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

Зачем?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...