Передача сигнала по рации с ЧМ. Очень много шумов.))
CRC-8-CCITT 0x07
CRC-8-Dallas/Maxim 0x31
CRC-8 0xD5
Или сразу брать CRC-16...
Интересный вопрос... Выше уже проводили исследования длины пакета. От этого зависит максимальная дальность (важный параметр). Вероятность повреждения длинных пакетов (32...48 бит и т.д.) больше... требуется выше отношение С/Ш. Поэтому в последней схеме сделали передачу вообще одиночными байтами. При этом дальность заметно возросла.Ser60 писал(а):Если в пакете CRC вычисляется на основе 6 байтов данных (48 бит)...
Да я почитал даташиты от разных производителей. Например популярный радиомодуль (часто используется для радиоуправления) https://yandex.ru/images/search?text=nr ... source=wizSer60 писал(а):Практически во всех современных радиомодулях имеется встроенный движок CRC...
В некоторых этот движок может быть настроен на разные полиномы из списка, и даже иногда на произвольный.
Модули (nrf24l01+), работающим на частоте 2.4ггц с усилителями LNA+PA как пишут работают до 1100 метров (максимум 1800 метров) по прямой. Не проверял...Ser60 писал(а):Делать управление на этом модуле (nrf24l01+), работающим на частоте 2.4ггц, неразумно
)) Я никому ничего не говорю... и не спорю. Я просто пишу тут все свои мысли, которые приходят в голову )) и делюсь своими надлюдениями. Не более...Ser60 писал(а):Но не Вам мне говорить, что чувствительность не единственный параметр, определяющий дальность надёжной передачи данных.
aen писал(а):ЧМ приемник выдает на выходе ЧМ детектора шум если на вход приемника не поступает никакого сигнала.
aen писал(а):Если на вход приемника подать просто несущую без модуляции, т.е. передатчик включен, а на варикапы ничего не подается, то шумы на выходе частотного детектора пропадают.
aen писал(а):Если на варикапы в передатчике подавать цифровой сигнал, то на выходе частотного детектора получим копию этих импульсов и без всяких шумов.
Учли. Сигнал в на выходе приёмника повторяет сигнал на входе передатчика.aen писал(а):При этом нужно учитывать, что импульсы команды на выходе частотного детектора могут быть инвертированы
Учли. В приёмнике (после детектора) стоят конденсаторы. Они не пропускают постоянную составляющую. Поэтому мы использовали манчестер. Постоянная составляющая отсутствует. Поэтому переходные конденсаторы нам больше не страшны))aen писал(а):Ваш тракт наверняка не передает постоянной составляющей команды и это тоже нужно учесть при дешифрации команды.
Выше ещё писали про ложные импульсы... http://radiokot.ru/forum/viewtopic.php? ... 5#p2644775aen писал(а):Все это справедливо при очень сильном сигнале поступающем на приемник. Если сигнал будет слабый, то на выходе частотного детектора получим наши импульсы команд зашумленные и чем слабее сигнал, то больше будут шумы и может наступить такой случай, что сигнал уже будет невозможно выделить из этих шумов... Выделение из шумов, если такое будет необходимо можно делать и программными методами и аппаратными.. при маленьком расстоянии импульсы будут довольно чистые и не зашумленные...
Сначала сделали два раза подряд после паузы... Оказалось мало)) одна ложная команда на 10.000 правильных.aen писал(а):Не забывайте про помехи и сделайте программно их выявление. Это или передача контрольных сумм или дублирование команды, т.е. например если команда пришла два(три) раза подряд одна и та же, значит она истинна. Если две соседние команды начиная с паузы пришли разные, значит команда ошибочна и она игнорируется.
Да, сначала передавали одним большим пакетом, с инверсией (как в пульте телевизора).es131245 писал(а):Инверсией же приходиться пересылать в 2 раза больше данных...
Да, интернет протокол TCP/IP именно так и делает)) Только там уровень шума намного меньше... )) А у нас... радио.))es131245 писал(а):почему просто нельзя кинуть данные с битом четности и контрольной суммой. Если приёмник повторит контрольную сумму -всё ок, если нет выслать снова.? Вроде так и делают компы
Очень интересно...Штефан писал(а):Метод кодирования оригинальный, каждый полубайт полезных данных в эфире передается 6ти битовыми словами, в которых 3 еденицы и 3 нуля. Это позволяет избавится от постоянной составляющей в сигнале, а еще кодововое расстояние таких слов 2 и более, поэтому без труда обнаруживается 1 кратная ошибка. Кадровая синхронизация обеспечивается 8ми разрядным словом. Обнаружение сигнала кадровой синхронизации и битовой синхронизации обеспечивается корреляционными алгоритмами...
А вообще хотел своими идеями поделится, нормальных цифровых каналов с ФАПЧ и корреляторами похоже моделисты не применяют, а без этого цифровой канал уступает ППМ, а я запихал это все в атмегу, да еще на СИ, это была большая работа. Хотел делать приемник с подавлением зеркального канала, гетеродин для этого имеет на выходе сигнал в 1.5 больше надобного, чтобы компенсировать потери на фазовращателях, но после полевых испытаний отказался, мне дальности хватает.
Нормального протокола в нете я тоже не обнаружил, максимум манчестер+CRC, но это дубовато.
Поясняю коррелятор - это сдвиговый регистр (в конкретном случае) его содержимое суммируется с весовыми коэффициентами,
на выходе получается вроде степени совпадения содержимого коррелятора с эталоном. У меня этих регистров 2, один отличает 1 от 0 и обнаруживает границы между битами (для подстройки цифровой ФАПЧ) 2й обнаруживает начало кадра. При срыве синхронизации или обнаружении ошибок в боле чем 3х каналов, прога переходит в SAVE MODE, сервы в нейтраль, обратно возращается только если примет 7 кадров нормально.
Что-то я, значит, в Вашем тексте выше не понял.roman.com писал(а):...1010101010101010101110001010101010101010011100011010101010101010111001001010101010101010... и т.д. ... бесконечно
А время на передачу синхробайтов считается нулевым что-ли? Что-то я опять не так понял, наверное.roman.com писал(а):у меня нет преамбулы. Экономим время на передачу
Только по общей CRC никак. Полагаю, это был не вопрос а "мысли вслух" (?) Никак не могу адаптироваться к стилю Ваших сообщений, Роман.roman.com писал(а):Интересно.. как определить по CRC какая часть повреждена
Ser60 писал(а):Никак не могу адаптироваться к стилю Ваших сообщений
roman.com писал(а):Интересно.. как определить по CRC какая часть повреждена
А если подумать? ))) Далее... "мысли вслух"Ser60 писал(а):Только по общей CRC никак.
Преамбула и синхрослово должны быть разные, иначе как определить где кончилась преамбула и началось синхрослово. Если передавать пакеты один за другим непрерывно, то преамбула каждый раз может и не нужна. Но после какого-то времени рассинхронизация все-равно наступит, поскольку строго одинаковых частот не сушествует. Для этого, как я понял, у Вас и передаются вставки из синхрослов. В большинстве приложений передача идет нечастыми пакетами с молчанием на частоте между ними. Т.к. передача может возобновиться в любой момент асинхронно, приемник опять может быть рассинхронизирован с передатчиком, для этого и передается преамбула по-новой.Пакет 1: 1010101010101010(преамбула)-1010101010101010(синхрослово)
Нет! Ее можно в любой момент запретить передавать путем изменения битов конфигурации. Тоже самое про синхрослово. В силлабовких радио, например, более 150 параметров настройки практически под любую ситуацию.Преамбула нужна для работы заводского радимодуля
Опять-же зависит от радио-чипа. На примере силлабовских, имеется возможность автоматически считать и передавать CRC пакета, но не проверять его на приемном конце. В этом случае пакет останется в FIFO для внешней обработки.Что делает в таком случае заводской радиомодуль? Да просто выкидывает весь пакет из буфера FIFO
Чего тут поправлять. Как исправить ошибки в приведенном выше сценарии путем замещения байтов я понял. Но существует и масса других ситуаций, не описанных выше. Например в пакетах 1 и 2 произошли ошибки только в их первых байтах из трех. Что будет делать приемник - подбирать первый байт до совпадения контрольной суммы или сдастся сразу? Неверняка можно напридумывать массу других подобных "заплаток". Может в данном конкретном случае и работоспособная система получится.Поправьте меня
Да это понятно)) Я схематично обозначил)) На самом деле было там так:Ser60 писал(а):Преамбула и синхрослово должны быть разные, иначе как определить где кончилась преамбула и началось синхрослово
Это мы вкурсе)) Выше уже обсуждали. Собаку съелиSer60 писал(а):после какого-то времени рассинхронизация все-равно наступит, поскольку строго одинаковых частот не сушествует.
Ну в радиоуправлении обычно (сколько я видел) идёт непрерывная передача пакетов... Нужен полный контроль над моделью с минимальным временем обновления данных в приёмнике модели... И желательно с постоянной времени обновления данных (время отклика).Ser60 писал(а):В большинстве приложений передача идет нечастыми пакетами с молчанием на частоте между ними. Т.к. передача может возобновиться в любой момент асинхронно, приемник опять может быть рассинхронизирован с передатчиком, для этого и передается преамбула по-новой.
Ну ... более плотных кодов чем CRC я пока не видел... Может они и есть.Ser60 писал(а):Весь смысл помехоустойчивого кодирования - это сократить до минимума избыточность передаваемой информации при соблюдении корректирующих свойств кода. Если имеется возможность, как у Вас, дублировать пакеты без конца, да еще и непрерывным потоком, то никакая теория не нужна...
Метод "заплаток" ))) Хорошее название)) так и запишем))Ser60 писал(а):Например в пакетах 1 и 2 произошли ошибки только в их первых байтах из трех. Что будет делать приемник - подбирать первый байт до совпадения контрольной суммы или сдастся сразу? Неверняка можно напридумывать массу других подобных "заплаток". Может в данном конкретном случае и работоспособная система получится.
Дайте ссылку на источник (с указанием страницы) - я помогу перевести.Ещё пишут ... ... (трудности перевода)