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

 
 
> Устройство на RS485 странное поведение
xoz
сообщение Aug 25 2009, 13:48
Сообщение #1





Группа: Участник
Сообщений: 14
Регистрация: 22-12-08
Пользователь №: 42 655



Доброго времени суток!!!
Есть устройство, описание приведено в прикрепленном файле. И ведет себя немножко странно:
Если в сети подключено одно устройство все работает как на алгоритме и без сбоев. Стоит подключить второе устройство оба устройства перестают отвечать. Но если посылать команды то они выполняются.
На данный момент у меня нет устройства чтоб подключить к сети для мониторинга и поэтому что творится на линии не знаю. Посоветуйте в какую сторону копать.

Сообщение отредактировал xoz - Aug 25 2009, 13:50
Эскизы прикрепленных изображений
Прикрепленное изображение
 
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
DpInRock
сообщение Aug 25 2009, 13:53
Сообщение #2


Гуру
******

Группа: Участник
Сообщений: 2 254
Регистрация: 4-05-07
Из: Moscow
Пользователь №: 27 515



Цитата
описание

Это не описание. Вы ошиблись.


--------------------
On the road again (Canned Heat)
Go to the top of the page
 
+Quote Post
xoz
сообщение Aug 25 2009, 16:14
Сообщение #3





Группа: Участник
Сообщений: 14
Регистрация: 22-12-08
Пользователь №: 42 655



Цитата(DpInRock @ Aug 25 2009, 18:53) *
Это не описание. Вы ошиблись.

Безпроблем! Можно называть это как угодно biggrin.gif главное я думаю суть понятна.

to rezident: Да это как раз таки на ADM 485 реализовано. С таймингами я довольно долго игрался wacko.gif
Наверно придется собрать чтонить анализирующее линию.
Go to the top of the page
 
+Quote Post
rezident
сообщение Aug 25 2009, 16:30
Сообщение #4


Гуру
******

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



Цитата(xoz @ Aug 25 2009, 22:14) *
С таймингами я довольно долго игрался wacko.gif
Наверно придется собрать чтонить анализирующее линию.
А какой протокол вы используете? Адресация в нем присутствует? Если да, то анализировать линию нет смысла. Оба/все ведомые принимают любой пакет/запрос, но отвечают только в том случае, если сетевой адрес в пакете совпадает с их собственным.
По поводу таймингов могу подсказать, что ведущий должен иметь два настраиваемых параметра:
а) время ожидания ответа ведомого (в него входит время, необходимое для передачи пакета запроса)
б) минимальное время перед началом передачи запроса
Соответственно у ведомого параметры:
а) максимальное время подготовки ответа (от получения запроса до начала передачи пакета ответа)
б) минимальное время перед началом передачи запроса
Дополнительные параметры для обоих (и ведущего и ведомого)
а) время между переключением трансивера RS485 на передачу и собственно началом передачи пакета
б) время удержания трансивера RS485 в режиме передачи после окончания передачи пакета
Реализовав все перечисленные опции, вы сможете поддержать почти любой используемый в сетях RS485 протокол связи типа "запрос-ответ".
Go to the top of the page
 
+Quote Post
xoz
сообщение Aug 25 2009, 21:22
Сообщение #5





Группа: Участник
Сообщений: 14
Регистрация: 22-12-08
Пользователь №: 42 655



Цитата(rezident @ Aug 25 2009, 21:30) *
А какой протокол вы используете? Адресация в нем присутствует? Если да, то анализировать линию нет смысла. Оба/все ведомые принимают любой пакет/запрос, но отвечают только в том случае, если сетевой адрес в пакете совпадает с их собственным.
По поводу таймингов могу подсказать, что ведущий должен иметь два настраиваемых параметра:
а) время ожидания ответа ведомого (в него входит время, необходимое для передачи пакета запроса)
б) минимальное время перед началом передачи запроса
Соответственно у ведомого параметры:
а) максимальное время подготовки ответа (от получения запроса до начала передачи пакета ответа)
б) минимальное время перед началом передачи запроса
Дополнительные параметры для обоих (и ведущего и ведомого)
а) время между переключением трансивера RS485 на передачу и собственно началом передачи пакета
б) время удержания трансивера RS485 в режиме передачи после окончания передачи пакета
Реализовав все перечисленные опции, вы сможете поддержать почти любой используемый в сетях RS485 протокол связи типа "запрос-ответ".

Да там адресация присутствует.
реализовывал следующим путем(так как только учусь пожалуйста не пинайте)
Расчитал примерное время передачи самого длинного пакета, создал таймер с запасом(период в 2 раза больше времени посылки) и действия разбил по "тик"ам таймера.
Ведущий
1 тик включаю на передачу
2 тик передаю данные
3 тик включаю на прием
4 тик ожидаю данные и отсылаю на обработку
5 тик включаю на передачу

Ведомый
1. включаю на прием жду приема
2. если запрос для меня запускаю таймер
3. 1 тик включаю на передачу
4. 2 тик передаю
5. 3 тик включаю на прием отключаю таймер

Это все без проблем работает если один ведомый

Но скорей всего мне надо будет пересмотреть весь алгоритм maniac.gif
Go to the top of the page
 
+Quote Post
=AK=
сообщение Aug 26 2009, 03:42
Сообщение #6


pontificator
******

Группа: Свой
Сообщений: 3 055
Регистрация: 8-02-05
Из: страны Оз
Пользователь №: 2 483



Цитата(xoz @ Aug 26 2009, 06:52) *
Да там адресация присутствует.
...
Это все без проблем работает если один ведомый

Расскажите, как реализована адресация.

Kаким образом ведомый знает, что текущая передача идет от мастера, а не от второго ведомого?
Go to the top of the page
 
+Quote Post
xoz
сообщение Aug 26 2009, 04:45
Сообщение #7





Группа: Участник
Сообщений: 14
Регистрация: 22-12-08
Пользователь №: 42 655



Цитата(=AK= @ Aug 26 2009, 08:42) *
Расскажите, как реализована адресация.

Определены командные символы
#define REDY 0xFE //запрос на состояние
#define REPLY 0xF0 //ответ от ведомого
#define COMMAND 0xF5//команда
#define END 0xFA //конец передачи

Запрос на состояние: REDY (адрес 1 байт) END
Ответ от ведомого: REPLY (адрес 1 байт) (данные)END
Команда: COMMAND(адрес 1 байт)(тип действия 2 байта) END

скорость передачи 9600
Максимальная длина пакетов 9 байт
Go to the top of the page
 
+Quote Post
_Pasha
сообщение Aug 26 2009, 05:37
Сообщение #8


;
******

Группа: Участник
Сообщений: 5 646
Регистрация: 1-08-07
Пользователь №: 29 509



Цитата(xoz @ Aug 26 2009, 07:45) *
скорость передачи 9600
Максимальная длина пакетов 9 байт

ПримИте такой протокол
Код
<адрес вызываемого> <длина пакета> <адрес вызывающего> <команда/статус> [данные] <crc8>

И не мучайтесь smile.gif
Мин размер пакета 5 байт
Go to the top of the page
 
+Quote Post
=AK=
сообщение Aug 26 2009, 05:53
Сообщение #9


pontificator
******

Группа: Свой
Сообщений: 3 055
Регистрация: 8-02-05
Из: страны Оз
Пользователь №: 2 483



Цитата(_Pasha @ Aug 26 2009, 15:07) *
ПримИте такой протокол

Непонятно, чем он принципиально лучше. Для него остается в силе мой вопрос: что гарантирует отсутствие ложной реакции ведомого на данные, передаваемые другим ведомым?
Go to the top of the page
 
+Quote Post
_Pasha
сообщение Aug 26 2009, 11:13
Сообщение #10


;
******

Группа: Участник
Сообщений: 5 646
Регистрация: 1-08-07
Пользователь №: 29 509



Цитата(=AK= @ Aug 26 2009, 08:53) *
Непонятно, чем он принципиально лучше.

Тьфу! Забыл. Там был 9-битный протокол. Адрес, соотв. с 9-битом == 1.

Цитата
Для него остается в силе мой вопрос: что гарантирует отсутствие ложной реакции ведомого на данные, передаваемые другим ведомым?

Адрес получателя.
Go to the top of the page
 
+Quote Post
=AK=
сообщение Aug 26 2009, 12:33
Сообщение #11


pontificator
******

Группа: Свой
Сообщений: 3 055
Регистрация: 8-02-05
Из: страны Оз
Пользователь №: 2 483



Цитата(_Pasha @ Aug 26 2009, 20:43) *
Тьфу! Забыл. Там был 9-битный протокол. Адрес, соотв. с 9-битом == 1.

Вот с этого и надо было начинать. Тогда, действительно, ваш протокол вполне работоспособен. Для полного счастья ему не хватает только преабулы перед первым байтом (адресом) и жестко оговоренных таймаутов smile.gif
Go to the top of the page
 
+Quote Post
_Pasha
сообщение Aug 26 2009, 12:42
Сообщение #12


;
******

Группа: Участник
Сообщений: 5 646
Регистрация: 1-08-07
Пользователь №: 29 509



Цитата(=AK= @ Aug 26 2009, 15:33) *
Для полного счастья ему не хватает только преабулы перед первым байтом (адресом) и жестко оговоренных таймаутов smile.gif

Таймаут общий за счет того, что слейвы обязаны ответить.
А про прембулу перед адресом - не понял, зачем?
ЗЫ: в первом посте о протоколе - забыл отдельно сказать, что слейв отвечает так же, только вместо команды выдает статус
Код
<адрес> <длина пакета> <адрес отправителя> <статус> [данные] <CRC8>

ЗЗЫ: адрес общего вызова 0х00. Если пакет подписан адресом отправителя 0х00, то на него никто из слейвов не имеет права отвечать.
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- xoz   Устройство на RS485 странное поведение   Aug 25 2009, 13:48
|- - _Pasha   Цитата(xoz @ Aug 25 2009, 19:14) С таймин...   Aug 25 2009, 16:24
|- - =AK=   Цитата(xoz @ Aug 26 2009, 14:15) Определе...   Aug 26 2009, 05:24
||- - =AK=   Цитата(_Pasha @ Aug 26 2009, 22:12) Тайма...   Aug 26 2009, 12:51
|- - Dog Pawlowa   Цитата(xoz @ Aug 26 2009, 07:45) Определе...   Aug 26 2009, 06:01
|- - =AK=   Цитата(Dog Pawlowa @ Aug 26 2009, 15:31) ...   Aug 26 2009, 06:50
||- - Dog Pawlowa   Цитата(=AK= @ Aug 26 2009, 09:50) Если у ...   Aug 26 2009, 09:14
||- - MrYuran   Цитата(Dog Pawlowa @ Aug 26 2009, 13:14) ...   Aug 26 2009, 09:34
|||- - Dog Pawlowa   Цитата(MrYuran @ Aug 26 2009, 12:34) даже...   Aug 26 2009, 10:13
||- - xoz   Цитата(Dog Pawlowa @ Aug 26 2009, 14:14) ...   Aug 26 2009, 10:58
||- - rezident   Цитата(xoz @ Aug 26 2009, 16:58) О каналь...   Aug 26 2009, 12:31
|- - SSerge   Цитата(Dog Pawlowa @ Aug 26 2009, 12:01) ...   Aug 26 2009, 07:22
- - rezident   Если "это" интерфейс связи типа RS485, т...   Aug 25 2009, 14:54
- - DpInRock   Тогда все понятно. Вы делаете сеть. Физический ур...   Aug 26 2009, 07:47
- - Rst7   ЦитатаА про прембулу перед адресом - не понял, зач...   Aug 26 2009, 12:46
- - _Pasha   Спасибо, понятно. Я это давным-давно обозвал ...   Aug 26 2009, 12:55


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

 


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


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