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

 
 
4 страниц V  « < 2 3 4  
Reply to this topicStart new topic
> Нужна свежая идея...
Леонид Иванович
сообщение 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  « < 2 3 4
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


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


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