В общем задача такова: есть несколько устройств + 2 компа на одной шине rs-485. Необходимо чтобы каждый комп мог работать со своими устройствоми и при етом друг другу не мешали. В принципе ето реализуется. Вопрос как???
>перед сбросом DTR необходимо делать паузу, что бы данные успели уйти из буфера UARTa
"В общем задача такова: есть несколько устройств + 2 компа на одной шине rs-485. Необходимо чтобы каждый комп мог работать со своими устройствоми и при етом друг другу не мешали."
Вот по этому протокол и нужен, что бы компы не мешали работать друг другу... потому что доступ к шине RS-485 надо разделять по времени между компами, одновременно несколько компов не могут посылать данные в RS-485, а слушать могут.
Тогда надо юзать открытый протокол http://www.modbus.org , но в нём только один мастер на шине RS-485 .
Либо другой протокол какой-нить маркерный с поддержкой мультимастеринга, но я с такими протоколами не работал.
RS-485 это промышленный интерфейс, попробуй зайди на http://www.qnx.org.ru там эти вопросы обсуждались.
Посмотри внимательно на доку по дивайсам, какой протокол они поддерживают?
> По своему опыту знаю, что для управление приёмом и передачей
> необходимо использовать модемную линию DTR.
Не всегда, у MOXA есть режим ADDC, она сама опрелеляет передавать или принимать
Мастер на RS-485 один и используется там поллинг (опрос). Какая разница сколько компов, сколько "устройств", мастер всё равно один. какие модули на 485 интерфейсе? Что конкретно надо. Зачем две 485-ятой сети в одну мешать?
> Насколько я понял доки то главное отличие rs-485 от rs-422
> заключается в возможности присутствия нескольких мастеров. Или я не
> правильно понял???
Несколько запутанный вопрос. Есть например мнение, что 422 это только точка-точка (М Гук "Аппаратные интерфейсы ПК" 2003г стр 57). Другие под 422 имеют ввиду четыр?хпроводный 485. Как пишет тот же Гук "Интерфейсы (422 485) электрически совместимы между собой, хотя и имеют некоторые различия в ограничениях. Принципиальное отличие передатчиков RS-485 - возможность переключения в третье состояние."
Если иметь ввиду двух проводный 485, то смысл в том что все узлы равноправны, то есть могут и передавать и слушать одну и ту же шину (пара проводов). Что сказал один слышат все. Напротив в 4-проводном варианте спрашивает один (по одной паре), и отвечают только ему (по другой паре). Поэтому ваше высказывание верно наполовину. Да на 4-ех проводной системе не сделать много мастеров, но это не значит что 2-х проводная на это расчитана. Надо отделять электрический уровень от логического. Электрический уровень позволяет (все равны). Но тогда надо организовать взаимодействие на логическом (как правильно говорили до меня использовать соответствующий протокол). Я могу предложить два варианта.
1. поставить контроллер 7188 к нему по двум интерфейсам будут приходить запросы от 2 компов он их будет буферезировать и выдовать их поочереди в третий интерфейс (где весят 7017 модул?чки)
2. придумать способ передачи функций мастера. Например один комп (мастер) говорит я больше не хочу быть мастером, мне не о чем спрашивать модули и второй становиться мастеров пока ему не надоест, и потом сам передает полномочия. Минусы очевидны (один комп зависает и вс?). Можно придумать и более хитрые способы синхронизоваться. Но мастер в каждый момент времени на шине один. он спрашивает, жд?т ответ. 485 не может разрешать коллизий:)
У 485 не может быть нескролько мастеров.
"мультимастеринг" или "одномастеринг" поддерживает протокол передачи данных, а не интерфейс.
Например, в сети 485 по протоколу modbus может быть только один мастер. А специалезированный интерфейс modbus plus поддерживают мультимастеринг - маркер мастера переходит от одного устройства к другому. Но шнайдер электрик постепенно хоронит modbus plus, т.к. реализация открытого протокола modbus на 485 и TCP гораздо дешевле.
В 485 есть три провода (также как в CAN):
+, -, земля. Все три провода используются для передачи и приёма данных с разделением доступа на запись во времени, в зависимости от режима приёма/передачи устройства.
Все дивайсы к ним подключаются параллельно. Поэтому все девайсы могут слушать сеть 485 одновременно, и только один может слать в неё пакет, и соответственно только один дивайс может отвечать на пакет.
В 422 используются 4 провода:
+, -, на приём и +, -, на передачу.
Грубо говоря это 232, но с другой физикой - вместо одного Rx используется два провода + и -, вместо одного Tx используется ещё два провода + и -.
Поэтому сетки на 422 не сделать это связь точка-точка.
А в 485 все висят на одной шине.
Поэтому если ты наёдешь открытый протокол для 485 с поддержкой мультимастеринга скинь мне на мыло ссылку плиз.
Открытые библиотеки под Линух ты можешь найти по ссылкам в разделе "ссылки" на сайте http://www.modbus.org
Если ты ICP и moxa в Ниеншансе брал, то можешь у них спросить какие есть варианты решения твоей задачи с точки зрения софта, железо у тебя нормальное.
Думаю, что на будущее тебе имеет смысл присмотреть в Ниеншансе преобразователи 485/TCP для протокола modbus,
тогда оба твоих компа смогут "одновременно" работать по TCP с modbus485 сеткой.
Только заранее их спроси смогут ли несколько modbusTCP мастеров одновременно коннектится к одному преобразователю moxa, потому что я с таким преобразователями пока не работал.
К сожалению модули ICP-DAS модулёчки не поддерживают modbus, у них ADAM 4000 совместимый протокол. Там только один мастер. Как правильно отметил binr
" У 485 не может быть нескролько мастеров. "мультимастеринг" или "одномастеринг" поддерживает протокол передачи данных, а не интерфейс."
то есть, раз этого не заложено в протокол, надо самому делать, чтоб твои компы договаривались о том кто сейчас мастер. или второй вариант, который в моём предыдущем посте был первым (контроллер, или один из компов опрашивает модулёчки, и отдаёт данные компам / другому компу).
> Если ты ICP и moxa в Ниеншансе брал....
Врядли, у cvv в инфе написано Запорожье, а там свои поставщики
>К сожалению модули ICP-DAS модулёчки не поддерживают modbus,
>у них ADAM 4000 совместимый протокол.
-------^^^^^^^^^----------------------
Откуда у вас такая инфа??? В документации по icp-das я ничего похожего не нашёл.
Они почти полная копия модулей ADAM от ADVANTECH (протоколы по крайне мере у них одинаковые), поэтому протокол, который они испольщзуют иногда так называют, но заглаза. Вообще такого стандарта-протокола нет, и конечно сам ICP-DAS так свой протокол не назавает....
Да совершенно точно известно, что разработчики ICP DAS и ADAM территориально находятся в одном здании на разных этажах.
Но "концепции" контроллеров начиная с 8000 серии начинают различаться.
Например ICP DAS сделала свой последний 8000 контроллер на базе Windows CE, а ADAM-8000 программируется с помощью закрытого немецкого STEP 7 (им же программируется PLC контроллеры siemens simatic S-7 300, 400...).
Наверно, STEP 7 поставили по желанию фирмы Прософт, похоже она хочет подвинуть сименс на рынке АСУ ТП. Но похоже эта затея с треском провалилась.
Если вдруг к нам попадёт ICP DAS-8000 думаю мы снесём CE и поставим туды Линух. Разработка и перенос софта под CE возможно очень дорого обойдётся.
ADAM-8000 - бесперспективная серия, там стоит наверно дохлый и задрипаный сименсовский С166 процессор и заморачиваться с ним не имеет смысла.
Резюме - всем рекомендую пользоваться "открытым" железом и софтом на базе Линуха (хотя и там не всё гладко). А также последним и самым полным дистрибутивом Debian. Он работает быстро и надёжно.
При работе с Линухом софт легко переносится с одной платформы на другую :)
Ну по I-7000 док читать не перечитать аж тошнит скоко доков.
Да же под линух утилиты есть
В чем проблема то я так и не понял в физическом интерфейсе или как заставить работать??????????