последовательная передача. CRC: Чет или Нечет надежнее?

Обсуждаем цифровые устройства...
Ответить
aleksandr-zh
Сверлит текстолит когтями
Сообщения: 1278
Зарегистрирован: Пн июн 18, 2007 21:51:20

последовательная передача. CRC: Чет или Нечет надежнее?

Сообщение aleksandr-zh »

доброго всем вечера!

делаю последовательную передачу данных
Как надежнее контролировать наличие повреждения байта при передаче?
Что дает большую надежность распознования ошибки: проверка на четность или проверка на нечетность?

на мой взгляд - на нечетность

если можно - примеры и ссылки, но без трехэтажной математики: она меня доводит до трехэтажного мата :)

СПАСИБО!
Реклама
Аватара пользователя
Jack_A
Друг Кота
Сообщения: 6317
Зарегистрирован: Вт апр 24, 2007 07:45:40
Откуда: Minsk

Re: последовательная передача. CRC: Чет или Нечет надежнее?

Сообщение Jack_A »

Тут в самом вопросе смешаны мухи и котлеты, которые, как советовавл ВВП, нужно держать отдельно. Четность или нечетность используются для контроля приема/передачи одного байта и производится аппаратно. CRC считается программно и позволяет проконтролировать правильность приема всего сообщения ( я не рассматриваю шины вроде CAN, с которй не знаком и которая тоже вроде бы это делает аппаратно) . Я в своих прогах отключаю контроль четности и считаю CRC16, которая теоретически пропускает необнаруженную ошибку с вероятностью 1/65536 .
Тут еще маячит другой вопрос. Обнаружив ошибку, ведущий перезапрашивает у ведомого повтор, на это уходит дополнительное время. Теоретически можно доказать, что при относительно большом уровне искажений и длинных сообщениях вероятность удачного приема стремится к нулю. В особо ответственных случаях я упаковывал информацию в короткие блоки, которые в пакет укладывал в 3 экземплярах. На приемном конце проверялся каждый, и если в двух из 3 CRC оказывалась не битой, прием считался успешным.
В официальных протоколах я такого не встречал, и за "самодеятельность" получал "шпинделей" от шефа, на что ему резонно отвечал : "А вам шашечки нужны или ехать?" Надежная работа системы, по-моему, важнее тупого следования стандарту.
Последний раз редактировалось Jack_A Ср мар 09, 2011 00:41:51, всего редактировалось 1 раз.
Реклама
Аватара пользователя
Goldsmith
Опытный кот
Сообщения: 736
Зарегистрирован: Пн янв 10, 2011 03:06:36
Откуда: Ростов-на-Дону
Контактная информация:

Re: последовательная передача. CRC: Чет или Нечет надежнее?

Сообщение Goldsmith »

Оба способа одинаково ненадежны.
Любой дурак может писать код. Настоящий профессионал - это тот, кто способен постоянно создавать продукт высокого качества, укладываясь при этом в бюджет.
J. Ganssle
aleksandr-zh
Сверлит текстолит когтями
Сообщения: 1278
Зарегистрирован: Пн июн 18, 2007 21:51:20

Re: последовательная передача. CRC: Чет или Нечет надежнее?

Сообщение aleksandr-zh »

я про CRC ничего не писал

я планирую бит четности одного байта в протоколе нижнего уровня, а поверх еще и CRC на три байта, CRC - четвертый

я понимаю, что чем длинее посылка, тем выше вероятность повреждения
И про уменьшение скорости обмена из-за запросов и повтором, но тут надежность прежде всего!
Реклама
Эиком - электронные компоненты и радиодетали
Аватара пользователя
Goldsmith
Опытный кот
Сообщения: 736
Зарегистрирован: Пн янв 10, 2011 03:06:36
Откуда: Ростов-на-Дону
Контактная информация:

Re: последовательная передача. CRC: Чет или Нечет надежнее?

Сообщение Goldsmith »

aleksandr-zh писал(а):я понимаю, что чем длинее посылка, тем выше вероятность повреждения
Совершенно верно. Достаточно словить две помехи за время передачи байта, и контроль четности с высокой степенью вероятности ничего не выявит. Если нужна более высокая надежность, используйте, например, коды Хэмминга.
Любой дурак может писать код. Настоящий профессионал - это тот, кто способен постоянно создавать продукт высокого качества, укладываясь при этом в бюджет.
J. Ganssle
Реклама
aleksandr-zh
Сверлит текстолит когтями
Сообщения: 1278
Зарегистрирован: Пн июн 18, 2007 21:51:20

Re: последовательная передача. CRC: Чет или Нечет надежнее?

Сообщение aleksandr-zh »

хм, я не уверено, но это получится уже не контроль, а восстановление поврежденных данных... Да и математика для МК получится несколько излишняя

Думаю, что сделать как планировал:
- нижний уровень, передача по 4 бита и бит четности
- верхний уровень, три байта данных + байт с контрольной суммой

думаю, что будет достаточно, чтобы "не включилось" при поврежденных данных

а делать повторный запрос и дольше, и вероятность повреждения значительно увеличивается
Реклама
Аватара пользователя
ARV
Ум, честь и совесть. И скромность.
Сообщения: 18647
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск
Контактная информация:

Re: последовательная передача. CRC: Чет или Нечет надежнее?

Сообщение ARV »

имхо, четность явно лишнее... у вас же не 7 уровней сетевого взаимодействия, к чему разделять на верх и низ, когда фактически оно все может быть на одном уровне? CRC достаточно, имхо...
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Аватара пользователя
Goldsmith
Опытный кот
Сообщения: 736
Зарегистрирован: Пн янв 10, 2011 03:06:36
Откуда: Ростов-на-Дону
Контактная информация:

Re: последовательная передача. CRC: Чет или Нечет надежнее?

Сообщение Goldsmith »

aleksandr-zh писал(а):хм, я не уверено, но это получится уже не контроль, а восстановление поврежденных данных... Да и математика для МК получится несколько излишняя
Верно. Например, если передавать 4 бита данных + 3 контрольных, то можно гарантированно исправить одиночную ошибку, обнаружить двойную и с высокой степенью вероятности обнаружить ошибку большей кратности.

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

Кстати, передача будет средствами UART или собственным специальным интерфейсом?
Любой дурак может писать код. Настоящий профессионал - это тот, кто способен постоянно создавать продукт высокого качества, укладываясь при этом в бюджет.
J. Ganssle
aleksandr-zh
Сверлит текстолит когтями
Сообщения: 1278
Зарегистрирован: Пн июн 18, 2007 21:51:20

Re: последовательная передача. CRC: Чет или Нечет надежнее?

Сообщение aleksandr-zh »

Goldsmith писал(а): Насчет математики - она очень простая и ненапряжная. Контроль по Хэммингу даже аппаратно делается без больших затрат, его часто реализуют на оперативной памяти для ответственных приложений.
я уже почитал в Сети о данных кодах. Надо подумать: стоит ли игра свечь :)

Goldsmith писал(а): Кстати, передача будет средствами UART или собственным специальным интерфейсом?
нет, всё свое: передача по сети 220 Вольт, в паузах - при переходе тока через ноль

Достиг скорости (транспортной) в 1900 бит: Старт-бит + 8 данных+Четности + 8 данных+Четности

Думаю, изменить на:
Старт + 4 данных+Четность +4 данных+Четность + 2НомерПакета+Четность
Транспортная -ниже, данных меньше передам, но надежность - выше

aleksandr-zh
Сверлит текстолит когтями
Сообщения: 1278
Зарегистрирован: Пн июн 18, 2007 21:51:20

Re: последовательная передача. CRC: Чет или Нечет надежнее?

Сообщение aleksandr-zh »

ARV писал(а):имхо, четность явно лишнее... у вас же не 7 уровней сетевого взаимодействия, к чему разделять на верх и низ, когда фактически оно все может быть на одном уровне? CRC достаточно, имхо...
я пока в процессе разработки, но планирую два уровня
Первый - транспортный, с минимально достаточной проверкой целостности данных (тот же бит четности или нечетности)
Второй- информационный, там тоже будет CRC на 2-4 байта (планирую: два под адрес и один - под данные)
Аватара пользователя
ARV
Ум, честь и совесть. И скромность.
Сообщения: 18647
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск
Контактная информация:

Re: последовательная передача. CRC: Чет или Нечет надежнее?

Сообщение ARV »

имхо, ничего, кроме разрастания кода и снижения скорости вы не добъетесь своими уровнями... если вы опираетесь на "декларируемое" везде "небольшое количество помех в сети вблизи перехода через 0", то наоборот было бы логичнее стараться передать как можно больше битов в этот промежуток и повторить весь пакет спустя 10 мс, если он с ошибками, чем медленно и печально по несколько лбит передавать с контролем ошибок...

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

Мой уютный бложик... заходите!
Аватара пользователя
Jack_A
Друг Кота
Сообщения: 6317
Зарегистрирован: Вт апр 24, 2007 07:45:40
Откуда: Minsk

Re: последовательная передача. CRC: Чет или Нечет надежнее?

Сообщение Jack_A »

aleksandr-zh писал(а):я про CRC ничего не писал
Наверное, у меня галюцинации. Иду пить валерьянку.
CRC.JPG
(9.59 КБ) 548 скачиваний
aleksandr-zh
Сверлит текстолит когтями
Сообщения: 1278
Зарегистрирован: Пн июн 18, 2007 21:51:20

Re: последовательная передача. CRC: Чет или Нечет надежнее?

Сообщение aleksandr-zh »

Всех благодарю за советы
буду думать

тему можно закрыть - попер флуд
Ответить

Вернуться в «Цифровая техника»