Передатчики? Наверняка оба конвертора - приёмопередатчики и умеют гонять информацию и туда, и сюда (то есть могут слушать линию). Другое дело, что каждый из них с точки зрения интерфейса и протокола - мастер, а ПК - слэйв.
Я думаю, реализовать RS-485 с двумя мастерами можно, хотя сам этого не делал. Дабы избежать коллизий (то есть одновременной работы мастеров в линию), они должны следить каждый за работой другого, ну и слэйва, или как-то по-другому синхронизроваться. Если слэйв вообще не отвечает, то ещё проще, следить надо только за коллегой. Но если коллизии будут случаться, то, конечно, ПК ни черта не примет.
[uquote="icedev",url="/forum/viewtopic.php?p=3449376#p3449376"]сможет ли их как нибудь в/у обработать ?[/uquote]
Сможет, если в отсутствие коллизий правильно обработает команду, т.е. программно (по используемому протоколу) определит, что она адресована именно ему.
в принципе 485 заране расчитывался под такое но...насколко девайсы соблюдат весь протокол вопрос неясный
и таки да избежать колизий будет главная хотя и не 1 проблема
ZМудрость(Опыт и выдержка) приходит с годами.
Все Ваши беды и проблемы, от недостатка знаний.
Умный и у дурака научится, а дураку и ..
Алберт Ейнштейн не поможет и ВВП не спасет.и МЧС опаздает
Спасибо за участие в теме.
Немного уточняющей информации по теме.
Два мастера не синхронизированы между собой и не могут "двигатсья" по щучьему велению, в определенные для каждого мастера тайминги с мастера уходит команда устройству.
Я так понимаю конструкция будет работать при условии того если оба устройства одновременно не будут "писать" в линию.
Например мастер №1 раз в минуту опрашивает температуру с слейва.
Второй мастер работает только при получении команды из вне, то есть в любой момент он может отправить команду например на чтение влажности.
Развитие событий далее:
Если во время передачи данных от мастера 1 в линию напишет мастер 2, тогда слейв просто получит некорректную команду и ответит ошибкой?
И как аппаратно можно синхронизировать это? теоретически возможно? собрать переходник/конвертер 2USBx2RS485
ATMEGA328 можно заменить любым камнем с парочкой USART п/п.
Перед USB можно добавить хаб типо FE1.1 или подобное, тогда получитсья один вход usb вместо двух)
И на уровне мк регулировать "траффик" с ком портов.
Например сделать один main каналом , при наличии входных данных на его буфере тормозить общий поток и отправлять данные только из него, а как данные кончатся снова отправлять данные из второго.
Или сделать просто просто программную очередь пакетов.
Это просто мысли, возможно глупые.
Кто реализовывал что то подобное ? поделитесь опытом
[uquote="icedev",url="/forum/viewtopic.php?p=3449939#p3449939"]И как аппаратно можно синхронизировать это? теоретически возможно? собрать переходник/конвертер 2USBx2RS485[/uquote]Конечно. Делается переходник только для второго мастера. Его алгоритм: получив от своего мастера (ПК) пакет, он его не сразу передаёт, а дожидается факта освобождения линии - скажем, переходник ждёт две секунды молчания в линии (предполагается, что слэйв в течение двух секунд обязательно ответит), а после этих двух секунд молчания передаёт пакет слэйву. Затем ждёт ответа слэйва - тоже в течение двух секунд, и, получив, передаёт его мастеру. А если не получил, то и
хрен бы с ним, снова ждёт пакет от своего мастера. Сами пакеты никак не видоизменяются и даже не анализируются.
[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="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 раз.
[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="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 не моё, исходников нет( вот и приходиться крутиться
если на 1 компе проблем никаких задейсвуй контрол потока портоф и...сделай перекрестку ...
485 так разработан чо должен работать даже если к длиному шлейфу в разных местах подключено несколко датчикоф физически разнесеных далеко ДА ТЕРМИНАТОРЫ НА ШЛЕЙФЕ(на концах) ОБЯЗАТЕЛНЫ!! в промежуточных девайсах их не ставят
ZМудрость(Опыт и выдержка) приходит с годами.
Все Ваши беды и проблемы, от недостатка знаний.
Умный и у дурака научится, а дураку и ..
Алберт Ейнштейн не поможет и ВВП не спасет.и МЧС опаздает
[uquote="musor",url="/forum/viewtopic.php?p=3450075#p3450075"]если на 1 компе проблем никаких задейсвуй контрол потока портоф и...сделай перекрестку ...
485 так разработан чо должен работать даже если к длиному шлейфу в разных местах подключено несколко датчикоф физически разнесеных далеко ДА ТЕРМИНАТОРЫ НА ШЛЕЙФЕ(на концах) ОБЯЗАТЕЛНЫ!! в промежуточных девайсах их не ставят[/uquote]
Я так понимаю, что если первый, наглый, мастер потеряет пакеты, то ему ничего от этого не будет? Если это не так и он вывалится с ошибкой, то дело плохо, вклиниться не получится.
Мусор какую-то фигню ляпнул про два датчика, тут датчик, точнее, слэйв один, так что от коллизий только одними терминаторами не спасёшься, да и вообще - при короткой линии да на скорости 4800 бит/с толку от них немного.