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

 
 
4 страниц V  < 1 2 3 4 >  
Reply to this topicStart new topic
> Нужна свежая идея...
Сергей Борщ
сообщение 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

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

 


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


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