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

 
 
4 страниц V  < 1 2 3 4 >  
Reply to this topicStart new topic
> Посоветуйте в выборе протокола
Семён
сообщение Jul 20 2006, 07:03
Сообщение #31


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

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



Цитата(pokos @ Jul 20 2006, 10:55) *
Цитата(xemul @ Jul 19 2006, 18:51) *

Физический уровень - наверное, токовая петля с оптроном.

Именно. А по ней старый добрый манчестерский код. Нестабильность частоты 40% - абсолютно по барабану.

Принимал как то манчестерский код с карт. Без кварцевой стабилизации как-то коряво работало. Может что-то не то делал? Хотя с кварцем устройство выпускается серийно.


--------------------
Тяжелое детство - 8-битные игрушки на 8-дюемовых дискетах
Go to the top of the page
 
+Quote Post
pokos
сообщение Jul 20 2006, 07:16
Сообщение #32


Местный
***

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



Цитата(Семён @ Jul 20 2006, 11:03) *
Без кварцевой стабилизации как-то коряво работало.

Даже совсем тупой алгоритм с наглухо зашитыми параметрами вполне устойчив к разнице скоростей, поскольку синхрится каждый бит. Есть и более сложные способы, например, синхриться надо не по единственному фронту, а по нескольким усреднённым.
Товарищ как-то давно написал читалку с магнитофона для Радио-86РК, так ленту можно было пальцем подтормаживать на ходу, до определённого предела сбоев не было.
Go to the top of the page
 
+Quote Post
vesago
сообщение Jul 20 2006, 07:31
Сообщение #33


Тутэйшы
****

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



На работе есть сетевой доступ. В этой системе связь между контроллерами по двум проводам - общий и сигнальный. Связь на километр на скорости 9600. Схема примитивная - вроде той, что выше приводилось. Сляпана на транзисторах. К компу подключается через конвертер тоже на рассыпухе. Я его ковырял через конвертер 485/232 адам. Питание общее, к сигнальному проводу подключал + 485, - в воздухе. Кажется это называется токовая петля. Наверное и вам надо вроде того сделать. Приятнее все-таки с уартом работать.
Go to the top of the page
 
+Quote Post
Igor26
сообщение Jul 20 2006, 07:35
Сообщение #34


Знающий
****

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



Цитата
Поищу, интересно

DS2480 называются. 150 метров по витой паре работает, проверено.
Go to the top of the page
 
+Quote Post
yung
сообщение Jul 20 2006, 07:39
Сообщение #35


Местный
***

Группа: Свой
Сообщений: 207
Регистрация: 25-03-05
Из: Рязань
Пользователь №: 3 669



Цитата(Семён @ Jul 19 2006, 16:17) *
Цитата(yung @ Jul 19 2006, 16:12) *

Мне эта мысль тоже нравится. Единственное "но" - использование внутренних генераторов - нестабильность частоты. Эта тема, кстати, обсуждается на форуме.
И еще. Лет 10 назад я использовал собственный протокол - передача бит осуществляется положительным импульсом, тактирование - отрицательным. Под командой может подразумеваться завершение передачи байта информации (например, два информационных импульса перед синхроимпульсом), либо байта команды (скажем, три импульса). Линия связи строго говоря потенциальная, но со стороны приемника стоят два оптрона - один для положит. полуволны, другой для отрицательной. Перед ними токоограничительный резистор. Эта реализация хороша тем, что нет жестких временных ограничений - скорость со стороны мастера можно изменять. Дешифрация довольно проста даже с использованием жесткой логики (10 лет, однако). Насколько мне известно, системы с применением этого протокола до сих пор выпускаются. Я в свое время по объектам покатался (бензоколонки, нефтедобыча и пр.) - проблем со сбоями не было.

ИМХО:Идея хорошая, но требует двухполярного источника питания, а это не всегда удобно и всегда дороже.


В моем протоколе требуется три состояния линии. Можно использовать 0, 1 и Z-состояние. Схема приемо-передачи может выглядеть следующим образом. При Z-состоянии мастера оба транзистора приемника открыты, а при появлении 1 или 0 один из них закроется.
Эскизы прикрепленных изображений
Прикрепленное изображение
 
Go to the top of the page
 
+Quote Post
Семён
сообщение Jul 20 2006, 07:45
Сообщение #36


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

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



Цитата(pokos @ Jul 20 2006, 11:16) *
Цитата(Семён @ Jul 20 2006, 11:03) *
Без кварцевой стабилизации как-то коряво работало.

Даже совсем тупой алгоритм с наглухо зашитыми параметрами вполне устойчив к разнице скоростей, поскольку синхрится каждый бит. Есть и более сложные способы, например, синхриться надо не по единственному фронту, а по нескольким усреднённым.
Товарищ как-то давно написал читалку с магнитофона для Радио-86РК, так ленту можно было пальцем подтормаживать на ходу, до определённого предела сбоев не было.

Спорить не буду, так как писал эту вещь более двух лет назад. Просто приведу пример приема 9 единиц. Для справки это прием хендера (начало передачи).

;////////Инициализация/////////////


ldi temp,TICK_1d2_T;
mov t_c_1d2,temp

ldi temp,TICK_1d3_T;
mov t_c_1d3,temp

ldi temp,8
mov N_start_bit,temp

ldi temp,Fd64
mov del_fr64,temp
clr StopTimer

clr count_N
start_9bit:

rcall ResetTimer0
clr count


;//////9 Start_Bit/////////////////

nach0:
sbic PINB,_OUT
rjmp nach0
nach1:
sbis PINB,_OUT
rjmp nach1

wait0:
out TCNT0,t_c_1d2
out TCCR0B,del_fr64
t3d4:
in temp,TIFR
sbrs temp,1
rjmp t3d4
semNew:
rcall ClearTimer0
sbic PINB,_OUT
rjmp tart_9bit

wait1:
out TCNT0,t_c_1d3
t1d2:
sbic PINB,_OUT
rjmp add_count

in temp,TIFR
sbrs temp,1
rjmp t1d2
sem_tnd:
rjmp start_9bit

add_count:
out TCCR0B,StopTimer

in temp_sem,TCNT0
cpi temp_sem,0Xd0
brlo sem_tnd

inc count
cpse count,N_start_bit
rjmp wait0

;////End 9 Start-Bit////////////
;---------------------------------
ResetTimer0:

ldi temp,0
out TCCR0B,temp

in temp,TIFR
sbrs temp,1
rjmp timer0_noFull

ori temp,2
out TIFR,temp

sbrs temp,7
rjmp NoFullT1_2

andi temp,0b11111101;
out TIFR,temp
NoFullT1_2:

timer0_noFull:

ret
ClearTimer0:

in temp,TIFR
ori temp,2
out TIFR,temp

sbrs temp,7
rjmp NoFullT1_1

andi temp,0b11111101;
out TIFR,temp

NoFullT1_1:

ret
Давно хотел переписать данный код. Останавливает лишь то, что с кварцем работает без нареканий.



Цитата(yung @ Jul 20 2006, 11:39) *
В моем протоколе требуется три состояния линии. Можно использовать 0, 1 и Z-состояние. Схема приемо-передачи может выглядеть следующим образом. При Z-состоянии мастера оба транзистора приемника открыты, а при появлении 1 или 0 один из них закроется.

Будет время обязательно попробую


--------------------
Тяжелое детство - 8-битные игрушки на 8-дюемовых дискетах
Go to the top of the page
 
+Quote Post
Woodoo
сообщение Jul 20 2006, 18:20
Сообщение #37


Участник
*

Группа: Участник
Сообщений: 31
Регистрация: 26-05-05
Из: Севастополь
Пользователь №: 5 391



Цитата(yung @ Jul 19 2006, 14:12) *
И еще. Лет 10 назад я использовал собственный протокол - передача бит осуществляется положительным импульсом, тактирование - отрицательным. Под командой может подразумеваться завершение передачи байта информации (например, два информационных импульса перед синхроимпульсом), либо байта команды (скажем, три импульса). Линия связи строго говоря потенциальная, но со стороны приемника стоят два оптрона - один для положит. полуволны, другой для отрицательной. Перед ними токоограничительный резистор. Эта реализация хороша тем, что нет жестких временных ограничений - скорость со стороны мастера можно изменять. Дешифрация довольно проста даже с использованием жесткой логики (10 лет, однако). Насколько мне известно, системы с применением этого протокола до сих пор выпускаются. Я в свое время по объектам покатался (бензоколонки, нефтедобыча и пр.) - проблем со сбоями не было.[attachment=6344:attachment]


Уж очень похоже Ваш метод кодирование на RZ (with Return to Zero)...
Go to the top of the page
 
+Quote Post
Pyku_He_oTTyda
сообщение Jul 21 2006, 05:08
Сообщение #38


Профессионал
*****

Группа: Свой
Сообщений: 1 751
Регистрация: 4-08-05
Из: Великие Луки
Пользователь №: 7 360



Cпасибо за ответы!
Пока выбрал для себя три пути:
1. 4 кнопки и весовые резисторы
2. ширина шим
3. собственный протокол на основе вышеизложенного, калиброватся в начале каждой посылки

попробую в макете что себя ведет и как


--------------------
Андрей Смирнов
Go to the top of the page
 
+Quote Post
Семён
сообщение Jul 21 2006, 13:31
Сообщение #39


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

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



>>4 кнопки и весовые резисторы
порочный путь для промышленного оборудования. Учитывай, что кнопки не идеальны и постепенно окисляются и меняют свое сопротивление, механика разбалтывается тем самым, увеличивая дребезг. То, что хорошо работала на столе через год эксплуатации может начать вести себя не как ты рассчитывал. С кнопками однозначно нужно работать: есть контакт, нет контакта.


--------------------
Тяжелое детство - 8-битные игрушки на 8-дюемовых дискетах
Go to the top of the page
 
+Quote Post
xemul
сообщение Jul 21 2006, 15:18
Сообщение #40



*****

Группа: Свой
Сообщений: 1 928
Регистрация: 11-07-06
Пользователь №: 18 731



Цитата(Pyku_He_oTTyda @ Jul 21 2006, 09:08) *
Cпасибо за ответы!
Пока выбрал для себя три пути:
1. 4 кнопки и весовые резисторы

И это все в длинную линию? Глюков будет...
Цитата
2. ширина шим
3. собственный протокол на основе вышеизложенного, калиброватся в начале каждой посылки

имхо, все-таки стОит попробовать использовать аппаратные ресурсы контроллера (USART:)). Хотя хозяин - барин.
Если очень хочется использовать ШИМ, можно толкать в USART на передачу, например, 0xe0/0xfe как 0/1, не обращать внимания при приеме на ошибки и пытаться понять, на что принятое больше похоже - на 0xe0 или на 0xfe.
Но с периодической калибровкой слейва, по-моему, проще.
Go to the top of the page
 
+Quote Post
bbill
сообщение Jul 21 2006, 22:10
Сообщение #41


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

Группа: Участник
Сообщений: 76
Регистрация: 21-10-05
Пользователь №: 9 941



Полностью согласен с Семеном, кнопки замкнут-разомкнут.
Столкнулся в устройстве, когда при передаче, после "0" старт-бита находился бит установленный в "1". Его можно использовать для калибровки по длительности в очень широких пределах. Все стабильно работает на линиях до 150 м. Алгоритм приема 7 каналов мне подсказал defunct в начале июня.
Обязательна оптронная развязка, иначе по землям будет хаос. И не забудьте про грозы, на длинных линиях...
Go to the top of the page
 
+Quote Post
Семён
сообщение Jul 24 2006, 07:05
Сообщение #42


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

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



Цитата(xemul @ Jul 21 2006, 19:18) *
Цитата(Pyku_He_oTTyda @ Jul 21 2006, 09:08) *

Cпасибо за ответы!
Пока выбрал для себя три пути:
1. 4 кнопки и весовые резисторы

И это все в длинную линию? Глюков будет...
Цитата
2. ширина шим
3. собственный протокол на основе вышеизложенного, калиброватся в начале каждой посылки

имхо, все-таки стОит попробовать использовать аппаратные ресурсы контроллера (USART:)). Хотя хозяин - барин.
Если очень хочется использовать ШИМ, можно толкать в USART на передачу, например, 0xe0/0xfe как 0/1, не обращать внимания при приеме на ошибки и пытаться понять, на что принятое больше похоже - на 0xe0 или на 0xfe.
Но с периодической калибровкой слейва, по-моему, проще.

Используя ШИМ мы также используем аппаратные возможности: Со стороны мастера просто программируем ШИМ и просим его поработать какое-то время. Со стороны ведомого используем таймер с функцией захвата. На мой взгляд, самая простая реализация.


--------------------
Тяжелое детство - 8-битные игрушки на 8-дюемовых дискетах
Go to the top of the page
 
+Quote Post
Itch
сообщение Jul 24 2006, 21:25
Сообщение #43


Местный
***

Группа: Свой
Сообщений: 358
Регистрация: 27-06-06
Из: Новосибирск
Пользователь №: 18 410



А если команд требуется не всего 4, то не проще ли использовать UART. Передавать информацию надо только в первом полубайте, второй полубайт - нули. За 4 бита ошибка не успеет набежать. Можно ввести контроль четности - 2бита - команда, оставшиеся 2 - их инверсия и т.п.
Go to the top of the page
 
+Quote Post
Pyku_He_oTTyda
сообщение Aug 1 2006, 12:57
Сообщение #44


Профессионал
*****

Группа: Свой
Сообщений: 1 751
Регистрация: 4-08-05
Из: Великие Луки
Пользователь №: 7 360



Заказчик настаивает на резистивном методе, переубедить пока не удается... у них так было уже сделано взамен проводного пульта ДУ от видеокамеры Панасоник. Утверждают, что проблем и глюков не было.
Чтож, прогу написал, макет собрал, в комнате работает без нареканий.
Гальванической развязки тоже не получается, не хватает проводов в кабелеsad.gif Перед МК поставил ЛМ258, включенную как повторитель, по входу защитил диодами и стабилитроном, между первой и второй половинкой ОУ RC-фильтр.
Буду ждать испытаний, что они покажутsmile.gif

Кстати, а как правильно расчитать "ворота" значений АЦП для каждой команды? Пока используются "четверинки". Это выглядит так:
к примеру первая команда - 1 вольт, вторая - 2 вольта, третья - 3 вольта. Для второй команды я выделил диапазон напряжений от 1,75 В до 2,25 В.
А существуют какие либо правила для расчета значений в моем случае?


--------------------
Андрей Смирнов
Go to the top of the page
 
+Quote Post
cyclop
сообщение Aug 5 2006, 20:06
Сообщение #45


Участник
*

Группа: Свой
Сообщений: 55
Регистрация: 29-01-05
Из: Moscow
Пользователь №: 2 291



Цитата(Pyku_He_oTTyda @ Aug 1 2006, 16:57) *
Заказчик настаивает на резистивном методе, переубедить пока не удается...
Гальванической развязки тоже не получается, не хватает проводов в кабеле

Консерватизм заказчика понятен: мол, зачем платить за новое решение, когда старое работает.
Мне представляется, что ЦАПовое решение неверно по трём причинам.
1. Важные параметры физического уровня - размах логического сигнала, помехозащитность, помехоустойчивость - всё перечёркивается этим решением. И это в то время, когда задача позволяет вместо амплитудной модуляции проводить ЧМ или ФМ(ШИМ). Ведь по быстродействию у вас запаса "вагон и маленькая тележка". Примените хотя бы такое кодирование ЧМ: "0" одной частотой, "1" - отличающейся в несколько раз. А можно и каждой кнопке дать свою частоту.
2. Передавать на 100 метров без гальванической развязки - это не есть хорошо. Решение проблемы - копеечный оптрон на приёмной стороне.
3. Невозможность расширения.
На 100 метров и при малой зашумлённости линии я бы не стал связываться с передачей аналогового сигнала, но если иначе, то вот такое видится решение. Сразу скажу - сложная реализация.
Итак, вы порождаете синусоидальные сигналы двух частот - для "0" и "1" (или свою для каждой кнопки). Можете использовать для этого AVR и ЦАП, либо воспользоваться отдельными генераторами. На приёмной стороне - распознавание частот. Ну тут есть где развернуться: либо в лоб с помощью триггера Шмитта и далее посчитать наполнение периода входного сигнала своей внутренней частотой, либо фильтры, либо АЦП и алгоритм БПФ.
Решать вам, но я бы отказался от ЦАПового варианта: он может преподнести "сюрприз", особенно если вспомнить о дестабилизирующих факторах - отклонении питания и изменении температуры.
P.S. Писал по памяти, а теперь только увидел, что выделяют вам в кабеле 1 провод, а это, по-моему, должно означать, что "общий" вы разделяете с кем-то ещё и тогда о гальванической развязке речи нет, т.к. этот кто-то скорее всего обошёлся без неё.

Сообщение отредактировал cyclop - Aug 5 2006, 20:31
Go to the top of the page
 
+Quote Post

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

 


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


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