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

 
 
> Протокол modbus. Вопросы по интерфейсу
Phuntik
сообщение Oct 16 2008, 10:46
Сообщение #1





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



Здравствуйте.
На работе дали задание разработать интерфейс сообщений между устройствами на основе протокола Modbus.
Суть такова. Есть некоторое количество измерительных приборов, соединённых по RS-485. Нужно сделать так, чтобы с одного прибора можно было управлять другим - устанавливать режимы, принимать архивы измерений и т.д. За основу предложено взять протокол modbus.
Уже месяц сижу и туплю.
Вопросы:
1. Можно ли сделать так, чтобы любое устройство могло взять на себя роль главного?
2. Каким образом вообще передавать информацию главному? Через регистры, что ли?
3. С чего вообще начинать?
Подскажите, пожалуйста, ткните носом во что-нибудь готовое, описание какое-нибудь.
Протокол зачитал, но там, такое ощущение, всё привязано к конкретным контроллерам.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
rezident
сообщение Oct 17 2009, 21:36
Сообщение #2


Гуру
******

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



koyodza, @Ark, зачем нужно старую тему поднимать? Думаете, что топикстартер, создавший ее год назад и тогда же последний раз в ней отметившись, прочитает?
Go to the top of the page
 
+Quote Post
koyodza
сообщение Oct 18 2009, 17:51
Сообщение #3


Местный
***

Группа: Свой
Сообщений: 213
Регистрация: 28-02-07
Из: Киев
Пользователь №: 25 744



Цитата(rezident @ Oct 18 2009, 00:36) *
koyodza, @Ark, зачем нужно старую тему поднимать? Думаете, что топикстартер, создавший ее год назад и тогда же последний раз в ней отметившись, прочитает?

Я ответил скорее не топикпастеру, а на фразу defunct по поводу того что "По приему CRC слейв может сразу же приступить к формированию ответа". Поскольку это грубое, но очень сильно распространенное нарушение стандарта, решил указать на это. Сообщения ведь попадают в "Копилку Вечности", вдруг кто-то из начинающих когда-то забредёт сюда (даже в правилах написано - новую тему создавать после того, как ничего не нашел поиском), и подумает что так и нужно делать...
Go to the top of the page
 
+Quote Post
defunct
сообщение Nov 8 2009, 00:09
Сообщение #4


кекс
******

Группа: Свой
Сообщений: 3 825
Регистрация: 17-12-05
Из: Киев
Пользователь №: 12 326



Цитата(koyodza @ Oct 18 2009, 19:51) *
Я ответил скорее не топикпастеру, а на фразу defunct по поводу того что "По приему CRC слейв может сразу же приступить к формированию ответа". Поскольку это грубое, но очень сильно распространенное нарушение стандарта, решил указать на это.

Стандарты порой устаревают. А сильно распространненные нарушения часто становятся частью страндарта.
Грубых нарушений стандарта в упор не вижу, если CRC сошлась ложно, то пакет отбракуется по длине и прием продолжится.
С другой стороны, на кой в холостую ждать 3.5 символьных интервала (это ж вагон и еще маленькая тележка времени особенно на 9600 и ниже), когда их можно потратить с пользой, например на вычитку архива из медленного eeprom'а по текущему запросу мастера.

Цитата
Сообщения ведь попадают в "Копилку Вечности", вдруг кто-то из начинающих когда-то забредёт сюда (даже в правилах написано - новую тему создавать после того, как ничего не нашел поиском), и подумает что так и нужно делать...

Может для "Копилки Вечности" у вас найдется способ отмерить таймаут в 1.75ms под Windows?
Go to the top of the page
 
+Quote Post
koyodza
сообщение Nov 9 2009, 17:17
Сообщение #5


Местный
***

Группа: Свой
Сообщений: 213
Регистрация: 28-02-07
Из: Киев
Пользователь №: 25 744



Цитата(defunct @ Nov 8 2009, 02:09) *
Стандарты порой устаревают. А сильно распространненные нарушения часто становятся частью страндарта.
Грубых нарушений стандарта в упор не вижу, если CRC сошлась ложно, то пакет отбракуется по длине и прием продолжится.

Данное нарушение пока не стало частью стандарта. И пока это является именно грубым нарушением.
Вы никогда не получали совпадение CRC внутри пакета? Значит Вы не использовали ModBus в реальных проектах. Или Вам просто пока крупно везло.
Или Вы предлагаете после получения совпадения CRC продолжать принимать пакет, параллельно пересчитывая CRC и убеждаясь (по другим признакам) что пакет битый, после чего ждать нового совпадения CRC? cranky.gif

Цитата(defunct @ Nov 8 2009, 02:09) *
С другой стороны, на кой в холостую ждать 3.5 символьных интервала (это ж вагон и еще маленькая тележка времени особенно на 9600 и ниже), когда их можно потратить с пользой, например на вычитку архива из медленного eeprom'а по текущему запросу мастера.

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

Полностью поддерживаю идеи, изложенные коллегой rezident: не нужно смешивать разные уровни обмена в одну кучу. Прерывание по приему/передаче байта должно быть максимально коротким (взять или положить в буфер и всё). Как в принципе и любое другое прерывание.

Цитата(defunct @ Nov 8 2009, 02:09) *
Может для "Копилки Вечности" у вас найдется способ отмерить таймаут в 1.75ms под Windows?

Windows вообще никакого отношения к ModBus не имеет. Ну а если в качестве мастера у Вас выступает РС - никто не запрещает сделать интервал больше, чем 1,75 мсек. Приемлемые таймауты в единицы мсек отрабатываются нормально.


Цитата(defunct)
Есть две разные задачи.
1. обеспечить Real-time - см. real-time protocol который с помощью меток времени и блочной передачи, вне зависимости от задержек канала и межпакетного джиттера, гарантирует real-time воспроизведение медиа потока.
2. обеспечить максимально возможный КПД использования канала.

То о чем говорите Вы решает 1), то о чем говорит @Ark решает 2).

Минимальное время реакции на прерывания по разным причинам приходится обеспечивать в большинстве достаточно крупных проектов.
А вот понятия modbus и "максимально возможный КПД использования канала" - не вполне совместимы. Обычно modbus применяется там, где загрузка канала не очень высока. Иначе - нужно выбирать другой протокол, а (возможно) и другую "физику" (т.е. не 485)
Go to the top of the page
 
+Quote Post
defunct
сообщение Nov 10 2009, 05:00
Сообщение #6


кекс
******

Группа: Свой
Сообщений: 3 825
Регистрация: 17-12-05
Из: Киев
Пользователь №: 12 326



Цитата(koyodza @ Nov 9 2009, 19:17) *
Полностью поддерживаю идеи, изложенные коллегой rezident: не нужно смешивать разные уровни обмена в одну кучу. Прерывание по приему/передаче байта должно быть максимально коротким (взять или положить в буфер и всё). Как в принципе и любое другое прерывание.

Разные уровни обмена не нужно смешивать разумеется. Только вот идеи на которые Вы ссылаетесь примерно такого плана: а давайте чтобы сократить время реакции прерывания разобъем канальный уровень на два подуровня, первый подуровень канального уровня будем обслуживать в прерывании, а второй - постобработкой. Ничего что для этого придется обзавестись большим буфером памяти, зато реакция на прерывание будет быстрой. И ради чего? Разница ведь в нано-, микро- секундах исчисляется. Снижаем реакцию на прерывание просто ради получения минимальной реакции?! Дык с тем же успехом можете просто разрешить другие прерывания в обработчике текущего, реакция будет еще быстрее.


Ethernet MAC - пример канального уровня, выдает пакеты, а не байты которые надо собирать в пакеты. И выдает прерывания "пакет" принят а не байт принят. Так вот объясните мне доходчиво если можно, почему модель программиста канального уровня Ethernet должна отличаться от модели канального уровня PPP или того же Modbus? И зачем делать двойную работу? Зачем накапливать в памяти что-то непотребное, - escaped chars, пакеты нам не адресованые, метки времени на каждый принятый символ для определения таймаутов, и прочее г. которое можно отсеяться сразу в прерывании.
Go to the top of the page
 
+Quote Post
rezident
сообщение Nov 15 2009, 01:53
Сообщение #7


Гуру
******

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



На досуге я тут кое-что обдумывал и вернулся вот к этой части сообщения
Цитата(defunct @ Nov 10 2009, 10:00) *
Разные уровни обмена не нужно смешивать разумеется. Только вот идеи на которые Вы ссылаетесь примерно такого плана: а давайте чтобы сократить время реакции прерывания разобъем канальный уровень на два подуровня, первый подуровень канального уровня будем обслуживать в прерывании, а второй - постобработкой. Ничего что для этого придется обзавестись большим буфером памяти, зато реакция на прерывание будет быстрой. И ради чего? Разница ведь в нано-, микро- секундах исчисляется. Снижаем реакцию на прерывание просто ради получения минимальной реакции?! Дык с тем же успехом можете просто разрешить другие прерывания в обработчике текущего, реакция будет еще быстрее.

defunct, поясните, пожалуйста, как вы обеспечиваете реентерабельность вашей функции канального уровня, описанной в посте #44? То бишь в каком там месте можно поставить оператор, разрешающий вложенные прерывания? Моя ИМХА почему-то упорно мне доказывает, что это прерывание (от UART) делать вложенным нельзя, если только заранее неизвестно, что сумма всех возможных вложенных прерываний не превысит величины символьного интервала для максимальной скорости передачи (т.е., например, скорость передачи достаточно низкая).
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Phuntik   Протокол modbus. Вопросы по интерфейсу   Oct 16 2008, 10:46
- - MrYuran   Правильный протокол - на modbus.org Если нужно мен...   Oct 16 2008, 11:24
|- - Phuntik   Цитата(MrYuran @ Oct 16 2008, 14:24) Если...   Oct 16 2008, 11:27
||- - MrYuran   Цитата(Phuntik @ Oct 16 2008, 15:27) Т.е....   Oct 16 2008, 11:33
|- - Andy Great   Цитата(MrYuran @ Oct 16 2008, 14:24) Если...   Oct 17 2008, 07:56
|- - MrYuran   Цитата(Andy Great @ Oct 17 2008, 11:56) P...   Oct 17 2008, 08:27
- - Bovolk   Тоже поставили задачу прикрутить Modbus. В о...   Nov 16 2008, 11:01
|- - defunct   Цитата(Bovolk @ Nov 16 2008, 13:01) Подчи...   Jan 1 2009, 05:05
|- - koyodza   Цитата(defunct @ Jan 1 2009, 08:05) По за...   Oct 17 2009, 19:30
- - ucMike   Наверное, главной проблемой станет борьба с коллиз...   Dec 3 2008, 22:13
|- - ucMike   Цитата(ucMike @ Dec 4 2008, 01:13) P.S. С...   Dec 4 2008, 11:10
- - ukpyr   modbus plus - multimaster : http://prodcs.ru/files...   Jan 1 2009, 08:40
- - @Ark   ЦитатаВопросы: 1. Можно ли сделать так, чтобы любо...   Oct 17 2009, 21:29
||- - defunct   Цитата(koyodza @ Nov 9 2009, 19:17) Или В...   Nov 10 2009, 03:21
||- - Verifi   Цитата(defunct @ Nov 10 2009, 08:00) Заче...   Nov 10 2009, 07:06
||- - rezident   Цитата(defunct @ Nov 10 2009, 10:00) Ниче...   Nov 10 2009, 11:41
||- - defunct   Цитата(rezident @ Nov 15 2009, 03:53) def...   Nov 15 2009, 02:49
|- - demiurg_spb   Цитата(defunct @ Nov 8 2009, 03:09) у вас...   Nov 28 2009, 20:54
|- - defunct   Цитата(demiurg_spb @ Nov 28 2009, 22:54) ...   Dec 8 2009, 20:45
|- - demiurg_spb   Цитата(defunct @ Dec 8 2009, 23:45) В AMD...   Dec 9 2009, 15:43
- - @Ark   Sorry, не посмотрел на дату. Просто тема показал...   Oct 17 2009, 21:40
- - D&M   Здравствуйте.У меня такой вопрос: Есть теплосчетчи...   Oct 24 2009, 06:12
|- - HARMHARM   Цитата(D&M @ Oct 24 2009, 09:12) Можн...   Oct 24 2009, 07:18
- - D&M   устройство с виртуальным USB CDC- это как я понял ...   Oct 24 2009, 08:13
- - D&M   или как ? жду разных предложений.. Кстати- USB CDC...   Oct 24 2009, 20:41
|- - rezident   Цитата(D&M @ Oct 25 2009, 01:41) или ...   Oct 25 2009, 02:15
- - D&M   Тогда может посоветуете OPC-сервер,который может д...   Oct 25 2009, 07:36
- - D&M   Посмотрел,продумал разные варианты и пришел к выво...   Oct 26 2009, 15:46
|- - Ronin   Цитата(D&M @ Oct 26 2009, 18:46) Посм...   Nov 3 2009, 19:15
|- - zltigo   Цитата(Ronin @ Nov 3 2009, 22:15) GPRS эт...   Nov 4 2009, 19:17
|- - MrYuran   Цитата(zltigo @ Nov 4 2009, 22:17) Ну а в...   Nov 5 2009, 06:17
||- - zltigo   Цитата(MrYuran @ Nov 5 2009, 09:17) По ГП...   Nov 5 2009, 15:50
|- - Ronin   Цитата(zltigo @ Nov 4 2009, 22:17) Ну а в...   Nov 6 2009, 11:21
- - rezident   D&M, я вам в личку написал. Не смотрели?   Oct 26 2009, 17:59
- - D&M   ответил   Oct 26 2009, 18:23
- - D&M   1,3 варианты продумал,говорил про модем teleofis-r...   Nov 4 2009, 18:49
- - D&M   Нету Modbus-TCP, есть Modbus-RTU в моем рассказе.   Nov 5 2009, 15:04
- - D&M   У счетчика Modbus-RTU, а в модеме только CSD..   Nov 6 2009, 12:41
|- - Ronin   Цитата(D&M @ Nov 6 2009, 15:41) У сче...   Nov 6 2009, 13:10
- - @Ark   Цитата... Я ответил скорее не топикпастеру, а на ф...   Nov 8 2009, 01:37
|- - aaarrr   Цитата(@Ark @ Nov 8 2009, 04:37) А вот, н...   Nov 8 2009, 01:43
- - @Ark   ЦитатаИз всего перечисленного какой-то практически...   Nov 8 2009, 01:56
- - aaarrr   Ну, сколько удалось наносекунд сэкономить, а? Серь...   Nov 8 2009, 02:01
- - @Ark   Цитата... значит что-то не так с выбором протоколо...   Nov 8 2009, 02:21
|- - aaarrr   Ну, как и следовало ожидать, конкретные цифры озву...   Nov 8 2009, 02:55
- - rezident   Ради справедливости хотелось бы заметить, что не в...   Nov 8 2009, 02:32
|- - defunct   Цитата(rezident @ Nov 8 2009, 04:32) Но в...   Nov 8 2009, 03:27
- - @Ark   ЦитатаНу, как и следовало ожидать, конкретные цифр...   Nov 8 2009, 06:30
- - aaarrr   Пример из пальца высосан: вдруг, по команде извне,...   Nov 8 2009, 15:11
- - @Ark   Цитата... вдруг, по команде извне, начинаем АЦПиро...   Nov 8 2009, 15:30
|- - aaarrr   Цитата(@Ark @ Nov 8 2009, 18:30) ... Толь...   Nov 8 2009, 15:46
- - rezident   2 defunct, еще раз обращаю внимание, что я писал п...   Nov 8 2009, 16:02
|- - defunct   Цитата(rezident @ Nov 8 2009, 18:02) И не...   Nov 8 2009, 17:48
|- - rezident   Цитата(defunct @ Nov 8 2009, 22:48) Выше ...   Nov 8 2009, 18:39
|- - defunct   Цитата(rezident @ Nov 8 2009, 20:39) Вот ...   Nov 8 2009, 19:51
|- - rezident   Цитата(defunct @ Nov 9 2009, 00:51) Не со...   Nov 8 2009, 20:08
|- - defunct   Цитата(rezident @ Nov 8 2009, 22:08) Вы к...   Nov 8 2009, 23:12
|- - rezident   Цитата(defunct @ Nov 9 2009, 04:12) Можно...   Nov 9 2009, 16:31
- - @Ark   Цитата... скорее вряд ли кому нужно "мгновенн...   Nov 8 2009, 16:06
|- - aaarrr   Цитата(@Ark @ Nov 8 2009, 19:06) Вашими м...   Nov 8 2009, 16:24
- - @Ark   Ну, хорошо, давайте продолжим... ЦитатаА что будет...   Nov 8 2009, 17:15
|- - aaarrr   Цитата(@Ark @ Nov 8 2009, 20:15) Ничего с...   Nov 8 2009, 17:27
- - @Ark   ЦитатаВыпадет просто, да? А таймаут ответа "с...   Nov 8 2009, 17:43
|- - aaarrr   Цитата(@Ark @ Nov 8 2009, 20:43) С чего в...   Nov 8 2009, 18:25
- - @Ark   ЦитатаКак вы считаете, сколько времени будет сэкон...   Nov 8 2009, 19:24
|- - aaarrr   Цитата(@Ark @ Nov 8 2009, 22:24) То есть,...   Nov 8 2009, 19:42
- - @Ark   ЦитатаЯ предлагаю снабдить слейв минимальным интел...   Nov 8 2009, 20:07
|- - aaarrr   Цитата(@Ark @ Nov 8 2009, 23:07) Ну, а ка...   Nov 8 2009, 20:20
- - @Ark   ЦитатаА реальное время будет спокойно жить в слейв...   Nov 8 2009, 20:38
|- - aaarrr   Цитата(@Ark @ Nov 8 2009, 23:38) Я опять ...   Nov 8 2009, 21:04
- - @Ark   Цитата... что данные будут получены с некоторой ап...   Nov 8 2009, 21:24
|- - aaarrr   Цитата(@Ark @ Nov 9 2009, 00:24) С какой?...   Nov 8 2009, 21:36
- - @Ark   ЦитатаПреимущество блочной передачи вполне очевидн...   Nov 8 2009, 21:51
|- - aaarrr   Цитата(@Ark @ Nov 9 2009, 00:51) Здесь мы...   Nov 8 2009, 22:17
- - @Ark   ЦитатаЦитата(aaarrr @ Nov 9 2009, 00:17) Да, я вс...   Nov 9 2009, 11:09
- - forever failure   Прально, зачем ждать на светофоре зелёного, если н...   Nov 10 2009, 07:34
- - rezident   Ну вот и консенсус наметился Считайте, что у меня...   Nov 15 2009, 03:19
- - defunct   Цитата(rezident @ Nov 15 2009, 05:19) Счи...   Nov 15 2009, 03:22
- - rezident   Цитата(defunct @ Nov 15 2009, 08:22) Толь...   Nov 15 2009, 03:27
- - defunct   Цитата(rezident @ Nov 15 2009, 05:27) Не ...   Nov 15 2009, 03:33
- - rezident   Цитата(defunct @ Nov 15 2009, 08:33) След...   Nov 15 2009, 03:59
- - defunct   Цитата(rezident @ Nov 15 2009, 05:59) Это...   Nov 15 2009, 04:10
- - rezident   Цитата(defunct @ Nov 15 2009, 09:10) Да н...   Nov 15 2009, 18:15
- - defunct   Цитата(rezident @ Nov 15 2009, 20:15) Нет...   Nov 15 2009, 22:27
- - rezident   Цитата(defunct @ Nov 16 2009, 03:27) Но в...   Nov 15 2009, 22:50
- - defunct   Цитата(rezident @ Nov 16 2009, 00:50) Нет...   Nov 15 2009, 23:08
- - rezident   Цитата(defunct @ Nov 16 2009, 04:08) Функ...   Nov 16 2009, 00:20
- - defunct   Цитата(rezident @ Nov 16 2009, 02:20) Нич...   Nov 16 2009, 00:33


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

 


RSS Текстовая версия Сейчас: 23rd July 2025 - 05:51
Рейтинг@Mail.ru


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