Оборудование для обработки банкнот предъявляет высокие требования к быстродействию алгоритмов сбора информации с датчиков, анализа образа банкноты и управления механизмом. Скорость реакции этих алгоритмов должна находиться в микросекундном диапазоне, что относится к так называемому классу вычислительных задач реального времени. Работа в реальном времени всегда рассматривается как сложная задача, требующая больших усилий, специальных знаний и навыков инженерного коллектива.
Перечисленные алгоритмы должны выполняться параллельно и не создавать помех друг другу. Как правило, для параллельного выполнения задач во встроенном вычислителе используют операционную систему. К сожалению, задачи реального времени с трудом решаются в операционных системах общего назначения, таких, как Linux. Для этого были созданы специализированые операционные системы реального времени (RTOS), которые обеспечивают более высокую скорость реакции. Однако, любая операционная система требует существенных вычислительных ресурсов для обеспечения своей работы, что ведет к усложнению и удорожанию вычислителя, встроенного в оборудование.
В КБ ДОРС мы стараемся не использовать операционные системы для решения задач реального времени. Это позволяет достигнуть высокой скорости реакции и использовать более простые встроенные вычислители. Здесь в полный мере встает вопрос о мощном инструменте программирования, который должен заменить средства, предоставляемые операционной системой. Чтобы одновременно выполнять множество сложных алгоритмов реального времени, мы разработали специальную библиотеку на языке программирования C++.
Она позволяет быстро выполнять параллельный код без опоры на операционную систему.
Наша библиотека ориентирована на так называемую обработку событий, когда любое действие программы является реакцией на внешнее событие, будь то действие оператора, срабатывание датчика или сообщение от отдельной подсистемы машины. Такая обработка разбивает алгоритм на множество отдельных действий, каждое из которых быстро начинается и быстро заканчивается. Обработка событий применяется в программировании при решении сложных задач, критичных по времени, таких как работа сетевых серверов либо телекоммуникационного оборудования. Предложенный нами подход объединяет достоинства обработки событий и более привычного программирования алгоритма единым потоком команд.
Параллельно выполняющиеся алгоритмы синхронизируют свое исполнение за счет обмена событиями. Все это дает возможность построить быстрое, гибкое и функционально сложное программное обеспечение машины для обработки банкнот.
Мы предполагаем, что такой подход может быть полезен для широкого круга задач реального времени в программировании встроенных систем, не ограниченных только лишь банковской техникой. Чтобы поделиться с инженерным сообществом теоретическими принципами и полученными результатами, КБ ДОРС в авторитетном журнале «Программирование» (Programming and Computer Software) была опубликована научная статья
Unified Processing of Events and Co-routines in Embedded Program.