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

 
 
> RS232 тюнер
Sir Jon
сообщение Apr 4 2006, 10:52
Сообщение #1


Участник
*

Группа: Свой
Сообщений: 45
Регистрация: 28-10-05
Из: Челябинск
Пользователь №: 10 198



Возникла такая задача: на ходу определять скорость приемо-передачи rs232....ну скажем до 115200 бод.
Может кто сталкивался с такой задачей и знает как ее решить наиболее просто и красиво? Хочу отметить, что вариант использования простенького MC, видимо отпадает из-за требуемых внутренних высоких частот и как следствие высокой стоимости.
Go to the top of the page
 
+Quote Post
2 страниц V   1 2 >  
Start new topic
Ответов (1 - 22)
ipc
сообщение Apr 4 2006, 10:58
Сообщение #2


Знающий
****

Группа: Свой
Сообщений: 553
Регистрация: 30-03-05
Из: Санкт Петербург
Пользователь №: 3 793



Задача очень странная потому как rs232 не шинный интерфейс и в общем случае в такой сети может быть только два устройства один мастер и один слейв.
Неужели нельзя заранее определится со скоростями.
В любом случае если скорость одна из стандартных(1200,2400,4800,9600 итд) и известно количество стоповых и стартовых битов то можно обойтись перебором скоростей снизу вверх.
Go to the top of the page
 
+Quote Post
rezident
сообщение Apr 4 2006, 11:43
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 10 920
Регистрация: 5-04-05
Пользователь №: 3 882



Скорость передачи обычно определяют путем измерения длительности стартового бита при передаче символа 0xFF.
Go to the top of the page
 
+Quote Post
Sir Jon
сообщение Apr 4 2006, 11:58
Сообщение #4


Участник
*

Группа: Свой
Сообщений: 45
Регистрация: 28-10-05
Из: Челябинск
Пользователь №: 10 198



Наверное я не очень полно описал задачу. Прошу прощения. Такая задача возникает при разработке преобразователя rs232 -> любой полудуплексный интерфейс (rs485 например), когда необходимо управлять переключением прием/передача...с установленными тайм-аутами (как правило в знаках, 1.5-3.5 знака). Поэтому и возникает задача определять скорость автоматом....ну и щелкать приемопередатчиком соответственно.
Go to the top of the page
 
+Quote Post
rezident
сообщение Apr 4 2006, 23:17
Сообщение #5


Гуру
******

Группа: Свой
Сообщений: 10 920
Регистрация: 5-04-05
Пользователь №: 3 882



В нашем конверторе RS232-RS485, например, с помощью SMD-switch скорость выбирается. В сети RS485 обычно один мастер и на одной скорости общение идет. Обоснуйте необходимость автоматического определения скорости передачи. ИМХО это конечно удобно, но не совсем целесообразно.
Go to the top of the page
 
+Quote Post
Sir Jon
сообщение Apr 5 2006, 03:24
Сообщение #6


Участник
*

Группа: Свой
Сообщений: 45
Регистрация: 28-10-05
Из: Челябинск
Пользователь №: 10 198



Сделать обычный rs232 -> rs485 задача тривиальная. С ручным переключением скоростей - интересная. С автоматическим определением - достойная подражания ИМХО это уже реализовано не у одного производителя. Разобрав дешевый ICP-DAS I-7xxx, я не увиделел ничего интересного, кроме одной микрухи...которая и служит тюнером rs323, т.е. вычисляет (замеряет) скорость приемо/передачи и соотв. щелкает приемо-передатчиком. Отсюда и интерес КАК?
Go to the top of the page
 
+Quote Post
ipc
сообщение Apr 5 2006, 04:56
Сообщение #7


Знающий
****

Группа: Свой
Сообщений: 553
Регистрация: 30-03-05
Из: Санкт Петербург
Пользователь №: 3 793



Цитата(Sir Jon @ Apr 5 2006, 07:24) *
Сделать обычный rs232 -> rs485 задача тривиальная. С ручным переключением скоростей - интересная. С автоматическим определением - достойная подражания ИМХО это уже реализовано не у одного производителя. Разобрав дешевый ICP-DAS I-7xxx, я не увиделел ничего интересного, кроме одной микрухи...которая и служит тюнером rs323, т.е. вычисляет (замеряет) скорость приемо/передачи и соотв. щелкает приемо-передатчиком. Отсюда и интерес КАК?

Я тоже разбирал айсипиконы (помоему i7520),действительно там стоит заказной чипак который решает проблему.
Если подумать то конструкция такого устройства выглядит примерно так
Драйвер RS232<->Процессор<->Драйвер RS-485
Скорее всего Процессор это просто ретранслятор которому побарабану какая частота,какие данные.Появился перепад с одной стороны и он его ретранслирует на другую(а там уже драйвер сам разбираецца что с ним делать).Скорее всего параллельно мерица частота сигнала и высчитываеца таймаут по истечении которого он выключает передатчик на стороне RS-485 чтобы быть готовым к приему.
Главное понять как посчитать этот таймаут.

Цитата(rezident @ Apr 5 2006, 03:17) *
В нашем конверторе RS232-RS485, например, с помощью SMD-switch скорость выбирается. В сети RS485 обычно один мастер и на одной скорости общение идет. Обоснуйте необходимость автоматического определения скорости передачи. ИМХО это конечно удобно, но не совсем целесообразно.


Да чего там обосновывать,действительно очень удобно когда конвертер незадает глупых вопросов и нетребует дополнительной настройки и самое главное не заставляет щелкать RTS.
Go to the top of the page
 
+Quote Post
plan
сообщение Apr 5 2006, 05:03
Сообщение #8


Участник
*

Группа: Участник
Сообщений: 73
Регистрация: 23-12-05
Из: Украина Днепродзержинск
Пользователь №: 12 599



А может имеет смысл сделать преобразователь usb-rs485 (использовать ft232bm и adm483).FTDI имеет вывод для переключения направления передачи.В компе эта система будет видеться как обычный ком порт и направлением передачи не надо управлять - всё работает в автомате.
Go to the top of the page
 
+Quote Post
ipc
сообщение Apr 5 2006, 05:21
Сообщение #9


Знающий
****

Группа: Свой
Сообщений: 553
Регистрация: 30-03-05
Из: Санкт Петербург
Пользователь №: 3 793



Цитата(plan @ Apr 5 2006, 09:03) *
А может имеет смысл сделать преобразователь usb-rs485 (использовать ft232bm и adm483).FTDI имеет вывод для переключения направления передачи.В компе эта система будет видеться как обычный ком порт и направлением передачи не надо управлять - всё работает в автомате.

Если дело только в спортивном интересе и повышении экспириенса то можно сделать все и даже более целесообразно использовать USB потому как RS-232 уходит в прошлое но если планируется коммерческая состовляющая то проще купить потому как все это уже придумано и очень широко представлено на рынке и врятли можно будет сделать дешевле и быстрее.
Go to the top of the page
 
+Quote Post
plan
сообщение Apr 5 2006, 06:00
Сообщение #10


Участник
*

Группа: Участник
Сообщений: 73
Регистрация: 23-12-05
Из: Украина Днепродзержинск
Пользователь №: 12 599



Цитата(ipc @ Apr 5 2006, 09:21) *
Если дело только в спортивном интересе и повышении экспириенса то можно сделать все и даже более целесообразно использовать USB потому как RS-232 уходит в прошлое но если планируется коммерческая состовляющая то проще купить потому как все это уже придумано и очень широко представлено на рынке и врятли можно будет сделать дешевле и быстрее.

По поводу коммерческой составляющей- FTDI(3$)+ST485N(1$)+2$ рассыпуха и никакого гемороя с поиском чипа который будет определять скорость.На практике сделал порядка 20 экземпляров-всё работает окей.Если покупать на фирме то rs232-rs485 и usb-rs485 будут стоить примерно одинаково-100$.
Go to the top of the page
 
+Quote Post
ipc
сообщение Apr 5 2006, 06:07
Сообщение #11


Знающий
****

Группа: Свой
Сообщений: 553
Регистрация: 30-03-05
Из: Санкт Петербург
Пользователь №: 3 793



Цитата(plan @ Apr 5 2006, 10:00) *
Цитата(ipc @ Apr 5 2006, 09:21) *

Если дело только в спортивном интересе и повышении экспириенса то можно сделать все и даже более целесообразно использовать USB потому как RS-232 уходит в прошлое но если планируется коммерческая состовляющая то проще купить потому как все это уже придумано и очень широко представлено на рынке и врятли можно будет сделать дешевле и быстрее.

По поводу коммерческой составляющей- FTDI(3$)+ST485N(1$)+2$ рассыпуха и никакого гемороя с поиском чипа который будет определять скорость.На практике сделал порядка 20 экземпляров-всё работает окей.Если покупать на фирме то rs232-rs485 и usb-rs485 будут стоить примерно одинаково-100$.

Если делать дома на коленках то может быть.Но обычно считают так
1.Стоимость комплектации
2.Стоимость платы
3.Стоимость корпуса и разьемов
4.Стоимость упаковки и документации
5.Зарплата разработчику
6.Зарплата менеджера по закупкам
7.Зарплата бухгалтерии за оформление бумаг и безналичных расчетов
8.Амортизация оборудования
9.Стоимость средств связи и интернета
10.Стоимость производства
11.Какой никакой но нужен навар
Намеренно опускаю лицензионные и сертификационные затраты.Хотя они стоят недохло.
Может что забыл но в нашей лавке все так грустно и печально
Кроме того насколько я помню конвертеры уже подешевели до 50$(само собой с учетом скидок тех фирм где мы постоянно закупаемся)
Go to the top of the page
 
+Quote Post
Sir Jon
сообщение Apr 5 2006, 06:21
Сообщение #12


Участник
*

Группа: Свой
Сообщений: 45
Регистрация: 28-10-05
Из: Челябинск
Пользователь №: 10 198



Цитата(plan @ Apr 5 2006, 08:03) *
А может имеет смысл сделать преобразователь usb-rs485 (использовать ft232bm и adm483).


Лечить больную голову путем ее отсечения - не есть гуманный выход smile.gif Извините за шутку. Rs232 имеет кучу своих достоинств, продолжает широко использоваться и встраивается не только в PC.

Цитата(plan @ Apr 5 2006, 08:03) *
FTDI имеет вывод для переключения направления передачи.В компе эта система будет видеться как обычный ком порт и направлением передачи не надо управлять - всё работает в автомате.


Если Вы внимательно посмотрите на настройки того же самого виртуального ком-порта, то увидите, что имеют место быть таймауты приемо-передачи. А это как раз не "автомат".

Мои соображения по поводу того, что микруха в I-7xxx является микроконтроллером:
1. Если она и микроконтроллер, то без кварца, и тогда с внутренним RC. Выше 4MHz я внутренние точные кварцы не видал. Отсюда получается, что на высоких скоростях (115200 бод) прога для этой микрухи весьма критична к циклу замера и ретрансляции. Поэтому думаю, что задача решена не в лоб - замером длительности.
2. Скорее имеет место быть логическая цепочка....например на заранее определенные скорости, возможно задействован как-то АЦП. Но логика эта пока для меня не прозрачна.

Подумаем вместе?
Go to the top of the page
 
+Quote Post
plan
сообщение Apr 5 2006, 06:34
Сообщение #13


Участник
*

Группа: Участник
Сообщений: 73
Регистрация: 23-12-05
Из: Украина Днепродзержинск
Пользователь №: 12 599



Цитата(Sir Jon @ Apr 5 2006, 10:21) *
Если Вы внимательно посмотрите на настройки того же самого виртуального ком-порта, то увидите, что имеют место быть таймауты приемо-передачи. А это как раз не "автомат".

Я имел ввиду,что пока передаваемый байт не вылезеть весь наружу из приёмопередатчика чип будет удерживать вывод направления передачи в 1. После этого система переводится в состояние приёма.
Go to the top of the page
 
+Quote Post
rezident
сообщение Apr 5 2006, 13:12
Сообщение #14


Гуру
******

Группа: Свой
Сообщений: 10 920
Регистрация: 5-04-05
Пользователь №: 3 882



Определить условие для переключения драйвера RS485 на передачу не хитро (отловил перепад 1->0 на входе и переключай), а вот как узнать сколько времени удерживать драйвер RS485 в состоянии вывода? Для посимвольной передачи - чем быстрее тем лучше. А для RTU-ной пакетной передачи желательно не менее 3,5 символов удерживать. Чтобы помехи при переключении линии не попали в пакет.
Потому я и просил обосновать необходимость автоматическоого переключения передачи при том, что неизвестен заранее алгоритм переключения и тип протокола связи.
Go to the top of the page
 
+Quote Post
Abo
сообщение Apr 5 2006, 14:13
Сообщение #15


Частый гость
**

Группа: Свой
Сообщений: 101
Регистрация: 9-01-06
Пользователь №: 12 967



А у нас сделали просто - поставили перезапускаемый одновибратор на 555АГ3 или АГ4(уже не помню) с коммутатором времязадающих RC цепей, подобрали длительность импульса равным длительности передачи байта для необходимых скоростей. Текущая скорость выбиралась состоянием ног DTR и RTS. Выход одновибратора - на вход управления драйвером RS485. И все. Но это было лет 7 назад. На сегодня конечно лучше FTDI и в USB (IMHO).
Go to the top of the page
 
+Quote Post
Sir Jon
сообщение Apr 5 2006, 15:15
Сообщение #16


Участник
*

Группа: Свой
Сообщений: 45
Регистрация: 28-10-05
Из: Челябинск
Пользователь №: 10 198



Цитата(rezident @ Apr 5 2006, 16:12) *
Для посимвольной передачи - чем быстрее тем лучше. А для RTU-ной пакетной передачи желательно не менее 3,5 символов удерживать. Чтобы помехи при переключении линии не попали в пакет.
Потому я и просил обосновать необходимость автоматическоого переключения передачи при том, что неизвестен заранее алгоритм переключения и тип протокола связи.


В том и интерес, что адаптер заранее не знает, что и как Вы собираетесь передавать. Можно лишь наложить некие ограничения на формат передаваемых данных. Но мы удалились от проблемы...
Сопоставляя цену адаптера (50$) и базу используемых компонентов - потихоньку начинаю склояться к мысли, что задача решена все таки аналогово и возможно очень просто.

Подумаем еще?

Цитата(Abo @ Apr 5 2006, 17:13) *
Текущая скорость выбиралась состоянием ног DTR и RTS.


Прошу прощения за тугодумство, но это как? Логически - и четыре доступные скорости или как-то еще?
Go to the top of the page
 
+Quote Post
rezident
сообщение Apr 5 2006, 20:22
Сообщение #17


Гуру
******

Группа: Свой
Сообщений: 10 920
Регистрация: 5-04-05
Пользователь №: 3 882



Цитата(Sir Jon @ Apr 5 2006, 21:15) *
В том и интерес, что адаптер заранее не знает, что и как Вы собираетесь передавать. Можно лишь наложить некие ограничения на формат передаваемых данных.

Угу. Вот уже началось. Ограничения. smile.gif
Цитата(Sir Jon @ Apr 5 2006, 21:15) *
Сопоставляя цену адаптера (50$) и базу используемых компонентов - потихоньку начинаю склояться к мысли, что задача решена все таки аналогово и возможно очень просто.

Ну еще вариант. Складывайте в ОЗУ битовую последовательность с временами интервалов между переходами 1->0 и 0->1. Затем анализируйте минимальный интервал времени в этой последовательности и делайте вывод о скорости передачи. Глубину выборки не подскажу. Это опять же зависит от формата используемого протокола и диапазона поддерживаемых конвертором скоростей передачи.
Кстати, напомню еще об одном нюансе RS485. Для качественной связи посредством RS485 нужно не только определенное время удерживать драйвер RS485 в состоянии передачи, но еще и задерживать битовую последовательность в самом начале после переключения драйвера с приема на передачу. Потому что переключение драйвера может привести к переходному процессу в линии, который воспримется приемником как ошибочно принятый символ или первый символ будет принят неверно. Частично эта проблема решается введением "растяжки" линии (к линии A pull-up резистор, а к линии B pull-down), но это не панацея. Введение задержки на передачу битового потока это более корректное решение. Тут опять же вопрос возникает, а на сколько задерживать битовый поток? Очевидно, что для того же RTU-ного протокола не менее 3,5 символа. Для посимвольной передачи, достаточно 1,2-1,5 символа. А когда протокол заранее не известен? rolleyes.gif

Итого имеем, что автомат конвертора RS233-RS485 должен выполнять как минимум три функции.
1. задерживать битовый поток при передаче от RS232 в линию RS485
2. удерживать линию RS485 в состоянии передачи после окончания битового потока на его выходе
3. определять скорость передачи и/или частоту битового потока (для реализации первых двух функций)

P.S. еще забыл функцию блокирования локального "эха"
Go to the top of the page
 
+Quote Post
Sir Jon
сообщение Apr 6 2006, 03:44
Сообщение #18


Участник
*

Группа: Свой
Сообщений: 45
Регистрация: 28-10-05
Из: Челябинск
Пользователь №: 10 198



Цитата(rezident @ Apr 5 2006, 23:22) *
3. определять скорость передачи и/или частоту битового потока (для реализации первых двух функций)


Отлично. Я так понимаю склоняемся к варианту, что тюнер - дешевый МС.
Я рассуждал так.
1. Берем дешевенький MC - например PIC12f629 с внутренним тактовым генератором 4MHz
2. Для того, чтобы вычислять длительность - нужен таймер.
3. У пика приращение таймера 1/4*Fosc = 1MHz
4. Берем критичную максимальную (но не самую) скорость обмена 115200.
5. Отсюда, для замера длительности и на все про все нам отведено максимум 1000000/115200 = 8 инструкций
6. Напрашивается вывод - это не реально. Нужен MC с частотой как минимум в 10 раз выше. А это уже другая ценовая категория.

P.S Я все-таки подцеплю виртуальник к I-7520 и проверю как он нормирует длительность в разных режимах.

Думаем дальше?
Go to the top of the page
 
+Quote Post
rezident
сообщение Apr 6 2006, 12:10
Сообщение #19


Гуру
******

Группа: Свой
Сообщений: 10 920
Регистрация: 5-04-05
Пользователь №: 3 882



Цитата(Sir Jon @ Apr 6 2006, 09:44) *
Думаем дальше?

Думайте. smile.gif У нас и такие как есть (с SMD-switch для выбора скорости) продаются cheers.gif
P.S. ИМХО конверторы USB<->RS485 с гальваноразвязкой сейчас более актуальны.
Go to the top of the page
 
+Quote Post
GrayCat
сообщение Apr 6 2006, 12:27
Сообщение #20


Местный
***

Группа: Свой
Сообщений: 263
Регистрация: 7-10-05
Из: UA
Пользователь №: 9 342



Смотрели мы ICP-какой-то там с "автоопределением скорости"... Там внутре совершенно тупая схема: вход передатчика RS-485 просто положен на землю, а приходящий по RS-232 сигнал TX включает (в линию передается "0") и выключает ("передается" с помощью растягивающих резисторов "1") передатчик. Что-то наподобие "Общего коллектора" в ТТЛ wink.gif .

А мы долго удивлялись, почему у нас связь барахлила в полевых условиях, пока не глянули осциллографом на несимметричные сигналы... ;(


--------------------
Gray©at
Go to the top of the page
 
+Quote Post
rezident
сообщение Apr 6 2006, 15:48
Сообщение #21


Гуру
******

Группа: Свой
Сообщений: 10 920
Регистрация: 5-04-05
Пользователь №: 3 882



GrayCat, ну дык я "это" и называю "настольный" вариант конвертора biggrin.gif
Go to the top of the page
 
+Quote Post
Sir Jon
сообщение Apr 7 2006, 09:02
Сообщение #22


Участник
*

Группа: Свой
Сообщений: 45
Регистрация: 28-10-05
Из: Челябинск
Пользователь №: 10 198



Итак, ясность наступила. После прощупывания I-7520 виртуальником родился ответ. RS232 тюнер по всей видимости обычная "логика". GrayCat - respect cheers.gif . Теперь вход передатчика не "положен на землю". Сделано все по-модному и как полагается - вход заведен на чип-тюнер. Однако смысл остался прежний. Девайс постоянно работает на прием, но как только начинается передача, а точнее низкий уровень - передатчик переключается на передачу. Осцилограммы прилагаю. Дальше без комментариев.


Всем спасибо за интересную дискуссию. Тема закрыта.
Эскизы прикрепленных изображений
Прикрепленное изображение
Прикрепленное изображение
 
Go to the top of the page
 
+Quote Post
Sir Jon
сообщение Apr 9 2006, 16:54
Сообщение #23


Участник
*

Группа: Свой
Сообщений: 45
Регистрация: 28-10-05
Из: Челябинск
Пользователь №: 10 198



Небольшое пояснение к осцилограммам. Верхний сигнал - "передача" на одном рисунке и "прием" на другом. Нижний сигнал - управление "прием/передача" на обоих рисунках.
Go to the top of the page
 
+Quote Post

2 страниц V   1 2 >
Closed TopicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


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


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