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

 
 
> сниффер ком порта
Alex_2015
сообщение Sep 6 2016, 13:56
Сообщение #1





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



Всем доброго дня. Есть сеть устройств, работающих по протоколу модбас через RS485. Необходимо написать перехватчик сообщений для ком порта, способный ловить паузы между сообщениями.
Вот как поймать паузы, пока не соображу. Драйвер возвращает пачки по несколько байт, но поймать получается только длинные паузы (между запросами), а вот разделить запрос-ответ пока не могу.
Есть программы снифферы, которые как-то реализуют такую возможность. Надо написать свою, в которой данные преобразовать в удобоваримый вид, удобный для отладки работы сети устройств.
В винде это наверное тяжело будет сделать, но может есть способ, о котором я пока не знаю.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
juvf
сообщение Sep 21 2016, 18:29
Сообщение #2


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

Группа: Свой
Сообщений: 1 261
Регистрация: 14-05-09
Из: Челябинск
Пользователь №: 49 045



2ТС Тут только аппаратный снифер поможет. Можно сделать MODBUS-RS485 to MODBUS-TCP. А вот тсп-модбас уже акулой смотреть, она знает модбас и может его парсить.

2jcxz Утопия. Ни фига не сможет вин/лин по таймаутам работать. Если только на скорости 100 бод. У нас MODBUS на 921600 работает, ОСи скромно отдыхают в сторонке.

Бред какой-то вы пишите.... Теоретически лошадь, практически упала. Я эти теоретические сказки про возможность реализации чистого модбаса на ПК слышу много лет. Все они разбиваются о попытки практической реализации модбаса на ПК. Попробуйте написать консольную программку, без гуи... которая просто бы принимала и считала кол-во пакетов с правильным црц? и в студию.

ps Ну если говорить про совсем чистый модбас, то по спецификации пакет, у которого внутри между байтами больше 1,5 символьного интервала считается не годным.

pps
Цитата
Я не вижу никаких причин в современной системе, не загруженной тяжёлой работой, имеющей как правило несколько процессорных ядер с ГГц-выми тактовыми частотами, которые почти всё время просто тупо простаивают, не отреагировать на событие почти мгновенно, обработав например прерывание одним ядром и тут же переключить другое ядро на выполнение высокоприоритетного thread-а драйвера сис. уровня UART, а третьим ядром выполнить пользовательский высокоприоритетный код с ReadFile.

ВНЕЗАПНО в Qt 5.6 появился класс для работы с модбасом. Покопался в дебрях документации и нашел, что этот класс не может распознавать фреймы в 3.5 символа. В документации Qt5.7 не могу это ограничение найти. В libmodbus тоже не сказано, что у них не чистый модбас.... Гдето же были оговорки по таймаутам.... не могу найти..... может и вправду эти сказки реализовали и финты с RDA и CTI запилили? Кто пользовал эти либы? Сможет QtModbus или libmodbus распознать(разделить) 2 пакета RTU, идущих подряд и разделённых 3.5 символами тишины, на скорости 921600, на каком нить стареньком одноядерном компе, на котором еле-еле гуи ворочится и процессор занят кучей увесистых задач?
Go to the top of the page
 
+Quote Post
Lagman
сообщение Sep 22 2016, 10:16
Сообщение #3


Знающий
****

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



Цитата(juvf @ Sep 21 2016, 21:29) *
Сможет QtModbus или libmodbus распознать(разделить) 2 пакета RTU, идущих подряд и разделённых 3.5 символами тишины, на скорости 921600, на каком нить стареньком одноядерном компе, на котором еле-еле гуи ворочится и процессор занят кучей увесистых задач?

В рекомендациях modbus сказано (MODBUS over Serial Line Specification and Implementation Guide V1.02, стр. 13)
Цитата
The implementation of RTU reception driver may imply the management of a lot of interruptions due to the t1.5 and t3.5 timers. With
high communication baud rates, this leads to a heavy CPU load. Consequently these two timers must be strictly respected when the
baud rate is equal or lower than 19200 Bps. For baud rates greater than 19200 Bps, fixed values for the 2 timers should be used: it is
recommended to use a value of 750μs for the inter-character time-out (t1.5) and a value of 1.750ms for inter-frame delay (t3.5).


Но наверно даже с этими значениями без ОСРВ не поймать эти моменты, и если T1.5 почти никто не проверяет, то с T3.5 главное не начинать передачу пакета (запрос или ответ) раньше этого момента и можно "терпеть" с передачей вплоть до истечения времени ожидания ответа.
Go to the top of the page
 
+Quote Post
zltigo
сообщение Sep 22 2016, 10:40
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



QUOTE (Lagman @ Sep 22 2016, 13:16) *
и если T1.5 почти никто не проверяет

Что очень зря, ибо это есть механизм отсева сбоев и быстрого восстановления фреймовой синхронизации.
QUOTE
то с T3.5 главное не начинать передачу пакета (запрос или ответ) раньше этого момента и можно "терпеть" с передачей вплоть до истечения времени ожидания ответа.

Терпеть-то можно, если в конкретном случае общая скорость обмена не волнует, но при требовании быстрого обмена все эти таймауты катострофически снижают пропускную способность. В частном случае, когда конкретные реализаторы протокола "плют", "терпят" и медленно обмениваются пакетами в которых паузы между фреймами определяются не протоколом а неспешым темпом обмена и меееедлееенннооо реагирующими на запросы слейвами, софтовый снифер под WIN как-бы ваделяет фреймы без проблем. Но при полноскоростном обмене шансов под WIN никаких sad.gif.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
Lagman
сообщение Sep 22 2016, 11:18
Сообщение #5


Знающий
****

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



Цитата(zltigo @ Sep 22 2016, 13:40) *
В частном случае, когда конкретные реализаторы протокола "плют", "терпят" и медленно обмениваются пакетами в которых паузы между фреймами определяются не протоколом а неспешым темпом обмена и меееедлееенннооо реагирующими на запросы слейвами, софтовый снифер под WIN как-бы ваделяет фреймы без проблем. Но при полноскоростном обмене шансов под WIN никаких sad.gif.

Пропускная способность, это да, пострадает, но стандарты протокола никто не нарушает.
Go to the top of the page
 
+Quote Post
demiurg_spb
сообщение Sep 22 2016, 12:26
Сообщение #6


неотягощённый злом
******

Группа: Свой
Сообщений: 2 746
Регистрация: 31-01-08
Из: Санкт-Петербург
Пользователь №: 34 643



Добрый день коллеги!
Захотелось обсудить вопрос "продувки шины" перед выдачей пакта в линию сразу после включения драйвера RS485 на передачу.

Я обычно формирую требуемую паузу на шине с включенным передатчиком до и после передачи пакта.
Отсюда получается дыра межу фреймами в 2 раза больше, т.к. и мастер и слейв делают это.
Естественно, скорость передачи из-за этих пауз сильно снижается.

У меня есть сомнения, что если этого не делать можно наступить на грабли. Поясню.

1) Мастер хочет передать и не знает был ли шум в линии - следовательно надо "продуть" до, ну а после само-собой разумеется продувать необходимо чтобы слейв словил тишину.

2) Слейв хочет ответить на принятый запрос и тоже не знает про то, был-ли шум на линии с момента приёма пакета до переключения драйвера на передачу. Ведь по окончании паузы сформированной мастером, проходит некоторое время на обработку пакета и в это время линия висит либо в воздухе, либо растянута слабенькими резисторами и помехи могут дать ложный старт-бит. Пока писал это осознал, что если помеха в этот момент случилась, то продувка линии может уже и не спасти ситуацию, т.к. мастер может принять мусор, после которого правильный ответ слейва уже может быть и не валиден. Отсюда напрашивается вывод, что слейв должен мгновенно отвечать мастеру после приёма валидного запроса, либо сразу включать свой передатчик и заниматься подготовкой ответа.
Это несколько затруднительно, т.к. в моей текущей реализации это не реализовано (считать CRC на лету, сранивать первый байт запроса со своим адресом и даже может быть готовить ответ во время паузы, формируемой мастером). Кто-нибудь так уже сделал?

Давайте порассуждаем над этим увлекательным занятием - реализацией идеального MODBUS-RTU MASTER/SLAVE!


--------------------
“Будьте внимательны к своим мыслям - они начало поступков” (Лао-Цзы)
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Alex_2015   сниффер ком порта   Sep 6 2016, 13:56
- - bolden   Добрый день, если вы ловите запрос+ответ и если не...   Sep 6 2016, 14:07
- - dm37   Можно принимать байты по одному с таймаутом, т.е. ...   Sep 6 2016, 14:24
- - Alex_2015   Такой вариант я рассматривал, но здесь ключевая фр...   Sep 6 2016, 14:39
|- - _3m   Цитата(Alex_2015 @ Sep 6 2016, 17:39) Осн...   Sep 6 2016, 18:08
- - dm37   т.е. вы подключаетесь к какой либо паре устройств ...   Sep 6 2016, 15:06
- - DASM   честно говоря я бы такую задачу решал иначе. А име...   Sep 6 2016, 15:56
|- - jcxz   Цитата(DASM @ Sep 6 2016, 21:56) честно г...   Sep 7 2016, 18:22
|- - zltigo   QUOTE (jcxz @ Sep 7 2016, 21:22) QueryPer...   Sep 7 2016, 21:06
||- - jcxz   Цитата(zltigo @ Sep 8 2016, 03:06) К чему...   Sep 8 2016, 03:53
||- - zltigo   QUOTE (jcxz @ Sep 8 2016, 06:53) ТСу нужн...   Sep 8 2016, 06:28
||- - jcxz   Цитата(zltigo @ Sep 8 2016, 12:28) Повтор...   Sep 8 2016, 09:10
||- - zltigo   QUOTE (jcxz @ Sep 8 2016, 12:10) Именно н...   Sep 8 2016, 10:42
||- - jcxz   Цитата(zltigo @ Sep 8 2016, 16:42) Разуме...   Sep 8 2016, 18:02
||- - zltigo   QUOTE (jcxz @ Sep 8 2016, 21:02) Т.е. - у...   Sep 9 2016, 07:23
||- - Ruslan1   Мне кажется, изначально вопрос некорректно поставл...   Sep 11 2016, 18:59
||- - jcxz   Цитата(zltigo @ Sep 9 2016, 13:23) Может,...   Sep 13 2016, 05:32
||- - zltigo   QUOTE (jcxz @ Sep 13 2016, 08:32) Вы пута...   Sep 13 2016, 07:28
|- - DASM   Цитата(jcxz @ Sep 7 2016, 21:22) Я бы тож...   Sep 8 2016, 08:14
- - Lagman   Очень давно, чем то подобным занимался (отлавливал...   Sep 6 2016, 20:35
- - k155la3   Если пишете сами, попробуйте использовать таймауты...   Sep 7 2016, 06:47
- - megajohn   Цитата(Alex_2015 @ Sep 6 2016, 17:56) Все...   Sep 7 2016, 08:36
- - Alex_2015   На тему конвертора мысли были. Но только на самый ...   Sep 7 2016, 12:42
- - Alex_2015   Читал я MSDN в своё время, когда осваивал программ...   Sep 8 2016, 01:23
- - k155la3   Если не требуется переносимость-универсальгность, ...   Sep 8 2016, 06:00
- - Alex_2015   Я не утверждаю, что MSDN врёт. Просто констатирую ...   Sep 8 2016, 06:11
- - Alex_2015   Я всё-таки внесу некоторые дополнения. Использую п...   Sep 9 2016, 01:11
|- - juvf   Цитата(Lagman @ Sep 22 2016, 15:16) it is...   Sep 22 2016, 10:20
|- - megajohn   Цитата(demiurg_spb @ Sep 22 2016, 15:26) ...   Sep 22 2016, 12:35
||- - demiurg_spb   Нет. Интересует именно RS485! Наверное мне сто...   Sep 22 2016, 12:41
|- - zltigo   QUOTE (demiurg_spb @ Sep 22 2016, 15:26) ...   Sep 22 2016, 13:50
|- - demiurg_spb   Цитата(zltigo @ Sep 22 2016, 16:50) Увы, ...   Sep 23 2016, 10:45
|- - juvf   Цитата(demiurg_spb @ Sep 23 2016, 15:45) ...   Sep 23 2016, 11:16
|- - demiurg_spb   Цитата(juvf @ Sep 23 2016, 14:16) не един...   Sep 23 2016, 11:39
|- - zltigo   QUOTE (juvf @ Sep 23 2016, 14:16) не един...   Sep 23 2016, 11:55
- - juvf   ЦитатаМастер хочет передать и не знает был ли шум ...   Sep 22 2016, 12:47
|- - demiurg_spb   Цитата(juvf @ Sep 22 2016, 15:47) Мне бы ...   Sep 22 2016, 12:51
||- - juvf   Цитата(demiurg_spb @ Sep 22 2016, 17:51) ...   Sep 22 2016, 13:08
||- - demiurg_spb   Понятно что шумов быть не должно, но они как-бы ес...   Sep 22 2016, 13:13
||- - juvf   Цитата(demiurg_spb @ Sep 22 2016, 18:13) ...   Sep 22 2016, 13:19
||- - demiurg_spb   Понятно, что изолированный - это гальванически не ...   Sep 22 2016, 13:56
|- - zltigo   QUOTE (juvf @ Sep 22 2016, 15:47) Не нужн...   Sep 22 2016, 14:07
|- - Ruslan1   Цитата(juvf @ Sep 22 2016, 15:47) когда н...   Sep 23 2016, 12:44
|- - demiurg_spb   2juvf: Я стараюсь на комп не заводить MODBUS-RTU -...   Sep 23 2016, 13:04
- - juvf   ps Цитатапомехи могут дать ложный старт-бит.не вс...   Sep 22 2016, 12:56
|- - demiurg_spb   Цитата(juvf @ Sep 22 2016, 15:56) Про то,...   Sep 22 2016, 13:01
- - juvf   Цитатадля любителей растяжек НИКОГДА не работавших...   Sep 23 2016, 03:14
|- - zltigo   QUOTE (juvf @ Sep 23 2016, 06:14) zltigo,...   Sep 23 2016, 09:08
|- - juvf   Цитата(zltigo @ Sep 23 2016, 14:08) Все э...   Sep 23 2016, 10:34
|- - zltigo   QUOTE (juvf @ Sep 23 2016, 13:34) не ради...   Sep 23 2016, 11:38
- - juvf   ЦитатаМне безразлично кто и что НЕ делает и по как...   Sep 23 2016, 12:09
|- - zltigo   QUOTE (juvf @ Sep 23 2016, 15:09) К слова...   Sep 23 2016, 12:41
- - juvf   ЦитатаПод голый ПК, ака DOS - без проблем.Поделите...   Sep 25 2016, 09:02
|- - zltigo   QUOTE (juvf @ Sep 25 2016, 12:02) Поделит...   Sep 25 2016, 14:28
|- - Ruslan1   juvf , Вы хотели что-то спросить, или просто еще р...   Sep 25 2016, 17:33
- - net   поддержу особенно про стаффинг есть же протокол ...   Sep 25 2016, 17:38
- - dm37   немного в поддержу juvf Если вы работаете по прото...   Sep 25 2016, 18:23
|- - AHTOXA   Добавлю сюда пару ссылок на предыдущие обсуждения ...   Sep 25 2016, 19:10
|- - net   QUOTE (dm37 @ Sep 25 2016, 21:23) немного...   Sep 26 2016, 08:37
|- - zltigo   QUOTE (dm37 @ Sep 25 2016, 21:23) немного...   Sep 26 2016, 09:51
|- - net   QUOTE (zltigo @ Sep 26 2016, 12:51) нет...   Sep 26 2016, 10:19
||- - zltigo   QUOTE (net @ Sep 26 2016, 13:19) попробуй...   Sep 26 2016, 11:47
||- - net   QUOTE (zltigo @ Sep 26 2016, 14:47) ктож...   Sep 26 2016, 11:56
||- - juvf   Цитата(zltigo @ Sep 26 2016, 16:47) у нег...   Sep 26 2016, 12:00
|- - juvf   Цитата(zltigo @ Sep 26 2016, 14:51) Поним...   Sep 26 2016, 10:20
- - dm37   Цитата"Стандарт" на MODBUS в котором про...   Sep 26 2016, 12:21
|- - zltigo   QUOTE (dm37 @ Sep 26 2016, 15:21) Надеюсь...   Sep 26 2016, 16:49
- - dm37   to zltigo для информации во вложении со страницы ...   Sep 26 2016, 17:00
|- - AHTOXA   Цитата(dm37 @ Sep 26 2016, 22:00) во влож...   Sep 26 2016, 19:35
|- - juvf   Цитата(AHTOXA @ Sep 27 2016, 00:35) Там к...   Sep 28 2016, 08:59
|- - AHTOXA   Цитата(juvf @ Sep 28 2016, 13:59) ну тут ...   Sep 28 2016, 10:07
|- - net   QUOTE (AHTOXA @ Sep 28 2016, 13:07) Но ес...   Sep 28 2016, 10:17
|- - _Pasha   Цитата(net @ Sep 28 2016, 13:17) а если б...   Sep 28 2016, 10:25
||- - net   QUOTE (_Pasha @ Sep 28 2016, 13:25) как В...   Sep 28 2016, 10:36
|- - demiurg_spb   Цитата(net @ Sep 28 2016, 13:17) а если б...   Sep 28 2016, 10:55
|- - net   QUOTE (demiurg_spb @ Sep 28 2016, 13:55) ...   Sep 28 2016, 11:12
|- - _Pasha   Цитата(demiurg_spb @ Sep 28 2016, 13:55) ...   Sep 28 2016, 11:24
- - juvf   срезюмирую.... Цитата(zltigo @ Sep 3 2015, 1...   Sep 27 2016, 06:49
|- - net   QUOTE (juvf @ Sep 27 2016, 09:49) QUOTE (...   Sep 27 2016, 11:18
|- - demiurg_spb   Цитата(juvf @ Sep 27 2016, 09:49) 2demiur...   Sep 27 2016, 14:45
|- - net   QUOTE (demiurg_spb @ Sep 27 2016, 17:45) ...   Sep 27 2016, 15:14
|- - _Pasha   Цитата(demiurg_spb @ Sep 27 2016, 17:45) ...   Sep 27 2016, 15:22
|- - zltigo   QUOTE (_Pasha @ Sep 27 2016, 18:22) Кста,...   Sep 27 2016, 20:46
|- - _Pasha   Цитата(zltigo @ Sep 27 2016, 23:46) 1) Аб...   Sep 28 2016, 06:55
||- - zltigo   QUOTE (_Pasha @ Sep 28 2016, 09:55) 1. Не...   Sep 28 2016, 11:52
||- - net   QUOTE (zltigo @ Sep 28 2016, 14:52) Не ре...   Sep 28 2016, 11:56
||- - AHTOXA   Цитата(zltigo @ Sep 28 2016, 16:52) Не ре...   Sep 28 2016, 12:15
||- - zltigo   QUOTE (AHTOXA @ Sep 28 2016, 15:15) Старт...   Sep 28 2016, 12:33
||- - net   QUOTE (zltigo @ Sep 28 2016, 15:33) Меня ...   Sep 28 2016, 12:47
||- - AHTOXA   Цитата(zltigo @ Sep 28 2016, 17:33) Если ...   Sep 28 2016, 12:55
||- - zltigo   QUOTE (AHTOXA @ Sep 28 2016, 15:55) Нет, ...   Sep 28 2016, 13:13
|- - net   QUOTE (zltigo @ Sep 27 2016, 23:46) 2) На...   Sep 28 2016, 07:16
- - dm37   to АНТОХА ЦитатаТам как раз сказано, что растяжки ...   Sep 27 2016, 13:22
- - _Pasha   да модбас RTU, что там оговаривать   Sep 28 2016, 07:42
- - net   QUOTE (_Pasha @ Sep 28 2016, 10:42) да мо...   Sep 28 2016, 08:19
2 страниц V   1 2 >


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

 


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


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