Rs232 ошибка контрольной суммы

Страниц: [1] Печать

Автор
Тема: ТСРВ-034 и Универсальный просмотрщик  (Прочитано 5284 раз)
Чайник

Пользователь
**

Харизма: 0
Офлайн Офлайн

Сообщений: 26


Доброго времени суток, есть кабель RS232-USB (фото прикреплено) и Универсальный просмотрщик для снятия показаний и диагностики ошибок. Проблема заключается в том, что я ни как не могу подключиться блоку управления, всегда выскакивает «Ошибка контрольной суммы», менял параметры (ожидание ответа, байтовый таймаут, количество повторов и пр.) в программе и блоке управления, ничего не помогает, либо «Прибор не отвечает», либо «Ошибка контрольной суммы».
Изучил все настройки просмотрщика, ничего не помогло! Ответе пожалуйста в чем причина, может кабель не тот, или надо покупать специальный кабель у представителей? А может есть определенные параметры для подключения? ОС — W10.

yura

Наш человек
***

Харизма: 19
Офлайн Офлайн

Сообщений: 302


Выложите сюда лог сервера связи, посмотрим что в нём.
На Win10 он находится тут:
C:\ProgramData\Vzljot\VzljotSrv\Logs


Записан
Чайник

Пользователь
**

Харизма: 0
Офлайн Офлайн

Сообщений: 26


Лог от 31.01.2022 г.
Скорее всего еще причина моет быть в распайке кабеля, RS232 может быть распаян в 3х вариантах (фото прикреплено), какой вариант надо использовать?

Чайник

Пользователь
**

Харизма: 0
Офлайн Офлайн

Сообщений: 26


Какой из вариантов спайки нужно? Только надо чтобы было RS232-USB!

yura

Наш человек
***

Харизма: 19
Офлайн Офлайн

Сообщений: 302


Какой из вариантов спайки нужно? Только надо чтобы было RS232-USB!

А у вас между вашим переходником и прибором ещё какой то кабель есть?
Нет никакого стандарта RS232-USB. Вам нужно посмотреть в документации на ваш переходник какая у него распиновка сигналов со стороны RS232. У нашего прибора 2-RXD, 3-TXD, 5-GND. Должны быть соединены RXD-TXD, TXD-RXD, GND-GND.

Поясните пожалуйста приложенный вами лог. Вы связывались с разными приборами?? Можете удалить файл лога и попытаться связаться только с этим прибором, чтобы в логе была попытка обмена только с ним?
Потому что сейчас я вижу что в логе с 31.01.2022 14:52:11 по 31.01.2022 15:30:32 нормальный обмен с прибором по адресу 1, потом с 31.01.2022 15:34:03 по 31.01.2022 15:36:34 попытки связи с прибором по адресу 11, прибор отвечает но обрезаются длинные ответы, а с 31.01.2022 15:37:03 попытки связи опять с прибором по адресу 1 но уже без ответов.


Записан
Чайник

Пользователь
**

Харизма: 0
Офлайн Офлайн

Сообщений: 26


Ничего нет, ноутбук — кабель — ТСРВ-034!

Мой кабель — Pin 2 (TXD), Pin 3 (RXD), Pin 5 (GND). У нашего прибора 2-RXD, 3-TXD, 5-GND — КАК ПОНИМАЮ В ЭТОМ И ЗАКЛЮЧАЕТСЯ ВСЯ ПРОБЛЕМА?

По поводу лога, это я изменял настройки в блоке управления (мало ли, вдргу поможет), но ничего не изменилось! По поводу:
а с 31.01.2022 15:37:03 попытки связи опять с прибором по адресу 1 но уже без ответов. — пробовал подключиться к другому блоку) Менял даже ноутбук). С логами все в порядке! Вся соль заключается в том что программа УП, все видит, порт открывается, но дальше заходит в тупик.

yura

Наш человек
***

Харизма: 19
Офлайн Офлайн

Сообщений: 302


Ничего нет, ноутбук — кабель — ТСРВ-034!
Мой кабель — Pin 2 (TXD), Pin 3 (RXD), Pin 5 (GND). У нашего прибора 2-RXD, 3-TXD, 5-GND — КАК ПОНИМАЮ В ЭТОМ И ЗАКЛЮЧАЕТСЯ ВСЯ ПРОБЛЕМА?

Как раз таки нет, при такой распиновке при прямом подключении всё корректно.

В универсальном просмотрщике в разделе «Соединение — Параметры Modbus» случайно не включено использование бита четности? Должно быть выбрано «Нет».


Записан
Чайник

Пользователь
**

Харизма: 0
Офлайн Офлайн

Сообщений: 26


В универсальном просмотрщике в разделе «Соединение — Параметры Modbus» случайно не включено использование бита четности? Должно быть выбрано «Нет».

Так и есть! Выбрано «Нет».


Записан
yura

Наш человек
***

Харизма: 19
Офлайн Офлайн

Сообщений: 302


А есть ли возможность проверить связь с этим прибором через другой адаптер или связь с другим прибором при помощи этого адаптера?


Записан
Чайник

Пользователь
**

Харизма: 0
Офлайн Офлайн

Сообщений: 26


Тему можно закрыть, вчера подключился при помощи «взлетовского» адаптера (знакомые одолжили) и все заработало! Будем приобретать адаптер. Спасибо за помощь!


Записан
Страниц: [1] Печать 

Можно с уверенностью сказать, что с момента публикации первой версии стандарта RS‑232 в мае 1960 года и по настоящее время, было написано приблизительно 109 независимых реализаций UART на всём, чём угодно. Однако, подобно «Hello world» в мире прикладного ПО, а также мигания светодиодом — «Hello world» в мире цифровой электроники (сигнализирующий об успешной настройке оборудования и среды разработки) — процесс написания UART способен проиллюстрировать особенности языка или платформы, демонстрируя применение тех или иных синтаксических конструкций для решения практических, насущных и понятных проблем.

В данном цикле статей будет рассказано про написание модуля UART на SystemVerilog, про синтез данного модуля на различных платформах и про некоторые другие аспекты применения UART в ПЛИС. Но прежде, чем писать код, поговорим про сам протокол и про особенности аппаратной части вне контекста ПЛИС.

RS-232

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

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

Правда, без дополнительных условий будет невозможно отправить байт, состоящий из одних единиц, либо отличить последовательность 11010100 от 01010011.

Можно условиться, что к каждому передаваемому байту мы припишем дополнительный служебный бит (старт-бит), заведомо содержащий логический ноль. Тогда после паузы в передаче данных, приёмник при получении нисходящего фронта будет готов к приёму оговоренного количества бит, содержащих осмысленные данные.

Остаётся проблема: что, если будет передаваться длинная последовательность бит, содержащих нулевые значения без пауз между отдельными байтами? Тогда, рано или поздно, накопленная рассинхронизация тактовых генераторов источника и приёмника превысит половину длительности одного бита. И приёмник либо дважды прочитает один и тот же передаваемый бит, либо наоборот, пропустит один из передаваемых битов.

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

Договорившись о наличии старт-бита, стоп-битов, количестве битов данных в рамках одной передачи («символа» в терминологии UART) от старт-бита до стоп-бита и частоте следования бит можно организовать устойчивую однонаправленную передачу данных по одному проводу.

Стандарт RS-232 задаёт значение выходного напряжения логической единицы от −5 до −15 В, а логического нуля — от +5 до +15 В (именно в таком порядке). Данные уровни напряжения не поддерживаются микросхемами ПЛИС напрямую и существует несколько вариантов соединения ПЛИС с компьютером через RS‑232.

Если у компьютера предусмотрен com-порт, то соединение возможно при помощи пассивного кабеля и транслятора уровней. Зачастую трансляторы уровней для RS‑232 (к примеру, ADM3232E) изготавливают с встроенным умножителем (удвоителем) напряжения на основе переключаемых конденсаторов. Он преобразует +3,3 В в приблизительно ±6,6 В, которые используются в качестве уровней выходного сигнала на линии TX. А вход RX делают устойчивым к напряжениям вплоть до ±15 В.

Если у компьютера отсутствует встроенный com-порт, то соединение возможно при помощи внешнего преобразователя USB-RS232 (к примеру, UPort1150).

В этом случае иногда происходит некоторая путаница с разъёмами. Если разъём DB-9 на материнской плате — всегда «папа» (штыри), то разъём на оборудовании почти всегда «папа». Исключение — прецизионные источники питания компании Keithley (которую купил Tektronix). У них разъём «мама» (гнёзда). Разъём же на преобразователях USB-RS232 почти всегда, как и на материнских платах — «папа». Соответственно, он может быть подключен к Keithley непосредственно. Но для большинства оборудования дополнительно потребуется кабель «мама-мама». Разъём DB-9 предусматривает наличие стягивающих винтов. И ввиду того, что их не расположить внутри корпуса оборудования, то ими оснащается именно кабель. А на разъёмах оборудования делают гайки, куда эти винты закручиваются.

У преобразователя MOXA - гайки, у noname - винты. И у обоих в разъёме - штыри.

У преобразователя MOXA — гайки, у noname — винты. И у обоих в разъёме — штыри.

И, казалось бы, если на преобразователях USB-RS232 стоит разъём «папа» (для соединения с «мамой» кабеля, оснащённого винтами), то на нём должны быть гайки. Однако, данный элемент с вероятностью 50/50 будет также винтом! Зато к Keithley подходит идеально :) В общем, если вы решили соединять оборудование с компьютером и хотите чтобы всё собралось с первого раза, не полагайтесь на то, что «всё стандартизовано, тут не ошибёшься» и обратите внимание:

  • на разъём в оборудовании и преобразователе (штыри/гнёзда)

  • на крепления в оборудовании и преобразователе (винты/гайки)

Электронная промышленность предоставляет широкую номенклатуру мостов USB-UART. Благодаря им, при создании устройства можно использовать все аппаратные плюсы интерфейса USB и при этом сохранить относительную простоту программного обеспечения, характерную для RS-232. В дальнейшем мы будем рассматривать именно этот вариант соединения, хотя с точки зрения кода для ПЛИС, разницы между предыдущими тремя примерами нет.

Есть, правда, весьма важный момент. Сам стандарт TIA/EIA-232-F (RS-232) содержит лишь электрические характеристики и размеры разъёмов. Типичные же скорости передачи данных, количество бит данных в символе, а также наличие/отсутствие дополнительного бита контрольной суммы (бита чётности) этим стандартом не оговаривается. Иногда можно встретить утверждение, что перечисленные выше аспекты оговорены в UART («Universal Asyncronous Receiver-Transmitter»), но это общее название некоторого свода обычаев передачи данных. Этому своду не соответствует какой-либо один-единственный написанный и утверждённый стандарт.

Неким подобием стандарта может считаться структура DCB, применяемая в функции SetCommState в Windows API и предназначенная для инициализации com-порта.

Так, в описании данной структуры говорится, что в символе UART может быть 1/1,5/2 стоп-бита. Однако, стандарт «ISO/IEC 7816-3», похожий на «обычный» UART и регламентирующий обмен данными со смарт-картами, предусматривает наличие 0,5 стоп-бита. И, к примеру, микроконтроллер STM32F103 способен через конфигурационные биты «STOP» ([13:12]) регистра «USART_CR2» задать режим работы модуля UART как с этим самым половинным стоп-битом, так и с более распространёнными количествами стоп-битов. А мост FT232R не только не способен поддерживать половинный стоп-бит, но также не способен поддерживать полуторный стоп-бит: только один или два стоп-бита.

Или в описании структуры DCB говорится, что значащих бит в одном символе UART может быть от 5 до 8 штук (в это количество не входит бит чётности). А уже упомянутый мост FT232R способен работать только с 7 или 8 битами. Однако, другой похожий на UART стандарт — MDB («Multi-Drop Bus») — содержит, по сути, 9 значащих бит (8 бит данных, плюс бит режима/направления). И микроконтроллер STM32F103 способен работать как с MDB, так и с 8-битным UART.

Теперь, если мы возьмём материнскую плату или преобразователь USB-RS232, вроде «UPort 1115», мы сможем сказать «где-то там есть RS-232». Однако, если мы возьмём микросхему-мост USB-UART с уровнями на линиях RX/TX равными +3,3/0 В, сложится парадоксальная ситуация: описываемые в TIA/EIA-232-F напряжения нигде не соблюдаются, а протокол, реализуемый этим мостом не описан в самом стандарте. То есть RS-232, упоминаемый в подобном контексте, приобретает некоторые постмодернистские черты симулякра — символа, у которого нет оригинала :)

Возможно также соединить линии USB напрямую к ПЛИС и наделить ПЛИС функционалом, позволяющим ей опознаваться компьютером как USB-устройство класса CDC («Communication Device Class») — то есть как com-порт. Однако, тратить (и в весьма большом количестве!) логические элементы ПЛИС на столь обыденную задачу, реализованную в готовых микросхемах USB-UART имеет смысл только в рамках учебных задач, связанных с изучением протокола USB.

Работа над ошибками

Рассматривая аспекты, связанные с ошибками, возникающими при передаче данных через UART, можно выделить три группы:

  • нестабильности электрических параметров сигнала

  • нестабильности временных параметров сигнала

  • нарушение в логике приёма/передачи

Обсудим ряд аспектов, связанных с каждой из этих групп.

Мажорирование

Когда речь заходит про аппаратное исправление нестабильности электрических параметров, регулярно произносится слово «мажорирование». То есть многократное (обычно — троекратное) снятие показаний в пределах одного принимаемого бита и последующий выбор в качестве истинного значения принимаемого бита того, которое чаще других встретилось в ходе этих замеров.

На первый взгляд, подобный механизм может показаться «серебряной пулей», сводящей вероятность ошибок практически к нулю. Попробуем, однако, оценить количественно степень влияния мажорирования на уровень ошибок.

Немного формул

Предположим, что ошибки в ходе замеров являются независимыми друг от друга и появляются с вероятностью «p». Выпишем в таблицу все 8 возможных комбинаций 3-битного числа. Но вместо единиц в ячейках таблицы запишем вероятность ошибки в конкретном замере («p»), а вместо нулей — вероятность верного считывания («1-p»). Вероятность появления каждой комбинации будет равна произведению содержимого ячеек соответствующего столбца. Поэтому отметим те комбинации, которые всё же приведут к ошибочному считыванию бита при мажорировании, определим вероятности появления этих комбинаций и сложим их всех.

Как видно, вероятность ошибки при мажорировании будет равна:

p_{maj}=p^3+3(p^2(1-p))

Или, если раскрыть скобки и упростить выражение, то:

p_{maj}=3p^2-2p^2

Пока что влияние мажорирования может просматриваться не слишком явно. Для более чёткой картины возьмём десятичный логарифм «pmaj»:

log_{10}(3p^2-2p^3)

Преобразуем это выражение. Для начала вынесем за скобки логарифмируемого выражения квадрат «p»:

log_{10}{(p^2(3-2p))}

Затем заменим произведение логарифмируемого выражение на сумму логарифмов:

log_{10}(p^2)+log_{10}(3-2p)

С уменьшением «p», второе слагаемое (второй логарифм) достаточно быстро будет стремиться к десятичному логарифму трёх, который равен 0,477 (так, при «p» равном 10-2 (одна ошибка на сто бит) это слагаемое уже будет равно 0,474).

Иными словами, если вероятность ошибки равна:

p=10^x

…то вероятность ошибки с использованием мажорирования по трём замерам приблизительно равна:

p_{maj} approx 10^{2x+0,477}

Здесь «x» по идее должен принимать значения от «0» до «-∞», но при приближении к нулю (то есть при приближении «p» к единице) начнут сказываться допущения. Однако уже при «x», равном «-1» (то есть одна ошибка на десять бит), приближённые значения будут отличаться от точных значений всего на 2%.

Представим, что происходит передача данных по UART с конфигурацией «старт‑бит/8 бит данных/стоп‑бит» на скорости 9600 бит/с и «p» равно 10-6. Это означает, что одна ошибка происходит в среднем один раз в две минуты (130 секунд, если точнее). Поиск причины ошибки, появление которой видится квази-случайным и происходит раз в несколько минут, является достаточно неприятным и трудозатратным занятием. Если же мы применим мажорирование, то ошибка, в теории, начнёт возникать с вероятностью 10-11,523. Или приблизительно один раз в 16,5 месяцев. Вроде бы отличный результат.

Однако, что если «p» равно 10-4 ? Что если ошибка происходит один раз в секунду (1,3 секунды, если точнее), но инженер принял решение не кропотливо настраивать различные условия захвата в цифровом осциллографе с целью выявления причин ошибки, а применить мажорирование, и оно сработало идеальным образом?

Тогда «pmaj» будет равно 10-7,523. Или приблизительно один раз в 72 минуты — как раз достаточно, чтобы в случае претензий сказать: «Ну и где? Где эта ошибка? Вот, всё же работает! А вы говорите!» и убыть в закат :)

Кроме того, предположение о том, что ошибки в различных замерах одного бита являются независимыми не совсем верно. Предположим, что ошибка при считывании очередного бита появляется из-за наводки, скачка в цепи питания, либо чего-то подобного. Если мажорирование не применяется, вероятность ошибки «p» тогда будет равна произведению вероятности возникновения помехи «pnoise» на отношение длительности помехи «tnoise» к длительности бита «T»:

p=p_{noise}frac{t_{noise}}{T}

Одинаковую вероятность ошибки может создать как длительная, но редкая помеха, так и короткая, но часто повторяющаяся помеха. Однако, часто повторяющуюся помеху («pnoise» которой много больше, чем собственно «p») будет легче обнаружить, проанализировать и выявить её источник. А редко повторяющаяся помеха, та, от поиска которой, по идее, и должно защитить мажорирование, будет длительной помехой, способной в ряде случаев «накрыть» сразу несколько замеров.

В общем, методы коррекции ошибок, применяемые бездумно, способны как решить проблему, так и в отдельных случаях оказаться заметанием мусора под ковёр или вообще не сработать.

Оверсемплинг

Представим, к примеру, ардуиновский микроконтроллер ATmega328P. В нём битрейт модуля USART задаётся при помощи делителя «UBRR» (он записывается в регистры «UBRRnL» и «UBRRnH») и равен:

BAUD=frac{f_{osc}}{16(UBRR-1)}

Допустим, частота fOSC равна 10 МГц, а нам требуется получить стандартные 9600 бит/с. Тогда наиболее подходящим значением UBRR будет «64». Благодаря ему удастся задать битрейт, равный 9615,4 бит/с. Погрешность в 0,16% кажется незначительной, однако она накапливается с каждым битом. И для последнего фронта в символе составит 1,44%.

Точность внутреннего RC-генератора для того же микроконтроллера ATmega328P при фиксированной температуре в 25°C и напряжении 3,0 В заявлена ±2%. Во всём диапазоне рабочих температур и напряжений заявленная точность генератора падает до крайне грубых ±14%.

Нестабильность генератора создаёт дополнительную погрешность, которая хоть и не накапливается с каждым битом, но в конце символа способна сложиться с одним и тем же знаком с погрешностью от деления частоты. При этом, суммарная погрешность передатчика может удлинить передаваемые им биты, а суммарная погрешность приёмника — укоротить считываемые им биты. То есть, по сути, погрешности сложатся по модулю.

Если считывание производится непосредственно с частотой битрейта, то рано или поздно возникнет ситуация, когда принимающее устройство зафиксирует появление старт-бита не в середине бита, а в самом его начале (сразу после появления нисходящего фронта) или же в самом конце (перед первым битом данных). Причём сколь угодно близко к фронту. И к последнему биту символа приёмник гарантированно рассогласуется с передатчиком.

Решением этой проблемы является многократное считывание логического состояния на линии RX — оверсемплинг. После первого считывания, результат которого может быть принят за старт-бит, приёмник ожидает половину битового периода и только начиная с этого момента приступает к считыванию бит через равные промежутки времени. При четырёхкратном чтении, ошибки передачи будут отсутствовать при общей временно́й погрешности, доходящей до 25%!

На этом месте может возникнуть пара вопросов:

  • Какова временная погрешность приёмопередатчиков UART в реальных устройствах?

  • Если приёмник всё равно производит многократное чтение одного и того же бита, возможно ли получаемые данные эффективно использовать также для мажорирования?

Отвечая на первый вопрос, можно обратиться к документу «Determining Clock Accuracy Requirements for UART Communications», выпущенный компанией Maxim Integrated (на текущий момент она поглощена компанией Analog Devices), который говорит следующее:

It is difficult to quantitatively assess a worst-case acceptable sampling range across a bit’s period. EIA/TIA-232-F does specify a 4% of bit-period maximum slew time for a transmission, but this is difficult to achieve for long runs at 192kbps. But for the purpose of this application note, let us define two data path scenarios. Consider a «nasty» scenario, which can only be sampled reliably within the middle 50% of the bit time. This could equate to a long capacitive RS-232 run. The «normal» scenario can be sampled within the middle 75% of the bit time.

То есть инженеры Maxim Integrated предполагают, что невозможность корректно считать значения на линии RX в течении 25% от длительности бита — это вполне нормальное явление.

Если же проводить тест по маске, к примеру, для платы производства WaveShare с микросхемой FT232RL (с внутренним тактовым генератором) при битрейте 9600 бит/с, то из допуска ±2% от длительности бита последний фронт символа (восходящий фронт стоп-бита) будет «вываливаться» с вероятностью 0,55%. А из допуска ±4% с вероятностью 0,5×10-5 %. Можно предположить, что допуск в 10–12% (±5…6%) будет достаточно широк для того, чтобы считать вероятность выхода из него несущественной величиной. Если происходит обмен данными между двумя устройствами с допуском в 10…12% у каждого, то имеет смысл говорить об общей погрешности как раз в 20…24%.

Для ответа на второй вопрос представим себе, что у нас есть 8-кратный оверсемплинг и 25% общей погрешности, связанной с временными характеристиками. Два семпла окажутся в зоне 25%. Ещё на один семпл попадает «игла», которую мы пытаемся устранить при помощи мажорирования (ведь исправлять помехи имеет смысл только когда они есть, а словосочетание «есть помеха» означает, что помехи попадают по семплам). Итого мы получим 5 годных для мажорирования семплов к которым добавлено 3 гарантированно ненадёжных семпла.

Подобная конструкция не представляется такой уж надёжной. Поэтому, к примеру, в STM32F103 коррекция ошибок (мажорирование по восьмому, девятому и десятому семплам бита), дополнена механизмом сигнализация об их наличии.

То есть если три семпла, взятые посередине бита не равны все нулю или все единице, то такое значение, вообще говоря, не считается действительным.

Ошибки логики

Является ли ошибкой отсутствие стоп-бита? То есть если был передан старт-бит, затем оговоренные N бит данных, а после этого стоп-бит не появился (линия вместо стоп-бита оказалась в состоянии логического нуля)? Не всегда. Так, стандарт «ANSI E1.11», описывающий протокол обмена данными светотехнического оборудования DMX512, похожий на классический UART, использует при передаче данных аналогичное действие. При номинальной длительности бита DMX512 равной 4 мкс, переход в логический ноль и последующее удержание этого состояния в течение 92 мкс (то есть 23 нулевых бита подряд) или более, называется «break» и маркирует начало очередного пакета данных.

Однако, в общем случае, если передаваемый символ состоял не только из нулей, отсутствие стоп-бита будет, пожалуй, именно ошибкой — «framing error».

Является ли ошибкой отсутствие второго стоп-бита, если на стороне компьютера был выбран режим с двумя стоп-битами, а коммуницирующее устройство было настроено на работу с одним стоп-битом?

Пожалуй, нет. Так, в документации на ардуиновский микроконтроллер ATmega328P написано:

The Receiver and Transmitter use the same setting. Note that changing the setting of any of these bits will corrupt all ongoing communication for both the Receiver and Transmitter. An FE (Frame Error) will only be detected in cases where the first stop bit is zero.

Ещё более подчёркнуто это написано в документации на упоминавшиеся микроконтроллеры STM32F103:

2 stop bits: Sampling for 2 stop bits is done on the 8th, 9th and 10th samples of the first stop bit. If a framing error is detected during the first stop bit the framing error flag will be set. The second stop bit is not checked for framing error.

Относительно современная микросхема Super-I/O NCT6776D, реализующая UART на материнских платах, косвенно ссылается в своей документации на ставшую де-факто стандартом, классическую микросхему PC16550D:

NSER (No Stop Bit Error). This bit is set to logical 1 to indicate that the received data have no stop bit. In 16550 mode, it indicates the same condition for the data on the top of the FIFO. When the CPU reads USR, it sets this bit to logical 0.

А в документации на микросхему PC16550D написано:

If bit 2 is a logic 0, one Stop bit is generated in the transmitted data. If bit 2 is a logic 1 when a 5-bit word length is selected via bits 0 and 1, one and a half Stop bits are generated. If bit 2 is a logic 1 when either a 6-, 7-, or 8-bit word length is selected, two Stop bits are generated. The Receiver checks the first Stop bit only, regardless of the number of Stop bits selected.

Заключение

Типичная схема применения UART — это старт-бит, 8 бит данных и один-единственный стоп-бит. Типичный битрейт — 9600 бит/с (то есть длительность любого бита будет равна 104,17 мкс). В типичном случае «break frame» (большое количество нулевых бит) не применяется и будет просто ошибкой передачи. Так что базово UART относительно прост.

А упомянутые в статье особые случаи являются исключениями. О существовании которых, однако, имеет смысл знать. Также имеет смысл знать о практике применения данного протокола в индустрии. К примеру, посмотреть, какие возможности предоставляют различные микросхемы мостов USB-UART. Их детальный обзор — в другой раз.

  1. Неизвестный UART: теория

  2. Неизвестный UART: микросхемы

Можно с уверенностью сказать, что с момента публикации первой версии стандарта RS‑232 в мае 1960 года и по настоящее время, было написано приблизительно 109 независимых реализаций UART на всём, чём угодно. Однако, подобно «Hello world» в мире прикладного ПО, а также мигания светодиодом — «Hello world» в мире цифровой электроники (сигнализирующий об успешной настройке оборудования и среды разработки) — процесс написания UART способен проиллюстрировать особенности языка или платформы, демонстрируя применение тех или иных синтаксических конструкций для решения практических, насущных и понятных проблем.

В данном цикле статей будет рассказано про написание модуля UART на SystemVerilog, про синтез данного модуля на различных платформах и про некоторые другие аспекты применения UART в ПЛИС. Но прежде, чем писать код, поговорим про сам протокол и про особенности аппаратной части вне контекста ПЛИС.

RS-232

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

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

Правда, без дополнительных условий будет невозможно отправить байт, состоящий из одних единиц, либо отличить последовательность 11010100 от 01010011.

Можно условиться, что к каждому передаваемому байту мы припишем дополнительный служебный бит (старт-бит), заведомо содержащий логический ноль. Тогда после паузы в передаче данных, приёмник при получении нисходящего фронта будет готов к приёму оговоренного количества бит, содержащих осмысленные данные.

Остаётся проблема: что, если будет передаваться длинная последовательность бит, содержащих нулевые значения без пауз между отдельными байтами? Тогда, рано или поздно, накопленная рассинхронизация тактовых генераторов источника и приёмника превысит половину длительности одного бита. И приёмник либо дважды прочитает один и тот же передаваемый бит, либо наоборот, пропустит один из передаваемых битов.

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

Договорившись о наличии старт-бита, стоп-битов, количестве битов данных в рамках одной передачи («символа» в терминологии UART) от старт-бита до стоп-бита и частоте следования бит можно организовать устойчивую однонаправленную передачу данных по одному проводу.

Стандарт RS-232 задаёт значение выходного напряжения логической единицы от −5 до −15 В, а логического нуля — от +5 до +15 В (именно в таком порядке). Данные уровни напряжения не поддерживаются микросхемами ПЛИС напрямую и существует несколько вариантов соединения ПЛИС с компьютером через RS‑232.

Если у компьютера предусмотрен com-порт, то соединение возможно при помощи пассивного кабеля и транслятора уровней. Зачастую трансляторы уровней для RS‑232 (к примеру, ADM3232E) изготавливают с встроенным умножителем (удвоителем) напряжения на основе переключаемых конденсаторов. Он преобразует +3,3 В в приблизительно ±6,6 В, которые используются в качестве уровней выходного сигнала на линии TX. А вход RX делают устойчивым к напряжениям вплоть до ±15 В.

Если у компьютера отсутствует встроенный com-порт, то соединение возможно при помощи внешнего преобразователя USB-RS232 (к примеру, UPort1150).

В этом случае иногда происходит некоторая путаница с разъёмами. Если разъём DB-9 на материнской плате — всегда «папа» (штыри), то разъём на оборудовании почти всегда «папа». Исключение — прецизионные источники питания компании Keithley (которую купил Tektronix). У них разъём «мама» (гнёзда). Разъём же на преобразователях USB-RS232 почти всегда, как и на материнских платах — «папа». Соответственно, он может быть подключен к Keithley непосредственно. Но для большинства оборудования дополнительно потребуется кабель «мама-мама». Разъём DB-9 предусматривает наличие стягивающих винтов. И ввиду того, что их не расположить внутри корпуса оборудования, то ими оснащается именно кабель. А на разъёмах оборудования делают гайки, куда эти винты закручиваются.

У преобразователя MOXA - гайки, у noname - винты. И у обоих в разъёме - штыри.

У преобразователя MOXA — гайки, у noname — винты. И у обоих в разъёме — штыри.

И, казалось бы, если на преобразователях USB-RS232 стоит разъём «папа» (для соединения с «мамой» кабеля, оснащённого винтами), то на нём должны быть гайки. Однако, данный элемент с вероятностью 50/50 будет также винтом! Зато к Keithley подходит идеально :) В общем, если вы решили соединять оборудование с компьютером и хотите чтобы всё собралось с первого раза, не полагайтесь на то, что «всё стандартизовано, тут не ошибёшься» и обратите внимание:

  • на разъём в оборудовании и преобразователе (штыри/гнёзда)

  • на крепления в оборудовании и преобразователе (винты/гайки)

Электронная промышленность предоставляет широкую номенклатуру мостов USB-UART. Благодаря им, при создании устройства можно использовать все аппаратные плюсы интерфейса USB и при этом сохранить относительную простоту программного обеспечения, характерную для RS-232. В дальнейшем мы будем рассматривать именно этот вариант соединения, хотя с точки зрения кода для ПЛИС, разницы между предыдущими тремя примерами нет.

Есть, правда, весьма важный момент. Сам стандарт TIA/EIA-232-F (RS-232) содержит лишь электрические характеристики и размеры разъёмов. Типичные же скорости передачи данных, количество бит данных в символе, а также наличие/отсутствие дополнительного бита контрольной суммы (бита чётности) этим стандартом не оговаривается. Иногда можно встретить утверждение, что перечисленные выше аспекты оговорены в UART («Universal Asyncronous Receiver-Transmitter»), но это общее название некоторого свода обычаев передачи данных. Этому своду не соответствует какой-либо один-единственный написанный и утверждённый стандарт.

Неким подобием стандарта может считаться структура DCB, применяемая в функции SetCommState в Windows API и предназначенная для инициализации com-порта.

Так, в описании данной структуры говорится, что в символе UART может быть 1/1,5/2 стоп-бита. Однако, стандарт «ISO/IEC 7816-3», похожий на «обычный» UART и регламентирующий обмен данными со смарт-картами, предусматривает наличие 0,5 стоп-бита. И, к примеру, микроконтроллер STM32F103 способен через конфигурационные биты «STOP» ([13:12]) регистра «USART_CR2» задать режим работы модуля UART как с этим самым половинным стоп-битом, так и с более распространёнными количествами стоп-битов. А мост FT232R не только не способен поддерживать половинный стоп-бит, но также не способен поддерживать полуторный стоп-бит: только один или два стоп-бита.

Или в описании структуры DCB говорится, что значащих бит в одном символе UART может быть от 5 до 8 штук (в это количество не входит бит чётности). А уже упомянутый мост FT232R способен работать только с 7 или 8 битами. Однако, другой похожий на UART стандарт — MDB («Multi-Drop Bus») — содержит, по сути, 9 значащих бит (8 бит данных, плюс бит режима/направления). И микроконтроллер STM32F103 способен работать как с MDB, так и с 8-битным UART.

Теперь, если мы возьмём материнскую плату или преобразователь USB-RS232, вроде «UPort 1115», мы сможем сказать «где-то там есть RS-232». Однако, если мы возьмём микросхему-мост USB-UART с уровнями на линиях RX/TX равными +3,3/0 В, сложится парадоксальная ситуация: описываемые в TIA/EIA-232-F напряжения нигде не соблюдаются, а протокол, реализуемый этим мостом не описан в самом стандарте. То есть RS-232, упоминаемый в подобном контексте, приобретает некоторые постмодернистские черты симулякра — символа, у которого нет оригинала :)

Возможно также соединить линии USB напрямую к ПЛИС и наделить ПЛИС функционалом, позволяющим ей опознаваться компьютером как USB-устройство класса CDC («Communication Device Class») — то есть как com-порт. Однако, тратить (и в весьма большом количестве!) логические элементы ПЛИС на столь обыденную задачу, реализованную в готовых микросхемах USB-UART имеет смысл только в рамках учебных задач, связанных с изучением протокола USB.

Работа над ошибками

Рассматривая аспекты, связанные с ошибками, возникающими при передаче данных через UART, можно выделить три группы:

  • нестабильности электрических параметров сигнала

  • нестабильности временных параметров сигнала

  • нарушение в логике приёма/передачи

Обсудим ряд аспектов, связанных с каждой из этих групп.

Мажорирование

Когда речь заходит про аппаратное исправление нестабильности электрических параметров, регулярно произносится слово «мажорирование». То есть многократное (обычно — троекратное) снятие показаний в пределах одного принимаемого бита и последующий выбор в качестве истинного значения принимаемого бита того, которое чаще других встретилось в ходе этих замеров.

На первый взгляд, подобный механизм может показаться «серебряной пулей», сводящей вероятность ошибок практически к нулю. Попробуем, однако, оценить количественно степень влияния мажорирования на уровень ошибок.

Немного формул

Предположим, что ошибки в ходе замеров являются независимыми друг от друга и появляются с вероятностью «p». Выпишем в таблицу все 8 возможных комбинаций 3-битного числа. Но вместо единиц в ячейках таблицы запишем вероятность ошибки в конкретном замере («p»), а вместо нулей — вероятность верного считывания («1-p»). Вероятность появления каждой комбинации будет равна произведению содержимого ячеек соответствующего столбца. Поэтому отметим те комбинации, которые всё же приведут к ошибочному считыванию бита при мажорировании, определим вероятности появления этих комбинаций и сложим их всех.

Как видно, вероятность ошибки при мажорировании будет равна:

p_{maj}=p^3+3(p^2(1-p))

Или, если раскрыть скобки и упростить выражение, то:

p_{maj}=3p^2-2p^2

Пока что влияние мажорирования может просматриваться не слишком явно. Для более чёткой картины возьмём десятичный логарифм «pmaj»:

log_{10}(3p^2-2p^3)

Преобразуем это выражение. Для начала вынесем за скобки логарифмируемого выражения квадрат «p»:

log_{10}{(p^2(3-2p))}

Затем заменим произведение логарифмируемого выражение на сумму логарифмов:

log_{10}(p^2)+log_{10}(3-2p)

С уменьшением «p», второе слагаемое (второй логарифм) достаточно быстро будет стремиться к десятичному логарифму трёх, который равен 0,477 (так, при «p» равном 10-2 (одна ошибка на сто бит) это слагаемое уже будет равно 0,474).

Иными словами, если вероятность ошибки равна:

p=10^x

…то вероятность ошибки с использованием мажорирования по трём замерам приблизительно равна:

p_{maj} \approx 10^{2x+0,477}

Здесь «x» по идее должен принимать значения от «0» до «-∞», но при приближении к нулю (то есть при приближении «p» к единице) начнут сказываться допущения. Однако уже при «x», равном «-1» (то есть одна ошибка на десять бит), приближённые значения будут отличаться от точных значений всего на 2%.

Представим, что происходит передача данных по UART с конфигурацией «старт‑бит/8 бит данных/стоп‑бит» на скорости 9600 бит/с и «p» равно 10-6. Это означает, что одна ошибка происходит в среднем один раз в две минуты (130 секунд, если точнее). Поиск причины ошибки, появление которой видится квази-случайным и происходит раз в несколько минут, является достаточно неприятным и трудозатратным занятием. Если же мы применим мажорирование, то ошибка, в теории, начнёт возникать с вероятностью 10-11,523. Или приблизительно один раз в 16,5 месяцев. Вроде бы отличный результат.

Однако, что если «p» равно 10-4 ? Что если ошибка происходит один раз в секунду (1,3 секунды, если точнее), но инженер принял решение не кропотливо настраивать различные условия захвата в цифровом осциллографе с целью выявления причин ошибки, а применить мажорирование, и оно сработало идеальным образом?

Тогда «pmaj» будет равно 10-7,523. Или приблизительно один раз в 72 минуты — как раз достаточно, чтобы в случае претензий сказать: «Ну и где? Где эта ошибка? Вот, всё же работает! А вы говорите!» и убыть в закат :)

Кроме того, предположение о том, что ошибки в различных замерах одного бита являются независимыми не совсем верно. Предположим, что ошибка при считывании очередного бита появляется из-за наводки, скачка в цепи питания, либо чего-то подобного. Если мажорирование не применяется, вероятность ошибки «p» тогда будет равна произведению вероятности возникновения помехи «pnoise» на отношение длительности помехи «tnoise» к длительности бита «T»:

p=p_{noise}\frac{t_{noise}}{T}

Одинаковую вероятность ошибки может создать как длительная, но редкая помеха, так и короткая, но часто повторяющаяся помеха. Однако, часто повторяющуюся помеху («pnoise» которой много больше, чем собственно «p») будет легче обнаружить, проанализировать и выявить её источник. А редко повторяющаяся помеха, та, от поиска которой, по идее, и должно защитить мажорирование, будет длительной помехой, способной в ряде случаев «накрыть» сразу несколько замеров.

В общем, методы коррекции ошибок, применяемые бездумно, способны как решить проблему, так и в отдельных случаях оказаться заметанием мусора под ковёр или вообще не сработать.

Оверсемплинг

Представим, к примеру, ардуиновский микроконтроллер ATmega328P. В нём битрейт модуля USART задаётся при помощи делителя «UBRR» (он записывается в регистры «UBRRnL» и «UBRRnH») и равен:

BAUD=\frac{f_{osc}}{16(UBRR-1)}

Допустим, частота fOSC равна 10 МГц, а нам требуется получить стандартные 9600 бит/с. Тогда наиболее подходящим значением UBRR будет «64». Благодаря ему удастся задать битрейт, равный 9615,4 бит/с. Погрешность в 0,16% кажется незначительной, однако она накапливается с каждым битом. И для последнего фронта в символе составит 1,44%.

Точность внутреннего RC-генератора для того же микроконтроллера ATmega328P при фиксированной температуре в 25°C и напряжении 3,0 В заявлена ±2%. Во всём диапазоне рабочих температур и напряжений заявленная точность генератора падает до крайне грубых ±14%.

Нестабильность генератора создаёт дополнительную погрешность, которая хоть и не накапливается с каждым битом, но в конце символа способна сложиться с одним и тем же знаком с погрешностью от деления частоты. При этом, суммарная погрешность передатчика может удлинить передаваемые им биты, а суммарная погрешность приёмника — укоротить считываемые им биты. То есть, по сути, погрешности сложатся по модулю.

Если считывание производится непосредственно с частотой битрейта, то рано или поздно возникнет ситуация, когда принимающее устройство зафиксирует появление старт-бита не в середине бита, а в самом его начале (сразу после появления нисходящего фронта) или же в самом конце (перед первым битом данных). Причём сколь угодно близко к фронту. И к последнему биту символа приёмник гарантированно рассогласуется с передатчиком.

Решением этой проблемы является многократное считывание логического состояния на линии RX — оверсемплинг. После первого считывания, результат которого может быть принят за старт-бит, приёмник ожидает половину битового периода и только начиная с этого момента приступает к считыванию бит через равные промежутки времени. При четырёхкратном чтении, ошибки передачи будут отсутствовать при общей временно́й погрешности, доходящей до 25%!

На этом месте может возникнуть пара вопросов:

  • Какова временная погрешность приёмопередатчиков UART в реальных устройствах?

  • Если приёмник всё равно производит многократное чтение одного и того же бита, возможно ли получаемые данные эффективно использовать также для мажорирования?

Отвечая на первый вопрос, можно обратиться к документу «Determining Clock Accuracy Requirements for UART Communications», выпущенный компанией Maxim Integrated (на текущий момент она поглощена компанией Analog Devices), который говорит следующее:

It is difficult to quantitatively assess a worst-case acceptable sampling range across a bit’s period. EIA/TIA-232-F does specify a 4% of bit-period maximum slew time for a transmission, but this is difficult to achieve for long runs at 192kbps. But for the purpose of this application note, let us define two data path scenarios. Consider a «nasty» scenario, which can only be sampled reliably within the middle 50% of the bit time. This could equate to a long capacitive RS-232 run. The «normal» scenario can be sampled within the middle 75% of the bit time.

То есть инженеры Maxim Integrated предполагают, что невозможность корректно считать значения на линии RX в течении 25% от длительности бита — это вполне нормальное явление.

Для ответа на второй вопрос представим себе, что у нас есть 8-кратный оверсемплинг и 25% общей погрешности, связанной с временными характеристиками. Два семпла окажутся в зоне 25%. Ещё на один семпл попадает «игла», которую мы пытаемся устранить при помощи мажорирования (ведь исправлять помехи имеет смысл только когда они есть, а словосочетание «есть помеха» означает, что помехи попадают по семплам). Итого мы получим 5 годных для мажорирования семплов к которым добавлено 3 гарантированно ненадёжных семпла.

Подобная конструкция не представляется такой уж надёжной. Поэтому, к примеру, в STM32F103 коррекция ошибок (мажорирование по восьмому, девятому и десятому семплам бита), дополнена механизмом сигнализация об их наличии.

То есть если три семпла, взятые посередине бита не равны все нулю или все единице, то такое значение, вообще говоря, не считается действительным.

Ошибки логики

Является ли ошибкой отсутствие стоп-бита? То есть если был передан старт-бит, затем оговоренные N бит данных, а после этого стоп-бит не появился (линия вместо стоп-бита оказалась в состоянии логического нуля)? Не всегда. Так, стандарт «ANSI E1.11», описывающий протокол обмена данными светотехнического оборудования DMX512, похожий на классический UART, использует при передаче данных аналогичное действие. При номинальной длительности бита DMX512 равной 4 мкс, переход в логический ноль и последующее удержание этого состояния в течение 92 мкс (то есть 23 нулевых бита подряд) или более, называется «break» и маркирует начало очередного пакета данных.

Однако, в общем случае, если передаваемый символ состоял не только из нулей, отсутствие стоп-бита будет, пожалуй, именно ошибкой — «framing error».

Является ли ошибкой отсутствие второго стоп-бита, если на стороне компьютера был выбран режим с двумя стоп-битами, а коммуницирующее устройство было настроено на работу с одним стоп-битом?

Пожалуй, нет. Так, в документации на ардуиновский микроконтроллер ATmega328P написано:

The Receiver and Transmitter use the same setting. Note that changing the setting of any of these bits will corrupt all ongoing communication for both the Receiver and Transmitter. An FE (Frame Error) will only be detected in cases where the first stop bit is zero.

Ещё более подчёркнуто это написано в документации на упоминавшиеся микроконтроллеры STM32F103:

2 stop bits: Sampling for 2 stop bits is done on the 8th, 9th and 10th samples of the first stop bit. If a framing error is detected during the first stop bit the framing error flag will be set. The second stop bit is not checked for framing error.

Относительно современная микросхема Super-I/O NCT6776D, реализующая UART на материнских платах, косвенно ссылается в своей документации на ставшую де-факто стандартом, классическую микросхему PC16550D:

NSER (No Stop Bit Error). This bit is set to logical 1 to indicate that the received data have no stop bit. In 16550 mode, it indicates the same condition for the data on the top of the FIFO. When the CPU reads USR, it sets this bit to logical 0.

А в документации на микросхему PC16550D написано:

If bit 2 is a logic 0, one Stop bit is generated in the transmitted data. If bit 2 is a logic 1 when a 5-bit word length is selected via bits 0 and 1, one and a half Stop bits are generated. If bit 2 is a logic 1 when either a 6-, 7-, or 8-bit word length is selected, two Stop bits are generated. The Receiver checks the first Stop bit only, regardless of the number of Stop bits selected.

Заключение

Типичная схема применения UART — это старт-бит, 8 бит данных и один-единственный стоп-бит. Типичный битрейт — 9600 бит/с (то есть длительность любого бита будет равна 104,17 мкс). В типичном случае «break frame» (большое количество нулевых бит) не применяется и будет просто ошибкой передачи. Так что базово UART относительно прост.

А упомянутые в статье особые случаи являются исключениями. О существовании которых, однако, имеет смысл знать. Также имеет смысл знать о практике применения данного протокола в индустрии. К примеру, посмотреть, какие возможности предоставляют различные микросхемы мостов USB-UART. Их детальный обзор — в другой раз.

Здравствуйте!

Мы используем прибора вашего производства УРСВ-510П объединенные в линию по RS-485.
Недавно один прибор начал выдавать «ошибку контрольной суммы» при опросе через Универсальный Просмотрщик.
При подключении напрямую к RS-485 ошибка подтвердилась..
Адрес, скорость и прочее установлены аналогично на приборе и программе.
Ответ от 04 идет с адресом 0C, при запросе адреса 0C — молчит… Значит он запрос понимает, но ответ неправильный. Через RS-232 опрос не пробовали (не было нужного кабеля).
Что нам делать? В чем может быть причина.

Логи обмена по COM-порту:

Опрос прибора по адресу — 4

Port opened by process «VZLJOT~1.EXE» (PID: 3552)

 04 04 00 1A 00 01 10 58                           …….X       

Answer: 29.12.2010 9:37:29.85864 (+0.1302 seconds)

 0C 86 83 80 01 B4 F8                              .†ƒ€.´ø       

Request: 29.12.2010 9:37:29.95864 (+0.1001 seconds)

 04 04 00 1B 00 01 41 98                           ……A˜       

Answer: 29.12.2010 9:37:30.10864 (+0.1502 seconds)

 0C 04 02 00 00 75 B8                              …..u¸       

Request: 29.12.2010 9:37:30.20864 (+0.1001 seconds)

 04 04 00 1E 00 01 51 99                           ……Q™       

Answer: 29.12.2010 9:37:30.35964 (+0.1502 seconds)

 0C 04 02 00 00 75 B8                              …..u¸       

Request: 29.12.2010 9:37:30.45964 (+0.1001 seconds)

 04 11 C3 7C                                       ..Ã|           

Answer: 29.12.2010 9:37:30.60964 (+0.1502 seconds)

 0C 11 6F FF EE EF 9A B0 B3 F7 83 B7 F7 83 83 F6   ..oÿî³÷ƒ·÷ƒƒö
 E3 B3 07 03 00 00 00 00 00 78 80 70 80 6E 80 F0   ã³…….x€p€n€ð
 00 4A 80 68 80 C0 00 2A 9F EF                     .J€h€À.*Ÿï     

Опрос прибора по адресу — 12

Port opened by process «VZLJOT~1.EXE» (PID: 3228)

Request: 29.12.2010 9:44:26.83764 (+6.9400 seconds)

 0C 04 00 1A 00 01 11 10 0C 04 00 1B 00 01 40 D0   …………..@Ð
 0C 04 00 1E 00 01 50 D1 0C 11 C4 BC 0C 03 00 00   ……PÑ..ļ….
 00 03 04 D6 0C 03 80 00 00 02 EC D6 0C 03 00 40   …Ö..€…ìÖ…@
 00 01 84 C3 0C 03 80 02 00 04 CD 14 0C 04 80 02   ..„Ã..€…Í…€.
 00 04 78 D4 0C 04 00 1B 00 01 40 D0 0C 03 00 4E   ..xÔ……@Ð…N
 00 01 E5 00 0C 03 00 4C 00 01 44 C0 0C 03 00 4C   ..å….L..DÀ…L
 00 01 44 C0                                       ..DÀ           

Port closed

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

Ошибка контрольной суммы при распаковке RAR

Так или иначе, но архиваторы и поныне используются повсеместно – как правило, пакеты программ для установки поставляются именно в виде архивов, в том числе самораспаковывающихся. Но иногда при распаковке сжатых файлов пользователи сталкиваются с ошибкой несовпадения контрольной суммы, в результате чего очень нужный файл извлечь из архива не удаётся. Сегодня мы рассмотрим основные причины возникновения ошибки CRC и способы её устранения.

Причины появления ошибки

Для начала стоит вкратце ознакомиться с азами теории сжатия. Алгоритмы компрессии данных основываются на поиске одинаковых длинных фрагментов и их кодировании менее ёмким кодом. Даже в этом тексте таких фрагментов предостаточно. Например, двухбуквенных повторений. Но программы-архиваторы ищут более длинные повторяющиеся последовательности, так что коэффициент сжатия в итоге получается очень даже существенным.

При создании архива в него, кроме закодированной последовательности, включается таблица кодов и некоторые другие данные, в том числе контрольная сумма архива. Это число, хранимое в шестнадцатеричном виде, представляющее собой значение, рассчитанное на основании основной последовательности данных с применением специальных математических алгоритмов. Оно является уникальным именно для такой последовательности данных. Внесение любого изменения, даже однобитного, приведёт к кардинально другой контрольной сумме.

Ошибка при распаковке

Особенность контрольной суммы (её принято называть хэш-суммой) заключается в том, что по ней невозможно восстановить исходную последовательность данных, но она является идеальным инструментом для определения подлинности полученного файла. Итак, в сам архив вносится контрольная сумма, она же вычисляется при разархивировании файла. Если хэш-суммы не совпадают, это говорит о том, что архив изменён уже после его создания.

В подобных случаях при распаковке файлов архиватор выдаёт соответствующее сообщение об ошибке несовпадения контрольной суммы, прекращая дальнейшую работу.

Итак, если при распаковке архива RAR вы получили сообщение об ошибке контрольной суммы, это может означать следующее:

  • сам архив создан некорректно – например, если программа-архиватор, создавшая архив, заражена вирусом;
  • используемый вами архиватор для распаковки архивов повреждён или работает со сбоями;
  • иногда причиной становится несовпадение версий архиватора;
  • ещё одной причиной появления ошибки может быть наличие кириллических символов при указании каталога распаковки;
  • ошибка несовпадения CRC-кода может возникать и вследствие проблем с железом: при наличии сбойных секторов на накопителе или если модуль ОЗУ работает со сбоями.

Рассмотрим основные методы устранения данной ошибки.

Способы решения проблемы

В большинстве случаев виновником возникновения ошибки контрольной суммы в заархивированном файле является сам архив, про который в таких случаях говорят «битый».

Проверка источника данных

Если вы скачали файл с оптического диска – возможно, он получил повреждения из-за дефектов DVD-носителя. Проверьте, нет ли на нём царапин, сколов, потёртостей или трещин. При их наличии стоит поискать исходный файл в другом месте.

Царапины на оптическом диске

Если архив загружен из сети, есть вероятность, что файл получил повреждения в процессе скачивания – такое иногда случается, пакеты теряются. Можно попытаться скачать его повторно, но если ошибка не исчезнет, возможно, битый архив уже лежит на сервере. Тогда имеет смысл поискать этот же пакет в другом месте.

Словом, первое, что нужно сделать, получив данную ошибку при распаковке, – скачать файл с нескольких источников.

Исключение кириллицы из полного пути установки

Дистрибутивы программ далеко не всегда пишут программисты высокой квалификации. В силу этого нередки случаи, когда пакет содержит компоненты, которые не адаптированы под некоторые языки, в частности – кириллицу. И тогда такие дистрибутивы при распаковке могут генерировать ошибку контрольной суммы, касается ли это 7ZIP или WINRAR.

Удаление кириллицы в пути

Если тот архиватор, которым вы пользуетесь, предлагает распаковать архив с документами в папку «Документы», или же вы сознательно разархивируете дистрибутивы программ в каталог «Софт», вам стоит попробовать использовать имена, не содержащие русских букв, – например, Docs или Soft.

То есть при распаковке внимательно следите за тем, в какую папку архиватор предлагает распаковать архив, причём кириллица может быть в любом участке пути.

Распаковщики, если речь идёт о старых версиях Windows, могут выдавать ошибку и из-за того, что кириллица присутствует в имени учётной записи. Изменить имя можно через «параметры», но если это для вас неприемлемо, можно создать нового пользователя с английским написанием его имени – это должно решить проблему.

«Параметры» в меню «Пуск»

Раздел «Учётные записи» в Windows 10

Пункт «Управление учётной записью Майкрософт»

Имя учётной записи Майкрософт

Пункт «Изменить имя»

Изменение имени учётной записи Майкрософт

Обновление версии архиватора

Операционная система Windows имеет собственные средства распаковки наиболее распространённых форматов архивов – zip, arj, rar, 7z, однако их функционал недостаточен по сравнению со специализированными пакетами.

Если во время распаковки архива произошла ошибка несовпадения контрольной суммы, стоит воспользоваться именно такими программами, например, WinRAR или упоминавшийся уже 7ZIP. Любая из них может справиться практически с любым типом архива. Скачивать нужно с официального сайта – это гарантирует отсутствие таких проблем, как заражение вирусом, чем грешат многие файлообменники. После установки архиватора нужно перегрузить компьютер и приступить к распаковке файла, вызвавшего ошибку.

Скачивание установщика WinRAR

Если и при использовании архиватора ошибка CRC не исчезла, вполне возможно, что это из-за того, что вы пользуетесь устаревшей программой. Не поленитесь посетить официальный сайт разработчика на предмет скачивания самой последней версии инсталляционного пакета – обычно это устраняет все возможные проблемы.

Скачивание установщика 7ZIP

Отключение разгона

До сих пор мы рассматривали только программные способы устранения ошибки контрольной суммы, но она может возникнуть и по аппаратным причинам. В частности, такое нередко случается на компьютерах с разогнанным процессором или оперативкой. Оверклокинг хорош для выполнения ресурсоёмких задач, но в случае с работой архиватора он может вместо пользы принести вред, инициировав сбой при распаковке архива, что в итоге выльется в ошибку CRC.

Решение проблемы – отключение разгона. Проще всего это сделать, выполнив сброс BIOS до заводских настроек, после чего можно проверить работоспособность архиватора.

Сброс BIOS до заводских настроек

Устранение неполадок с диском компьютера

Более вероятным виновником появления ошибки несовпадения контрольной суммы при установке программ является наличие сбойных секторов на диске. Если ваш HDD возрастной, то стоит проверить его специализированной утилитой (можно и встроенными средствами Windows). С твердотельными накопителями такая неприятность случается чаще – в силу ограничений по циклам записи/чтения, свойственным для SSD.

Переход в свойства локального диска

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

Проверка диска на наличие ошибок

В обоих случаях нужно просканировать диск с опцией исправления ошибок, после чего снова скачать архив и распаковать его.

Кнопка «Проверить диск»

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

Здравствуйте!

Мы используем прибора вашего производства УРСВ-510П объединенные в линию по RS-485.
Недавно один прибор начал выдавать «ошибку контрольной суммы» при опросе через Универсальный Просмотрщик.
При подключении напрямую к RS-485 ошибка подтвердилась..
Адрес, скорость и прочее установлены аналогично на приборе и программе.
Ответ от 04 идет с адресом 0C, при запросе адреса 0C — молчит… Значит он запрос понимает, но ответ неправильный. Через RS-232 опрос не пробовали (не было нужного кабеля).
Что нам делать? В чем может быть причина.

Логи обмена по COM-порту:

Опрос прибора по адресу — 4

Port opened by process «VZLJOT~1.EXE» (PID: 3552)

 04 04 00 1A 00 01 10 58                           …….X       

Answer: 29.12.2010 9:37:29.85864 (+0.1302 seconds)

 0C 86 83 80 01 B4 F8                              .†ƒ€.´ø       

Request: 29.12.2010 9:37:29.95864 (+0.1001 seconds)

 04 04 00 1B 00 01 41 98                           ……A˜       

Answer: 29.12.2010 9:37:30.10864 (+0.1502 seconds)

 0C 04 02 00 00 75 B8                              …..u¸       

Request: 29.12.2010 9:37:30.20864 (+0.1001 seconds)

 04 04 00 1E 00 01 51 99                           ……Q™       

Answer: 29.12.2010 9:37:30.35964 (+0.1502 seconds)

 0C 04 02 00 00 75 B8                              …..u¸       

Request: 29.12.2010 9:37:30.45964 (+0.1001 seconds)

 04 11 C3 7C                                       ..Ã|           

Answer: 29.12.2010 9:37:30.60964 (+0.1502 seconds)

 0C 11 6F FF EE EF 9A B0 B3 F7 83 B7 F7 83 83 F6   ..oÿî³÷ƒ·÷ƒƒö
 E3 B3 07 03 00 00 00 00 00 78 80 70 80 6E 80 F0   ã³…….x€p€n€ð
 00 4A 80 68 80 C0 00 2A 9F EF                     .J€h€À.*Ÿï     

Опрос прибора по адресу — 12

Port opened by process «VZLJOT~1.EXE» (PID: 3228)

Request: 29.12.2010 9:44:26.83764 (+6.9400 seconds)

 0C 04 00 1A 00 01 11 10 0C 04 00 1B 00 01 40 D0   …………..@Ð
 0C 04 00 1E 00 01 50 D1 0C 11 C4 BC 0C 03 00 00   ……PÑ..ļ….
 00 03 04 D6 0C 03 80 00 00 02 EC D6 0C 03 00 40   …Ö..€…ìÖ…@
 00 01 84 C3 0C 03 80 02 00 04 CD 14 0C 04 80 02   ..„Ã..€…Í…€.
 00 04 78 D4 0C 04 00 1B 00 01 40 D0 0C 03 00 4E   ..xÔ……@Ð…N
 00 01 E5 00 0C 03 00 4C 00 01 44 C0 0C 03 00 4C   ..å….L..DÀ…L
 00 01 44 C0                                       ..DÀ           

Port closed


Download

slide1 n.

Skip this Video

Loading SlideShow in 5 Seconds..

Настройка связи приборов Взлет с внешними устройствами PowerPoint Presentation

play prev

play next

Настройка связи приборов Взлет с внешними устройствами

Настройка связи приборов Взлет с внешними устройствами. Протокол, параметры, типы внешних устройств. Основные варианты подключения. Подключение через GSM- модем. Подключение через адаптер USB-RS232/RS485. Подключение через модуль Ethernet.

Uploaded on Sep 26, 2014

monet

Download Presentation

Настройка связи приборов Взлет с внешними устройствами

— — — — — — — — — — — — — — — — — — — — — — — — — — — E N D — — — — — — — — — — — — — — — — — — — — — — — — — — —

Presentation Transcript

  1. Настройка связи приборов Взлет с внешними устройствами Протокол, параметры, типы внешних устройств Иван Андреевич Голубков

  2. Основные варианты подключения Подключение через GSM-модем Подключение через адаптер USB-RS232/RS485 Подключение через модуль Ethernet Подключение через COM-порт или встроенный RS485

  3. Параметры связи в приборе • Адрес (1 .. 32) • Скорость (1200 .. 4800bps, 1200 .. 19200 bps) • Задержка (0 .. 125 мс) • Пауза (0 .. 1000 мс) • Управление RS232 (нет, однонаправленное, двунаправленное) • Тип соединения (прямое, модемное) Запрос 01 04 C0 18 00 02 CD CC Ответ 01 04 04 00 00 00 00 FB 84

  4. Настройка соединения с помощью программы «Универсальный просмотрщик» Пуск – все программы – Взлет – Универсальный просмотрщик – проекты– нужный проект Тип подключения Параметры протокола Параметры порта

  5. Подключение через COM-порт • Параметры • Максимальная длина – 15 метров • Подключение только одного устройства • Кабель • DB-9. Достаточно трех контактов (2 – RxD, 3 – TxD, 5 – GND) • Рекомендуется использовать 5 контактов (7 – RTS, 8 – CTS) • Тип «Мама-мама»

  6. Возможные проблемы • «Канал связи закрыт» (невозможно открыть соединение) • Данный COM-порт в данный момент использует другая программа • Выбран несуществующий COM-порт • «Прибор не отвечает» • Неполадки на линии • Неверно выбраны настройки связи

  7. Подключение через RS-485 и адаптеры USB-232/485 • Параметры RS-485 • Максимальная длина – 1200 м. • Максимальное кол-во устройств – 254 (без репитеров) • Кабель для RS-485 • Витая пара. Достаточно двух контактов (Data +, Data -) • При необходимости задействовать GND • Рекомендуемые производители адаптеров • ЗАО «Взлет» • MOXA • ICP DAS

  8. Возможные проблемы • «Прибор не отвечает» • На адаптере теряется первая часть пакета. Связь с прибором есть, но некорректная. • «Ошибка контрольной суммы» (Периодически) • Адаптер вносит паразитные задержки в обмен данными. Увеличить параметры «Задержка» и «Пауза» в приборе. Увеличить параметры «Ожидание ответа» и «Байтовый таймаут» в ПО

  9. Возможные проблемы • «Длина ответа не соответствует запросу» • Возможно, что неправильно выбран монитор Универсального просмотрщика • Неполадки (замыкание) в адаптере интерфейсов. Отключить адаптер от прибора и повторить запрос.

  10. Подключение через модем • Приборы Взлет могут работать с любыми модемами, имеющими COM-порт • В зависимости от настроек модема, параметр «тип управления» в приборе выбирается «Модемное» или «Прямое». Входящий вызов RING RING

  11. AT-команды для настройки модемов • AT – Ответ «ОК». Проверка подключения • AT E0 – Отключение эха • AT&F – Сброс к заводским настройкам • AT&V – Вывод текущей конфигурации • AT S0=2 – Автоответ через 2 гудка • AT&W – Сохранение сделанных изменений • AT+CBST=7,0,1 – Управление протоколом обмена с GSM-сетью • AT+IFC=0,0 – Управление потоком • AT+ICF=3 – Управление битами данных, стоп-битами и четностью • AT+IPR=19200 – Управление скоростью по COM-порту

  12. Возможные проблемы • Сообщение от модема «NO CARRIER» • Не подключена услуга передачи данных на SIM-карте. Уточнить наличие услуги у оператора. Ввести номер с «;»на конце • Не соединяются модемы. Удаленный модем не отвечает на входящий звонок. Позвонить на удаленный модем с мобильного телефона • Сообщение от модема «NO DIALTONE» • SIM-карта не зарегистрировалась в сети

  13. Подключение через Ethernet-модуль • Достаточно четырех контактов для подключения в локальную сеть (1 – Tx+, 2 – Tx-, 3 – Rx+, 6 – Rx-) • Все настройки сети хранятся в модуле, а не в приборе. • Для настройки необходимо знать ip-адрес, маску подсети, основной шлюз • Прослушивает порты 69 и 80.

  14. Возможные проблемы • Невозможно установить соединение по локальной сети • В командной строке выполнить команду PING [ip-адрес прибора] • Подключиться к прибору через браузер (Internet Explorer, Opera, Firefox и пр.) • Обратиться к системному администратору

  15. Контактные данные Иван Андреевич Голубков Специалист технического отдела Тел: 714-81-78 (доб. 271) Моб: +7 (921) 436-62-77 e-mail: i-golubkov@vzljot.ru Skype: vzljot.tp

Mr King

здесь недавно
здесь недавно
Сообщения: 10
Зарегистрирован: 11 сен 2018, 19:01
Имя: Андрей
Благодарил (а): 2 раза

ТСРВ-026М и RS-485

Сообщение

Mr King » 12 ноя 2019, 20:00

Здравствуйте!
Есть задача включить тепловычислитель ТСРВ-026М в сеть RS-485 через преобразователь RS-232 — RS-485 и далее через преобразователь RS-485 — USB к компьютеру. Для поиска прибора в сети используем программу «UV» (Универсальный просмотрщик), поиск заканчивается сообщением «Ошибка контрольной суммы». Если вместо ТСРВ-026М подключить ТСРВ-024М, то прибор определяется без ошибок. В чем тут разница? Заранее благодарен за помощь.

Ryzhij

почётный участник форума
почётный участник форума
Сообщения: 5260
Зарегистрирован: 07 окт 2011, 09:12
Имя: Гаско Вячеслав Эриевич
Страна: Россия
город/регион: Рязань
Благодарил (а): 391 раз
Поблагодарили: 578 раз

ТСРВ-026М и RS-485

Сообщение

Ryzhij » 12 ноя 2019, 20:42

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

—————————————————
«У человека в душе дыра размером с Бога, и каждый заполняет её как может». Жан-Поль Сартр

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

Ошибка контрольной суммы при распаковке RAR

Так или иначе, но архиваторы и поныне используются повсеместно – как правило, пакеты программ для установки поставляются именно в виде архивов, в том числе самораспаковывающихся. Но иногда при распаковке сжатых файлов пользователи сталкиваются с ошибкой несовпадения контрольной суммы, в результате чего очень нужный файл извлечь из архива не удаётся. Сегодня мы рассмотрим основные причины возникновения ошибки CRC и способы её устранения.

Причины появления ошибки

Для начала стоит вкратце ознакомиться с азами теории сжатия. Алгоритмы компрессии данных основываются на поиске одинаковых длинных фрагментов и их кодировании менее ёмким кодом. Даже в этом тексте таких фрагментов предостаточно. Например, двухбуквенных повторений. Но программы-архиваторы ищут более длинные повторяющиеся последовательности, так что коэффициент сжатия в итоге получается очень даже существенным.

При создании архива в него, кроме закодированной последовательности, включается таблица кодов и некоторые другие данные, в том числе контрольная сумма архива. Это число, хранимое в шестнадцатеричном виде, представляющее собой значение, рассчитанное на основании основной последовательности данных с применением специальных математических алгоритмов. Оно является уникальным именно для такой последовательности данных. Внесение любого изменения, даже однобитного, приведёт к кардинально другой контрольной сумме.

Ошибка при распаковке

Особенность контрольной суммы (её принято называть хэш-суммой) заключается в том, что по ней невозможно восстановить исходную последовательность данных, но она является идеальным инструментом для определения подлинности полученного файла. Итак, в сам архив вносится контрольная сумма, она же вычисляется при разархивировании файла. Если хэш-суммы не совпадают, это говорит о том, что архив изменён уже после его создания.

В подобных случаях при распаковке файлов архиватор выдаёт соответствующее сообщение об ошибке несовпадения контрольной суммы, прекращая дальнейшую работу.

Итак, если при распаковке архива RAR вы получили сообщение об ошибке контрольной суммы, это может означать следующее:

  • сам архив создан некорректно – например, если программа-архиватор, создавшая архив, заражена вирусом;
  • используемый вами архиватор для распаковки архивов повреждён или работает со сбоями;
  • иногда причиной становится несовпадение версий архиватора;
  • ещё одной причиной появления ошибки может быть наличие кириллических символов при указании каталога распаковки;
  • ошибка несовпадения CRC-кода может возникать и вследствие проблем с железом: при наличии сбойных секторов на накопителе или если модуль ОЗУ работает со сбоями.

Рассмотрим основные методы устранения данной ошибки.

Способы решения проблемы

В большинстве случаев виновником возникновения ошибки контрольной суммы в заархивированном файле является сам архив, про который в таких случаях говорят «битый».

Проверка источника данных

Если вы скачали файл с оптического диска – возможно, он получил повреждения из-за дефектов DVD-носителя. Проверьте, нет ли на нём царапин, сколов, потёртостей или трещин. При их наличии стоит поискать исходный файл в другом месте.

Царапины на оптическом диске

Если архив загружен из сети, есть вероятность, что файл получил повреждения в процессе скачивания – такое иногда случается, пакеты теряются. Можно попытаться скачать его повторно, но если ошибка не исчезнет, возможно, битый архив уже лежит на сервере. Тогда имеет смысл поискать этот же пакет в другом месте.

Словом, первое, что нужно сделать, получив данную ошибку при распаковке, – скачать файл с нескольких источников.

Исключение кириллицы из полного пути установки

Дистрибутивы программ далеко не всегда пишут программисты высокой квалификации. В силу этого нередки случаи, когда пакет содержит компоненты, которые не адаптированы под некоторые языки, в частности – кириллицу. И тогда такие дистрибутивы при распаковке могут генерировать ошибку контрольной суммы, касается ли это 7ZIP или WINRAR.

Удаление кириллицы в пути

Если тот архиватор, которым вы пользуетесь, предлагает распаковать архив с документами в папку «Документы», или же вы сознательно разархивируете дистрибутивы программ в каталог «Софт», вам стоит попробовать использовать имена, не содержащие русских букв, – например, Docs или Soft.

То есть при распаковке внимательно следите за тем, в какую папку архиватор предлагает распаковать архив, причём кириллица может быть в любом участке пути.

Распаковщики, если речь идёт о старых версиях Windows, могут выдавать ошибку и из-за того, что кириллица присутствует в имени учётной записи. Изменить имя можно через «параметры», но если это для вас неприемлемо, можно создать нового пользователя с английским написанием его имени – это должно решить проблему.

«Параметры» в меню «Пуск»

Раздел «Учётные записи» в Windows 10

Пункт «Управление учётной записью Майкрософт»

Имя учётной записи Майкрософт

Пункт «Изменить имя»

Изменение имени учётной записи Майкрософт

Обновление версии архиватора

Операционная система Windows имеет собственные средства распаковки наиболее распространённых форматов архивов – zip, arj, rar, 7z, однако их функционал недостаточен по сравнению со специализированными пакетами.

Если во время распаковки архива произошла ошибка несовпадения контрольной суммы, стоит воспользоваться именно такими программами, например, WinRAR или упоминавшийся уже 7ZIP. Любая из них может справиться практически с любым типом архива. Скачивать нужно с официального сайта – это гарантирует отсутствие таких проблем, как заражение вирусом, чем грешат многие файлообменники. После установки архиватора нужно перегрузить компьютер и приступить к распаковке файла, вызвавшего ошибку.

Скачивание установщика WinRAR

Если и при использовании архиватора ошибка CRC не исчезла, вполне возможно, что это из-за того, что вы пользуетесь устаревшей программой. Не поленитесь посетить официальный сайт разработчика на предмет скачивания самой последней версии инсталляционного пакета – обычно это устраняет все возможные проблемы.

Скачивание установщика 7ZIP

Отключение разгона

До сих пор мы рассматривали только программные способы устранения ошибки контрольной суммы, но она может возникнуть и по аппаратным причинам. В частности, такое нередко случается на компьютерах с разогнанным процессором или оперативкой. Оверклокинг хорош для выполнения ресурсоёмких задач, но в случае с работой архиватора он может вместо пользы принести вред, инициировав сбой при распаковке архива, что в итоге выльется в ошибку CRC.

Решение проблемы – отключение разгона. Проще всего это сделать, выполнив сброс BIOS до заводских настроек, после чего можно проверить работоспособность архиватора.

Сброс BIOS до заводских настроек

Устранение неполадок с диском компьютера

Более вероятным виновником появления ошибки несовпадения контрольной суммы при установке программ является наличие сбойных секторов на диске. Если ваш HDD возрастной, то стоит проверить его специализированной утилитой (можно и встроенными средствами Windows). С твердотельными накопителями такая неприятность случается чаще – в силу ограничений по циклам записи/чтения, свойственным для SSD.

Переход в свойства локального диска

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

Проверка диска на наличие ошибок

В обоих случаях нужно просканировать диск с опцией исправления ошибок, после чего снова скачать архив и распаковать его.

Кнопка «Проверить диск»

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

Понравилась статья? Поделить с друзьями:
  • Runtime error внутренняя ошибка extract temporary file size
  • Rucelf srwii 6000 l ошибка 07
  • Rs2 omron ошибка e4
  • Rucelf srwii 12000 l ошибка 03
  • Runtime error at 38 446 внутренняя ошибка