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

 
 
2 страниц V   1 2 >  
Reply to this topicStart new topic
> Устройство на 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
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
rezident
сообщение Aug 25 2009, 14:54
Сообщение #3


Гуру
******

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



Если "это" интерфейс связи типа RS485, то очевидно, что проблема где-то в реализации протокола и/или управлении направлением драйвера RS485 или таймингами, связанными с этим процессом.
Go to the top of the page
 
+Quote Post
xoz
сообщение Aug 25 2009, 16:14
Сообщение #4





Группа: Участник
Сообщений: 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
_Pasha
сообщение Aug 25 2009, 16:24
Сообщение #5


;
******

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



Цитата(xoz @ Aug 25 2009, 19:14) *
С таймингами я довольно долго игрался wacko.gif

У Вас там коллизии случайно не случилось? smile.gif
Go to the top of the page
 
+Quote Post
rezident
сообщение Aug 25 2009, 16:30
Сообщение #6


Гуру
******

Группа: Свой
Сообщений: 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
Сообщение #7





Группа: Участник
Сообщений: 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
Сообщение #8


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
Сообщение #9





Группа: Участник
Сообщений: 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
=AK=
сообщение Aug 26 2009, 05:24
Сообщение #10


pontificator
******

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



Цитата(xoz @ Aug 26 2009, 14:15) *
Определены командные символы

Каким образом ведомый отличает " командные символы" от данных? Почему бы ведомому не отреагировать на данные, передаваемые от другого ведомого мастеру, таким же образом, как на команды от мастера - и не начать самому передавать данные?
Go to the top of the page
 
+Quote Post
_Pasha
сообщение Aug 26 2009, 05:37
Сообщение #11


;
******

Группа: Участник
Сообщений: 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
Сообщение #12


pontificator
******

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



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

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


Гуру
******

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



Цитата(xoz @ Aug 26 2009, 07:45) *
Определены командные символы

Кодовая таблица ASCII существует десятки лет, STX, ETX,ETB давно определены и стандартизованы европейскими стандартами.
Обертка пакета тоже давно устоялась.
Но "мы пойдем другим путем!" "Какую будем делать ширину ЖД?"


--------------------
Уходя, оставьте свет...
Go to the top of the page
 
+Quote Post
=AK=
сообщение Aug 26 2009, 06:50
Сообщение #14


pontificator
******

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



Цитата(Dog Pawlowa @ Aug 26 2009, 15:31) *
Кодовая таблица ASCII существует десятки лет, STX, ETX,ETB давно определены и стандартизованы европейскими стандартами.
Обертка пакета тоже давно устоялась.

Обертка пакета и коды символов - это мелкие "рюшечки", та малая составляющая протокола, которая мало на что влияет. Если у топикстартера фундаментальная проблема с протоколом, то смена этих рюшечек ему точно совсем никак не поможет.
Go to the top of the page
 
+Quote Post
SSerge
сообщение Aug 26 2009, 07:22
Сообщение #15


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

Группа: Свой
Сообщений: 1 719
Регистрация: 13-09-05
Из: Novosibirsk
Пользователь №: 8 528



Цитата(Dog Pawlowa @ Aug 26 2009, 12:01) *
"Какую будем делать ширину ЖД?"

Как в Модбасе?
или на 89 миллиметров шире?


--------------------
Russia est omnis divisa in partes octo.
Go to the top of the page
 
+Quote Post

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

 


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


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