Заказчик получил систему для прокачки газа через упаковку, а также его последующего анализа. Попутно были разработаны библиотеки поддержки датчиков потока (с нелинейной характеристикой), а также отдельная программа по их поверке и калибровке через эталонный внешний датчик потока. Разработана функция самокалибровки датчиков по их показаниям.
Заказчик разрабатывает аппарат для проверки качества упаковки продуктов. Для этого на упаковку наклеиваются две мембраны, в них вставляются медицинские иглы и закачивается азот, пока процент кислорода не станет ниже 0.5%. Затем иглы вынимаются, и упаковка на несколько дней кладётся на хранение. По окончании срока хранения она снова подключается к аппарату, но на этот раз из неё просто берётся проба газа и вычисляется, сколько кислорода просочилось в неё за это время. Качественная упаковка сохранит чисто азотную атмосферу, так как в ней продукты практически не портятся.
Разрабатываемое устройство содержит ряд клапанов, переключающих поток между трубками, которые необходимо переключать, датчики потока газа (имеющие нелинейную характеристику и требующие калибровки), клапан, позволяющий регулировать поток газа, а также помпу, мощность которой можно регулировать с большой погрешностью. Имеется также USB-устройство, которое управляет всем этим оборудованием. К устройству прилагается библиотека для доступа к нему из Windows.
Первые же тесты показали, что простейшее вынимание кабеля USB приводит к падению библиотеки, а следовательно всей программы. Техподдержка производителя USB-блока, используемого в системе заказчика, отказалась исправлять ошибку, ссылаясь на то, что не следует вытаскивать USB кабель. Поэтому была изучена структура двух DLL библиотеки, и выяснено, что на самом деле, вся работа системы базируется на стандартном драйвере фирмы MicroChip, интерфейс которого документирован в сети Интернет. Была разработана собственная устойчивая библиотека для обслуживания USB-устройства.
Самая главная задача при закачке азота – это выкачивание такого же по объему количества воздуха из упаковки. В противном случае упаковка может раздуться (если выкачивается недостаточно) или сжаться (если выкачивается слишком много). Выкачиванием занимается помпа, которая работает рывками, кроме того, может управляться только с большой погрешностью. Закачивание идёт под давлением баллонного газа, поэтому равномерность определяется атмосферой комнаты (достаточно открыть дверь в помещение, чтобы поток изменился). Количество газа может быть отрегулировано клапаном плавной регулировки по принципу «больше-меньше». Поток на входе и выходе контролируется датчиками потока.
Под руководством специалистов заказчика была разработана программа для PC, которая производит закачку с идеальным соотношением «вход-выход». Контроль работы программы осуществлялся при помощи мыльного детектора. В середине колбы формируется мыльный пузырь. В зависимости от перекоса в закачке/откачке, он ползёт или вниз или вверх. Если за длительное время он ни разу не выполз за разрешённые пределы, то считается, что система работает корректно.
Процесс разработки программной поддержки совпал с процессом изучения свойств аппаратуры самим заказчиком. Например, выяснилось, что исходный алгоритм переключения клапанов приводил к спонтанным скачкам давления и сбою показаний из-за накопившегося в трубках газа. Это решалось стравливанием газа по неиспользуемым путям (представитель заказчика подбирал переходные процессы, пользуясь схемой и своими знаниями в предметной области). Выяснилось, что помпа с прогревом начинает давать микроутечки, которые следовало компенсировать и т.п. Всё это показывало, что заказчику в процессе эксплуатации потребуется производить корректировку работы программы. Чтобы минимизировать обращения к разработчикам, а следовательно – собственные затраты, заказчик предложил вынести ряд процессов из жёсткого кодирования на скриптовое. Поэтому в систему был добавлен интерпретатор LUA Script. В язык были добавлены объекты, дающие доступ к аппаратуре и базовым алгоритмам нижнего уровня, которые в силу высокого быстродействия не могут быть вынесены на скриптовый уровень, но их параметры могут корректироваться из скрипта.
Заказчик получил систему для прокачки газа через упаковку, а также его последующего анализа. Попутно были разработаны библиотеки поддержки датчиков потока (с нелинейной характеристикой), а также отдельная программа по их поверке и калибровке через эталонный внешний датчик потока. Разработана функция самокалибровки датчиков по их показаниям.
Для возможностей корректировки алгоритмов силами заказчика введена поддержка LUA Script.
Работа библиотек поддержки USB-устройства изучалась при помощи бесплатной версии дизассемблера IDA PRO. Новая библиотека написана на языке С++ в среде Visual Studio 7.0.
Система разработана на языке C++ в среде Visual Studio 7.0 с активным использованием библиотеки STL. Для поддержания баланса входящих и выходящих газов, разработан программный PID-регулятор.
Интерпретатор LUA Script взят в сети Интернет и доработан для использования с целевым оборудованием.
Для связи с газоанализатором была использована собственная библиотека поддержки COM-порта.