О подстерегающей ошибке при чтении осциллограмм.

 

Автоэлектрик для всех

  Речь пойдет о кратковременных пропусках в записи непрерывного сигнала (режим самописца), которые могут быть ошибочно приняты за сбои самого сигнала. По неопытности попадался так неоднократно прежде чем разобрался с происходящим. А до того как разобрался, иногда необоснованно производил замену исправных датчиков синхронизации.
Поясню на примере. Ниже показана двухканальная запись в сжатом виде с инжекторной Волги. Верхний канал - дпкв, нижний - управление катушкой 2-3 цилиндров.

mistake1.png (12918 bytes)

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

mistake2.png (4754 bytes)

Это был крайний случай, где место стыка довольно трудно разглядеть, а чаще он сам бросается в глаза. Вот еще один пример с той же диагностики:

mistake3.png (4895 bytes)

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

Причина по которой происходит выпадение сэмплов из записи, на мой взгляд не специалиста в компьютерных кишках - дополнительные прерывания. Исключить прерывания полностью нельзя в принципе - это основа функционирования компьютера, но влиять на их количество - так, чтобы они не исказили запись - можем. Вот резервы по железу:
- процессорная мощность компьютера;
Этого добра всегда - чем больше, тем лучше. Реально мне хватает для осциллографа и нынешних 500мГц на Celeron`е. Но мегагерцовый барьер сейчас теснят совсем другие программы от авторемонта, т.ч. не осциллограф, а они заставят заменить проц на более шустрый.
- объем оперативной памяти компьютера;
Оперативная память на вашем компьютере имеет физически ограниченную емкость (эти кадры были записаны в то время когда на моем рабочем компьютере было 64мб оперативки), и при заполнении данными выше определенного уровня будет происходить своп - сброс данных с оперативки на жесткий диск, в файл подкачки. Слышали наверняка как коротко похрюкивает винчестер при длительной записи, или в играх - это и есть тот самый своп. В момент свопа будет происходить выпадение сэмплов из записи, или подтормаживать игровая стрелялка. После того как я нарастил объем оперативки до 128мб проблема практически исчезла.
- объем памяти видеокарты;
Чем больше будет скорость записи, т.е. чем выше Rate (частота дисретизации), тем больше шансов что слабая видеокарта не успеет самостоятельно справиться с потоком графики (который идет параллельно с записью сигнала) и на помощь ей будут востребованы основные ресурсы компьютера - это еще один повод для прерывания и сбоя в записи. На рабочей машине у меня до сих пор стоит видюха с 4мб памяти, но это конечно перебор, думаю что для наших задач "за глаза" хватит видюхи с 32мб на борту.

Помимо наращивания мегагерцев и мегабайтов есть и менее затратные способы борьбы с пропусками, которые следует учитывать в любом случае:
- выкинуть все пользовательские программы из автозагрузки, типа Win Media Player, или еще подобную глупость на рабочей машине. Голую бабу с рабочего стола тоже уберите;
- закрыть все другие программы перед началом записи - никаких МТ и открытых информационных баз. Т.е. очистите ОЗУ перед началом записи;
- записывать небольшие по размеру файлы. Большим я считаю файл в 20-30мб, а файлики размером 3-5мб вполне рабочие;
- учиться отличать зерна от плевел (набираться опыта).
- очень хороший способ в дополнение:
использовать для записи утилиту File Recorder из бесплатного пакета PowerGraph2.1. Утилита File Recorder производит запись сигналов в двоичной форме - никакой графики параллельно (получаете файл типа signal.bin), и вследствие этого ей требуется мизерное количество ресурсов компьютера, что практически гарантирует от ошибок в записи. Этот метод выручает при использовании совсем уж дремучих компьютеров. Полученный файл открываете в PowerGraph как привычный .pgc, разницы в наблюдении и анализе записанных осциллограмм не найдете.

recorder.png (9254 bytes)

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