реклама на сайте
подробности

 
 
> Как лучше организовать протокол (логический) для RS-485
Diusha
сообщение Feb 22 2010, 09:15
Сообщение #1


Вечный студент
****

Группа: Участник
Сообщений: 500
Регистрация: 11-09-06
Из: Питер
Пользователь №: 20 262



На главный блок должна стекаться инфа с нескольких периферийных.
Есть такие варианты:
1) Каждый периферийный посылает данные (по мере их готовности) и в теч. нек. времени ждет подтверждение от главного. Если подтверждения нет, посылает еще раз. Если случайно 2 периферийных пошлют одновременно, то контрольная сумма не совпадет -> не будет подтверждения -> повтор.
2) Главный постоянно периферийным шлет запросы. Если у периферийного данные готовы, то он посылает.

Вроде оба варианта имеют право на существование, но чего-то не нравятся. Может предложите получше варианты или есть решения, проверенные временем?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Сергей Борщ
сообщение Feb 22 2010, 14:05
Сообщение #2


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



Цитата(Diusha @ Feb 22 2010, 11:15) *
1) Каждый периферийный посылает данные (по мере их готовности) и в теч. нек. времени ждет подтверждение от главного. Если подтверждения нет, посылает еще раз. Если случайно 2 периферийных пошлют одновременно, то контрольная сумма не совпадет -> не будет подтверждения -> повтор.
А как он узнает, что в этот момент канал свободен и он своей передачей никому не помешает?


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post
Diusha
сообщение Feb 22 2010, 15:42
Сообщение #3


Вечный студент
****

Группа: Участник
Сообщений: 500
Регистрация: 11-09-06
Из: Питер
Пользователь №: 20 262



Цитата(rezident @ Feb 22 2010, 17:53) *
Первый весьма замороченный, т.к. требует постоянной прослушки линии всеми устройствами сети и передачи маркеров по которым устройства имеют право занять линию для передачи. Основная сложность в том, что RS485 не имеет штатных аппаратных средств для детектирования и "разруливания" коллизий.

Цитата(Сергей Борщ @ Feb 22 2010, 17:05) *
А как он узнает, что в этот момент канал свободен и он своей передачей никому не помешает?

Цитата(Diusha @ Feb 22 2010, 12:15) *
Если случайно 2 периферийных пошлют одновременно, то контрольная сумма не совпадет -> не будет подтверждения -> повтор.

Дело в том, что передачи относительно редки => вероятность коллизии невысока. Коллизии разрулятся с помощью контрольной суммы. Прослушивать ничего не надо.
2-й вариант смущает тем, что линию придется держать занятой на несколько порядков бóльшее время (лишние помехи), т.к. главный должен получить данные быстро => запросы придется слать с большой частотой.

Цитата(rezident @ Feb 22 2010, 17:53) *
Если вам нужен именно первый вариант, то переходите на CAN.

САN - в следующий раз, сейчас железо сделано под 485

Какие будут советы в свете моих уточнений? Может есть еще какой-нибудь 3-й вариант?
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Feb 22 2010, 17:17
Сообщение #4


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



Цитата(Diusha @ Feb 22 2010, 17:42) *
Дело в том, что передачи относительно редки => вероятность коллизии невысока. Коллизии разрулятся с помощью контрольной суммы.
Для 485 коллизия является нештатной ситуацией. Производитель не гарантирует, что драйвера выдержат сколь-нибудь долгую эксплуатацию в таком режиме. Хотите иметь неприятности из-за отказов - делайте.


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post
Ruslan1
сообщение Feb 24 2010, 12:31
Сообщение #5


Гуру
******

Группа: Свой
Сообщений: 2 360
Регистрация: 6-03-06
Из: Кишинев
Пользователь №: 15 025



Цитата(Сергей Борщ @ Feb 22 2010, 19:17) *
Для 485 коллизия является нештатной ситуацией. Производитель не гарантирует, что драйвера выдержат сколь-нибудь долгую эксплуатацию в таком режиме. Хотите иметь неприятности из-за отказов - делайте.


Назовите мне модель драйвера RS-485, для которого коллизия является нештатной и который от этого крякнется. Я эту фирму буду обходить стороной. smile.gif

Как правило в даташите пишут нечто подобное (это из ST485): "Current limiting and thermal shutdown for driver overload protection".

так что производители гарантируют.
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Feb 24 2010, 13:28
Сообщение #6


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



Цитата(Ruslan1 @ Feb 24 2010, 14:31) *
Назовите мне модель драйвера RS-485, для которого коллизия является нештатной и который от этого крякнется. Я эту фирму буду обходить стороной. smile.gif
У Sipex в даташитах специфицирован только ток КЗ по выходу и макс. рассеиваимая мощность корпуса. Про коллизию не нашел ни в одном даташите. Есть защита от КЗ, но это как бы совсем не коллизия.
Обходите.

Цитата(Ruslan1 @ Feb 24 2010, 14:31) *
Как правило в даташите пишут нечто подобное (это из ST485): "Current limiting and thermal shutdown for driver overload protection".

так что производители гарантируют.
Согласен, многие гарантируют.
И тем не менее: вы считаете, что доводить систему до срабатывания защиты - это нормально? Или вы считаете, что возможные периодические временные отказы связи из-за thermal shutdown - это штатный режим работы системы?


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post
Diusha
сообщение Feb 25 2010, 05:47
Сообщение #7


Вечный студент
****

Группа: Участник
Сообщений: 500
Регистрация: 11-09-06
Из: Питер
Пользователь №: 20 262



Цитата(galjoen @ Feb 24 2010, 13:45) *
включите драйвера RS-485 так, чтобы они только 0 передавали, а 1 за счёт резисторных растяжек формировалась.

А не знаете, нет ли микосхемки, совместимой по выводам с МАХ485, только с открытым коллектором?

Цитата(Ruslan1 @ Feb 24 2010, 15:31) *
Назовите мне модель драйвера RS-485, для которого коллизия является нештатной и который от этого крякнется. Я эту фирму буду обходить стороной. smile.gif

Как правило в даташите пишут нечто подобное (это из ST485): "Current limiting and thermal shutdown for driver overload protection".

Из портянки на МАХ485:
"Drivers are short-circuit current limited and are protected against excessive power dissipation by thermal shutdown circuit"
Провел эксперимент: замкнул А и В. Секунд через 7 микросхема (в ДИПе) нагрелась градусов до 45, дальше температура не росла; thermal shutdown не было; ток 100 мА.
Не лучший вариант...

Из той же портянки:
"The receiver input has a fail-safe feature that guarantees a logic-high output if the input is open circuit."
Я правильно понял, имеется в виду, что если линия болтается в воздухе, то "фича гарантирует", что на выходе приемника болтанки не будет? Но тогда непонятно, как фича догадается, что это наводки, а не сигнал?
Go to the top of the page
 
+Quote Post
galjoen
сообщение Feb 25 2010, 10:03
Сообщение #8


Знающий
****

Группа: Свой
Сообщений: 841
Регистрация: 10-05-07
Из: Чебоксары (Россия)
Пользователь №: 27 640



Цитата(Diusha @ Feb 25 2010, 08:47) *
А не знаете, нет ли микосхемки, совместимой по выводам с МАХ485, только с открытым коллектором?

Это стандартный драйвер CAN. Насчёт совместимости по ногам - смотрите сами. Но так-то ничего не мешает использовать его вместо драйверов RS-485. Всё будет работать абсолютно так-же, только терминаторы в этом случае обязательны. Ещё можно приёмником USART слушать линию во время передачи, и если принятое будет отличаться от переданного - коллизия. Собственно всё так же, как при включении драйверов RS-485 по стандарту J1708 - CAN оттуда и произошёл. Кстати, не удивлюсь, если и модбас оттуда - и протокол и времянки то очень похожи. Только модбас не мультимастерный.

А вообще, закладывать модбас в новую разработку, ИМХО это не есть гуд.
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Diusha   Как лучше организовать протокол (логический) для RS-485   Feb 22 2010, 09:15
- - ASN   Diusha Второй способ используем достаточно давно. ...   Feb 22 2010, 10:40
|- - ASN   Diusha Линию в любом случае кто-то должен держать....   Feb 22 2010, 15:50
|||- - Ruslan1   Цитата(Diusha @ Feb 25 2010, 07:47) Из по...   Feb 25 2010, 07:35
|||- - Itch   Цитата(galjoen @ Feb 25 2010, 16:03) А во...   Feb 25 2010, 10:38
|||- - galjoen   Цитата(Itch @ Feb 25 2010, 13:38) чем не ...   Feb 25 2010, 11:08
||- - Ruslan1   Цитата(Сергей Борщ @ Feb 24 2010, 15:28) ...   Feb 25 2010, 07:12
|- - rezident   Цитата(Diusha @ Feb 22 2010, 20:42) Дело ...   Feb 22 2010, 17:32
- - rezident   Цитата(Diusha @ Feb 22 2010, 14:15) Вроде...   Feb 22 2010, 14:53
- - Andron_   а гарантированная доставка пакета от периферийного...   Feb 22 2010, 17:06
- - SSerge   Не мучайтесь, сделайте Модбас. Заодно получите воз...   Feb 23 2010, 04:40
|- - Diusha   Цитата(ASN @ Feb 22 2010, 18:50) Линию в ...   Feb 23 2010, 08:04
|- - ASN   Diusha Держать желательно, чтобы не линия "бо...   Feb 23 2010, 10:12
||- - Diusha   Цитата(ASN @ Feb 23 2010, 13:12) Держать ...   Feb 23 2010, 13:34
||- - ASN   Diusha А если длина линии (в смысле ёмкость) больш...   Feb 23 2010, 18:23
||- - Diusha   Цитата(ASN @ Feb 23 2010, 21:23) IMHO, Ва...   Feb 24 2010, 03:46
||- - galjoen   Если так боитесь коллизий и скорость передачи у ва...   Feb 24 2010, 10:45
|- - rezident   Цитата(Diusha @ Feb 23 2010, 13:04) Разру...   Feb 23 2010, 13:48
|- - Diusha   Цитата(rezident @ Feb 23 2010, 16:48) Хе-...   Feb 23 2010, 15:04
- - Don2   Цитата(Diusha @ Feb 22 2010, 12:15) Вроде...   Feb 23 2010, 07:24
|- - stells   Цитата(Don2 @ Feb 23 2010, 10:24) можете ...   Feb 23 2010, 07:45
- - bill_vs   А сколько устройств на линии по максиму? Может и п...   Feb 23 2010, 15:46
|- - Diusha   Цитата(bill_vs @ Feb 23 2010, 18:46) А ск...   Feb 23 2010, 16:09
|- - bill_vs   Цитата(Diusha @ Feb 23 2010, 19:09) ... Е...   Feb 23 2010, 17:46
- - Andron_   тут вот так вот на пальцах можно бесконечно долго ...   Feb 23 2010, 16:36
- - Andron_   2Ruslan1 Т.о. вы считаете, что система может стро...   Feb 25 2010, 07:28
- - MrYuran   Нда... Как говорится, мы трудностей не боимся. Не ...   Feb 25 2010, 07:55
- - Andron_   ЦитатаНо с точки зрения программинга упаси Боже Ва...   Feb 25 2010, 12:01
- - Diusha   Цитата(Ruslan1 @ Feb 25 2010, 10:35) Не н...   Feb 25 2010, 17:40


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 28th July 2025 - 04:59
Рейтинг@Mail.ru


Страница сгенерированна за 0.01471 секунд с 7
ELECTRONIX ©2004-2016