|
|
  |
Об RS232, Как узнать конец посылки? |
|
|
|
Sep 3 2009, 21:51
|
дятел
    
Группа: Свой
Сообщений: 1 681
Регистрация: 13-05-06
Из: Питер
Пользователь №: 17 065

|
Цитата(Demeny @ Sep 2 2009, 14:22)  В стандартном 16550А такой возможности, насколько мне известно, нет. Да, в стандартном 16550А такой возможности нет, но в 16550А совместимых(а это практически 100% современных ПЦ) есть возможность отсылать не весь пакет, а пакет без последнего байта, при приходе TXEMPTY этого пакета шлем последний байт, тогда следующий TXEMPTY придет только на стоповом бите последнего байта, и нужно подождать только 1 бит перед переключением направления(на большинстве чипсетов можно вобще не ждать т.к. стоп бит == неактивное состояние) Единственно, это гарантированно работает только на уровне драйвера ядра(только что сделал так на линух), в юзерспейсе, при сильной нагрузке, последний(отдельный) байт может "отрываться" от остального пакета.
|
|
|
|
Guest_@Ark_*
|
Sep 3 2009, 22:16
|
Guests

|
По-моему, проблема слегка надумана. Если речь идет о передаче по RS485, то на выходе COM-порта (физического или виртуального) неизбежно стоит преобразователь RS232-RS485 либо USB-RS485. Все проблемы с преобразованием дуплекса в полудуплекс и обратно он должен брать на себя. В том числе и переключение драйвера RS485 c передачи на прием и обратно. Нормальные преобразователи успешно выполняют эту функцию самостоятельно, в автоматическом режиме. Перекладывать эту задачу (управление направлением передачи) на прикладную программу в ПК, на мой взгляд не совсем правильно. Точнее - совсем не правильно.
|
|
|
|
|
Sep 3 2009, 22:45
|
дятел
    
Группа: Свой
Сообщений: 1 681
Регистрация: 13-05-06
Из: Питер
Пользователь №: 17 065

|
Цитата(@Ark @ Sep 4 2009, 02:16)  Нормальные преобразователи успешно выполняют эту функцию самостоятельно, в автоматическом режиме. Какие нормальные ? для RS232-RS485 ? ADM2483 например нормальный преобразователь ? Конечно идеальный вариант прикрутить к каждому преобразователю мелко-мелкоконтроллер который будет сам считать нужные паузы и переключать направление, но увы так делают не всегда...
|
|
|
|
Guest_@Ark_*
|
Sep 3 2009, 23:02
|
Guests

|
Цитата Конечно идеальный вариант прикрутить к каждому преобразователю мелко-мелкоконтроллер который будет сам считать нужные паузы и переключать направление, но увы так делают не всегда... Это не идеальный вариант, а, как раз, обычный, нормальный и стандартный. Преобразователь - с одной стороны которого стандартный RS232, а с другой - стандартный RS485. И еще, желательно, гальваническая развязка между ними. Стандартный RS232 не предполагает специального сигнала для указания направления передачи, т.к. он полнодуплексный...
|
|
|
|
|
Sep 4 2009, 05:48
|
Местный
  
Группа: Свой
Сообщений: 435
Регистрация: 12-09-07
Пользователь №: 30 482

|
Цитата(@Ark @ Sep 4 2009, 02:02)  Это не идеальный вариант, а, как раз, обычный, нормальный и стандартный. Преобразователь - с одной стороны которого стандартный RS232, а с другой - стандартный RS485. И еще, желательно, гальваническая развязка между ними. Стандартный RS232 не предполагает специального сигнала для указания направления передачи, т.к. он полнодуплексный... А каким способом Вы разделяете передачу, прием в полудутлексном режиме?
|
|
|
|
Guest_@Ark_*
|
Sep 4 2009, 07:04
|
Guests

|
Цитата Хорош способ, только мне не подходит, в преобразователь микроконтроллер ставить не разрешают. Поищите по форуму темы о преобразователях RS232-RS485. Где-то предлагались и чисто аппаратные решения.
|
|
|
|
Guest_@Ark_*
|
Sep 4 2009, 07:17
|
Guests

|
Я думаю, что автоматический режим, описанный выше, можно на какой-нибудь логике воспроизвести. Только громоздко получится... Не понятно, чем не нравится микроконтроллер заказчикам автора...
|
|
|
|
|
Sep 4 2009, 19:20
|
дятел
    
Группа: Свой
Сообщений: 1 681
Регистрация: 13-05-06
Из: Питер
Пользователь №: 17 065

|
Цитата(demiurg_spb @ Sep 4 2009, 12:23)  С USB и чипом от ftdi у нас получилcя такой девайс: ссылкас USB не так интересно, патамушто все понятно, у нас и USB <-> 3xRS485 есть А вот про момент переключения интересно, у @Ark по ссылке не очень понятно, поток пропускается через микропроц или нет ? То есть там только руление переключением или и "буферизация" ?
|
|
|
|
|
Sep 4 2009, 21:05
|
Гуру
     
Группа: Свой
Сообщений: 10 920
Регистрация: 5-04-05
Пользователь №: 3 882

|
Цитата(demiurg_spb @ Sep 4 2009, 14:23)  С USB и чипом от ftdi у нас получилcя такой девайс: ссылкаЭто вы разработчик этого девайса? Можно чуток покритиковать и его и документацию?  Критика конструктивная. Может во благо будет и вы чего-то подправите. Во-первых, на клеммнике нет 3-го провода для выравнивания потенциалов с другими точками подключения. Это чревато тем, что на большом расстоянии амплитуда синфазной помехи может превысить допустимые для драйвера RS485 пределы. Это в лучшем случае приведет к его неработоспособности. В худшем - при возникновении искровых или дуговых разрядов вблизи линии передачи (микросекундные помехи) пробьется изоляция DC/DC в конвертере. Во-вторых, в документации указано Цитата Потребляемый ток, А, не более ..................................... 0,2 Напряжение изоляции гальванической развязки, В ..... 1000 Максимальное количество приборов в сети ................. 32 Максимальная скорость передачи данных, Кбит/с....... 921,6 Максимальная длина линии связи, м ............................ 1200 но нигде нет примечания по ограничению на применение последних двух параметров. Кто-то просто тупо списал параметры, не удосужившись их проверить (а чего же тогда не 3Мегабита?, ведь м/с FTDI позволяет) или хотя бы осмыслить. Вы сами-то понимаете, что в совокупности (одновременно) они не работают? Даже если вы применили очень хорошие драйверы RS485 (10Мбит или выше), то либо скорость Мегабит, либо расстояние километр, но не одновременно! Тем более, что судя по параметрам тока потребления и напряжения изоляции, внутри конвертера стоит дешевый нерегулируемый 1Вт DC/DC 5V-to-5V. И предельный ток потребления устройства также из даташита DC/DC списан, без реальной проверки на готовом преобразователе. Не нужно потребителя в заблуждение вводить. В-третьих, а зачем в комплект драйверов входит хедер и либы? Предполагается, что пользователь сам будет сможет прикрутить конвертер к своей программе (к OPC-серверу, например)? Тогда где на странице продукта руководство по программированию? Будьте уж последовательны в своих намерениях. Выкладывайте полную документацию. Я ни в коей мере не хочу "очернить" ваше устройство!  Я указал на факты, которые просто сходу бросаются в глаза специалисту. Доведите до сведения людей вашей фирмы, отвечающих за разработку и продажу.
|
|
|
|
|
Sep 5 2009, 09:49
|

неотягощённый злом
     
Группа: Свой
Сообщений: 2 746
Регистрация: 31-01-08
Из: Санкт-Петербург
Пользователь №: 34 643

|
Цитата(rezident @ Sep 5 2009, 01:05)  Это вы разработчик этого девайса? Можно чуток покритиковать и его и документацию?  Критика конструктивная. Может во благо будет и вы чего-то подправите. Во-первых, на клеммнике нет 3-го провода для выравнивания потенциалов с другими точками подключения. Это чревато тем, что на большом расстоянии амплитуда синфазной помехи может превысить допустимые для драйвера RS485 пределы. Это в лучшем случае приведет к его неработоспособности. В худшем - при возникновении искровых или дуговых разрядов вблизи линии передачи (микросекундные помехи) пробьется изоляция DC/DC в конвертере. Да. Разработчик - наш сотрудник. Спасибо за хинт. Добавим третий клеммник COM или GND. Цитата(rezident @ Sep 5 2009, 01:05)  но нигде нет примечания по ограничению на применение последних двух параметров. Кто-то просто тупо списал параметры, не удосужившись их проверить (а чего же тогда не 3Мегабита?, ведь м/с FTDI позволяет) или хотя бы осмыслить. Вы сами-то понимаете, что в совокупности (одновременно) они не работают? Даже если вы применили очень хорошие драйверы RS485 (10Мбит или выше), то либо скорость Мегабит, либо расстояние километр, но не одновременно! Скорость в один мегабит обусловлена максимальной скоростью изолятора. Мы всё прекрасно понимаем. Это указаны (absolute maximum ratings), как говорится. Но Вы правы, в паспорте следует указать характеристики более подробно. Драйвера идут от производителя ftdi "as is", и если в комплекте идёт либа - пусть идёт. Хлеба не просит... А Вы мастер, докапаться и до фонарного столба сможете    А если серьёзно - спасибо за критику. Учту. Ваши предложения разумны. PS. Для того, чтобы прикрутить конвертер к OPC-серверу и любой другой программе либа не требуется, т.к. разработчику доступно API операционной системы, в которой конвертер виден как ком-порт (это на примере ОС windows). Руководство по программированию берётся из руководства по API конкретной ОС. Ну а кому надо непосредственно работать с чипом как например Real'у с ft2232, то тот достаточно компетентен в этом вопросе и зайдёт на сайт производителя и самостоятельно найдёт себе требуемую документацию. Для 99,9 пользователей это не потребуется никогда в жизни. PS2. Внутри конвертера стоит оптимальный по характеристикам DC-DC преобразователь. И за почти 5-и летнюю историю продаж было всего несколько гарантийных случаев, связанных в основном с непропаем, а продано уже боле 3 сотен таких приборов. PS3. Все тесты на МИПы и НИПы данный прибор проходит на сертификационных испытания с успехом.
--------------------
“Будьте внимательны к своим мыслям - они начало поступков” (Лао-Цзы)
|
|
|
|
|
Sep 7 2009, 05:52
|
Местный
  
Группа: Свой
Сообщений: 435
Регистрация: 12-09-07
Пользователь №: 30 482

|
Цитата(@Ark @ Sep 4 2009, 10:17)  Я думаю, что автоматический режим, описанный выше, можно на какой-нибудь логике воспроизвести. Только громоздко получится... Не понятно, чем не нравится микроконтроллер заказчикам автора... Должно быть дешевое. А микроконтроллер это: пару деталюшек; разовая оплата программисту; постоянная оплата процеса программирования чипа. На этом будут экономить.
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|