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

 
 
> Протокол для Rs-485, Какой выбрать?
fredo
сообщение Oct 21 2006, 18:44
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 54
Регистрация: 13-09-06
Пользователь №: 20 357



Подскжите какой лучше протокол использовать для объединения нескольких устройств в сеть через интерфейс RS-485 ??
Всего будет порядка 5 устройств на базе Atmega16, все устройства в сети равноценны.
Go to the top of the page
 
+Quote Post
3 страниц V   1 2 3 >  
Start new topic
Ответов (1 - 34)
rezident
сообщение Oct 21 2006, 19:07
Сообщение #2


Гуру
******

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



Цитата(fredo @ Oct 22 2006, 00:44) *
Подскжите какой лучше протокол использовать для объединения нескольких устройств в сеть через интерфейс RS-485 ??
Всего будет порядка 5 устройств на базе Atmega16, все устройства в сети равноценны.

Для RS-485 лучше всего подходят пакетные протоколы. Т.е. передача происходит по принципу запрос-ответ в пакетном режиме. Посмотрите протоколы типа Wake, Modbus, PiNet.
А вот мультимастер для RS-485 реализуется весьма плохо. Не предназначен он для "равноправного" доступа к линии, т.к. нет простого по реализации механизма обнаружения и устранения коллизий. Потому подумайте как сделать какой-нибудь из ваших МК ведущим, а остальные ведомыми.
Go to the top of the page
 
+Quote Post
Shread
сообщение Oct 29 2006, 12:22
Сообщение #3


иногда заглядывающий
****

Группа: Свой
Сообщений: 900
Регистрация: 18-05-05
Из: Зеленоград
Пользователь №: 5 170



очень рекомендую Modbus, прост в реализации, и удобен
Go to the top of the page
 
+Quote Post
ipc
сообщение Oct 30 2006, 06:27
Сообщение #4


Знающий
****

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



Цитата(Shread @ Oct 29 2006, 16:22) *
очень рекомендую Modbus, прост в реализации, и удобен

Согласен что модбас вещь стоящая но важно не планируется ли в данной сети использовать еще покупные устройства с RS-485 интерфейсом.Если например могут понадобится девайсы типа Adam,ICPCON или Nudam возможно что логичнее быдет реализовать протокол ADAM4000 кстати тоже весьма несложный.
Опять же надо знать какие данные необходимо пересылать,в к примеру модбасе неочень удобно передавать большие или структуированные данные и иногда гораздо проще в таких специфических применениях замутить свой кустарный протокол.
Go to the top of the page
 
+Quote Post
Alex-GTU
сообщение Oct 30 2006, 07:08
Сообщение #5


Знающий
****

Группа: Свой
Сообщений: 587
Регистрация: 23-05-05
Пользователь №: 5 318



Цитата(rezident @ Oct 21 2006, 22:07) *
Цитата(fredo @ Oct 22 2006, 00:44) *

Подскжите какой лучше протокол использовать для объединения нескольких устройств в сеть через интерфейс RS-485 ??
Всего будет порядка 5 устройств на базе Atmega16, все устройства в сети равноценны.

Для RS-485 лучше всего подходят пакетные протоколы. Т.е. передача происходит по принципу запрос-ответ в пакетном режиме. Посмотрите протоколы типа Wake, Modbus, PiNet.
А вот мультимастер для RS-485 реализуется весьма плохо. Не предназначен он для "равноправного" доступа к линии, т.к. нет простого по реализации механизма обнаружения и устранения коллизий. Потому подумайте как сделать какой-нибудь из ваших МК ведущим, а остальные ведомыми.


А почему мультимастер для RS-485 реализуется весьма плохо?

Цитата(ipc @ Oct 30 2006, 09:27) *
Цитата(Shread @ Oct 29 2006, 16:22) *

очень рекомендую Modbus, прост в реализации, и удобен

Согласен что модбас вещь стоящая но важно не планируется ли в данной сети использовать еще покупные устройства с RS-485 интерфейсом.Если например могут понадобится девайсы типа Adam,ICPCON или Nudam возможно что логичнее быдет реализовать протокол ADAM4000 кстати тоже весьма несложный.
Опять же надо знать какие данные необходимо пересылать,в к примеру модбасе неочень удобно передавать большие или структуированные данные и иногда гораздо проще в таких специфических применениях замутить свой кустарный протокол.


И что за ADAM4000? Ссылочку подскажите, пожалуйста.


--------------------
В дебрях коры, в мозговой глубине, стремные мысли пригрезились мне.
Go to the top of the page
 
+Quote Post
ipc
сообщение Oct 30 2006, 08:26
Сообщение #6


Знающий
****

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



Цитата(alex2703 @ Oct 30 2006, 11:08) *
А почему мультимастер для RS-485 реализуется весьма плохо?

И что за ADAM4000? Ссылочку подскажите, пожалуйста.


Мультимастер обеспечивается плохо потому что у RS-485 в один момент времени может быть только один передающий модуль и единственный способ сделать мультимастерность это мудрить с временным разделением передачи(обмениватся токеном или еще как).В том же CANе например два передатчика могут начать передавать одновременно но получится это у того у кого приоритет сообщения выше остальные попробуют передать позже(неразрушающий арбитраж).

А ADAM4000 это название серии модулей фирмы адвантек и их протокол был принят дефакто остальными производителями аналогичных модулей.Что то посмотреть на эту тему можно тут
Go to the top of the page
 
+Quote Post
AndreyVN
сообщение Nov 3 2006, 05:56
Сообщение #7


Знающий
****

Группа: Свой
Сообщений: 754
Регистрация: 29-06-06
Из: Volgograd
Пользователь №: 18 458



Цитата(fredo @ Oct 21 2006, 21:44) *
Подскжите какой лучше протокол использовать для объединения нескольких устройств в сеть через интерфейс RS-485 ??
Всего будет порядка 5 устройств на базе Atmega16, все устройства в сети равноценны.


Не знаю как правильно назвать такой протокол, но счетчики электроэнергии Меркурий, модули IPCON 7017 по протоколу RS-485 и им подобные разговаривают следующим образом:

Запрос: ~АдресУстройстваКомандаЗапроса
Ответ: #АдресУстройстваДанныеОтвета

Все адреса и данные пишутся в ASCII коде, соответственно отлаживать обмен можно из программы терминала.

Сообщение отредактировал AndreyVN - Nov 3 2006, 05:57
Go to the top of the page
 
+Quote Post
ipc
сообщение Nov 3 2006, 06:03
Сообщение #8


Знающий
****

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



Цитата(AndreyVN @ Nov 3 2006, 08:56) *
Цитата(fredo @ Oct 21 2006, 21:44) *

Подскжите какой лучше протокол использовать для объединения нескольких устройств в сеть через интерфейс RS-485 ??
Всего будет порядка 5 устройств на базе Atmega16, все устройства в сети равноценны.


Не знаю как правильно назвать такой протокол, но счетчики электроэнергии Меркурий, модули IPCON 7017 по протоколу RS-485 и им подобные разговаривают следующим образом:

Запрос: ~АдресУстройстваКомандаЗапроса
Ответ: #АдресУстройстваДанныеОтвета

Все адреса и данные пишутся в ASCII коде, соответственно отлаживать обмен можно из программы терминала.


Это и есть ADAM4000.И RS-485 не протокол а интерфейс.
Go to the top of the page
 
+Quote Post
muravei
сообщение Nov 3 2006, 07:01
Сообщение #9


Гуру
******

Группа: Свой
Сообщений: 2 538
Регистрация: 13-08-05
Пользователь №: 7 591



Цитата(AndreyVN @ Nov 3 2006, 08:56) *
Запрос: ~АдресУстройстваКомандаЗапроса
Ответ: #АдресУстройстваДанныеОтвета

А если у меня все совсем просто: один мастер.
Можно так:
Запрос: АдресУстройства
Ответ: ДанныеОтвета
?
Go to the top of the page
 
+Quote Post
ipc
сообщение Nov 3 2006, 07:32
Сообщение #10


Знающий
****

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



Цитата(muravei @ Nov 3 2006, 10:01) *
Цитата(AndreyVN @ Nov 3 2006, 08:56) *

Запрос: ~АдресУстройстваКомандаЗапроса
Ответ: #АдресУстройстваДанныеОтвета

А если у меня все совсем просто: один мастер.
Можно так:
Запрос: АдресУстройства
Ответ: ДанныеОтвета
?


Можно и так только лучше всетаки передавать какойто префикс в начале чтобы знать что данные идут без разрывов.
Go to the top of the page
 
+Quote Post
Miron
сообщение Nov 3 2006, 07:36
Сообщение #11


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

Группа: Validating
Сообщений: 149
Регистрация: 11-02-05
Из: Рязань
Пользователь №: 2 574



Если вы делаете проект одноразовый для одного заказчика
то при наличии времени и желания можно придумать свой
простенький протокол особенно если в линии только один мастер
Если проект будет клонироваться для разных заказчиков
то рекомендую использовать какой нибудь распространненный
протокол (например MODBUS)
Опыт показывает что со своим протоколом жить можно но
со временем это становится сдерживающим фактором для
проталкивания своей продукции на рынок.
Go to the top of the page
 
+Quote Post
Арахис
сообщение Dec 2 2006, 02:47
Сообщение #12


Участник
*

Группа: Свой
Сообщений: 36
Регистрация: 13-11-06
Пользователь №: 22 255



Цитата(Miron @ Nov 3 2006, 07:36) *
Если вы делаете проект одноразовый для одного заказчика
то при наличии времени и желания можно придумать свой
простенький протокол особенно если в линии только один мастер
Если проект будет клонироваться для разных заказчиков
то рекомендую использовать какой нибудь распространненный
протокол (например MODBUS)
Опыт показывает что со своим протоколом жить можно но
со временем это становится сдерживающим фактором для
проталкивания своей продукции на рынок.


Удивительно точно подмечено!
Мы уже 15 лет на рынке. Продали десятки тысяч приборов нескольких десятков типов. Реальные пользователи довольны. И всё равно сейчас прихдится городить встроенные преобразователи в стандартные протоколы исключительно в рекламных целях. Нынче рынком управляют менеджеры со своими красочными картинками и пафосными фразами, а не здравый смысл.

Делайте выводы!
Go to the top of the page
 
+Quote Post
gala
сообщение Jan 18 2007, 10:06
Сообщение #13


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

Группа: Свой
Сообщений: 119
Регистрация: 29-11-05
Из: Украина, Черкассы
Пользователь №: 11 564



Какой выбрать из двух:
1) Wake
2) Modbus

Для задачи:
Master = WinXP/virtualCOM(CP210x+xx485)/C++

Slave (max10)=UART C8051Fxxx :
"текущий" передает данные с АЦП 10-20кБ/сек
"резервные" передают данные вместе до 1кБ/сек
Go to the top of the page
 
+Quote Post
ipc
сообщение Jan 18 2007, 10:25
Сообщение #14


Знающий
****

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



Цитата(gala @ Jan 18 2007, 10:06) *
Какой выбрать из двух:
1) Wake
2) Modbus

Для задачи:
Master = WinXP/virtualCOM(CP210x+xx485)/C++

Slave (max10)=UART C8051Fxxx :
"текущий" передает данные с АЦП 10-20кБ/сек
"резервные" передают данные вместе до 1кБ/сек


Думаю без вариантов это должен быть Wake(или его собственная реализация).Модбас предназначен для других целей и через него крайне неудобно передавать большие или структуированные данные.

Сейчас делаю аналогичный девайс только с FTDI и уже без труда сделана собственная реализация wake.
Go to the top of the page
 
+Quote Post
Alex-GTU
сообщение Jan 18 2007, 21:19
Сообщение #15


Знающий
****

Группа: Свой
Сообщений: 587
Регистрация: 23-05-05
Пользователь №: 5 318



Цитата(ipc @ Jan 18 2007, 10:25) *
Цитата(gala @ Jan 18 2007, 10:06) *

Какой выбрать из двух:
1) Wake
2) Modbus

Для задачи:
Master = WinXP/virtualCOM(CP210x+xx485)/C++

Slave (max10)=UART C8051Fxxx :
"текущий" передает данные с АЦП 10-20кБ/сек
"резервные" передают данные вместе до 1кБ/сек


Думаю без вариантов это должен быть Wake(или его собственная реализация).Модбас предназначен для других целей и через него крайне неудобно передавать большие или структуированные данные.

Сейчас делаю аналогичный девайс только с FTDI и уже без труда сделана собственная реализация wake.



Уважаемый IPC, почему "Модбас предназначен для других целей", а для каких тогда?


--------------------
В дебрях коры, в мозговой глубине, стремные мысли пригрезились мне.
Go to the top of the page
 
+Quote Post
vm1
сообщение Jan 19 2007, 00:38
Сообщение #16


Знающий
****

Группа: Свой
Сообщений: 521
Регистрация: 13-05-05
Из: Москва
Пользователь №: 4 978



И подумайте о поляризации шины,
нужна она Вам или нет.
(Если преамбул нет то нужна)
Go to the top of the page
 
+Quote Post
Прохожий
сообщение Jan 19 2007, 03:18
Сообщение #17


Cундук
*****

Группа: Участник
Сообщений: 1 478
Регистрация: 13-11-06
Из: Ростов-на-Дону
Пользователь №: 22 269



Цитата(alex2703 @ Jan 18 2007, 21:19) *
Уважаемый IPC, почему "Модбас предназначен для других целей", а для каких тогда?

Можно я попробую, если не возражете.
Дело в том, что MODBUS MODBUSу рознь.
Базовым, согласно стандарту считается MODBUS/RTU. Это протокол бинарный без разделительного заголовка и с временнЫм разделением телеграмм. В связи с этим, просто так организовать буферированный ввод/вывод в ПК не выйдет. По документу "MODBUS over Serial Line" именно MODBUS/RTU является обязательным протоколом, а MODBUS/ASCII, телеграмма которого состоит из ASCII символов с разделительным символом в начале и с символами окончания - всего лишь рекомендуемым. Кроме этого длина телеграммы ограничена 247 байтами, хотя в наборе имеются команды передачи данных, разбитых по телеграммам.
Go to the top of the page
 
+Quote Post
rezident
сообщение Jan 19 2007, 03:28
Сообщение #18


Гуру
******

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



Прохожий, вы подстрочным переводчиком при чтении стандарта пользуетесь что ли? А то слово "телеграмма" заменили бы на более привычное "пакет", "пакет данных" все же, а? wink.gif
Go to the top of the page
 
+Quote Post
Прохожий
сообщение Jan 19 2007, 03:44
Сообщение #19


Cундук
*****

Группа: Участник
Сообщений: 1 478
Регистрация: 13-11-06
Из: Ростов-на-Дону
Пользователь №: 22 269



Цитата(rezident @ Jan 19 2007, 03:28) *
Прохожий, вы подстрочным переводчиком при чтении стандарта пользуетесь что ли? А то слово "телеграмма" заменили бы на более привычное "пакет", "пакет данных" все же, а? wink.gif

Ничем я не пользуюсь. Просто, я так привык. Еще с того момента, когда ПЛК S5 только появились в СССР. Хотя можно и пакет. А у Вас откуда привычка к пакетам?
Go to the top of the page
 
+Quote Post
ipc
сообщение Jan 19 2007, 08:52
Сообщение #20


Знающий
****

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



Цитата(alex2703 @ Jan 18 2007, 21:19) *
Уважаемый IPC, почему "Модбас предназначен для других целей", а для каких тогда?


Модбас удобен при стандартизированной передаче отдельных параметров(слов,бит итд).Его применение оправдано при сравнительно небольшом количестве передаваемых данных и наличии нескольких slave устройств в сети.Опять же он является промышленным стандартом и при совместном использовании покупных и кустарных устройств можно задействовать широкий спектр OPC серверов и SCADA систем.Если же требуется передавать поточные данные то более целесообразно использовать что то на подобии wake.имхо.
Как уже было написано выше большие или что важно структуированные данные плохо совмещаются с модбасом в силу его ориентированности на отдельные параметры такие как слова или биты.
Go to the top of the page
 
+Quote Post
gala
сообщение Jan 19 2007, 21:40
Сообщение #21


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

Группа: Свой
Сообщений: 119
Регистрация: 29-11-05
Из: Украина, Черкассы
Пользователь №: 11 564



Итого: Wake
Go to the top of the page
 
+Quote Post
_Bob_
сообщение Feb 6 2007, 14:33
Сообщение #22


Участник
*

Группа: Свой
Сообщений: 19
Регистрация: 20-12-05
Из: Обнинск
Пользователь №: 12 442



Цитата(ipc @ Jan 19 2007, 08:52) *
Модбас удобен при стандартизированной передаче отдельных параметров(слов,бит итд).Его применение оправдано при сравнительно небольшом количестве передаваемых данных и наличии нескольких slave устройств в сети.Опять же он является промышленным стандартом и при совместном использовании покупных и кустарных устройств можно задействовать широкий спектр OPC серверов и SCADA систем.Если же требуется передавать поточные данные то более целесообразно использовать что то на подобии wake.имхо.
Как уже было написано выше большие или что важно структуированные данные плохо совмещаются с модбасом в силу его ориентированности на отдельные параметры такие как слова или биты.


Не критики ради а замечания для ....

ModBus если посмотреть на него через призму OSI представляет транспортный уровень, а уж как структурированы данные за это отвечает уже уровень выше. И вот тут все зависит от головы и рук. В свое время работали с файлами и передавали их через ModBus. Как для протокола транспортного уровня у него есть недостатки: Одни мастер, сравнительно небольшая скорость передачи(ограниченная длинна кадра).
Go to the top of the page
 
+Quote Post
Михайлов Виталий
сообщение Feb 29 2008, 06:29
Сообщение #23





Группа: Новичок
Сообщений: 2
Регистрация: 29-02-08
Пользователь №: 35 469



Здравствуйте! У меня возник вопрос по поводу modbus...судя по информации в инете, протокол этот открыт и как будто стандартизирован IEC, имеет статус PAS - общедоступные спецификации...я хотел бы узнать, если я реализую протокол в своих слейв-устройствах то для их продажи, я должен буду получить какой-нибудь сертификат соответствия, или иной подобный документ? Если да, то обязательно ли это? На www.modbus.org есть информация что сертификат получить можно...но нигде я его не видел, если на HART например можно найти, то на modbus нет sad.gif(. Перерыл весь инет,единственные кто вменяемо пишут про это www.trianglemicroworks.com но этой информации не достаточно...помогите! Вообщем главный вопрос - это легальность modbus, и обязательность сертификации....
Go to the top of the page
 
+Quote Post
Kovrov
сообщение Mar 10 2008, 14:43
Сообщение #24


Мастер-фломастер
****

Группа: Свой
Сообщений: 611
Регистрация: 29-12-05
Пользователь №: 12 700



Ребятки незнаю как вам, а я тут сижу
и разглядываю протоколы передачи
модбас мэки ваки итд
сам занимаюсь интеграцией в системы верхнего уровня всех протоколов
могу сказать след:
мод бас вещь доступная но эти 7 (3,5+3,5) байт (в рту) ожидания для тайм аутов - жесть
(коту под хвост) но вещь действительно стандартизованая и можно приянять как дефакто..
и много отладночного софта

ваке всем хорош прекрасный канальный уровень - многих беспокоит стаффинг (хотя криминала нет)
и я б добавил к нему тайм аут по символу. Но несособо распростанен по сравнению с мод басом
тест софта кот наплакал..

протколы МЭК тоже неплохой канальный уровень но в реализации жесть - хотя и стандарт!!!
тест софта раз 2 и обчелся и все комерческое..

наверное все таки WAKE


--------------------
Вон ПОПОВ, клоун клоуном, а радио изобрел!!
Go to the top of the page
 
+Quote Post
rezident
сообщение Mar 10 2008, 15:29
Сообщение #25


Гуру
******

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



Kovrov, странно что занимаясь разработками на основе ModBus вы знаете только про ModBus RTU, но не в курсе про ModBus ASCII. Иначе к чему эта реплика?
Цитата(Kovrov)
мод бас вещь доступная но эти 7 (3,5+3,5) байт (в рту) ожидания для тайм аутов - жесть
(коту под хвост)

А вообще тип протокола связи зависит от области применения, как уже выше заметили. Если в проект только "свои" приборы входят это один случай, а когда требуется стыковать с "чужими" приборами, то нужно внимательно изучать все аспекты связи во всем проекте. У нас в приборах, например, используется свой собственный протокол, этакая компиляция PiNet и Modbus, но для совместимости стандартный ModBus тоже поддерживается.
Go to the top of the page
 
+Quote Post
Kovrov
сообщение Mar 11 2008, 10:34
Сообщение #26


Мастер-фломастер
****

Группа: Свой
Сообщений: 611
Регистрация: 29-12-05
Пользователь №: 12 700



Цитата(rezident @ Mar 10 2008, 18:29) *
Kovrov, странно что занимаясь разработками на основе ModBus вы знаете только про ModBus RTU, но не в курсе про ModBus ASCII. Иначе к чему эта реплика?

какая реплика?
С чего вы взяли что я не вкурсе модбас ASCII?
Я к чему сказал- к тому что как то всегда ёжусь когда уарт простаивает...
Всегда ближе к телу синхронизация по старт байтам...
и потом это все имхо..
И у нас в приборах реализован тоже собственный протокол нечто среднее между ваке и IEC870
Речь идет и выборе и доступности протокола...
Выложите описание вашей разработки протокола, а также вспомогательный софт...
И будем иметь ввиду....


--------------------
Вон ПОПОВ, клоун клоуном, а радио изобрел!!
Go to the top of the page
 
+Quote Post
Михайлов Виталий
сообщение Mar 12 2008, 09:58
Сообщение #27





Группа: Новичок
Сообщений: 2
Регистрация: 29-02-08
Пользователь №: 35 469



Вы подскажите мне пожалуйста...реализовывая в своих устройствах протокол modbus вы не сталкивались с вопросами о правомерности его использования...я понимаю что стандарт открыт, и спецификация более чем подробна...но начальство от меня хочет услышать однозначный ответ могут писать они что устройство поддерживает modbus 100%. и за это точно ничего не будет...такая вот вообщем проблема...самое странное что про сертификацию на оф. сайте написано, что мол можно пройти...но обязательно-ли? И скрин или копию сертификата этого вообще найти не могу...кому дают то они его, и зачем? если нигде нельзя посмотреть как он выглядит хоть...на HART нашел сразу же, загуглил - на тебе 2-3 ссылка...
Go to the top of the page
 
+Quote Post
Солнцеворот
сообщение Mar 12 2008, 23:18
Сообщение #28


Участник
*

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



А где раздобыть исходники на какой-нибудь протокол?
Желательно Modbus. Обязательно для AVR. Желательно на CodeVision.
Подскажете, товарищи?
Go to the top of the page
 
+Quote Post
rezident
сообщение Mar 12 2008, 23:27
Сообщение #29


Гуру
******

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



Солнцеворот, вообще-то после регистрации, еще ДО того, как задать свой вопрос, обычно принято изучать Правила форума, его структуру и пользоваться поиском по форуму.
Go to the top of the page
 
+Quote Post
Солнцеворот
сообщение Mar 12 2008, 23:36
Сообщение #30


Участник
*

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



Цитата(rezident @ Mar 13 2008, 02:27) *
Солнцеворот, вообще-то после регистрации, еще ДО того, как задать свой вопрос, обычно принято изучать Правила форума, его структуру и пользоваться поиском по форуму.

Прошу прощения, сейчас изучу. Поиском пользуюсь, но то, что хотелось бы не нахожу. А вообще я что, не в ту тему написал? 07.gif
Go to the top of the page
 
+Quote Post
Kovrov
сообщение Mar 13 2008, 05:14
Сообщение #31


Мастер-фломастер
****

Группа: Свой
Сообщений: 611
Регистрация: 29-12-05
Пользователь №: 12 700



исходников на Code vision нету, но алгоритм рассказать могу.
Если ктото где то поправит - в сторону улучшения буду признателен...
Итак канал MODBUS RTU (со стороны приема кадра- режим слейв)
1) Задействую таймер прерывание на время в 1,5 символа (например OCx CTC mode)
2) UART RX работает всегда, при возникновению прерывания по UARTв любом случае обнуляем таймер.
3) Проверяем принятый байт на четность или 2й стоп, если ок помещаем в буфер но неболее N байт в буфере (256).
4) При появлении прерывания по таймеру (считаем что прошло 1,5 символа) начинаем разбор кадра...
смотрим адрес в первом байте буфера если сходится с адресом слейва разбираем кадр далее - считаем CRC, если не совпал адрес слейв или CRC16 -- вектор буфера на начало и ждем след перрывания по таймеру.
Вроде все!!
Насчет 1,5 символа - возможно нада подрихтовать!!!
Как уважаемые коллеги этот вариант?


--------------------
Вон ПОПОВ, клоун клоуном, а радио изобрел!!
Go to the top of the page
 
+Quote Post
rezident
сообщение Mar 13 2008, 14:13
Сообщение #32


Гуру
******

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



Цитата(Kovrov @ Mar 13 2008, 10:14) *
4) При появлении прерывания по таймеру (считаем что прошло 1,5 символа) начинаем разбор кадра...
Неверно! Если пауза между символами больше 1,5-кратного интервала, но меньше 3,5-кратного, то данный фрейм нужно "фтопку". Об этом в стандарте явно прописано. Разбор фрейма нужно проводить, только если пауза тишины превысит 3,5-кратный интервал.
Начало фрейма тоже по 3,5-кратной паузе тишины ловится. А прием в буфер имеет смысл начинать, только если сетевой ID совпал с собственным (для slave) или с тем, что был в запросе (для master). Зачем нужно "чужие" пакеты принимать/разбирать-то? 07.gif Исключение составляет только broadcast ID, который всеми slave должен приниматься.
Кстати, постоянный прием с линии можно оставлять, только если локальное "эхо" отсутствует.
Go to the top of the page
 
+Quote Post
Kovrov
сообщение Mar 14 2008, 05:57
Сообщение #33


Мастер-фломастер
****

Группа: Свой
Сообщений: 611
Регистрация: 29-12-05
Пользователь №: 12 700



Да это все верно.. Именно поэтому и был выбран интервал 1,5
1) 1,5 символа взято из соображений ускорения синхронизации, выставив паузу в 3,5 нужно дополнительно стаховаться что я не попаду (например в момент включения) в середину передачи символа на уарт.. Можно поставить больше 1,5 - например даже лучше 1,75 тогда проблем в реализации 3,5 интервала для передатчика вообще не будет..
Далее...
Почему разбирать чужие пакеты?
после детекта IDLE я по прерыванию смотрю только на совпадение адреса ВСЁ!!!
CRC считаю только если адрес совпал - вы просто несовсем внимательно прочитали...
Вся перелесть - в том что алгоритм весит всего нескольо строк на АSМ


--------------------
Вон ПОПОВ, клоун клоуном, а радио изобрел!!
Go to the top of the page
 
+Quote Post
GrayCat
сообщение Apr 28 2008, 21:30
Сообщение #34


Местный
***

Группа: Свой
Сообщений: 263
Регистрация: 7-10-05
Из: UA
Пользователь №: 9 342



Помашу после драки кулаками:

Протокол серии ADAM-4000 - это страшный сон разработчика!!! Для каждой команды - свой формат. В том числе, разный символ-заголовок пакета!!! Очень много команд, у которых все различие подвариантов "на чтение" и "на запись" - только по длине! Форматы ответов тоже разные на разные команды! В отличие от MODBUS ASCII, сплошь и рядом всякие "левые" - не шестнадцатеричные - символы внутри пакета, так что скормить его целиком в процедурку типа "HEX2BIN" не выйдет!

А уж "контрольная сумма", представляющая собой просто сумму размером в 1 байт - это просто прелес-с-сть!

Уж простите, что я вот так вот "криком" - наболело...


--------------------
Gray©at
Go to the top of the page
 
+Quote Post
=AK=
сообщение Jun 6 2008, 00:17
Сообщение #35


pontificator
******

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



Рекомендую ознакомиться с дискуссией, где обсуждается связь между подтяжками, протоколом обмена и помехоустойчивостью. Modbus ASCII для RS-485 непригоден из-за низкой помехоустойчивости, oн предназначен для RS-232.
Go to the top of the page
 
+Quote Post

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

 


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


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