Сейчас мы с Вами рассмотрим простые примеры, того как можно экономить при передаче и хранении информации.
Начнем с того, что в дом сегодня к большинству жителей России завели высокоскоростной интернет и проблемы скачивания и поиска информации отошли на второй план.
Но далеко не везде такие скорости, и не везде такие широкополосные линии связи(медиа трафик). Есть места, где каждый байт на счету.
Начнем с того, что мы привыкли снимать сигнал аналогового вида с датчика измерения, это может быть, сопротивление, индуктивный, датчик или емкостной. Пусть его график по времени будет выглядеть следующим образом.
Как вы понимаете, в современном мире аналоговый сигнал по линиям связи практически нигде не передается. В основном он просто оцифровывается и передается в виде цифрового сигнала. В этот момент, как раз и стоит применить сжатие.
Если кому-то интересно, то процесс оцифровки уже был описан ранее.
А теперь к главному. После принятия сигнала с датчика, мы его нормируем и подаем на вход АЦП. После чего получаем оцифрованный сигнал, и будет он выглядеть так:
Итак, после оцифровки, мы получили набор столбиков заданного значения. Если АЦП 8-ми разрядный, то всего будет столбиков разной высоты 256 штук. от 0 до 255. Если число разрядов 12 или 16, то и уровней будет 4096 или 65536 соответственно.
Все бы нормально, но как правило эти данные необходимо передавать дальше на диспетчерский пункт например. значит, каждый столбик будет занимать у нас ровно разрядность АЦП. Например на 2 байта возьмем. Тогда получится если мы снимаем показания 500 раз в секунду, то необходимая скорость для передачи равна. 500*16=8000 кбит/ сек. Казалось бы небольшая скорость, но можно еще снизить. Каким интересно образом. Всего есть несколько способов, но мы рассмотрим один из них.
Как Вы могли догадаться уже, если посмотреть на график, то в нем достаточно большой объем информации выделен на высоту столбика, которая на самом деле очевидна и не несет полезности, а как с этим обращаться. Очень просто, мы можем ввести опорные столбики и ориентироваться на них.
Приведем пример записи показаний в таблице Ексель.
Как видим, тут все прозрачно.
А теперь наша задача сэкономить объем информации. Как вы понимаете в простых контроллерах встроенного zip упаковщика нет, поэтому, тут применимы простые принципы кодирования.
Возьмем 1 сигнал как опорный,а затем относительно него заполним таблицу, получим табличку снизу.
Отлично, сжатие удалось, что же делать, дальше . А дальше мы передаем сигнал и восстанавливаем его.
Казалось бы, всё легко и просто, но есть некоторые детали.
Во первых в случае пропажи опорного напряжения, вся таблица бесполезна.
Во вторых потеря одного из промежуточных тактов может привести к искажению графика.
Здесь можем добавить условную синхронизацию и повышение надежности опорного измерения.
Добавим в передачу элементы опорные точки на каждом десятом шаге.
Получается, что мы готовим данные для передачи, а потом после приема их извлекаем, при этом еще вводим условную синхронизацию,
Как видите задач для программирования на низком уровне достаточно, и пишется это на языке Си.
Это один из способов сжатия, подобных видов достаточно много. Например у нас шло квантование по времени (отмеряли столбики в заданную единицу времени.), а бывает еще квантование по уровню.
Но это уже другая история,
Если Вам понравилась статья, жмите "палец вверх" и подписывайтесь на канал.