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

|
Всем доброго дня. Есть сеть устройств, работающих по протоколу модбас через RS485. Необходимо написать перехватчик сообщений для ком порта, способный ловить паузы между сообщениями. Вот как поймать паузы, пока не соображу. Драйвер возвращает пачки по несколько байт, но поймать получается только длинные паузы (между запросами), а вот разделить запрос-ответ пока не могу. Есть программы снифферы, которые как-то реализуют такую возможность. Надо написать свою, в которой данные преобразовать в удобоваримый вид, удобный для отладки работы сети устройств. В винде это наверное тяжело будет сделать, но может есть способ, о котором я пока не знаю.
|
|
|
|
|
 |
Ответов
|
Sep 21 2016, 18:29
|

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

|
2 ТС Тут только аппаратный снифер поможет. Можно сделать MODBUS-RS485 to MODBUS-TCP. А вот тсп-модбас уже акулой смотреть, она знает модбас и может его парсить. 2 jcxz Утопия. Ни фига не сможет вин/лин по таймаутам работать. Если только на скорости 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, на каком нить стареньком одноядерном компе, на котором еле-еле гуи ворочится и процессор занят кучей увесистых задач?
|
|
|
|
|
Sep 22 2016, 10:16
|
Знающий
   
Группа: Свой
Сообщений: 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 главное не начинать передачу пакета (запрос или ответ) раньше этого момента и можно "терпеть" с передачей вплоть до истечения времени ожидания ответа.
|
|
|
|
|
Sep 22 2016, 10:40
|

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

|
QUOTE (Lagman @ Sep 22 2016, 13:16)  и если T1.5 почти никто не проверяет Что очень зря, ибо это есть механизм отсева сбоев и быстрого восстановления фреймовой синхронизации. QUOTE то с T3.5 главное не начинать передачу пакета (запрос или ответ) раньше этого момента и можно "терпеть" с передачей вплоть до истечения времени ожидания ответа. Терпеть-то можно, если в конкретном случае общая скорость обмена не волнует, но при требовании быстрого обмена все эти таймауты катострофически снижают пропускную способность. В частном случае, когда конкретные реализаторы протокола "плют", "терпят" и медленно обмениваются пакетами в которых паузы между фреймами определяются не протоколом а неспешым темпом обмена и меееедлееенннооо реагирующими на запросы слейвами, софтовый снифер под WIN как-бы ваделяет фреймы без проблем. Но при полноскоростном обмене шансов под WIN никаких  .
--------------------
Feci, quod potui, faciant meliora potentes
|
|
|
|
|
Sep 22 2016, 12:26
|

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

|
Добрый день коллеги! Захотелось обсудить вопрос "продувки шины" перед выдачей пакта в линию сразу после включения драйвера RS485 на передачу.
Я обычно формирую требуемую паузу на шине с включенным передатчиком до и после передачи пакта. Отсюда получается дыра межу фреймами в 2 раза больше, т.к. и мастер и слейв делают это. Естественно, скорость передачи из-за этих пауз сильно снижается.
У меня есть сомнения, что если этого не делать можно наступить на грабли. Поясню.
1) Мастер хочет передать и не знает был ли шум в линии - следовательно надо "продуть" до, ну а после само-собой разумеется продувать необходимо чтобы слейв словил тишину.
2) Слейв хочет ответить на принятый запрос и тоже не знает про то, был-ли шум на линии с момента приёма пакета до переключения драйвера на передачу. Ведь по окончании паузы сформированной мастером, проходит некоторое время на обработку пакета и в это время линия висит либо в воздухе, либо растянута слабенькими резисторами и помехи могут дать ложный старт-бит. Пока писал это осознал, что если помеха в этот момент случилась, то продувка линии может уже и не спасти ситуацию, т.к. мастер может принять мусор, после которого правильный ответ слейва уже может быть и не валиден. Отсюда напрашивается вывод, что слейв должен мгновенно отвечать мастеру после приёма валидного запроса, либо сразу включать свой передатчик и заниматься подготовкой ответа. Это несколько затруднительно, т.к. в моей текущей реализации это не реализовано (считать CRC на лету, сранивать первый байт запроса со своим адресом и даже может быть готовить ответ во время паузы, формируемой мастером). Кто-нибудь так уже сделал?
Давайте порассуждаем над этим увлекательным занятием - реализацией идеального MODBUS-RTU MASTER/SLAVE!
--------------------
“Будьте внимательны к своим мыслям - они начало поступков” (Лао-Цзы)
|
|
|
|
Сообщений в этой теме
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 страниц
1 2 >
4 чел. читают эту тему (гостей: 4, скрытых пользователей: 0)
Пользователей: 0
|
|
|