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

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





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



Всем доброго дня. Есть сеть устройств, работающих по протоколу модбас через RS485. Необходимо написать перехватчик сообщений для ком порта, способный ловить паузы между сообщениями.
Вот как поймать паузы, пока не соображу. Драйвер возвращает пачки по несколько байт, но поймать получается только длинные паузы (между запросами), а вот разделить запрос-ответ пока не могу.
Есть программы снифферы, которые как-то реализуют такую возможность. Надо написать свою, в которой данные преобразовать в удобоваримый вид, удобный для отладки работы сети устройств.
В винде это наверное тяжело будет сделать, но может есть способ, о котором я пока не знаю.
Go to the top of the page
 
+Quote Post
9 страниц V  « < 4 5 6 7 8 > »   
Start new topic
Ответов (75 - 89)
net
сообщение Sep 27 2016, 11:18
Сообщение #76


Знающий
****

Группа: Свой
Сообщений: 858
Регистрация: 9-08-04
Пользователь №: 473



QUOTE (juvf @ Sep 27 2016, 09:49) *
QUOTE (AHTOXA @ Sep 26 2016, 00:10) *
есть такое... но в модбас такое не прокатит... если только в 4 раза скорость понизить, вдунуть 0хфф, потом поднять скорость и слать пакет.

извиняюсь перед ТС за офтоп.



очень много букв
но вы даже не удосужились прочитать о чем пишет Антоха !!
он же написал о стаффинг протоколах !!! а вы это приписываете, что для модбас не прокатит
естественно потому что это для другого случая он написал !!!
что вобщемто и подтвеждает мысль, что с модбас не все нормально


более того например BSC известен ( применен метод байт стаффинга) с 68 года прошлого века и каким образом вылез модбас со своей временной паузой для синхронизации которые с трудом можно реализовать - не дай бог еще и скорость поднять то вообще труба будет, монотонность потока

и дурацкими растяжками гробящие сигнал и ничего не дающие не очень понятно

Go to the top of the page
 
+Quote Post
dm37
сообщение Sep 27 2016, 13:22
Сообщение #77


Участник
*

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



to АНТОХА
Цитата
Там как раз сказано, что растяжки не обязательны. Вернее, что их надо ставить в том и только том случае, если устройства в сети декларируют их необходимость:


дак никто же этого не отрицает

Уверен, что почти каждый будет проверять работу RS485 без растяжек с True Fail-Safe. Правда, если это потребует переделку софта, то не везде это применишь (совместимости не будет).

P.S. Просто, если человек спрашивает, то нужно объяснять (пусть даже 2+2=4), для этого и существует форум. В своё время был очень хороший форум на telesys.ru, правда потом он стал полем разборок "профессионалов". Начинающих просто "забивали". Не хотелось бы здесь увидеть подобную манеру общения.


Go to the top of the page
 
+Quote Post
demiurg_spb
сообщение Sep 27 2016, 14:45
Сообщение #78


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

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



Цитата(juvf @ Sep 27 2016, 09:49) *
2demiurg_spb, я видел подобные парссеры. ..... выскажу мнение: мне не нравиться подобные парссеры. Почему.
Ваше объяснение логично, понятно и более того соответствует описанию счётчиков в документе modbus_over_serial_line.
Но лично мне совершенно не хочется напрягать контроллер расчётами CRC всего сетевого трафика...

Что касается длинны линии, то сталкивался с разными задачами вплоть до километра.
Сейчас под рукой таких линий нет - картинку снять не могу.

А линию продуваю действительно так, как вы предположили. Поясню на примере STM32.
Отключаю функцию UART на ноге ТХ (перевожу в GPIO) и отправляю один байт на заранее рассчитанной скорости чтобы получилась пауза 3,5T (при этом нога TX вообще не дёргается).
Потом в прерывании TXC перевожу ногу обратно в режим UART-TX, меняю на правильный бодрейт и отправляю пакет, потом снова продуваю прежним способом.
Т.е. у меня в драйвере UART есть возможность включить пакетный режим с суффиксом и префиксом активного состояния.
Прерывания от таймера вообще не использую.


--------------------
“Будьте внимательны к своим мыслям - они начало поступков” (Лао-Цзы)
Go to the top of the page
 
+Quote Post
net
сообщение Sep 27 2016, 15:14
Сообщение #79


Знающий
****

Группа: Свой
Сообщений: 858
Регистрация: 9-08-04
Пользователь №: 473



QUOTE (demiurg_spb @ Sep 27 2016, 17:45) *
А линию продуваю действительно так, как вы предположили. Поясню на примере STM32.



возникает вопрос смысл продувки?
если помехи не было - то и продувать то особенно нечего - бит синхронизация и так есть
если же была помеха то продувай не продувай будет принят битый пакет
в чем смысл?
Go to the top of the page
 
+Quote Post
_Pasha
сообщение Sep 27 2016, 15:22
Сообщение #80


;
******

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



Цитата(demiurg_spb @ Sep 27 2016, 17:45) *
Прерывания от таймера вообще не использую.

Кста, хороший метод. Вещь в себе. Спасибо за мысль. Раньше делал по таймеру
Go to the top of the page
 
+Quote Post
zltigo
сообщение Sep 27 2016, 20:46
Сообщение #81


Гуру
******

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



QUOTE (_Pasha @ Sep 27 2016, 18:22) *
Кста, хороший метод.

1) Абсолютно бесполезный, ибо на приеме таймауты 1,5 и 3,5 по любому придется иметь, так зачем еще плодить лишние сущности.
2) На многих чипах нереализуемый, ибо прерывания окончания передачи просто нет, а есть только освобождение буферного регистра.
3) Ошибочный, поскольку в начале модбасовского фрейма 3,5 пауза избыточна и только снижает темп обмена.





QUOTE (net @ Sep 27 2016, 18:14) *
возникает вопрос смысл продувки?
если помехи не было - то и продувать то особенно нечего - бит синхронизация и так есть
если же была помеха то продувай не продувай будет принят битый пакет
в чем смысл?

В том, что Ваше утверждение "будет принят битый пакет" ошибочное. Это из мусора будет сформирован битый пакет, а передаваемый пакет пойдет очищенным от мусора.





--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
_Pasha
сообщение Sep 28 2016, 06:55
Сообщение #82


;
******

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



Цитата(zltigo @ Sep 27 2016, 23:46) *
1) Абсолютно бесполезный, ибо на приеме таймауты 1,5 и 3,5 по любому придется иметь, так зачем еще плодить лишние сущности.
2) На многих чипах нереализуемый, ибо прерывания окончания передачи просто нет, а есть только освобождение буферного регистра.
3) Ошибочный, поскольку в начале модбасовского фрейма 3,5 пауза избыточна и только снижает темп обмена.

1. Нет. Речь шла о продувке физ. канала. Совершенно закономерно, что мысль дошла до того, чтобы сделать продувку равную Т35 или Т15, но делать ее по максимуму, ессно, необязательно.
2. Нет! "на многих чипах" -это х51?
3. Да )) но не совсем. при Т15 остальной парк девайсов примет все что идет вплоть до Т35. Т.е. после продувки Т15 можно запросто потерять пакет. А после Т35 - нет.
Так что все правильно оказывается.

Сообщение отредактировал _Pasha - Sep 28 2016, 06:58
Go to the top of the page
 
+Quote Post
net
сообщение Sep 28 2016, 07:16
Сообщение #83


Знающий
****

Группа: Свой
Сообщений: 858
Регистрация: 9-08-04
Пользователь №: 473



QUOTE (zltigo @ Sep 27 2016, 23:46) *
2) На многих чипах нереализуемый, ибо прерывания окончания передачи просто нет, а есть только освобождение буферного регистра.

В том, что Ваше утверждение "будет принят битый пакет" ошибочное. Это из мусора будет сформирован битый пакет, а передаваемый пакет пойдет очищенным от мусора.


2) легко реализуемо путем пердачи лишнего байта - и как только лишний байт уйдет из регистра значит передача нужного байта выполнена

по вопросу битый пакет надо договориться о терминах и о каком протоколе мы говорим
после этого эту тему можно обсуждать - а то у нас тут уже все в одну кучу смешалось и модбас и байт стаффиг и растяжки и особенности прерываний и тд и тп и понять о чем идет речь весьма затруднительно

а тут важна совокупность того о чем мы говорим - типа синегирия в полном виде ;-)

и уж если придераться к словам - из мусора будет сформирован битый пакет - он что не будет никем принят? хотя тут опять возникает вопрос что значит ПРИНЯТЬ быитый пакет ;-)
Go to the top of the page
 
+Quote Post
_Pasha
сообщение Sep 28 2016, 07:42
Сообщение #84


;
******

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



да модбас RTU, что там оговаривать
Go to the top of the page
 
+Quote Post
net
сообщение Sep 28 2016, 08:19
Сообщение #85


Знающий
****

Группа: Свой
Сообщений: 858
Регистрация: 9-08-04
Пользователь №: 473



QUOTE (_Pasha @ Sep 28 2016, 10:42) *
да модбас RTU, что там оговаривать

вот нефига я его не понимаю - поэтому обсуждать его не могу ;-)
Go to the top of the page
 
+Quote Post
juvf
сообщение Sep 28 2016, 08:59
Сообщение #86


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

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



Цитата(AHTOXA @ Sep 27 2016, 00:35) *
Там как раз сказано, что растяжки не обязательны. Вернее, что их надо ставить в том и только том случае, если устройства в сети декларируют их необходимость:
ну тут немного не так....
Цитата
When there is no data activity on an RS-485 balanced pair, the lines are not driven and, thus susceptible to external noise or
interference. To insure that its receiver stays in a constant state, when no data signal is present, some devices need to bias
the network.
Each MODBUS device must
be documented to say :
-if the device needs a line polarization,
-if the device implements, or can implement, such a line polarization.
смысл такой, что когда линяя без драйвера, то она чувствительна к внешним шумам. Чтобы быть уверенным, что с выхода приемника не сыпет мусор (дословно "приемник в постоянном состоянии") когда нет активного сигнала, некоторым устройствам нужно защитное смещение.
В описании каждого устройства должно быть сказано:
-Нуждается ли в защитном смещении (например, если использовать драйвера True Fail-Safe, то защитное смещение устройству не нужно)
-Если устройстве реализует или может реализовать защитное смещение линии

т.е. протокол подразумевает тишину на приемниках, когда нет передачи.
Go to the top of the page
 
+Quote Post
AHTOXA
сообщение Sep 28 2016, 10:07
Сообщение #87


фанат дивана
******

Группа: Свой
Сообщений: 3 387
Регистрация: 9-08-07
Из: Уфа
Пользователь №: 29 684



Цитата(juvf @ Sep 28 2016, 13:59) *
ну тут немного не так....
...
т.е. протокол подразумевает тишину на приемниках, когда нет передачи.

Нет. Протокол не подразумевает. В стандартах никогда ничего не подразумевается, там всегда всё формулируется чётко. Если написано,
Цитата
Each MODBUS device must be documented to say :
- if the device needs a line polarization,
- if the device implements, or can implement, such a line polarization.

То это означает именно то, что написано, то есть, что каждое устройство должно документировать, нужны ли ему растяжки, и реализует ли оно растяжки внутри себя.
А если написано, что
Цитата
If one or several devices need polarization, one pair of resistors must be connected on the RS-485 balanced pair

То это означает, что если (и только если) одно или несколько устройств нуждается в растяжках (декларирует это в документации), то надо сделать растяжки.
А фраза
Цитата
When there is no data activity on an RS-485 balanced pair, the lines are not driven and, thus susceptible to external noise or
interference. To insure that its receiver stays in a constant state, when no data signal is present, some devices need to bias
the network.

всего лишь объясняет, почему некоторым устройствам требуется растяжка.

Никакой тишины линии не подразумевается.

Вы поймите, что способность вашего устройства работать без растяжек - это конкурентное преимущество. Потому что при прочих равных такое устройство будет способно работать на более зашумлённых и длинных линиях, и таких устройств можно больше подключить в сеть.

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


--------------------
Если бы я знал, что такое электричество...
Go to the top of the page
 
+Quote Post
net
сообщение Sep 28 2016, 10:17
Сообщение #88


Знающий
****

Группа: Свой
Сообщений: 858
Регистрация: 9-08-04
Пользователь №: 473



QUOTE (AHTOXA @ Sep 28 2016, 13:07) *
Но если у вас появится конкурент, который сделает устройство, способное работать в сети без растяжек, то его устройство будет лучше. И, весьма вероятно, что заказчики предпочтут его.


а если банально сменить протокол modbus RTU на протокол использующий byte stuff - то все обсуждаемые проблеммы данного топика
просто исчезнут сами собой - включая начальную тему про сниффер ;-)
Go to the top of the page
 
+Quote Post
_Pasha
сообщение Sep 28 2016, 10:25
Сообщение #89


;
******

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



Цитата(net @ Sep 28 2016, 13:17) *
а если банально сменить протокол modbus RTU на протокол использующий byte stuff - то все обсуждаемые проблеммы данного топика
просто исчезнут сами собой - включая начальную тему про сниффер ;-)

как Вы себе это представляете для случая, когда прибору требуется модбас как стд интерфейс?
Go to the top of the page
 
+Quote Post
net
сообщение Sep 28 2016, 10:36
Сообщение #90


Знающий
****

Группа: Свой
Сообщений: 858
Регистрация: 9-08-04
Пользователь №: 473



QUOTE (_Pasha @ Sep 28 2016, 13:25) *
как Вы себе это представляете для случая, когда прибору требуется модбас как стд интерфейс?


я представляю это себе так
1 сначало люди придумали проблему
2 а потом извращаются чтобы ее решить

ТС предложили поставить МК на котором перевести идиотский модбас в нормальный поток RS232 (для примера - а то сейчас опять налетите USB CAN и тд и тп)

либо со штампами времени
либо ... не буду дальше

причем народ поделился опытом, что не получается честно отработать даже минимальные скорости этого идиотского протокола на win
все !!! о чем еще говорить?

более того он использует переходник USB-RS232 это и есть фактически такое устройство которое ему и прделагали сделать самому
только с его функционалом

Go to the top of the page
 
+Quote Post

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

 


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


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