LINUX.ORG.RU

5 Arduino через одну RS485 шину.

 ,


0

2

Задача: реализовать соединение 5 Arduino через одну шину RS-485.
Понятия не имею, как это делается.

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

Ответ на: комментарий от anonymous

В смысле — если мелкоконтроллеры тоже что-то срать в шину должны. Если только читать — можно обойтись тупо стандартным восьмибитным.

anonymous
()
Ответ на: комментарий от Deleted

Если линия не длинная, то можно и без терминаторов. На десятке метров без терминаторов уже грустно.

Dark_SavanT ★★★★★
()
Ответ на: комментарий от Deleted

А терминаторы на концы не надо?

Да, их тут не нарисовано. Надо, конечно. К этой картинке (неудачной) надо комментарий оставить, что каждый из этих конкретных модулей TTL<->RS-485 уже имеет на борту сопротивление 120 Ом (R7 по схеме). Это, кстати, не гуд. Видимо, они предназначены для соединений 1:1. Тогда при включении в линию нескольких таких преобразователей надо выпаять этот резистор 120 Ом хотя бы у промежуточных платочек, оставив только у последнего на шине. Или найти такие преобразователи, у которых перемычкой можно включить или выключить сопротивление. Или вообще без сопротивлений найти, а ставить на конце линии уже самостоятельно.

Zubok ★★★★★
()
Последнее исправление: Zubok (всего исправлений: 2)
Ответ на: комментарий от yax123

Я уже писал, зачем: если ты хочешь, чтобы мелкоконтроллеры не только могли принимать сигнал, но и выдавать, тебе нужно как-то хитро к ним обращаться. Для этого придется либо лепить псевдо-CAN поверх RS485, либо маркировать командные последовательности. Вот во втором случае и пригодится девятый бит.

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

anonymous
()
Ответ на: комментарий от anonymous

Если же ты хочешь, чтобы мелкоконтроллеры в шину асинхронно что-то писали

ну если только асинхронно все должны болтать

yax123 ★★★★★
()
Ответ на: комментарий от anonymous

чтобы мелкоконтроллеры не только могли принимать сигнал, но и выдавать, тебе нужно как-то хитро к ним обращаться

Нет тут нечего хитрого, банальный master - slave

Для этого придется либо лепить псевдо-CAN поверх RS485

Зачем лепить что-то свое, когда есть готовые реализации MODBUS

mmaslyukov
()
Ответ на: комментарий от Zubok

Подскажите, а как физически реализуются «узлы» на, допустим, витой паре? Т.е. (если что-то неверно говорю) идет себе кабель и тут бах, должен в два разных места уйти.

KovalchukAS
() автор топика
Ответ на: комментарий от mmaslyukov

банальный master - slave

Без девятого бита случайно может так получиться, что говорящий мелкоконтроллер вызовет активацию другого. И получишь ты «банальный мастер-слейв» ☺

MODBUS

Сложно.

anonymous
()
Ответ на: комментарий от anonymous

Это уловил. Сейчас про физическое соединение спрашиваю. Я так понимаю, нужно что-то типа... T-коннектора для витой пары.

KovalchukAS
() автор топика
Ответ на: комментарий от KovalchukAS

Или я очень сильно затупаю. Как терминаторы помогут решить мой вопрос? Не особо понимаю. Терминаторы же на концы всей системы будут вешаться...это же резисторы...

KovalchukAS
() автор топика
Ответ на: комментарий от KovalchukAS

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

http://www.metersusa.com/images/Acuvim/AcuvimCom9.JPG

Иногда для удобства на устройствах два разъема сделаны. В один приходит RS485, а из другого уходит к следующему.

Еще вариант: использование контактных колодок

  1       2  

  ||     ||
  OO     OO   ...
  OO     OO
  | \____|/\_____
  |_____/\_______  

Разветвители RJ45, например.

Zubok ★★★★★
()
Ответ на: комментарий от anonymous

Без девятого бита случайно может так получиться, что говорящий мелкоконтроллер вызовет активацию другого. И получишь ты «банальный мастер-слейв» ☺

Что значит случайно? В рамках протокола MODBUS у каждого устройства есть свой адрес. Мастер отправляет сообщение в котором, по спецификации присутствует адрес получателя. Все устройства эту посылку принимают, но отвечает только то, у которого адрес совпал. 9 битный формат можно засунуть в топку вместе с 7, 6 и 5 битным.Хотя есть специфические сети с упором на энергосбережение slave устройств где применяется 9й бит (http://electronicdesign.com/embedded/use-pcs-uart-9-bit-protocols)

Сложно

Я же говорил есть множество готовых реализаций. Вот пример где все разжевано http://www.electronhacks.com/2014/04/arduino-modbus-plc-rtu/

mmaslyukov
()
Ответ на: комментарий от mmaslyukov

Мастер отправляет сообщение в котором, по спецификации присутствует адрес получателя.

А тут — бац, в посылке передатчика случайно образуется пакет с адресом другого. И трындец!

Чтобы такого не произошло наверняка, тебе нужно эдак байт 128 гнать в MAGICK перед номером передатчика, что сильно снизит скорость, если тебе шустро надо работать!

И не надо в меня тыкать ссылками на ардуйню! Я не хочу блевать, хоть и не пообедал еще.

anonymous
()
Ответ на: комментарий от anonymous

И не надо в меня тыкать ссылками на ардуйню! Я не хочу блевать, хоть и не пообедал еще

Ссылка по теме поста.

Чтобы такого не произошло наверняка, тебе нужно эдак байт 128 гнать в MAGICK перед номером передатчика,

Нет, адрес 8ми битный. Ознакомься, прежде чем предполагать. https://ru.wikipedia.org/wiki/Modbus

mmaslyukov
()
Ответ на: комментарий от mmaslyukov

Хотя есть специфические сети с упором на энергосбережение slave устройств где применяется 9й бит

Еще широко 9-битный протокол MDB распространен в вендинговых автоматах. Практически все монето-, купюроприемники и пр. умеют этот протокол. Физически используется токовый сигнал и стандартный разъем. Мне как-то довелось его реализовывать.

https://en.wikipedia.org/wiki/Multidrop_bus

Zubok ★★★★★
()
Последнее исправление: Zubok (всего исправлений: 1)
Ответ на: комментарий от anonymous

Параша, а не протокол!

Слова дилетанта в вопросах коммуникации устройств по шине rs485. MODBUS на ровне с CAN является одним из основных используемых протоколов в промышленной автоматике.

mmaslyukov
()
Ответ на: комментарий от anonymous

Четность что ли? А не проще пакетный протокол просто? Типа модбас бинарный, но со своим содержимым пакета? Это ж тривиально.

slapin ★★★★★
()
Ответ на: комментарий от anonymous

Без девятого бита случайно может так получиться, что говорящий мелкоконтроллер вызовет активацию другого. И получишь ты «банальный мастер-слейв» ☺

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

aiqu6Ait ★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.