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

 
 
4 страниц V   1 2 3 > »   
Reply to this topicStart new topic
> Нужна свежая идея...
_VoRoN_
сообщение Jul 24 2006, 09:37
Сообщение #1


Участник
*

Группа: Новичок
Сообщений: 47
Регистрация: 3-07-06
Из: Россия, Краснодар
Пользователь №: 18 530



Есть преобразователь RS232->RS485. Желание отказаться от использования линий RTS и CTS для выбора прием/передача привели к необходимости использовать МК, а именно AT89C4051. Все бы ничего, но вот скорости передачи могут быть из числа: 9600, 38400, 115200.
Проблема состоит в необходимости определения этой скорости, ибо от этого зависит время удержания управляющего сигнала прием/передача.
Собственные размышления приводят к сложным конструкциям с мутным результатом smile.gif
Может кто сталкивался с подобным или просто есть мысли, буду рад помощи.
Go to the top of the page
 
+Quote Post
Deka
сообщение Jul 24 2006, 09:43
Сообщение #2


Местный
***

Группа: Свой
Сообщений: 248
Регистрация: 18-07-06
Из: Сочи
Пользователь №: 18 890



Перед началом передачи отправлять маркер (все 1) по которому можно выполнить настройку скорости передачи. Вот такое вот решение навскидку.
Go to the top of the page
 
+Quote Post
andrvisht
сообщение Jul 24 2006, 09:43
Сообщение #3


Местный
***

Группа: Свой
Сообщений: 298
Регистрация: 29-08-05
Пользователь №: 8 064



Цитата(_VoRoN_ @ Jul 24 2006, 12:37) *
Есть преобразователь RS232->RS485. Желание отказаться от использования линий RTS и CTS для выбора прием/передача привели к необходимости использовать МК, а именно AT89C4051. Все бы ничего, но вот скорости передачи могут быть из числа: 9600, 38400, 115200.
Проблема состоит в необходимости определения этой скорости, ибо от этого зависит время удержания управляющего сигнала прием/передача.
Собственные размышления приводят к сложным конструкциям с мутным результатом smile.gif
Может кто сталкивался с подобным или просто есть мысли, буду рад помощи.

А возможно ли зарезервировать первый байт, так чтобы первый импульс был всегда 1 а за ним 0.
чтобы по его длине определить скорость. а принимать данные уже со второго байта и настроенной скорости.
Go to the top of the page
 
+Quote Post
Igor26
сообщение Jul 24 2006, 09:46
Сообщение #4


Знающий
****

Группа: Свой
Сообщений: 521
Регистрация: 10-02-05
Пользователь №: 2 544



А почему не использовать преобразователь USB<-->RS-485 и не париться?
Go to the top of the page
 
+Quote Post
_VoRoN_
сообщение Jul 24 2006, 10:06
Сообщение #5


Участник
*

Группа: Новичок
Сообщений: 47
Регистрация: 3-07-06
Из: Россия, Краснодар
Пользователь №: 18 530



К сожалению возможности резервировать байт или посылать маркер нет, т.к. передаваемые данные давно определены и внесение изменений в их состав невозможно (взаимодействуют 2-е железяки). В этом-то и загвоздка...

Кстати, забыл сказать, используется протокол ModBus.

Цитата(Igor26 @ Jul 24 2006, 13:46) *
А почему не использовать преобразователь USB<-->RS-485 и не париться?


Задача стоит именно модернизировать существующее устройство, а не создавать новое. Т.е. RS-232<->RS-485, с автоматическим определением направления и скорости передачи.
Go to the top of the page
 
+Quote Post
vesago
сообщение Jul 24 2006, 10:23
Сообщение #6


Тутэйшы
****

Группа: Свой
Сообщений: 708
Регистрация: 30-11-04
Пользователь №: 1 263



Интересно - схемка с сайта rs485.com позволяет это делать без заглавных символов и на таймере 555.
Прикрепленные файлы
Прикрепленный файл  lp24.zip ( 125.46 килобайт ) Кол-во скачиваний: 264
 
Go to the top of the page
 
+Quote Post
_Bill
сообщение Jul 24 2006, 10:42
Сообщение #7


Местный
***

Группа: Участник
Сообщений: 416
Регистрация: 18-04-06
Из: Челябинск
Пользователь №: 16 219



Цитата(_VoRoN_ @ Jul 24 2006, 12:37) *
Есть преобразователь RS232->RS485. Желание отказаться от использования линий RTS и CTS для выбора прием/передача привели к необходимости использовать МК, а именно AT89C4051. Все бы ничего, но вот скорости передачи могут быть из числа: 9600, 38400, 115200.
Проблема состоит в необходимости определения этой скорости, ибо от этого зависит время удержания управляющего сигнала прием/передача.
Собственные размышления приводят к сложным конструкциям с мутным результатом smile.gif
Может кто сталкивался с подобным или просто есть мысли, буду рад помощи.

Вообще-то, логика выбора не совсем ясна. Я без проблем использую AVR. Там в UART имеется специальный флажок завершения передачи, фиксирующий момент выдачи последнего бита из UART, когда сдвиговый регистр передатчика опустошается. После передачи последнего байта в пакете нужно просто подождать установки этого флажка и смело переключать драйвер RS-485 на прием. Этот флажок может формировать запрос на прерывание, чем я, собственно и пользуюсь.
Go to the top of the page
 
+Quote Post
_VoRoN_
сообщение Jul 24 2006, 10:57
Сообщение #8


Участник
*

Группа: Новичок
Сообщений: 47
Регистрация: 3-07-06
Из: Россия, Краснодар
Пользователь №: 18 530



Цитата(_Bill @ Jul 24 2006, 14:42) *
Цитата(_VoRoN_ @ Jul 24 2006, 12:37) *

Есть преобразователь RS232->RS485. Желание отказаться от использования линий RTS и CTS для выбора прием/передача привели к необходимости использовать МК, а именно AT89C4051. Все бы ничего, но вот скорости передачи могут быть из числа: 9600, 38400, 115200.
Проблема состоит в необходимости определения этой скорости, ибо от этого зависит время удержания управляющего сигнала прием/передача.
Собственные размышления приводят к сложным конструкциям с мутным результатом smile.gif
Может кто сталкивался с подобным или просто есть мысли, буду рад помощи.

Вообще-то, логика выбора не совсем ясна. Я без проблем использую AVR. Там в UART имеется специальный флажок завершения передачи, фиксирующий момент выдачи последнего бита из UART, когда сдвиговый регистр передатчика опустошается. После передачи последнего байта в пакете нужно просто подождать установки этого флажка и смело переключать драйвер RS-485 на прием. Этот флажок может формировать запрос на прерывание, чем я, собственно и пользуюсь.


Применение AVR не является возможным. Использование UART, видимо, было бы лучшим вариантом, но увы...
Go to the top of the page
 
+Quote Post
Dog Pawlowa
сообщение Jul 24 2006, 13:41
Сообщение #9


Гуру
******

Группа: Свой
Сообщений: 2 702
Регистрация: 14-07-06
Пользователь №: 18 823



Цитата(_VoRoN_ @ Jul 24 2006, 12:37) *
... Все бы ничего, но вот скорости передачи могут быть из числа: 9600, 38400, 115200...
Может кто сталкивался с подобным или просто есть мысли, буду рад помощи.

Сталкивались.
В данном случае джампера помогут :-)
Или использовать программно считываемые перемычки регилия не позволяет?
Или скорость меняется в динамике?


--------------------
Уходя, оставьте свет...
Go to the top of the page
 
+Quote Post
Kovrov
сообщение Jul 24 2006, 15:54
Сообщение #10


Мастер-фломастер
****

Группа: Свой
Сообщений: 611
Регистрация: 29-12-05
Пользователь №: 12 700



Цитата(Deka @ Jul 24 2006, 13:43) *
Перед началом передачи отправлять маркер (все 1) по которому можно выполнить настройку скорости передачи. Вот такое вот решение навскидку.

а дальше что? ну высветил я старт бит
таймером померил длительность...
и прикинул после этого бодрейт?
или не так?


--------------------
Вон ПОПОВ, клоун клоуном, а радио изобрел!!
Go to the top of the page
 
+Quote Post
_VoRoN_
сообщение Jul 24 2006, 20:54
Сообщение #11


Участник
*

Группа: Новичок
Сообщений: 47
Регистрация: 3-07-06
Из: Россия, Краснодар
Пользователь №: 18 530



Цитата(Dog Pawlowa @ Jul 24 2006, 17:41) *
Цитата(_VoRoN_ @ Jul 24 2006, 12:37) *

... Все бы ничего, но вот скорости передачи могут быть из числа: 9600, 38400, 115200...
Может кто сталкивался с подобным или просто есть мысли, буду рад помощи.

Сталкивались.
В данном случае джампера помогут :-)
Или использовать программно считываемые перемычки регилия не позволяет?
Или скорость меняется в динамике?


джампера - это уже не совсем автоматически получается smile.gif
Go to the top of the page
 
+Quote Post
rezident
сообщение Jul 24 2006, 22:03
Сообщение #12


Гуру
******

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



Цитата(_VoRoN_ @ Jul 25 2006, 02:54) *
Цитата(Dog Pawlowa @ Jul 24 2006, 17:41) *

Цитата(_VoRoN_ @ Jul 24 2006, 12:37) *

... Все бы ничего, но вот скорости передачи могут быть из числа: 9600, 38400, 115200...
Может кто сталкивался с подобным или просто есть мысли, буду рад помощи.

Сталкивались.
В данном случае джампера помогут :-)
Или использовать программно считываемые перемычки регилия не позволяет?
Или скорость меняется в динамике?


джампера - это уже не совсем автоматически получается smile.gif

В одной сетке скорости обычно уже определены и необходимости автоматического определения baud rate нет. Исключение составляет какой-нибудь хитрож@пый мастер, который конвертором протоколов работает. Но поскольку у вас протокол один - modbus и ряд скоростей известен заренее я считаю, что городить конвертор интерфейсов с автоподстройкой baud rate это, извините, пижонство и ухудшение надежности работы сети. А если уж вы хотите сделать нормальный конвертор RS232<->RS485, то нужно чтобы он выполнял как минимум две функции.
1. задержка выдачи битового потока в линию RS485 на определенный интервал времени (для RTU >=3,5 символа) после переключения приемопередатчика RS485 на передачу
2. задержка переключения приемопередатчика RS485 на прием после передачи в линию (учитывая буфер битового потока) последнего символа (для RTU >=3,5 символа)
Из этих двух функций вытекает еще и наличие буфера для битового потока, который нужно контролировать с двух сторон - на входе конвертора (RS-232) и на выходе (RS485).
Go to the top of the page
 
+Quote Post
SasaVitebsk
сообщение Jul 24 2006, 22:18
Сообщение #13


Гуру
******

Группа: Свой
Сообщений: 2 712
Регистрация: 28-11-05
Из: Беларусь, Витебск, Строителей 18-4-220
Пользователь №: 11 521



Цитата(_VoRoN_ @ Jul 24 2006, 13:06) *
К сожалению возможности резервировать байт или посылать маркер нет, т.к. передаваемые данные давно определены и внесение изменений в их состав невозможно (взаимодействуют 2-е железяки). В этом-то и загвоздка...

Кстати, забыл сказать, используется протокол ModBus.

Цитата(Igor26 @ Jul 24 2006, 13:46) *

А почему не использовать преобразователь USB<-->RS-485 и не париться?


Задача стоит именно модернизировать существующее устройство, а не создавать новое. Т.е. RS-232<->RS-485, с автоматическим определением направления и скорости передачи.


Задача "автобод" реализована во всех модемах и обсуждалась неоднократно в том числе на данном форуме. Я реализовывал, и по моим подсчётам необходимо примерно 7 мипсов для скорости 115к. Для получения достоверной информации. (т.е. рекомендую поставить 2313 для данной цели) Сам протокол MODBUS явно предназначен для rs485, так как в начале посылки указывает свою длину, что позволяет при перехвате посылки высчитать время для переключения. Существуют также различные схемы для автоматического перехода по таймеру. (Типа если не пришла "1" хх мс, то переключить.)
А вот ещё идея на вскидку. Можно сделать задержку. (Для этого вовсе не требуется вообще распознавать данные. Что пришло, - то ушло) Т.е. принимать все данные и передавать их с задержкой. Если за время задержки данные не пришли, то можно на передающей переключить.
Ещё один момент. Применение сигнала RTS для данной цели, по моему, фактически стандарт. Чем Вас данное решение не устраивает?
Go to the top of the page
 
+Quote Post
DuMaH
сообщение Jul 24 2006, 23:15
Сообщение #14


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

Группа: Участник
Сообщений: 89
Регистрация: 14-07-06
Пользователь №: 18 822



Вообще, можно и без микроконтроллера, если допускается достаточно большой таймаут на линии: RC-цепочка с Rout 232-го + триггер Шмитта выходом на DE приемопередатчика 485. Запускается от старт-бита. Сам не пробовал, но видел тех кто видел тех кто пробовал smile.gif Видимо пост. времени надо выбирать в 1.5 - 2 раза больше длительности передачи байта на самой низкой скорости.
Если все же с МК, то вот http://focus.ti.com/lit/an/slaa215/slaa215.pdf. Рекомендую, может поможет чем-нибудь.
Go to the top of the page
 
+Quote Post
Леонид Иванович
сообщение Jul 25 2006, 10:31
Сообщение #15


Местный
***

Группа: Участник
Сообщений: 318
Регистрация: 21-07-06
Из: Минск
Пользователь №: 18 986



Цитата(SasaVitebsk @ Jul 25 2006, 01:18) *
Применение сигнала RTS для данной цели, по моему, фактически стандарт. Чем Вас данное решение не устраивает?


Наверное тем, что есть косяки в управлении RTS под Виндами. Было бы правильнее разобраться с программой, чем городить лишнюю аппаратуру.


--------------------
Go to the top of the page
 
+Quote Post
_VoRoN_
сообщение Jul 25 2006, 20:33
Сообщение #16


Участник
*

Группа: Новичок
Сообщений: 47
Регистрация: 3-07-06
Из: Россия, Краснодар
Пользователь №: 18 530



Элементная база основана на том, что есть на складе, поэтому AT89C4051 и другого не дано smile.gif Мне бы по программе советик другой. Джампера-это конечно хорошо, но...
Go to the top of the page
 
+Quote Post
upc2
сообщение Jul 26 2006, 05:16
Сообщение #17


Знающий
****

Группа: Свой
Сообщений: 506
Регистрация: 29-09-05
Из: Донецк
Пользователь №: 9 063



???<<Применение сигнала RTS для данной цели, по моему, фактически стандарт. >>

Спецификация на RS485 допускает и не использовать RTS.В этом случае в схеме адаптера для
согласования скоростей используется одновибратор на 155АГ1,3 или подоб.
Я почитал вы отклоняете все предложения.Уточните , что возможно у вас изменить?
Go to the top of the page
 
+Quote Post
_VoRoN_
сообщение Jul 26 2006, 21:05
Сообщение #18


Участник
*

Группа: Новичок
Сообщений: 47
Регистрация: 3-07-06
Из: Россия, Краснодар
Пользователь №: 18 530



Цитата(upc2 @ Jul 26 2006, 09:16) *
???<<Применение сигнала RTS для данной цели, по моему, фактически стандарт. >>

Спецификация на RS485 допускает и не использовать RTS.В этом случае в схеме адаптера для
согласования скоростей используется одновибратор на 155АГ1,3 или подоб.
Я почитал вы отклоняете все предложения.Уточните , что возможно у вас изменить?


Уже существующий преобразователь RS232<->RS485, а это фактически 2-е микросхемы - драйверы RS232 и RS485 гальванически развязанные между собой и по питанию, необходимо избавить от сигнала RTS, для чего необходимо применить МК AT89C4051. Особых проблем с одной скоростью не возникло - достаточно поймать стартовый бит на входе внешнего прерывания и удерживать сигнал передачи в течении времени, равном длительности одного кадра. Однако автоматическое определение скорости создает определенные проблемы, идеи есть, но они вносят либо избыточность в передаваемые данные в виде дополнительных кадров, либо в схему устройства, что крайне не желательно.
Go to the top of the page
 
+Quote Post
Леонид Иванович
сообщение Jul 27 2006, 06:48
Сообщение #19


Местный
***

Группа: Участник
Сообщений: 318
Регистрация: 21-07-06
Из: Минск
Пользователь №: 18 986



Тема преобразователей RS485 <-> RS232 с автоматическим определением скорости очень стара, вряд ли получится придумать что-то новое.


--------------------
Go to the top of the page
 
+Quote Post
_Sam_
сообщение Jul 27 2006, 09:48
Сообщение #20


Местный
***

Группа: Свой
Сообщений: 278
Регистрация: 18-01-05
Из: Санкт-Петербург
Пользователь №: 2 031



Может это поможет.
Только чтобы этот преобразователь работал необходимо обязательно подтягивать A и B. При скорости 2мбит этот преобразователь у меня вполне нормально работал подтяжки ставил по 620Ом.

Принцип работы преобразователя прост. Приёмник включён всё время, передатчик включается только если передаётся 0. Т.о. если передаём 1 передатчик выключен и на шине 1, которая формируется подтяжками, если передаём 0, включается передатчик и передаёт на шину 0. Т.о. можно исключить конфилитные ситуации на шине и исключить необходимость использования сигнала rts.
Т.к. приёмник включен всё время, мы можем принимать то что передаём и следить чтобы наши 1 никто 0 не давил! Собственно всё вышеописанное реализованно в CAN интерфейсе.

Забыл добавить 5 ножечная микросхема это просто инвертор. Который при передаче 0 включает DE, а при передаче 1 выключает.
Эскизы прикрепленных изображений
Прикрепленное изображение
 
Go to the top of the page
 
+Quote Post
rezident
сообщение Jul 27 2006, 10:47
Сообщение #21


Гуру
******

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



Цитата(_VoRoN_ @ Jul 27 2006, 03:05) *
Уже существующий преобразователь RS232<->RS485, а это фактически 2-е микросхемы - драйверы RS232 и RS485 гальванически развязанные между собой и по питанию, необходимо избавить от сигнала RTS, для чего необходимо применить МК AT89C4051. Особых проблем с одной скоростью не возникло - достаточно поймать стартовый бит на входе внешнего прерывания и удерживать сигнал передачи в течении времени, равном длительности одного кадра. Однако автоматическое определение скорости создает определенные проблемы, идеи есть, но они вносят либо избыточность в передаваемые данные в виде дополнительных кадров, либо в схему устройства, что крайне не желательно.

Если в устройствах (slave) реализована настраиваемая пауза перед ответом, то сделайте постоянное время удержания DE и не заморачивайтесь вы с этим автоматическим определением скорости передачи! Т.е. как уже и предлагали - перезапускаемый одновибратор, запускаемый от перепада 1->0 на TxD (RS232) , который генерирует импульс управления передатчиком RS485 длительностью соответствующий 3,5 символам на минимальной скорости передачи 11/9600*3,5>=4мс.
Если же пауза перед ответом в слейвах не реализована (встречались с таким в не некоторых устройствах), то это вообще ИМХО тупик. cranky.gif
P.S. кстати, в конверторах RS485<->RS232<->RS485, которые мы выпускаем, реализована и буферизация битового потока и задержка переключения DE на прием. Обе задержки рассчитаны на одинаковое время: режим 1 - 1.5 символа и режим 2 (RTU) - 4 символа. Но, к сожалению, выбор скорости у конвертора определяется положением SMD-switch.
Go to the top of the page
 
+Quote Post
_Sam_
сообщение Jul 27 2006, 11:21
Сообщение #22


Местный
***

Группа: Свой
Сообщений: 278
Регистрация: 18-01-05
Из: Санкт-Петербург
Пользователь №: 2 031



Цитата
Если же пауза перед ответом в слейвах не реализована (встречались с таким в не некоторых устройствах), то это вообще ИМХО тупик.

А почему мой вариант не подходит, мои устройства и с задержкой и без работают и на разных скоростях, с одной и той же схемой! Вы наверное говорите не просто о преобразователях интерфейса rs232 в интерфейс rs485, а о преобразователях протоколов обмена. Требуется вроде преобразовать один интерфейс в другой или я чего-то недопонял...
Go to the top of the page
 
+Quote Post
rezident
сообщение Jul 27 2006, 13:24
Сообщение #23


Гуру
******

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



Цитата(_Sam_ @ Jul 27 2006, 17:21) *
Вы наверное говорите не просто о преобразователях интерфейса rs232 в интерфейс rs485, а о преобразователях протоколов обмена. Требуется вроде преобразовать один интерфейс в другой или я чего-то недопонял...

Никакой не преобразователь протоколов, а именно конвертор RS232<->RS485. Потому что при указанной реализации (перезапускаемый по срезу одновибратор или аналогичная по функционалу схема) задержка отсчитывается от последнего фронта, а этот фронт может быть как последним битом символа (или битом четности) так и стартовым битом. Следовательно неточность интервала удержания DE может достигать 0,9 символа. У нас в практике организации сетей сбора данных встречались устройства (сторонних производителей) которые на любой скорости начинали отвечать через 1мс, хоть застрели их. Сами понимаете, что при задержке переключения передатчика RS485 в 3,5 символа (+ 0,9символа), например на скорости 9600, такие устройства выдавали пакет в линию раньше, чем у мастера (или у конвертора) отключался передатчик. При управлением драйвером RS485 с помощью RTS эти устройства вообще не работали. Видимо их разработчики рассчитывали на дуплексную связь и не предусмотрели возможность подключения к полудуплексному интерфейсу RS485.

P.S. я не утверждал, что ваша схема не рабочая. Такие схемы известны и многие фирмы их делают. Однако это все же "настольный" вариант конвертора, который не будет устойчиво работать на длинных (сотни метров) линиях связи да еще и в каких-нибудь условиях сильных помех. К тому же вопрошающему нужен гальваноразвязанный конвертор.
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Jul 27 2006, 14:49
Сообщение #24


Гуру
******

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



Цитата(_Sam_ @ Jul 27 2006, 12:48) *
Может это поможет.
Только чтобы этот преобразователь работал необходимо обязательно подтягивать A и B. При скорости 2мбит этот преобразователь у меня вполне нормально работал подтяжки ставил по 620Ом.

Принцип работы преобразователя прост. Приёмник включён всё время, передатчик включается только если передаётся 0. Т.о. если передаём 1 передатчик выключен и на шине 1, которая формируется подтяжками, если передаём 0, включается передатчик и передаёт на шину 0. Т.о. можно исключить конфилитные ситуации на шине и исключить необходимость использования сигнала rts.
Т.к. приёмник включен всё время, мы можем принимать то что передаём и следить чтобы наши 1 никто 0 не давил! Собственно всё вышеописанное реализованно в CAN интерфейсе.
Замечание: Очень полезно при передаче 1 тоже включать передатчик, но на очень короткий промежуток времени (~50% бита на макс. скорости) для быстрой перезарядки емкости линии. Прилагаемая схема делает это и плюс давит эхо. Работает до 115200 без всяких настроек скорости и процессоров. Растяжки, конечно, обязательны.
Эскизы прикрепленных изображений
Прикрепленное изображение
 


--------------------
На любой вопрос даю любой ответ
"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
_Sam_
сообщение Jul 27 2006, 15:12
Сообщение #25


Местный
***

Группа: Свой
Сообщений: 278
Регистрация: 18-01-05
Из: Санкт-Петербург
Пользователь №: 2 031



Цитата
К тому же вопрошающему нужен гальваноразвязанный конвертор.

у меня гальваноразвязанный и нарисован, с использованием adm2483.
линия была конечно не 100метров и более, а всего 30, но скорость 2мбит, и использую свои девайсы на станках в настоящем цеху.

Цитата
задержке переключения передатчика RS485

Так вот я и понять не могу откуда может взяться задержка. В приведённой мною схеме и в более правильной схеме Сергея Борща, каждый из девайсов переключает приёмопередатчик самостоятельно и то в момент передачи, какие могут быть задержки? Я понимаю задержки распространения сигнала в длинной линии есть, но как они повлияют на переключение в указанных выше схемах?
Go to the top of the page
 
+Quote Post
rezident
сообщение Jul 27 2006, 15:46
Сообщение #26


Гуру
******

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



Цитата(_Sam_ @ Jul 27 2006, 21:12) *
у меня гальваноразвязанный и нарисован, с использованием adm2483.

Тип м/с на схеме не указан, а сам я не догадался smile.gif
Цитата(_Sam_ @ Jul 27 2006, 21:12) *
Так вот я и понять не могу откуда может взяться задержка. В приведённой мною схеме и в более правильной схеме Сергея Борща, каждый из девайсов переключает приёмопередатчик самостоятельно и то в момент передачи, какие могут быть задержки?

Это я не про вашу схему, а про реализацию, которую я описывал выше.
Цитата(_Sam_ @ Jul 27 2006, 21:12) *
Я понимаю задержки распространения сигнала в длинной линии есть, но как они повлияют на переключение в указанных выше схемах?

Задержка распространения - почти никак. Но вот нарастающий фронт сигналов (A+, B-) на длинной линии может оказаться довольно пологим. Драйвер RS485 как минимум 30мА дает выходной ток, а ваша растяжка линий порядка 3-4мА.
В общем вкратце суть такова, что все эти ухищрения с задержками нужны для того, чтобы помеха, возникающая (или имеющая ненулевой шанс возникнуть) при подключении (отключении) выходного драйвера RS485 к (от) линии передачи не попала в пакет RTU и не испоганила его. Для этого после подключения выходного драйвера RS485 нужна пауза не менее 3,5 символов (пауза тишины, означающая конец пакета RTU) и на такое же время удержание драйвера RS485 в состоянии вывода после окончания передачи пакета. Если вероятность возникновения помехи от переключения линии низка (например, короткая линия), то на эти задержки можно вполне наплевать и использовать предложенную вами схему.
Go to the top of the page
 
+Quote Post
_VoRoN_
сообщение Jul 27 2006, 21:10
Сообщение #27


Участник
*

Группа: Новичок
Сообщений: 47
Регистрация: 3-07-06
Из: Россия, Краснодар
Пользователь №: 18 530



Ооо! Ребята! Спасибо огромное за помощь! Я так понимаю, что вышеуказанный метод, проиллюстрированный 2-мя схемами, действительно работает. Это реально упрощает схему, избавляет от необходимости использования МК. a14.gif

Сообщение отредактировал _VoRoN_ - Jul 27 2006, 21:10
Go to the top of the page
 
+Quote Post
SasaVitebsk
сообщение Jul 27 2006, 21:11
Сообщение #28


Гуру
******

Группа: Свой
Сообщений: 2 712
Регистрация: 28-11-05
Из: Беларусь, Витебск, Строителей 18-4-220
Пользователь №: 11 521



Как приятно получить чёткие ответы (и множество) на вопрос который стоит передо мной, но я его не задавал. smile.gif
А я с RTS воюю. На Delfi проблемы с формированием задержки. У меня правда плюс. Я делаю и то и это. Ну а под своё изделие я уж как-нибудь подстроюсь. smile.gif

Кстати может у кого грамотный компонент есть для Delfi под COM порт.
Go to the top of the page
 
+Quote Post
Old1
сообщение Jul 28 2006, 07:18
Сообщение #29


Знающий
****

Группа: Свой
Сообщений: 697
Регистрация: 26-07-05
Из: Могилев
Пользователь №: 7 095



Цитата(SasaVitebsk @ Jul 28 2006, 00:11) *
Кстати может у кого грамотный компонент есть для Delfi под COM порт.


Грамотный это как?
Вот посмотрите мой компонент Klientservcomconnect . Грамотный он или нет не мне судить, но может быть пригодится. В комплект входят примеры и хелп. Кстати будет интересно ваше мнение о возможностях компонента.
Go to the top of the page
 
+Quote Post
_VoRoN_
сообщение Jul 28 2006, 07:23
Сообщение #30


Участник
*

Группа: Новичок
Сообщений: 47
Регистрация: 3-07-06
Из: Россия, Краснодар
Пользователь №: 18 530



В качестве драйвера RS485 использую MAX487. На выходе A сигнал нормальный, а вот на B, вместо инверсии A присутствует сигнал повторяющий A, но с гораздо меньшей амплитудой. В чем может быть дело?
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Jul 28 2006, 07:35
Сообщение #31


Гуру
******

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



Цитата(_VoRoN_ @ Jul 28 2006, 10:23) *
В качестве драйвера RS485 использую MAX487. На выходе A сигнал нормальный, а вот на B, вместо инверсии A присутствует сигнал повторяющий A, но с гораздо меньшей амплитудой. В чем может быть дело?
Если схема вроде _Sam_ или моей, т.е с побитным отключением передатчика, то симптомы очень похожи на отсутствие растяжек. Если обычная - скорее всего перепутаны входы данных и включения передатчика.


--------------------
На любой вопрос даю любой ответ
"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
_VoRoN_
сообщение Jul 28 2006, 09:47
Сообщение #32


Участник
*

Группа: Новичок
Сообщений: 47
Регистрация: 3-07-06
Из: Россия, Краснодар
Пользователь №: 18 530



Цитата(Сергей Борщ @ Jul 28 2006, 11:35) *
Цитата(_VoRoN_ @ Jul 28 2006, 10:23) *

В качестве драйвера RS485 использую MAX487. На выходе A сигнал нормальный, а вот на B, вместо инверсии A присутствует сигнал повторяющий A, но с гораздо меньшей амплитудой. В чем может быть дело?
Если схема вроде _Sam_ или моей, т.е с побитным отключением передатчика, то симптомы очень похожи на отсутствие растяжек. Если обычная - скорее всего перепутаны входы данных и включения передатчика.


Схема собрана по образу и подобию вашей. Дело значит обстоит так (в пред. посте я перепутал): на выходе A сигнал очень слабый и представляет собой инверсию входного, сигнал на выходе B повторяет сигнал на A, но с нормальной амплитудой.
Растяжки стоят в соответствии с вашей схемой.
Go to the top of the page
 
+Quote Post
rezident
сообщение Jul 28 2006, 10:16
Сообщение #33


Гуру
******

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



Цитата(_VoRoN_ @ Jul 28 2006, 15:47) *
Дело значит обстоит так (в пред. посте я перепутал): на выходе A сигнал очень слабый и представляет собой инверсию входного, сигнал на выходе B повторяет сигнал на A, но с нормальной амплитудой.
Растяжки стоят в соответствии с вашей схемой.

Если вы запамятовали, то напоминаю, что сигнал на выходе драйвера дифференциальный и наблюдать его нужно не относительно GND, а непосредственно между сигналами A и B. Например, на сигнал A щуп осциллографа, а на сигнал B землю щупа осциллографа. При лог.1 на входе драйвера на выходе должно быть A > B, при лог. 0 на входе B > A.
Go to the top of the page
 
+Quote Post
_VoRoN_
сообщение Jul 28 2006, 10:26
Сообщение #34


Участник
*

Группа: Новичок
Сообщений: 47
Регистрация: 3-07-06
Из: Россия, Краснодар
Пользователь №: 18 530



Цитата(rezident @ Jul 28 2006, 14:16) *
Цитата(_VoRoN_ @ Jul 28 2006, 15:47) *

Дело значит обстоит так (в пред. посте я перепутал): на выходе A сигнал очень слабый и представляет собой инверсию входного, сигнал на выходе B повторяет сигнал на A, но с нормальной амплитудой.
Растяжки стоят в соответствии с вашей схемой.

Если вы запамятовали, то напоминаю, что сигнал на выходе драйвера дифференциальный и наблюдать его нужно не относительно GND, а непосредственно между сигналами A и B. Например, на сигнал A щуп осциллографа, а на сигнал B землю щупа осциллографа. При лог.1 на входе драйвера на выходе должно быть A > B, при лог. 0 на входе B > A.


Да нет, я не забыл, просто запутался smile.gif

Схема нормально работает на 9600 и 38400, однако на на 115200 проявляется потеря данных ~10%.
Go to the top of the page
 
+Quote Post
_VoRoN_
сообщение Jul 28 2006, 20:43
Сообщение #35


Участник
*

Группа: Новичок
Сообщений: 47
Регистрация: 3-07-06
Из: Россия, Краснодар
Пользователь №: 18 530



Все, зарубили идею, а ведь почти получилось sad.gif Для переключения использовать МК - распоряжение начальства. Теперь все с начала...
Go to the top of the page
 
+Quote Post
zltigo
сообщение Jul 28 2006, 20:53
Сообщение #36


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



Цитата(_VoRoN_ @ Jul 28 2006, 23:43) *
Для переключения использовать МК - распоряжение начальства. Теперь все с начала...

Зачем сначала :-) диод-резистор-кондер заменяются на MK :-)

До тех пор пока не разберется с длительностью фрейма - изображает одновибратор. После разборок
- чеко управляет передатчиком.

Сообщение отредактировал zltigo - Jul 29 2006, 05:16


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
Laptop
сообщение Jul 28 2006, 22:00
Сообщение #37


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

Группа: Свой
Сообщений: 142
Регистрация: 19-11-05
Пользователь №: 11 103



Цитата(SasaVitebsk @ Jul 28 2006, 01:11) *
Как приятно получить чёткие ответы (и множество) на вопрос который стоит передо мной, но я его не задавал. smile.gif
А я с RTS воюю. На Delfi проблемы с формированием задержки. У меня правда плюс. Я делаю и то и это. Ну а под своё изделие я уж как-нибудь подстроюсь. smile.gif

Кстати может у кого грамотный компонент есть для Delfi под COM порт.

Конечно есть, еще с 3-ей Дельфиsmile.gif
поиском нашел свежую ссылку:
TurboPower Async Professional
http://sourceforge.net/projects/tpapro/
Go to the top of the page
 
+Quote Post
defunct
сообщение Jul 28 2006, 22:35
Сообщение #38


кекс
******

Группа: Свой
Сообщений: 3 825
Регистрация: 17-12-05
Из: Киев
Пользователь №: 12 326



Цитата
Применение AVR не является возможным. Использование UART, видимо, было бы лучшим вариантом, но увы...


Класс, а чего ж тогда Вы вопрос задаете именно в этом форуме? Есть ведь и другие..

По сабжу, надежней чем "кондер-резистор-диод" Ваш конвертер с C4051 не станет. Если уж МК так почему именно такой плохой выбор? Ведь и AtTiny11/12/13, PIC12F625 запросто справятся с тривиальной задачей формирования задержки в N ms. А для того чтобы разрешить ваш вопрос достаточно удерживать линию в состоянии передачи не долее чем реакция вашего "отвечающего" девайса (вот это и как раз и будут те самые N ms).
Go to the top of the page
 
+Quote Post
_VoRoN_
сообщение Aug 3 2006, 12:02
Сообщение #39


Участник
*

Группа: Новичок
Сообщений: 47
Регистрация: 3-07-06
Из: Россия, Краснодар
Пользователь №: 18 530



Цитата(defunct @ Jul 29 2006, 02:35) *
Цитата
Применение AVR не является возможным. Использование UART, видимо, было бы лучшим вариантом, но увы...


Класс, а чего ж тогда Вы вопрос задаете именно в этом форуме? Есть ведь и другие..

По сабжу, надежней чем "кондер-резистор-диод" Ваш конвертер с C4051 не станет. Если уж МК так почему именно такой плохой выбор? Ведь и AtTiny11/12/13, PIC12F625 запросто справятся с тривиальной задачей формирования задержки в N ms. А для того чтобы разрешить ваш вопрос достаточно удерживать линию в состоянии передачи не долее чем реакция вашего "отвечающего" девайса (вот это и как раз и будут те самые N ms).


Да, с выбором контроллера вы определенно правы smile.gif На 9600 работает четко, на 38400 - через раз, а вот на 115200 вообще отказывается. Судя по осцилограмме, просто не успевает переключаться в начале, до начала информационного бита, и съедает его добрую часть. Дальше по пакету все нормально.
Go to the top of the page
 
+Quote Post
Леонид Иванович
сообщение Aug 7 2006, 08:26
Сообщение #40


Местный
***

Группа: Участник
Сообщений: 318
Регистрация: 21-07-06
Из: Минск
Пользователь №: 18 986



Цитата(SasaVitebsk @ Jul 28 2006, 00:11) *
А я с RTS воюю. На Delfi проблемы с формированием задержки. У меня правда плюс. Я делаю и то и это. Ну а под своё изделие я уж как-нибудь подстроюсь. smile.gif
Кстати может у кого грамотный компонент есть для Delfi под COM порт.


Правильнее сказать, не на Delphi проблемы с формированием задержки, а под Windows. Можно формировать так:

var
HighT:Double; //Hi-res. timer period, uS

procedure CalibT;
var F:Int64;
begin
QueryPerformanceFrequency(F);
if F=0 then F:=1;
HighT:=1000000.0/F;
end;

procedure Delay(Tm:Integer); //uS
var F1,F2:Int64;
begin
QueryPerformanceCounter(F1);
F1:=Round(F1+Tm/HighT);
repeat QueryPerformanceCounter(F2) until F2>F1;
end;

Но все эти программные задержки под Win на уровне юзера - фикция. Вставьте царапнутый CD в привод и наслаждайтесь полным зависоном десяток секунд smile.gif

Что касается RTS, то в Async Professional под не-NT Win он переключается по концу посылки, который определяется прямым чтением регистра UART. Под NT Win используется режим RTS_TOGGLE, реализованный в стандартом драйвере COM-порта. Только работает он тормознуто.


--------------------
Go to the top of the page
 
+Quote Post
_artem_
сообщение Aug 7 2006, 12:24
Сообщение #41


учащийся
*****

Группа: Свой
Сообщений: 1 065
Регистрация: 29-10-05
Из: города контрастов
Пользователь №: 10 249



Я недавно экспериментировал с этим - получал вроде бы гарантированную задержку по переключению RTS. Если применик держать все время в работаюшем положении а после передачи фрейма сразу же принимать данные то по окончанию последнего байта можно и деактивизировать RTS.
Во всех посылках байта переключение rts случалось по концу посылки без 50 миллисекундной неопределенности виндоза (посредством esccommfucntion ). Можно и по таймингу делать - но момент начала передачи байта железкой неизвестен .

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


--------------------
Зачем лаять на караван , когда на него можно плюнуть?

Go to the top of the page
 
+Quote Post
Леонид Иванович
сообщение Aug 7 2006, 19:28
Сообщение #42


Местный
***

Группа: Участник
Сообщений: 318
Регистрация: 21-07-06
Из: Минск
Пользователь №: 18 986



Цитата(_artem_ @ Aug 7 2006, 15:24) *
Если применик держать все время в работаюшем положении а после передачи фрейма сразу же принимать данные то по окончанию последнего байта можно и деактивизировать RTS.


А как узнать момент окончания передачи последнего байта?


--------------------
Go to the top of the page
 
+Quote Post
goodwin
сообщение Aug 7 2006, 19:53
Сообщение #43


Местный
***

Группа: Свой
Сообщений: 481
Регистрация: 1-08-05
Пользователь №: 7 267



Сам правда не пробовал, но в FTDI чипах USB-COM есть специальный аппаратный управляющий сигнал для переключения передатчика... По моему - самое простое решение. И питать 485-ый драйвер есть чем...
Go to the top of the page
 
+Quote Post
_VoRoN_
сообщение Aug 7 2006, 20:38
Сообщение #44


Участник
*

Группа: Новичок
Сообщений: 47
Регистрация: 3-07-06
Из: Россия, Краснодар
Пользователь №: 18 530



Если кто знает, посоветуйте пожалуйста толковый компонент под С++ Builder 6 или Delphi 7 для работы с COM портом help.gif
Go to the top of the page
 
+Quote Post
otrog
сообщение Aug 8 2006, 04:41
Сообщение #45


Местный
***

Группа: Свой
Сообщений: 232
Регистрация: 22-02-06
Из: Воронеж
Пользователь №: 14 589



Цитата(_VoRoN_ @ Aug 8 2006, 00:38) *
Если кто знает, посоветуйте пожалуйста толковый компонент под С++ Builder 6 или Delphi 7 для работы с COM портом help.gif

Использовал "TMS Async32". Впечатления положительные.
http://www.tmssoftware.com/


--------------------
Истина рождается в спорах; но когда страсти кипят, истина испаряется.
Go to the top of the page
 
+Quote Post
Леонид Иванович
сообщение Aug 8 2006, 20:45
Сообщение #46


Местный
***

Группа: Участник
Сообщений: 318
Регистрация: 21-07-06
Из: Минск
Пользователь №: 18 986



Цитата(goodwin @ Aug 7 2006, 22:53) *
Сам правда не пробовал, но в FTDI чипах USB-COM есть специальный аппаратный управляющий сигнал для переключения передатчика...


В FTDI есть. Но речь шла о COM-порте, а не о USB. Как там?


--------------------
Go to the top of the page
 
+Quote Post
_Sam_
сообщение Aug 9 2006, 08:59
Сообщение #47


Местный
***

Группа: Свой
Сообщений: 278
Регистрация: 18-01-05
Из: Санкт-Петербург
Пользователь №: 2 031



Цитата
Все, зарубили идею, а ведь почти получилось Для переключения использовать МК - распоряжение начальства. Теперь все с начала...

Ну начальство можно и убедить или в крайнем случае слегка обмануть smile.gif Просто если делать на МК необходимо будет и протокол несколько переписать. Перед началом обмена передавать несколько синхронизирующих байт по которым ваш МК определит скорость с которой будет вестись передача.
Или добавить в протокол команды для МК, которые будут передаваться всегда на фиксированной скорости, и в них указывать скорость с которой будет вестись передача.

На сотнях метрах и больших скоростях я схему без контроллера не пробовал, но на 30метрах 1мегабит с растяжками по 690Ом будет работать 100% в условиях помех(у меня сейчас под 100 реле без искрогасящих цепочек и электродвигатель на 3кВт). Я смотрел сигналы до 485 и после линии и 485
задержки конечно есть но всего порядка нескольких процентов. Реализовать эту схему гораздо проще и быстрее.
Неужели ваше начальство не может вам лишние два часа выделить, чтобы вы во всём до конца разобрались?

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

Кстати если сигнал просаживается хоть МК ставьте хоть ещё один PC всё равно будет криво работать!
Проверить работоспособность всей линии в целом можно следующим образом:
сигнал до передающего 485 должен совпадать с сигналом после принимающего rs485.
Go to the top of the page
 
+Quote Post
_artem_
сообщение Aug 9 2006, 09:29
Сообщение #48


учащийся
*****

Группа: Свой
Сообщений: 1 065
Регистрация: 29-10-05
Из: города контрастов
Пользователь №: 10 249



Цитата(Леонид Иванович @ Aug 7 2006, 22:28) *
Цитата(_artem_ @ Aug 7 2006, 15:24) *

Если применик держать все время в работаюшем положении а после передачи фрейма сразу же принимать данные то по окончанию последнего байта можно и деактивизировать RTS.


А как узнать момент окончания передачи последнего байта?


На этот счет где то в msdn прочел что надо разговаривать напрямую с драйвером. Посмотрел IOCTL коды примера из ДДК и не нашел ничего подходяшего. Наверно плохо искал.
Вроде бы два других варианта есть (первый проверил и как будто ничего):
- в полудуплексе rs484 держать прием все время активным так что любой переданный из pc байт будет принят . После передачи последнего байта
начинать прочитывание rx буффера и по последнему байту переданного сообшения сбрасывать rts.
- второй вариант немного кривоват - измеряется количество байтов в посланном пакете , пакет посылается и сразу же стартует таймер (надо изпользовать мултимедийный - он дает 1-3 миллисекунды разрешения нежели другие). По таймауту - сбрасывать rts. Кривизна этого метода заключается в том что неизвестно точное время начала передачи пакета .


--------------------
Зачем лаять на караван , когда на него можно плюнуть?

Go to the top of the page
 
+Quote Post
Леонид Иванович
сообщение Aug 9 2006, 10:22
Сообщение #49


Местный
***

Группа: Участник
Сообщений: 318
Регистрация: 21-07-06
Из: Минск
Пользователь №: 18 986



Цитата(_artem_ @ Aug 9 2006, 12:29) *
(надо изпользовать мултимедийный - он дает 1-3 миллисекунды разрешения нежели другие)


PerformanceCounter даёт еще лучше разрешение - обычно не хуже микросекунды. Но что толку? Пожалуй, единственным приемлемым решением является использование режима RTS_TOGGLE, а в подчиненном устройстве делать задержку перед передачей ответа в PC.


--------------------
Go to the top of the page
 
+Quote Post
_VoRoN_
сообщение Aug 9 2006, 11:35
Сообщение #50


Участник
*

Группа: Новичок
Сообщений: 47
Регистрация: 3-07-06
Из: Россия, Краснодар
Пользователь №: 18 530



Цитата(_Sam_ @ Aug 9 2006, 12:59) *
Цитата
Все, зарубили идею, а ведь почти получилось Для переключения использовать МК - распоряжение начальства. Теперь все с начала...

Ну начальство можно и убедить или в крайнем случае слегка обмануть smile.gif Просто если делать на МК необходимо будет и протокол несколько переписать. Перед началом обмена передавать несколько синхронизирующих байт по которым ваш МК определит скорость с которой будет вестись передача.
Или добавить в протокол команды для МК, которые будут передаваться всегда на фиксированной скорости, и в них указывать скорость с которой будет вестись передача.

На сотнях метрах и больших скоростях я схему без контроллера не пробовал, но на 30метрах 1мегабит с растяжками по 690Ом будет работать 100% в условиях помех(у меня сейчас под 100 реле без искрогасящих цепочек и электродвигатель на 3кВт). Я смотрел сигналы до 485 и после линии и 485
задержки конечно есть но всего порядка нескольких процентов. Реализовать эту схему гораздо проще и быстрее.
Неужели ваше начальство не может вам лишние два часа выделить, чтобы вы во всём до конца разобрались?

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

Кстати если сигнал просаживается хоть МК ставьте хоть ещё один PC всё равно будет криво работать!
Проверить работоспособность всей линии в целом можно следующим образом:
сигнал до передающего 485 должен совпадать с сигналом после принимающего rs485.


Работать должно на расстоянии до 1024 м., для того чтобы использовать схему без МК, потребуются длительные испытания ее работоспособности.
Да, МК - это конечно не самое простое решение, но все же в данном случает другого ничего не остается, так что придется выкручиваться. Идеи есть, но вот только на выбранном ранее МК реализовать их не получится, что не может не огорчать. Причиной этому, как показала практика, оказалось время реакции на внешние прерывания, которое оказалось больше периода сигнала на скорости 115200, в рез-те чего "съедалось" нало слова. На 9600 все работало устойчиво, а на 38400 - с переменным успехом. Это что касается идеи, когда сигнал на передачу устанавливается с началом фрейма и удерживается на время его прохождения.
Если говорить о варианте использования МК в качестве буффера, т.е. принимая передаваемые данные и "выплевывая" их затем в линию, используя 3-й режим UART, со скоростью, задаваемой таймером, то тут опять же облом, т.к. обеспечить скорость 115200 при частоте кварца 24 МГц при помощи Т1 просто невозможно. Для таких скоростей надо использовать Т2, который в 4051 просто отсутсвует, поэтому пришлось переходить на 8252.
Go to the top of the page
 
+Quote Post
_artem_
сообщение Aug 10 2006, 09:05
Сообщение #51


учащийся
*****

Группа: Свой
Сообщений: 1 065
Регистрация: 29-10-05
Из: города контрастов
Пользователь №: 10 249



Цитата(Леонид Иванович @ Aug 9 2006, 13:22) *
Цитата(_artem_ @ Aug 9 2006, 12:29) *
(надо изпользовать мултимедийный - он дает 1-3 миллисекунды разрешения нежели другие)


PerformanceCounter даёт еще лучше разрешение - обычно не хуже микросекунды. Но что толку? Пожалуй, единственным приемлемым решением является использование режима RTS_TOGGLE, а в подчиненном устройстве делать задержку перед передачей ответа в PC.

А Вы измеряли задержку переключения RTS для toggle mode ? Мне почему то показалось что он медленно переключался после окончания передачи .


--------------------
Зачем лаять на караван , когда на него можно плюнуть?

Go to the top of the page
 
+Quote Post
Леонид Иванович
сообщение Aug 11 2006, 06:58
Сообщение #52


Местный
***

Группа: Участник
Сообщений: 318
Регистрация: 21-07-06
Из: Минск
Пользователь №: 18 986



Цитата(_artem_ @ Aug 10 2006, 12:05) *
А Вы измеряли задержку переключения RTS для toggle mode ? Мне почему то показалось что он медленно переключался после окончания передачи .


Верно, медленно. Но другого решения не видно. Придется делать задержку перед ответом слэйва.


--------------------
Go to the top of the page
 
+Quote Post
_artem_
сообщение Aug 11 2006, 08:51
Сообщение #53


учащийся
*****

Группа: Свой
Сообщений: 1 065
Регистрация: 29-10-05
Из: города контрастов
Пользователь №: 10 249



А можете ли Вы попробовать держать RX 485 драйвера в полудуплексном режиме все время рабочим и после передачи пакета сразу же принять оные
до последнего байта а затем быстро переключить rts. У меня меньше миллисекунды задежка была . Интересно это особенности моей машины или обшее правило.

Насчет Performance counter если его подобие для стандартного API а не NET framework С# или VB ?


--------------------
Зачем лаять на караван , когда на него можно плюнуть?

Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 21st July 2025 - 13:52
Рейтинг@Mail.ru


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