Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > C/C++: Общие вопросы > Как адресуются устройства в RS-485 |
Автор: DimonSDA 13.5.2009, 19:31 |
Здравствуйте, меня интересуют следущие вопросы: 1) Каким образом происходит адресация устройств в RS-485 - аппаратно (посредством джамперов) или программно ? Если адресация происходит программно, то каким образом назначается адрес устройству - он уже зашит в его прошивку или его нужно туда как-то передать (типа как в USB) ? 2) Каково максимальное рабочее расстояние у этого интерфейса ? Практически везде встречаю что 1200 м, но также есть сведения что реально работает на 15 км. Реально ли 15км? 3) Может ли RS485 работать на скорости 19200 при расстоянии 1200 метров? 4) Может ли устройство работать на скорости 19600 или такой скорости вообще не существует? Насколько я понимаю скорости поддерживаемые RS485 такие-же как у RS-232. Или я неправ? 5) Существует ли спецификация интерфейса RS485 в виде pdf, я перерыл уже все, но так и не смог найти целостного документа, лишь разрозненные html где приводится весьма скудная информация. |
Автор: UniBomb 13.5.2009, 20:15 |
1. Этот вопрос происходит из-за путанице в голове понятий "интерфейс" и "протокол". Устройства, которые общаются цифровыми сигналами (не аналоговыми) адресуются так, как указано в спецификации на протокол. Например в протоколе ModBus первым передаваемым байтом идёт адрес устройства, которое должно ответить. Устройство должно принять всю посылку и в случае, если адрес в команде совпадает с его номером ответить ведущему. Т.е. правильный ответ - программно. 2. 1200 метров - это гарантированная длина кабеля, при котором будет устойчивый обмен данными. Работать будет и на больших линиях, но она должны при этом быть максимально качественной, т.е. правлильно согласовать шину, использовать кабель с наименьшим затуханием сигнала, ну и что бы на линию действовало как можно меньше наводок. И при этом всё стоит помнить, что чем выше скорость - тем короче должна быть линия связи. 3. Теоретически да. Но стоит помнить про предыдущий пункт. 4. Скорости 19600 среди "стандартных" нет. Тут следовало бы рассказать про тактирование и предделители, но неохота. Скажу одно - можно подобрать практически любую скорость обмена, но идеально точно это не всегда получится. А в некоторых случаях, когда нет доступа к предделителям, то вообще можно выбрать только стандартную скорость. 5. Не встречал, да в общем то и не нужно. Вот что по твоему спецификация на интерфейс? Спецификация должна только указать номиналы логических "1" и "0", сопротивлений между линиями, какие согласующие резисторы брать и т.д. По большому счёту в принципе этого знать не нужно, т.к. все существующие микросхемы как модулей UART, так и интефейсопреобразующих микросхем отвечают всем параметрам. А так в принципе кратко, но очень ёмко и понятно про интерфейс написано http://masters.donntu.edu.ua/2004/fema/kovalenko/library/art7.html. Добавлено через 56 секунд И кстате тема не имеет никакого отношения к разделу "C/C++: Общие вопросы"... |
Автор: DimonSDA 13.5.2009, 20:44 | ||||
А каким образом устройство узнает, что адрес указанный в принятом пакете соответствует именно ему? PS:
Извините за это, но я предпологал, что если речь пойдет о программном конфигурировании устройства (назначение адреса), то будет некорректно постить в другой ветке. А программу для работы с моим устройством я буду писать именно на С++. |
Автор: xvr 14.5.2009, 11:26 |
UniBomb все подробно расписал, хочу только уточнить - RS485 задает как будет передаваться сигнал по проводам (напряжения, последовательность передачи битов), он НИКАКИМ боком не задает ЧТО это все будет обозначать для устройств на линии RS485 Что у вас за устройства? |
Автор: DimonSDA 14.5.2009, 18:09 | ||
Это устройства спец. назначения, изготавливаются сторонним разработчиком, а я этими устройствами управляю с компа. Про адресацию в технических условиях ничего не говорится. Также нет никаких джамперов. Цепляются к компу через мультипортовую плату. Устройства служат для сбора информации от разных источников. Получается что любой пакет отправленный хостом будет принят всеми устройствами подключенными к шине, но для того-чтобы устройство, которому адресован этот пакет, распознало что адресовано именно оно, это устройство должно знать свой собственный адрес, для того, чтобы сравнить его с адресом, извлеченным из пакета. Так вот и непонятно откуда берется адрес внутри устройства. Тут есть три варианта: либо адрес жестко прошит в устройство (в моем случае неизвестен), либо этот адрес выставляется какими-нибудь джамперами (в моем случае их нет), либо задается программно. Тоесть остается програмно. Похоже разработчик просто забыл указать адреса устройств. |
Автор: xvr 14.5.2009, 20:52 | ||||
Тогда вам нужно трясти с разработчиков описание протокола обмена (или хотя бы название, если используется стандартный) Одного названия RS485 совершенно недостаточно |
Автор: DimonSDA 14.5.2009, 21:41 | ||
Да этим и займусь, ведь все-таки за эти устройства деньги платим, а не даром получаем... Пусть уж потрудятся. Спасибо огромное всем откликнувшимся за помощь. |