EIA485 (RS485).Два несогласованных "ведущих". Коллизия...

Обсуждаем цифровые устройства...
Ответить
Первый раз сказал Мяу!
Сообщения: 38
Зарегистрирован: Вс фев 26, 2012 10:53:30

Сообщение ArtemKolesnikov »

Всем привет!
Начитался сейчас про RS485 и возник вопрос.
В общем, имеется "сеть" RS485 для опроса счетчиков электрической энергии "Энергомера".
В этой сети есть одно ведущее устройство (УСПД - устройство сбора и передачи данных) и несколько ведомых.
Протокол их обмена известен.
Не могу сдержать соблазн воспользоваться этой существующей сетью для своих разработок.
Но вот проблема, у меня два приемопередатчика, один естественно ведущий, другой ведомый.
Если я тупо буду посылать свои байты в эту сеть - может возникнуть коллизия с каким-нибудь устройством.
Известно, что все приемопередатчики передают свои данные не постоянно, а циклически, раз в 10 минут.
Целых 10 минут свободного времени!
Как мне втихаря по-быстрому пока линия свободна передать свои байты и не напороться на передатчик?
Как проверить что линия свободна, то есть что нет достоверных (полезных) сигналов?
Помехи во внимание не считаются.
Реклама
Опытный кот
Аватара пользователя
Сообщения: 838
Зарегистрирован: Вт апр 12, 2011 18:38:19
Откуда: с Земли

Сообщение coredumped »

В таких случаях применяются системы распознавания коллизий. Алгоритм, в общих чертах такой:
1. Слушаем линию, как только освободилась - начинаем передачу пакета.
2. Продолжаем слушать линию, те принимаем то, что передаем.
3. Сравниваем то, что передали с тем, что услышали. Если все совпало, значит пакет ушел успешно, если нет - имеет место коллизия.
4. Если коллизия имела место быть, то делаем паузу, причем значение ее должно быть случайным, после чего идем на пункт 1.
Это в общих чертах. Настоятельно рекомендуется использовать какой-нибудь протокол передачи, например, хорошо известный и открытый MODBUS - это позволит усилить надежность работы системы передачи данных. Если пакеты все предполагаются одинаковой длинны, то можно изобрести свой, упрощенный. Но тк (в Вашем случае) сеть уже существует, то устройства в ней уже используют какой-либо протокол, поэтому Вы должны использовать именно его, чтоб не нарушить работу уже существующего оборудования.
Все будет только лучше, в крайнем случае - хуже.
Реклама
Первый раз сказал Мяу!
Сообщения: 38
Зарегистрирован: Вс фев 26, 2012 10:53:30

Сообщение ArtemKolesnikov »

Понятно, спасибо!
Первый раз сказал Мяу!
Сообщения: 38
Зарегистрирован: Вс фев 26, 2012 10:53:30

Сообщение ArtemKolesnikov »

Позвольте поднять тему, так как возник вопрос:
Имеется сеть RS-485. По ней бегают данные с уже неизвестным протоколом между 4 устройствами.
Я хочу использовать эту сеть для передачи простого сигнала с уровнем +5 В между двумя своими устройствами (дополнительно включенными в эту сеть без приемопередатчиков 485).
Просто хотелось бы сделать максимально просто.
В общем, мне нужно передать "свою логическую единицу" +5 В в течение 2000 мс. (2 сек) от одного устройства, и за это время второе устройство распознает ,что это команда для нее и выполнит определенные действия.
Уровень между В и А на это время будет +5 В, то есть, к А планируется на это время подключить GND, к В +5 В. На 2 секунды.
Вопрос: Если вдруг в это же время, какое то любое устройство из тех четырех решит передавать данные, то не произойдет ли ничего катастрофического, если на момент, когда это устройство будет пускать логический "Ноль" (В-А < -200 мВ), мои устройства будут держать в сети логическую единицу (В-А +5 В)???
То, что 4 устройства потеряют передаваемые данные - ничего страшного, еще раз передадут. Меня интересует работоспособность схемы.
Вопрос может быть глупый и наивный, я с электроникой пытаюсь подружиться не так давно, и некоторые специфические тонкости нужно понять.
Заранее благодарю.
Реклама
Эиком - электронные компоненты и радиодетали
Друг Кота
Аватара пользователя
Сообщения: 6343
Зарегистрирован: Вт апр 24, 2007 07:45:40
Откуда: Minsk

Сообщение Jack_A »

Вопрос из серии "Что будет, если я в телевизор воткну шнур от кофемолки". Разгадывать поведение такой системы - что рассчитывать траекторию прыжков раненого быка на корриде = бессмысленное занятие. Ответ простой : так можно делать, только если хочешь приключений на свою пятую точку. Как начинающему могу посоветовать - изучить штатную работу устройств и не открывать без надобности Америку путем изобретения велосипеда.
Реклама
Ответить

Вернуться в «Цифровая техника»