igorle 0 13 мая, 2013 Опубликовано 13 мая, 2013 · Жалоба Есть линия связи. Передаю по ней пакеты длиной восемь байт. Линия не надежная, так что могут пропадать иногда "единицы". Обычно "вырезаются" куски несколько бит рядом. Какой алгоритм FEC можете посоветовать? Тема известная. Литературы много. Но хотелось бы совет того, кто уже прошел этот путь. Чтобы сузить поле поиска. А то я уже насобирал ссылок на полгода чтения. Насчет ресурсов. MSP430, но передача идет раз в секунду. И больше процессор почти ничего не делает. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Артём__ 0 13 мая, 2013 Опубликовано 13 мая, 2013 · Жалоба Обычно "вырезаются" куски несколько бит рядом. Какой алгоритм FEC можете посоветовать? Код Хемминга с интерливингом. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
iosifk 3 14 мая, 2013 Опубликовано 14 мая, 2013 · Жалоба Есть линия связи. Передаю по ней пакеты длиной восемь байт. Линия не надежная, так что могут пропадать иногда "единицы". Обычно "вырезаются" куски несколько бит рядом. Какой алгоритм FEC можете посоветовать? Вероятность пропадания бит? Сколько пакетов битых на сколько целых? Контрольная сумма? Подтверждение запроса и повторная передача, как самое простое... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
igorle 0 16 мая, 2013 Опубликовано 16 мая, 2013 · Жалоба Вероятность пропадания бит? Сколько пакетов битых на сколько целых? Контрольная сумма? Подтверждение запроса и повторная передача, как самое простое... Статистику пока не собрал. Может быть много часов без помех, но потом начинается "черная полоса" - несколько минут передача неуспешна. Визуально в этом случае - до пяти процентов пропавших "единиц". Протокол простой. Передаю "magic" как признак начала пакета, затем пять байт данных, затем контрольную сумму, затем другой magic как окончание пакета. Если начало или конец пакета не распознались - данные игнорируются. Если пакет распознался, но контрольная сумма не сходится - данные игнорируюся. Передача идет раз в секунду. Так как одиночные ошибки не критичны (измеряю медленно изменяющуюся температуру в пяти точках), то такой протокол счел достаточным. Проблема, что иногда и за десять секунд не приходит ни одного целого пакета. Подтверждение запроса не возможно - линия однонаправленная. Код Хемминга с интерливингом. Я такого понятия вместе не нашел пока. Код хемминга - понятно. А интерливинг - передавать 1 как 10, а ноль - как 01? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
MrYuran 16 16 мая, 2013 Опубликовано 16 мая, 2013 · Жалоба Во-первых, накладные расходы с исправляющими кодами существенно увеличатся. "Контрольная сумма" будет не меньше, чем основные данные. Например, в дипломной работе я использовал код Голея(23,12), где в пакете из 23 бит 12 информационных и 11 контрольных. Исправляет 3 любые ошибки на весь пакет. А во-вторых, все-таки нужна конкретная статистика. Не просто по количеству принятых/отброшенных пакетов, а побитное сравнение и выявление типа ошибок (случайные/пакетные) и их интенсивности А интерливинг - передавать 1 как 10, а ноль - как 01? Может, имелось в виду скремблирование? Обычно применяется при пакетных ошибках. То есть сначала данные кодируются, потом перемешивается определенным образом, передаются, а на приемном конце - в обратном порядке. Тогда пачка ошибок распределяется в разные пакеты, и вероятность успешного восстановления повышается Ещё один момент чуть не забыл. Если имеются ошибки синхронизации, символьной или кадровой, то все потуги по исправлению ошибок бессмысленны. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
kovigor 5 16 мая, 2013 Опубликовано 16 мая, 2013 · Жалоба ... Может быть много часов без помех, но потом начинается "черная полоса" - несколько минут передача неуспешна. Визуально в этом случае - до пяти процентов пропавших "единиц". А что у вас за линия ? Проводная ? Радиоканал ? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
alexvu 5 16 мая, 2013 Опубликовано 16 мая, 2013 · Жалоба Это у Вас сейчас такая плохая связь, а что будет в другой системе, или просто когда рядом проложат какой-нибудь силовой провод? Вам стоит подумать о повышении напряжения сигнала, снижении скорости, аналоговой фильтрации, частотной модуляции и т.д. А также улучшить проводку и, возможно, питание схем. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
igorle 0 16 мая, 2013 Опубликовано 16 мая, 2013 · Жалоба А что у вас за линия ? Проводная ? Радиоканал ? UART 300 bod через сеть питания. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
kovigor 5 16 мая, 2013 Опубликовано 16 мая, 2013 · Жалоба UART 300 bod через сеть питания. Тогда почему бы не организовать подтверждения ? И какая сеть имеется в виду ? Осветительная с напряжением 220В, или какая-то другая ? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Mc_off 0 16 мая, 2013 Опубликовано 16 мая, 2013 · Жалоба Под интерливингом скорее всего имелось ввиду "перемеживание", т.е. изменение порядка передачи бит с восстановлением этого порядка при приёме. В результате уменьшается вероятность появления нескольких ошибочных бит подряд. Код Хеминга вполне себе легко реализуется. Посложнее с кодом Рида-Соломона, но там можно групповые ошибки исправлять. Без статистики выбор сделать сложно. Опять же какая допустима избыточность? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
iosifk 3 16 мая, 2013 Опубликовано 16 мая, 2013 · Жалоба UART 300 bod через сеть питания. Так это PLC модем? Если так, то понятно в чем дело. Это значит, что в линию кто-то подключил сильную нагрузку и амплитуда сигнала упала. Или же на линии сидит сильный источник помех. Первое что можно сделать - это понизить тактовую частоту передачи на два порядка и на входе поставить фильтры. А второе - увеличить амплитуду передатчика... И только уже после этого накручивать "запросы-подтверждения" или кодирования.... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Serg76 0 17 мая, 2013 Опубликовано 17 мая, 2013 · Жалоба если маркеры начала и конца искажены, то пакет уже не выделишь, тут уже ничего не поможет, даже кодирование. Код Хемминга не подойдет, т.к. он способен исправлять однократные ошибки, а в вашем случае ошибка носит импульсный характер. смотрите в сторону БЧХ или Рида-Соломона. т.к. судя по вашему описанию задержка не критична, можно попробовать добавить перемежение. опять же какая допускается избыточность и еще нужна статистика канала. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ViKo 1 17 мая, 2013 Опубликовано 17 мая, 2013 · Жалоба UART 300 bod через сеть питания. При такой скорости можно каждый бит определять мажоритарным способом, делая выборок 100 на битовом интервале. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
alexvu 5 17 мая, 2013 Опубликовано 17 мая, 2013 · Жалоба При такой скорости можно каждый бит определять мажоритарным способом, делая выборок 100 на битовом интервале. Это если хоть что-то от бита осталось. А если он пропал целиком? Если товарищ выложит побольше сведений, то можно что-то посоветовать. Для сети 220В есть протокол Х10, там ряд ухищрений, в частности, данные передаются не всегда, а в определенные моменты, когда сеть меньше всего нагружена. Но все равно, не на любой сети он будет работать. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Aner 3 17 мая, 2013 Опубликовано 17 мая, 2013 · Жалоба Да, сеть должна соответствовать сертификату на передачу данных, таких уже много не только X10. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться