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

 
 
 
Reply to this topicStart new topic
> Два протокола по одному каналу?
oleg_lwd
сообщение Jan 11 2007, 13:13
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 27
Регистрация: 26-10-05
Пользователь №: 10 131



Допустим, передается по каналу MODBAS-RTU со своей проверкой CRC16 и длиной пакета, допустим 128 байт максимум. Возможно, ли передавать по каналу совместно с MODBAS свой протокол, взять для него другой полином CRC16 (или начальное значение отличное от MODBAS). Какой это протокол определять по CRC, т.е., не возникнет ли ситуации когда проверки на CRC одного и того же пакета данных для обоих протоколов одновременно будут верными.
Go to the top of the page
 
+Quote Post
plan
сообщение Jan 11 2007, 15:40
Сообщение #2


Участник
*

Группа: Участник
Сообщений: 73
Регистрация: 23-12-05
Из: Украина Днепродзержинск
Пользователь №: 12 599



Цитата(oleg_lwd @ Jan 11 2007, 14:13) *
Допустим, передается по каналу MODBAS-RTU со своей проверкой CRC16 и длиной пакета, допустим 128 байт максимум. Возможно, ли передавать по каналу совместно с MODBAS свой протокол, взять для него другой полином CRC16 (или начальное значение отличное от MODBAS). Какой это протокол определять по CRC, т.е., не возникнет ли ситуации когда проверки на CRC одного и того же пакета данных для обоих протоколов одновременно будут верными.

Ситуация с одинаковыми crc в принципе возможна , но маловероятна. На одну crc полагаться не стоит. Надо согласно протоколу обрабатывать все данные(адрес,функцию,данные) и тогда проколов не должно быть и естесно выдерживать битовый интервал.
Go to the top of the page
 
+Quote Post
=GM=
сообщение Jan 11 2007, 15:46
Сообщение #3


Ambidexter
*****

Группа: Свой
Сообщений: 1 589
Регистрация: 22-06-06
Из: Oxford, UK
Пользователь №: 18 282



Цитата(oleg_lwd @ Jan 11 2007, 10:13) *
Допустим, передается по каналу MODBAS-RTU со своей проверкой CRC16 и длиной пакета, допустим 128 байт максимум. Возможно, ли передавать по каналу совместно с MODBAS свой протокол, взять для него другой полином CRC16 (или начальное значение отличное от MODBAS). Какой это протокол определять по CRC, т.е., не возникнет ли ситуации когда проверки на CRC одного и того же пакета данных для обоих протоколов одновременно будут верными.

Когда-нибудь, да наступит такое совпадение, увы(:-(. Поставьте в свой протокол отличительный признак, пару байт, типа "MY_PROTOCOL", если можете, то и в MODBAS признак протокола поставьте, типа "MODBAS". И всё будет в ажуре.


--------------------
Делай сразу хорошо, плохо само получится
Go to the top of the page
 
+Quote Post
oleg_lwd
сообщение Jan 15 2007, 13:03
Сообщение #4


Участник
*

Группа: Участник
Сообщений: 27
Регистрация: 26-10-05
Пользователь №: 10 131



Устройства с протоколом MODBAS не мои и я не могу поменять их протокол, да и меня не интересует его содержимое, адреса приборов с протоколом MODBAS могут быть любыми, видимо, не смогу протокол для своих устройств сделать MODBAS без возникновения конфликта адресов (вероятность 1/255).

Подскажите, я не ошибаюсь в том, что вероятность совпадений CRC16 с разными полиномами будет 1/2^32?
Думаю, если считать свою CRC16 с полиномом MODBAS и начальным значением отличным от MODBAS вообще совпадений быть не должно?
Кто силен в математике CRC скажите прав или не прав?
Go to the top of the page
 
+Quote Post
Alex03
сообщение Jan 15 2007, 13:49
Сообщение #5


Местный
***

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



Я так понимаю мастер в обоих случаях один (ПиСюк), и использование одного исключает другого (не запускать обе проги сразу)?

Цитата
Подскажите, я не ошибаюсь в том, что вероятность совпадений CRC16 с разными полиномами будет 1/2^32?

1/2^16 при прочих равновероятных условиях.

Может использовать первый байт (адрес) из диапазона зарезирвированных 248-254?
Go to the top of the page
 
+Quote Post
oleg_lwd
сообщение Jan 15 2007, 14:48
Сообщение #6


Участник
*

Группа: Участник
Сообщений: 27
Регистрация: 26-10-05
Пользователь №: 10 131



Цитата(Alex03 @ Jan 15 2007, 16:49) *
Я так понимаю мастер в обоих случаях один (ПиСюк), и использование одного исключает другого (не запускать обе проги сразу)?

1/2^16 при прочих равновероятных условиях.

Может использовать первый байт (адрес) из диапазона зарезирвированных 248-254?


Мастер один программа одна но сам канал сложный (древовидная сеть: радио, RS485, длинные линии)

Я размышлял так CRC1 = Paket mod P1; CRC2 = Paket mod P2 CRC1= СRС2 если Paket = P1*P2 степень P1*P2 будет 32, значит вероятность совпадения будет 1/2^32.

Мысль была использовать для своих устройств один адрес из 248-254, но зачем гонять лишний байт? И вообще корректно использовать эти адреса?

Если я не ошибся с вероятностью совпадения СRC то она очень мала.
Go to the top of the page
 
+Quote Post
boez
сообщение Jan 17 2007, 14:19
Сообщение #7


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

Группа: Новичок
Сообщений: 79
Регистрация: 1-11-06
Пользователь №: 21 868



Нет, вероятность совпадения двух разных произвольных CRC 1/2^16. Это при их независимости. Если использовать Наша_CRC = Родная_CRC xor 0xABCD, то вероятность совпадения нашей и их CRC на целых пакетах просто нулевая. Ну а на битых может быть все что угодно. Для надежности в своем протоколе можно использовать нестандартные номера функций (большие) и большие адреса.

А вообще для мультиплексирования в модбасе предназначены адреса!!! Нужно их просто правильно раздать всем устройствам...
Go to the top of the page
 
+Quote Post
oleg_lwd
сообщение Jan 18 2007, 15:42
Сообщение #8


Участник
*

Группа: Участник
Сообщений: 27
Регистрация: 26-10-05
Пользователь №: 10 131



Цитата(boez @ Jan 17 2007, 17:19) *
Нет, вероятность совпадения двух разных произвольных CRC 1/2^16. Это при их независимости.

Полиномы для CRC (CCITT, ANSI) которые все используют вида: СRC = (X+1) * Prim15_CRC; Prim15_CRC - примитивный полином, если по уму брать начальное значение CRC16, то первая ошибка будет, когда пакет равен Prim15_CRC1 * Prim15_CRC2, вероятность ошибки будет 1/2^30?

Цитата(boez @ Jan 17 2007, 17:19) *
Если использовать Наша_CRC = Родная_CRC xor 0xABCD, то вероятность совпадения нашей и их CRC на целых пакетах просто нулевая. Ну а на битых может быть все что угодно.

Полностью согласен и сейчас ищу правильное начальное значение тупым перебором ошибок.
Go to the top of the page
 
+Quote Post

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

 


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


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