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

 
 
> Два протокола по одному каналу?
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
 
Start new topic
Ответов
boez
сообщение Jan 17 2007, 14:19
Сообщение #2


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

Группа: Новичок
Сообщений: 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
Сообщение #3


Участник
*

Группа: Участник
Сообщений: 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 Текстовая версия Сейчас: 28th July 2025 - 01:04
Рейтинг@Mail.ru


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