СОЗДАНИЕ ЛОКАЛЬНЫХ РЕГУЛЯТОРОВ НА БАЗЕ ВИРТУАЛЬНОЙ МАШИНЫ С ДИНАМИЧЕСКИМ НАБОРОМ
ИНСТРУКЦИЙ
Р.Р. Ковязин, Н.П. Постников
В работе рассматривается проблема проектирования микропроцессорных устройств управления объектами, физическими и технологическими процессами. Проведен анализ прикладных задач, предлагается архитектура локальных регуляторов на базе программно реализованной виртуальной машины. Для оценки эффективности реализаций предложенной архитектуры формулируются критерии оптимальности. Представлена архитектура виртуальной машины МЬ2 и ее внедрения, демонстрирующие эффективность решения задач логического управления.
Локальные регуляторы
Локальные регуляторы и устройства логического управления широко используются для построения автоматизированных систем с обратной связью для управления объектами или промышленными процессами. Традиционно локальными регуляторами называются устройства, реализующие законы аналоговой ПИД (пропорционально-интегрально-дифференциальной) регуляции. Также локальными регуляторами можно назвать устройства локального логического управления, взаимодействующие с объектом управления посредствам дискретных сигналов ввода/вывода. На практике зачастую встречаются задачи смешанного управления, где объект управления требует как аналогового, так и логического управления, где целевая система содержит несколько разнотипных объектов управления. В данной статье под локальным регулятором будет пониматься устройство гибридного управления.
К современным локальным регуляторам предъявляются следующие требования:
• автономное микроконтроллерное устройство;
• возможность настройки целевого алгоритма управления;
• низкая стоимость конечного устройства;
• наличие функций самодиагностики;
• широкий диапазон условий эксплуатации.
Обычно локальные регуляторы создаются для типовых объектов управления, что позволяет говорить о фиксированном наборе интерфейсов сопряжения с объектом. Критичными для локальных регуляторов являются более строгие требования к климатическим и электромагнитным условиям эксплуатации при наличии ограничений на габариты и энергопотребление. Все сказанное позволяет утверждать, что локальные регуляторы являются ярким представителем встраиваемых систем, и при их проектировании необходимо решать весь комплекс проблем, характерный для проектирования встраиваемых систем.
Многие локальные регуляторы должны иметь интерфейс пользователя, позволяющий конфигурировать алгоритм, менять режимы работы и отображать текущее состояние объекта управления. Кроме того, эффективно решить собственно задачу управления объектом может только специалист-прикладник, поэтому разработчики локальных регуляторов должны предоставлять средства разработки прикладных алгоритмов, позволяющие в необходимых пределах изменять прикладной алгоритм силами специалиста-прикладника.
В данной статье для реализации прикладной функциональности локальных регуляторов рассматривается вариант с использованием виртуальной машины [1] и предлагается специализированная виртуальная машина с динамическим набором инструкций для решения задач гибридного управления. С учетом требования низкой стоимости и простоты конечного изделия зачастую у разработчика локальных регуляторов нет воз-
можности использовать мощные высокопроизводительные микроконтроллеры, обладающие значительными вычислительными ресурсами. В большинстве случаев в качестве базового микроконтроллера устройства используются 8-битные контроллеры с объемами памяти, ограниченными единицами килобайтов. Это является важнейшим фактором при определении архитектуры виртуальной машины.
Понятие виртуальной машины
На рис. 1 представлена структура виртуальной машины. Укрупненно микроконтроллер можно представить как совокупность ресурсов (память, порты ввода/вывода, система прерываний и т.д.) и множество функциональных примитивов (инструкций АЛУ), предназначенных для выполнения определенных операций над ресурсами.
Прикладная программа
Виртуальный микроконтроллер (виртуальная машина) Функциональные примитивы (эмулятор) Специализированные ячейки памяти (драйверы)
Функциональные примитивы (инструкции базового ядра) Прерывания, порты ввода/вывода, память и т.п.
.—О----
а а
И щ
к ч ч о а н к о
ж «
о
со «
—го----
И
Рис. 1. Общая структура виртуальной машины
Реализация прикладных алгоритмов управления должна быть возможна для базовых микроконтроллеров различных типов, но функциональные примитивы и ресурсы каждого микроконтроллера характеризуют именно микроконтроллер, а не прикладную задачу. Поэтому необходима некоторая программная надстройка над базовым микроконтроллером, которая реализует функциональные примитивы и ресурсы, характерные для задачи.
На основе возможностей базового микроконтроллера реализуется библиотека драйверов интерфейсов сопряжения с объектом. Для преобразования функциональных примитивов создается эмулятор, являющийся вычислительным ядром полученного виртуального микроконтроллера. Прикладная программа активирует исполнение функциональных примитивов виртуальной машины, которые предоставляют доступ к ресурсам системы через библиотеку драйверов. Таким образом, создается виртуальный микроконтроллер на основе базового микроконтроллера. Обычно базовый микроконтроллер является аппаратным, а виртуальный микроконтроллер - программно-аппаратным.
Следует заметить, что библиотека драйверов реализует все необходимые интерфейсы сопряжения с объектами и сложные алгоритмы аналогового управления. В рассматриваемой архитектуре виртуальной машины специалисту-прикладнику недоступно создание новых интерфейсов сопряжения с объектами, а задачей прикладного уровня остается лишь реализация алгоритма управления объектами или процессами на уровне регистровых передач, с использованием специализированных ячеек памяти.
Основным недостатком виртуальных машин является наличие run-time эмулятора, что резко снижает производительность всей системы. Допустим, функциональный примитив виртуального микроконтроллера способен одновременно выполнять к элементарных действий прикладной программы, а его эмуляция требует использования n функциональных примитивов базового микроконтроллера. Тогда общая эффективность использования виртуальной машины п может быть вычислена по формуле.
П = к ■ n -. (1)
Чем выше показатель п, тем эффективнее решение конкретной прикладной задачи. Так как по определению n не может быть меньше 1, то максимальная общая эффективность использования виртуальной машины всегда не больше к. Теоретически максимум общей эффективности достигается при условии n = 1, каждой группе элементарных действий прикладной задачи соответствует один функциональный примитив виртуального микроконтроллера, совпадающий с функциональным примитивом базового микроконтроллера (эмулятор отсутствует). На практике из-за наличия дополнительных механизмов защиты, сложных прикладных структур данных и т.д. показатель n всегда много больше 1. К тому же обычно набор функциональных примитивов виртуального микроконтроллера является универсальным и не отображает особенности прикладной задачи, что делает параметр к = 1 .
Для того чтобы минимизировать потерю эффективности, необходимо выбирать функциональные примитивы виртуального микроконтроллера, как можно более «адекватно» отображающие существо конкретной задачи управления (увеличивать характеристику k). Также необходимо добиваться эффективности реализации run-time эмулятора (уменьшать характеристику n). Приведенные рассуждения позволяют сформулировать критерии оптимальности виртуальной машины:
1) компактность представления прикладной задачи;
2) время исполнения функциональных примитивов виртуальной машины;
3) количество функциональных примитивов виртуальной машины.
Первый критерий компактности характеризует, насколько адекватно функциональные примитивы виртуального микроконтроллера отражают элементарные действия прикладной задачи. Компактное представление конкретной прикладной задачи позволяет значительно увеличить характеристику к. Время исполнения функциональных примитивов виртуальной машины напрямую зависит от количества инструкций базового вычислителя, использованных для реализации исходного примитива, что связано с характеристикой n. Меньшее количество функциональных примитивов виртуальной машины позволяет упростить реализацию эмулятора и сэкономить ресурсы базового микроконтроллера.
Виртуальная машина NL2
Проектирование эффективной виртуальной машины необходимо начинать с анализа типовых прикладных задач. Типовые задачи локальных регуляторов состоят из следующих элементарных действий:
• вычисление логических термов;
• регистровые передачи;
• вычисление арифметических выражений;
• проверка условий.
При этом сам процесс вычислений носит циклический характер или активизируется по некоторым событиям. Ввиду отсутствия в прикладных алгоритмах сложных структурных операторов предлагается управляющую процедуру разбить на линейные фрагменты, исполняемые последовательно. Линейный фрагмент программы, закодиро-
ванный в последовательность примитивов виртуальной машины, назовем петлистом. Вся прикладная программа в таком случае представится в виде набора нетлистов, между которыми передается управление. Аналогичным образом в множество нетлистов может быть переведен алгоритм, выраженный в автоматной форме.
Для реализации элементарных действий, перечисленных выше, с учетом критериев эффективности была разработана специализированная виртуальная машина NL2. Виртуальная машина NL2 - это регистровая машина гарвардского типа. Вычислительное ядро NL2 поддерживает одну инструкцию с конфигурируемым микрокодом. Микрокод определяет типы операндов и систему логических функций. При выполнении инструкции может быть использовано до 4 входных и 4 выходных операндов. NL2 предоставляет доступ к двум адресным пространствам данных. Через пространство памяти доступны специализированные ячейки памяти, в том числе и интерфейсы сопряжения с объектом. Регистры предназначены для хранения временных результатов и обеспечивают более высокое быстродействие машины за счет более высокой скорости доступа. Виртуальная машина NL2 является масштабируемой на этапе реализации и характеризуется четверкой параметров NARC, называемой профилем. Профиль определяет разрядность машины N (размер ячеек памяти и регистров), размеры адресных пространств памяти (A) и регистров (R), а также ширину представления короткой константы (C).
На рис. 2 представлен упрощенный формат микрокода. Данные микрокода занимают 12 байт. Конфигурация ядра содержит количество активных входов и выходов и режимы работы ядра виртуальной машины NL2. Типы операндов задаются в конфигурации входов и выходов. Они определяют адресное пространство для загрузки и сохранения операндов. Система логических функций, задающая действия микрокода, позволяет определять традиционные логические операции (AND, NOT, XOR и др.), арифметические операции («+», «-»), операции пересылки данных (MOV, SWAP, XCHG и др.), логические признаки («больше», «равно», «меньше или равно» и др.), мультиплексирование, любую логическую функцию 4-х входов. Уникальность микрокода определяется именно логической функцией, остальные параметры микрокода могут быть изменены в режиме исполнения за счет указания префикса инструкции (параметризация микрокода). Параметризация микрокода дает возможность использовать один и тот же микрокод при изменении режима выборки или сохранения операндов, что позволяет значительно уменьшить количество микрокодов в прикладной задаче.
0..15 16..31 32..47 48..63 64..79 80..95
Рис. 2. Формат микрокода инструкции виртуальной машины NL2
На рис. 3 показана структура ядра виртуальной машины NL2. Видно, что для интерпретации микрокода инструкции ядро получает до 4 входных операндов. Все они поступают на входы 4 логических функций, каждая из которых формирует один выходной результат. Таким образом, формируются 4 выходных операнда. Для выполне-
Конфигурация АЛУ 0
Конфигурация входов (Квходов) Квыходов
Логическая функция
ния логических и арифметических операций ядро виртуальной машины содержит блок предварительной обработки и блок обратной связи. Все логические функции применяются последовательно ко всем битам входных операндов, поэтому сложность реализации виртуальной машины не зависит от размера машинного слова N. Алгоритм работы АЛУ NL2 представлен несложным выражением.
for (n = 0; n < N; + + N) {
int p = 0;
for (i = 0; i < 4; + +i) p[ = IN for(i = 0; i < 4; + +i) OUT
(2)
= pCODE.table^
}
В (2) N - это разрядность машины, IN - входные данные, OUT - выходные данные, а table - система логических функций микрокода pCODE. Из (2) видно, что для любой системы логических функций микрокода инструкция будет исполняться одинаковое время.
Вход 1 Вход 2 Вход 3 Вход 4
Обратная связь <--
Регистр @0
Режим обратной связи
cd И
н
о б
а р
б
о
д
е р
С
t
АЛУ
Логическая функция 1
Логическая функция 2
Логическая функция 3
Логическая функция 4
А
-►Выход 1
'Выход 2
Выход 3 Выход 4
Логическое пре- Порядок следования образование битов
Рис. 3. Структура ядра виртуальной машины
Если вернуться к критериям эффективности виртуальной машины, то можно заметить, что в связи с использованием всего одного функционального примитива виртуального микроконтроллера характеристика п определяется только эффективностью реализации выражения (2) в каждом конкретном случае. Возможность использования до 4 пар операндов в одной инструкции и реализация уникальных систем логических функций позволяют сделать характеристику к значительно больше 1. Еще больше по-
n
вышает эффективность виртуальной машины возможность выбора специфических микрокодов для конкретной задачи.
Прикладное программное обеспечение
Для создания прикладной программы необходимо выполнить 2 этапа (рис. 4). На первом этапе требуется анализ задачи и создание оптимального набора библиотеки микрокодов. Анализ задачи заключается в выделении в прикладном алгоритме логических таблиц и часто используемых последовательностей элементарных действий. Удачный выбор микрокодов является залогом удовлетворения критерия компактности представления прикладной задачи (повышение показателя к). На втором этапе нужно с использованием микрокодов закодировать прикладной алгоритм. Это можно сделать в рамках инструментальных средств, предоставляющих возможность программирования на уровне ассемблера или с использованием языков высокого уровня. Важно понимать, что для каждого конкретного случая ассемблер уникален, и, следовательно, изучение набора инструкций конкретной задачи не имеет смысла. В результате прикладное программное обеспечение состоит из библиотеки микрокодов инструкций и списка нетли-стов.
I-------------------------------------1
Прикладная программа
Библиотека микрокодов
Рис. 4. Прикладное программное обеспечение для виртуальной машины
Внедрения
Описанная виртуальная машина КЬ2 была внедрена в проектах трех различных локальных регуляторов [2, 3]. Ее характеристики перечислены в таблице 1. В соответствии с профилем ВМ является 8-битной машиной, поддерживающей 256 ячеек памяти, 16 регистров и 4-битные короткие константы. Согласно предложенной ранее архитектуре, данные всех драйверов представлены в адресном пространстве памяти. В целом во всех локальных регуляторах были реализованы драйверы релейных выходов, ЦАП,
АЦП, кнопок, светодиодных индикаторов, интерфейса иЬап, часов реального времени, дискретных входов/выходов и др.
Базовый микроконтроллер Р1С18 (8-битД18С,16МГц)
Профиль МЬ2 КАЯС = { 8, 8, 4, 4 }
Макс. количество уникальных микрокодов 64
Макс. количество нетлистов 256
Занятый объем памяти кода базового микроконтроллера 1 Кбайт (500 строк С-кода)
Занятый объем памяти данных базового микроконтроллера 40 байт
Время исполнения инструкции 500мкс
Инструментальные средства дизайнер микрокодов, ассемблер, встроенный загрузчик
Таблица 1. Параметры реализации виртуальной машины ЫЬ2.
Внедрения и характеристики их прикладных программ перечислены в списке.
• Малая система кондиционирования:
11 нетлистов, 47 инструкций/нетлист, 14 микрокодов.
• Таймер программируемый:
13 нетлистов, 45 инструкций/нетлист, 14 микрокодов.
• Система «интеллектуальный дом»:
7 нетлистов, 15 инструкций/нетлист, 15 микрокодов.
Малая система кондиционирования предназначена для обеспечения климата в кабине машиниста железнодорожного состава. Система учитывает температуру внутри и снаружи кабины, температурные уставки. При управлении силовыми агрегатами для выполнения задач кондиционирования учитываются ограничения на скорость их включения/выключения. Система имеет интерфейс пользователя, позволяет менять температурные уставки, индицирует состояния силовых агрегатов и режим работы.
Таймер программируемый предназначен для локального управления наружным осветительным оборудованием. Один такой контроллер способен управлять освещением по двум фазам. Система хранит расписание включения и выключения освещения с точностью 1 минута на целый год. Интерфейс пользователя позволяет управлять освещением в ручном режиме, вводить новое время и дату. Система обеспечивает корректный переход на летнее и зимнее время. Система предназначена для функционирования круглый год в уличных климатических условия. В ней реализованы механизмы повышения ее надежности и разносторонняя диагностика ее механизмов.
Перечисленные выше системы выпускаются серийно. Система «интеллектуальный дом» существует в прототипе для локального использования. Она обеспечивает доступ к помещению, используя ключи ¡Вийоп и электронный замок. В системе хранится база ключей и уровней их доступа. Новые ключи могут быть добавлены и удалены из базы во время работы с помощью интерфейса пользователя без использования дополнительных средств. Управление звонком тоже входит в функции системы.
Развитие КЬ2
Идея создания уникальных для каждой задачи наборов инструкций позволяет резко повысить эффективность виртуальной машины за счет компактного представления прикладной задачи. Существующие в настоящее время инструментальные средства для создания эффективных алгоритмов требуют от разработчика серьезных знаний булевой алгебры и дискретной математики. Эти знания необходимы на этапе анализа приклад-
ной задачи и создания эффективного набора микрокодов (понимание архитектуры вычислительного ядра КЬ2, кодирование систем логических функций, функциональная декомпозиция сложных функций, оптимизация по типам операндов и т.д.). Использование же некого «универсального» набора микрокодов резко ухудшит характеристики получаемых систем.
Положение усугубляется отсутствием компиляторов языков высокого уровня и неразвитыми средствами отладки. Все это требует специалиста с высокой квалификацией в области вычислительной техники, хотя технология создания локальных регуляторов на базе виртуальной машины КЬ2 ориентирована на прикладного специалиста.
Первостепенными задачами развития КЬ2 видится создание более серьезных средств отладки, создание компиляторов ЯВУ (структурные языки, автоматное представление и др.) и исследование способов получения оптимальных наборов микрокодов с последующей генерацией на их базе кода прикладной задачи. Критериями оптимизации для средств автоматического синтеза могут выступать объем результирующего кода, количество уникальных микрокодов, скорость исполнения прикладной программы и т.д.
Перечисленные проблемы вызваны не недостатками архитектуры виртуальной машины КЬ2, а несовершенством инструментальной поддержки. Решение поставленных задач позволит избавиться от указанных проблем, и прикладной специалист получит мощный и легко осваиваемый инструмент для создания локальных регуляторов устройств гибридного управления.
Литература
1. Ковязин Р.Р., Платунов А.Е. Программирование микроконтроллерных систем. // Электронные компоненты. 2003. № 4, С. 65-70.
2. Ковязин Р. Р. Программируемые микроконтроллерные системы. / Политехнический симпозиум «Молодые ученые — промышленности Северо-Западного региона». Тезисы докладов. СПб: СПбГПУ, 2003. С. 10.
3. Ковязин Р.Р., Платунов А.Е. Приборные контроллеры. // Приборостроение и средства автоматизации. 2005. №1. С. 50-52.