Ну и какова вероятность, что точно ошибочное будет не распознано.
Если забыть про контроль start и stop битов (его точно учесть сложно), то у вас передаётся 12 символов по 9 бит или всего 108 битов. Они могут принимать
комбинаций, из которых допустимых лишь
(11 байтов, последний однозначно определён этими), остальные ошибочные или по чётности, или по сумме. Если ошибка в канале переводит правильную комбинацию в
любую другую
случайным равновероятным образом, то вероятность в результате попасть на снова допустимую комбинацию будет порядка
. Вот вам и вероятность пропустить ошибку.
Только реально вероятность ошибок в канале будет совершенно другой, обычно не выполняются выделенным выше жирным слова, потому все возможные комбинации вовсе не будут равновероятными. И надо рассматривать классы ошибок и уже для них считать вероятность пропуска.
Например любые однократные, двухкратные и трёхкратные ошибки будут обнаружены, или чётностью (если все в разных байтах или все в одном), или суммой если пара в одном байте. Обнаруживаются также ошибки передачи постоянно одного и того же байта (сумма не совпадёт если он не нулевой и не 0x80). Четырёхкратные ошибки могут остаться не обнаруженными если произойдут ровно в двух байтах (любых), но строго на двух одинаковых позициях в каждом (сумма не изменится). Для принимаемых обычно каналов ошибки случайны и равновероятны и потому совпасть именно вот ровно так сложно. Как её точно оценить не уверен, а прикинуть можно так: каждая допустимая комбинация из
первой ошибкой переводится в одну из 108 других комбинаций, второй ошибкой в одну из 107 ещё других комбинаций, третьей в одну из 106 следующих комбинаций, четвёртой в одну из 105 конечных комбинаций, итого получаем
конечных комбинаций, при этом чтобы они получились снова допустимыми надо чтобы вторая ошибка "выбрала" (попала в) тот же байт что и первая, т.е. не 107 вариантов, а лишь 8, третья ошибка может выбрать любой бит из двух (неправильных по первым двум ошибкам) в остальных 11 символах, это 22 варианта из 106, четвёртой же ошибке остаётся единственный возможный вариант, в том же байте что и третья ошибка и ровно в оставшемся одном неправильном бите байта, итого из всех
допустимыми будут лишь
вариантов ошибок, а значит вероятность
. Это и можно считать вероятностью пропустить четырёхкратную ошибку
если она точно произойдёт.
Выделенное жирным критично потому что часто ошибки не кучкуются (те что кучкуются это отдельный вопрос и класс), а случайные, потому случиться двойной ошибке в квадрат менее вероятнее чем одиночной, а уж четверной в 4-й степени менее вероятно одиночной. И чтобы все они вчетвером уложились в 108 битов надо чтобы итоговая вероятность стала порядка
(или более), а значит вероятность одиночной ошибки должна быть не меньше порядка
, простите но такие шумные каналы просто не применяются (например скорее всего пакет будет ошибочным из-за искажения стартового или стопового бита, ведь их 24 штуки в пакете, а значит вероятность всем им быть правильными порядка
, т.е. лишь один пакет из более 7 тысяч будет правильным всего лишь по стартовым и стоповым битам и дойдёт до проверки чётности и контрольной суммы!) со столь простыми протоколами, нужен намного более сложный и отказоустойчивый.
Про кучкование ошибок, одиночная ошибка длиной до 3 битов включительно обнаруживается (либо как многократная выше если вся укладывается в 9-битовый символ, либо по искажению старт или стоп бита), почти любая длиной более 9 битов обнаруживается по искажению старт или стоп бита, любая нечётной длины обнаруживается чётностью (или старт/стоп битами если залезает на них), остаются лишь ошибки чётной длины 4-8, укладывающиеся в один 9-битовый символ, все они обнаруживаются контрольной суммой. Т.е. одиночный пакет ошибок (несколько ошибок подряд) любой длины обнаруживается всегда. Не обнаруженными могут оказаться лишь два пакета ошибок если они оба будут одинаковой длины 4, 6, 8 и в разных символах и не залезут на старт/стоп биты и при этом идеально совпадут по положению в символе. Для длины 8 есть лишь два варианта размещения пакета ошибок в любом из 12 символов, а для второго пакета лишь 11 вариантов (один вариант в любом из 11 символов). Общее же количество вариантов размещения пакетной ошибки длиной 8 среди 132 битов пакета (включая и старт и стоп) будет 125 для первой и 116 для второй (минимум один бит должен быть между ними), итого
, из которых не обнаруженным останется лишь
варианта, так что вероятность пропуска таких ошибок
если они точно произойдут будет
. Для длин 6 и тем более 4 вариантов размещения будет больше, а не обнаруживаемых вариантов останется почти столько же, т.е. вероятность не обнаружения будет ещё ниже. И опять важно что пакеты ошибок обычно случайны (если ничего про них априори неизвестно), а значит два пакета квадратично менее вероятны чем один. А три и более ещё менее вероятны. И тем более маловероятно совпадение длин нескольких пакетных ошибок.
Можно поставить вопрос и по другому: какова предельная вероятность случайных равновероятных ошибок в канале чтобы они все ошибочные пакеты были обнаружены. Тут тоже всё просто: всего передаётся 132 бита (12 символов по 11 битов каждый), при этом общее количество возможных комбинаций
, допустимыми из которых являются лишь
(старт и стоп биты имеют лишь одно допустимое значение каждый и количество комбинаций не увеличивают), значит вероятность принять случайный пакет за правильный составит
, что отвечает вероятности ошибки
. Т.е. пока вероятность ошибок менее 0.79 все ошибочные пакеты будут обнаружены. Но простите таких каналов уж тем более не применяется (уж точно не с UART), 4 из 5 битов неправильные, мрак ...
Отдельный класс ошибок когда происходит не инверсия бита (что и есть ошибка везде выше), а выставление одного и того же уровня, независимо от передаваемых данных. Такие ошибки обнаруживаются очень плохо если они редкие и случайные - большая вероятность что и передаваться будет ровно такой же бит, как и ошибочный и соответственно на конкретно таких данных ошибка останется не обнаруженной (впрочем можно считать что она и не происходит, но только для этих вот конкретных передаваемых данных).
И уж совсем отдельный класс (точнее много разных классов) ошибок не случайных. Например дублирование стартового бита в младший каждого байта. Но таких классов ошибок столько, что без априорных знаний какие из них реально встречаются фантазировать можно долго и упорно, считать же насколько вероятно их обнаружение ... Развлечение так себе. Хотя навскидку почти все они будут обнаружены (очень трудно придумать функцию, переводящую каждую из
комбинаций снова в допустимую при общем их количестве
, таких функций всего
, одна на 17 триллионов от общего их количества). Если же будут априорные знания об категории/классе ошибок, то посчитать вероятность их не обнаружения можно примерно как выше.
-- 08.11.2023, 10:53 --A_IНадеюсь из длинного пояснения стало понятно что Ваш абстрактный вопрос не имеет однозначного ответа, всё зависит от принятой модели ошибок в канале. Что Вам и пытались сказать остальные.