Перейти к содержанию
    

Возникла такая задача: на ходу определять скорость приемо-передачи rs232....ну скажем до 115200 бод.

Может кто сталкивался с такой задачей и знает как ее решить наиболее просто и красиво? Хочу отметить, что вариант использования простенького MC, видимо отпадает из-за требуемых внутренних высоких частот и как следствие высокой стоимости.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Задача очень странная потому как rs232 не шинный интерфейс и в общем случае в такой сети может быть только два устройства один мастер и один слейв.

Неужели нельзя заранее определится со скоростями.

В любом случае если скорость одна из стандартных(1200,2400,4800,9600 итд) и известно количество стоповых и стартовых битов то можно обойтись перебором скоростей снизу вверх.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Скорость передачи обычно определяют путем измерения длительности стартового бита при передаче символа 0xFF.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Наверное я не очень полно описал задачу. Прошу прощения. Такая задача возникает при разработке преобразователя rs232 -> любой полудуплексный интерфейс (rs485 например), когда необходимо управлять переключением прием/передача...с установленными тайм-аутами (как правило в знаках, 1.5-3.5 знака). Поэтому и возникает задача определять скорость автоматом....ну и щелкать приемопередатчиком соответственно.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В нашем конверторе RS232-RS485, например, с помощью SMD-switch скорость выбирается. В сети RS485 обычно один мастер и на одной скорости общение идет. Обоснуйте необходимость автоматического определения скорости передачи. ИМХО это конечно удобно, но не совсем целесообразно.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

Я тоже разбирал айсипиконы (помоему i7520),действительно там стоит заказной чипак который решает проблему.

Если подумать то конструкция такого устройства выглядит примерно так

Драйвер RS232<->Процессор<->Драйвер RS-485

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

Главное понять как посчитать этот таймаут.

 

В нашем конверторе RS232-RS485, например, с помощью SMD-switch скорость выбирается. В сети RS485 обычно один мастер и на одной скорости общение идет. Обоснуйте необходимость автоматического определения скорости передачи. ИМХО это конечно удобно, но не совсем целесообразно.

 

Да чего там обосновывать,действительно очень удобно когда конвертер незадает глупых вопросов и нетребует дополнительной настройки и самое главное не заставляет щелкать RTS.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А может имеет смысл сделать преобразователь usb-rs485 (использовать ft232bm и adm483).FTDI имеет вывод для переключения направления передачи.В компе эта система будет видеться как обычный ком порт и направлением передачи не надо управлять - всё работает в автомате.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А может имеет смысл сделать преобразователь usb-rs485 (использовать ft232bm и adm483).FTDI имеет вывод для переключения направления передачи.В компе эта система будет видеться как обычный ком порт и направлением передачи не надо управлять - всё работает в автомате.

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Если дело только в спортивном интересе и повышении экспириенса то можно сделать все и даже более целесообразно использовать 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$(само собой с учетом скидок тех фирм где мы постоянно закупаемся)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А может имеет смысл сделать преобразователь usb-rs485 (использовать ft232bm и adm483).

 

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

 

FTDI имеет вывод для переключения направления передачи.В компе эта система будет видеться как обычный ком порт и направлением передачи не надо управлять - всё работает в автомате.

 

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

 

Мои соображения по поводу того, что микруха в I-7xxx является микроконтроллером:

1. Если она и микроконтроллер, то без кварца, и тогда с внутренним RC. Выше 4MHz я внутренние точные кварцы не видал. Отсюда получается, что на высоких скоростях (115200 бод) прога для этой микрухи весьма критична к циклу замера и ретрансляции. Поэтому думаю, что задача решена не в лоб - замером длительности.

2. Скорее имеет место быть логическая цепочка....например на заранее определенные скорости, возможно задействован как-то АЦП. Но логика эта пока для меня не прозрачна.

 

Подумаем вместе?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

Я имел ввиду,что пока передаваемый байт не вылезеть весь наружу из приёмопередатчика чип будет удерживать вывод направления передачи в 1. После этого система переводится в состояние приёма.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Определить условие для переключения драйвера RS485 на передачу не хитро (отловил перепад 1->0 на входе и переключай), а вот как узнать сколько времени удерживать драйвер RS485 в состоянии вывода? Для посимвольной передачи - чем быстрее тем лучше. А для RTU-ной пакетной передачи желательно не менее 3,5 символов удерживать. Чтобы помехи при переключении линии не попали в пакет.

Потому я и просил обосновать необходимость автоматическоого переключения передачи при том, что неизвестен заранее алгоритм переключения и тип протокола связи.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А у нас сделали просто - поставили перезапускаемый одновибратор на 555АГ3 или АГ4(уже не помню) с коммутатором времязадающих RC цепей, подобрали длительность импульса равным длительности передачи байта для необходимых скоростей. Текущая скорость выбиралась состоянием ног DTR и RTS. Выход одновибратора - на вход управления драйвером RS485. И все. Но это было лет 7 назад. На сегодня конечно лучше FTDI и в USB (IMHO).

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Гость
Эта тема закрыта для публикации ответов.
×
×
  • Создать...