Один приёмник, два передатчика на линии RS485

Здесь принимаются все самые невообразимые вопросы... Главное - не стесняйтесь. Поверьте, у нас поначалу вопросы были еще глупее :)
Ответить
Открыл глаза
Аватара пользователя
Сообщения: 70
Зарегистрирован: Сб окт 22, 2011 20:30:26

Сообщение icedev »

Добрый день товарищи ,у нас с товарищем возник спор, рассудите пожалуйста.
Причина спора
Допустим у нас есть такая схема:


[COM1] --- >>[RS-485/Конвертер]
[ПК]-->>|***************************|---->>[Ведомое Устройство]
[COM2] --- >>[RS-485/Конвертер]


На ПК установлено 2 ПО которые работают с протоколом Ведомого устройства и отправляют на него команды с определенной периодичностью.

Вопрос, будет ли работать данная схема?
Смогут ли передатчики передавать команды в одну линию?Точней сможет ли их как нибудь в/у обработать ?
Реклама
Друг Кота
Аватара пользователя
Сообщения: 17070
Зарегистрирован: Пт мар 30, 2012 05:17:29
Откуда: Екатеринбург

Сообщение mickbell »

Передатчики? Наверняка оба конвертора - приёмопередатчики и умеют гонять информацию и туда, и сюда (то есть могут слушать линию). Другое дело, что каждый из них с точки зрения интерфейса и протокола - мастер, а ПК - слэйв.
Я думаю, реализовать RS-485 с двумя мастерами можно, хотя сам этого не делал. Дабы избежать коллизий (то есть одновременной работы мастеров в линию), они должны следить каждый за работой другого, ну и слэйва, или как-то по-другому синхронизроваться. Если слэйв вообще не отвечает, то ещё проще, следить надо только за коллегой. Но если коллизии будут случаться, то, конечно, ПК ни черта не примет.
И хрюкотали зелюки,
Как мюмзики в мове.

На каждый РКН
Найдётся VPN.
Реклама
Встал на лапы
Аватара пользователя
Сообщения: 143
Зарегистрирован: Вт июл 03, 2012 16:05:41

Сообщение Kit&Cat »

[uquote="icedev",url="/forum/viewtopic.php?p=3449376#p3449376"]сможет ли их как нибудь в/у обработать ?[/uquote]
Сможет, если в отсутствие коллизий правильно обработает команду, т.е. программно (по используемому протоколу) определит, что она адресована именно ему.
Друг Кота
Аватара пользователя
Сообщения: 39197
Зарегистрирован: Сб сен 13, 2014 16:27:32
Откуда: СпиртоГонск созвездия Омега

Сообщение musor »

в принципе 485 заране расчитывался под такое но...насколко девайсы соблюдат весь протокол вопрос неясный
и таки да избежать колизий будет главная хотя и не 1 проблема
ZМудрость(Опыт и выдержка) приходит с годами.
Все Ваши беды и проблемы, от недостатка знаний.
Умный и у дурака научится, а дураку и ..
Алберт Ейнштейн не поможет и ВВП не спасет.и МЧС опаздает
Реклама
Эиком - электронные компоненты и радиодетали
Открыл глаза
Аватара пользователя
Сообщения: 70
Зарегистрирован: Сб окт 22, 2011 20:30:26

Сообщение icedev »

Спасибо за участие в теме.
Немного уточняющей информации по теме.
Два мастера не синхронизированы между собой и не могут "двигатсья" по щучьему велению, в определенные для каждого мастера тайминги с мастера уходит команда устройству.
Я так понимаю конструкция будет работать при условии того если оба устройства одновременно не будут "писать" в линию.
Например мастер №1 раз в минуту опрашивает температуру с слейва.
Второй мастер работает только при получении команды из вне, то есть в любой момент он может отправить команду например на чтение влажности.
Развитие событий далее:

Если во время передачи данных от мастера 1 в линию напишет мастер 2, тогда слейв просто получит некорректную команду и ответит ошибкой?

И как аппаратно можно синхронизировать это? теоретически возможно? собрать переходник/конвертер 2USBx2RS485

Примерно так

[USB]->[CP21xx/ftdi] -->>
[USB]->[CP21xx/ftdi] -->> ATMEGA328P-->>adm485/max

ATMEGA328 можно заменить любым камнем с парочкой USART п/п.
Перед USB можно добавить хаб типо FE1.1 или подобное, тогда получитсья один вход usb вместо двух)
И на уровне мк регулировать "траффик" с ком портов.
Например сделать один main каналом , при наличии входных данных на его буфере тормозить общий поток и отправлять данные только из него, а как данные кончатся снова отправлять данные из второго.
Или сделать просто просто программную очередь пакетов.
Это просто мысли, возможно глупые.
Кто реализовывал что то подобное ? поделитесь опытом
Реклама
Друг Кота
Аватара пользователя
Сообщения: 17070
Зарегистрирован: Пт мар 30, 2012 05:17:29
Откуда: Екатеринбург

Сообщение mickbell »

[uquote="icedev",url="/forum/viewtopic.php?p=3449939#p3449939"]И как аппаратно можно синхронизировать это? теоретически возможно? собрать переходник/конвертер 2USBx2RS485[/uquote]Конечно. Делается переходник только для второго мастера. Его алгоритм: получив от своего мастера (ПК) пакет, он его не сразу передаёт, а дожидается факта освобождения линии - скажем, переходник ждёт две секунды молчания в линии (предполагается, что слэйв в течение двух секунд обязательно ответит), а после этих двух секунд молчания передаёт пакет слэйву. Затем ждёт ответа слэйва - тоже в течение двух секунд, и, получив, передаёт его мастеру. А если не получил, то и
хрен бы с ним, снова ждёт пакет от своего мастера. Сами пакеты никак не видоизменяются и даже не анализируются.
И хрюкотали зелюки,
Как мюмзики в мове.

На каждый РКН
Найдётся VPN.
Реклама
Встал на лапы
Аватара пользователя
Сообщения: 143
Зарегистрирован: Вт июл 03, 2012 16:05:41

Сообщение Kit&Cat »

[uquote="icedev",url="/forum/viewtopic.php?p=3449939#p3449939"]Два мастера не синхронизированы между собой и не могут "двигатсья" по щучьему велению, в определенные для каждого мастера тайминги с мастера уходит команда устройству.
Я так понимаю конструкция будет работать при условии того если оба устройства одновременно не будут "писать" в линию.
Например мастер №1 раз в минуту опрашивает температуру с слейва.
Второй мастер работает только при получении команды из вне, то есть в любой момент он может отправить команду например на чтение влажности.
Развитие событий далее:

Если во время передачи данных от мастера 1 в линию напишет мастер 2, тогда слейв просто получит некорректную команду и ответит ошибкой?[/uquote]

Зависит от того, насколько "умный" слэйв. Если не умеет обрабатывать некорректные команды, то может и выполнить.

[uquote="icedev",url="/forum/viewtopic.php?p=3449939#p3449939"]И как аппаратно можно синхронизировать это? теоретически возможно? собрать переходник/конвертер 2USBx2RS485[/uquote]
В исходной постановке задачи, как я понял, оба COM-порта находятся на одном компьютере.
Соответственно, должно быть гораздо проще, не добавляя никаких наворотов с лишним железом, программно на компе исключить любые коллизии на шине.
Тем более что в определенные для каждого мастера тайминги с мастера уходит команда устройству.
Открыл глаза
Аватара пользователя
Сообщения: 70
Зарегистрирован: Сб окт 22, 2011 20:30:26

Сообщение icedev »

[uquote="Kit&Cat",url="/forum/viewtopic.php?p=3450002#p3450002"][uquote="icedev",url="/forum/viewtopic.php?p=3449939#p3449939"]Два мастера не синхронизированы между собой и не могут "двигатсья" по щучьему велению, в определенные для каждого мастера тайминги с мастера уходит команда устройству.
Я так понимаю конструкция будет работать при условии того если оба устройства одновременно не будут "писать" в линию.
Например мастер №1 раз в минуту опрашивает температуру с слейва.
Второй мастер работает только при получении команды из вне, то есть в любой момент он может отправить команду например на чтение влажности.
Развитие событий далее:

Если во время передачи данных от мастера 1 в линию напишет мастер 2, тогда слейв просто получит некорректную команду и ответит ошибкой?[/uquote]

Зависит от того, насколько "умный" слэйв. Если не умеет обрабатывать некорректные команды, то может и выполнить.

[uquote="icedev",url="/forum/viewtopic.php?p=3449939#p3449939"]И как аппаратно можно синхронизировать это? теоретически возможно? собрать переходник/конвертер 2USBx2RS485[/uquote]
В исходной постановке задачи, как я понял, оба COM-порта находятся на одном компьютере.
Соответственно, должно быть гораздо проще, не добавляя никаких наворотов с лишним железом, программно на компе исключить любые коллизии на шине.
Тем более что в определенные для каждого мастера тайминги с мастера уходит команда устройству.[/uquote]

Да, верно. Оба ком порта на одном ПК. Вся проблема в том что 1 мастер , сильно много команд шлет в линию.Грубо говоря практически постоянно опрашивает slave устройство
А мне нужно "вклиниться" в линию вторым мастером.Боюсь не попасть в тайминги. кроме того скорость обмена между устройствами по протоколу 4800.

В голову пришла идея, а что если решить этот вопрос программно, например в управляющем ПО сделать некую прослойку между COM портами мастеров и программно регулировать арбитраж пакетов.
Например
1x аппаратный ком порт идет напрямую до slave устройства.
Этот реальный ком порт открывает моё ПО(прослойка)
Это же ПО создает виртуальный ком к которому как раз подключается основное управляющее ПО
Последний раз редактировалось icedev Вт сен 04, 2018 09:54:19, всего редактировалось 1 раз.
Встал на лапы
Аватара пользователя
Сообщения: 143
Зарегистрирован: Вт июл 03, 2012 16:05:41

Сообщение Kit&Cat »

[uquote="icedev",url="/forum/viewtopic.php?p=3450066#p3450066"]Оба ком порта на одном ПК.[/uquote]
Значит, все под контролем. Вашим контролем.
[uquote="icedev",url="/forum/viewtopic.php?p=3450066#p3450066"]Вся проблема в том что 1 мастер , сильно много команд шлет в линию.Грубо говоря практически постоянно опрашивает slave устройство
А мне нужно "вклиниться" в линию вторым мастером.Боюсь не попасть в тайминги. кроме того скорость обмена между устройствами по протоколу 4800.[/uquote]
Сделайте так, чтобы мастер-1 "не наглел", см.выше.
Открыл глаза
Аватара пользователя
Сообщения: 70
Зарегистрирован: Сб окт 22, 2011 20:30:26

Сообщение icedev »

[uquote="Kit&Cat",url="/forum/viewtopic.php?p=3450067#p3450067"][uquote="icedev",url="/forum/viewtopic.php?p=3450066#p3450066"]Оба ком порта на одном ПК.[/uquote]
Значит, все под контролем. Вашим контролем.
[uquote="icedev",url="/forum/viewtopic.php?p=3450066#p3450066"]Вся проблема в том что 1 мастер , сильно много команд шлет в линию.Грубо говоря практически постоянно опрашивает slave устройство
А мне нужно "вклиниться" в линию вторым мастером.Боюсь не попасть в тайминги. кроме того скорость обмена между устройствами по протоколу 4800.[/uquote]
Сделайте так, чтобы мастер-1 "не наглел", см.выше.[/uquote]
Проблема в том что ПО мастера №1 не моё, исходников нет( вот и приходиться крутиться
Друг Кота
Аватара пользователя
Сообщения: 39197
Зарегистрирован: Сб сен 13, 2014 16:27:32
Откуда: СпиртоГонск созвездия Омега

Сообщение musor »

если на 1 компе проблем никаких задейсвуй контрол потока портоф и...сделай перекрестку ...
485 так разработан чо должен работать даже если к длиному шлейфу в разных местах подключено несколко датчикоф физически разнесеных далеко ДА ТЕРМИНАТОРЫ НА ШЛЕЙФЕ(на концах) ОБЯЗАТЕЛНЫ!! в промежуточных девайсах их не ставят
ZМудрость(Опыт и выдержка) приходит с годами.
Все Ваши беды и проблемы, от недостатка знаний.
Умный и у дурака научится, а дураку и ..
Алберт Ейнштейн не поможет и ВВП не спасет.и МЧС опаздает
Открыл глаза
Аватара пользователя
Сообщения: 70
Зарегистрирован: Сб окт 22, 2011 20:30:26

Сообщение icedev »

[uquote="musor",url="/forum/viewtopic.php?p=3450075#p3450075"]если на 1 компе проблем никаких задейсвуй контрол потока портоф и...сделай перекрестку ...
485 так разработан чо должен работать даже если к длиному шлейфу в разных местах подключено несколко датчикоф физически разнесеных далеко ДА ТЕРМИНАТОРЫ НА ШЛЕЙФЕ(на концах) ОБЯЗАТЕЛНЫ!! в промежуточных девайсах их не ставят[/uquote]

Так и поступлю, спасибо за советы
Друг Кота
Аватара пользователя
Сообщения: 17070
Зарегистрирован: Пт мар 30, 2012 05:17:29
Откуда: Екатеринбург

Сообщение mickbell »

Я так понимаю, что если первый, наглый, мастер потеряет пакеты, то ему ничего от этого не будет? Если это не так и он вывалится с ошибкой, то дело плохо, вклиниться не получится.
Мусор какую-то фигню ляпнул про два датчика, тут датчик, точнее, слэйв один, так что от коллизий только одними терминаторами не спасёшься, да и вообще - при короткой линии да на скорости 4800 бит/с толку от них немного.
И хрюкотали зелюки,
Как мюмзики в мове.

На каждый РКН
Найдётся VPN.
Ответить

Вернуться в «Теория»