MexBIOS – комплексное решение для создания систем управления на базе микроконтроллеров

Проблема, решение, область применения

При проектировании устройств использование Систем автоматизированного проектирования (далее САПР) носит повсеместный характер. Однако данная тенденция не коснулась процесса создания встроенного программного обеспечения устройств, прежде всего разработки программного кода для микроконтроллеров, который  по-прежнему осуществляется посредством специальных систем программирования. При этом основная роль здесь отводится, прежде всего, программисту, а не специалисту знающего специфику работы данного устройства, технологии и особенностей его применения для специфичных объектов управления. В связи с этим знание специфики архитектуры и периферии микроконтроллеров и среды программирования превалирует над знанием «физики» обслуживаемых процессов, что ограничивает в свою очередь функциональность разрабатываемых устройств, снижает эффективность работы инженеров-разработчиков, качество проектной документации,  увеличивает сроки исполнения проекта, препятствует быстрому внесению изменений в связи с изменившимися планами заказчика, усложняет командную работу над проектом.

Решение указанных проблем возможно при создании программных надстроек над стандартными системами программирования, позволяющих проектировщикам абстрагироваться от специфики встроенного программирования микроконтроллеров и сосредоточиться на задачах адаптации «интеллекта» к решаемой задаче.

Компания «Мехатроника-Про» на основе опыта собственных разработок создала программный продукт САПР MexBIOS (далее Система), являющийся дополнением к существующим системам программирования и  позволяющий выполнить практически весь цикл проектирования встроенного программного обеспечения микроконтроллеров – от предварительного моделирования разрабатываемой системы и пробных запусков на макетах вплоть до работ по сопровождению производства и внесению изменений в выпускаемую продукцию. Основная область применения разработанного продукта – системы управления электродвигателями и устройств автоматизации, однако примененный подход универсален и для других направлений.  Компания является участником Texas Instruments Developer Network, и является одним из немногих поставщиков средств разработки для микропроцессоров производства TI.

 

Рис. 1. Внешний вид САПР MexBIOS. Продемонстрирован экран работы по созданию системы управления лифтовой станцией: 1 – панель визуализации, 2 – поле алгоритмов, 3 – корневое поле для объявление переменных и событий, 4 – поле блок диаграмм, 5 – поле машины состояний, 6 – окно Менеджера проекта, 7 - меню системы.

 

Концепция

Использование MexBIOS позволяет улучшить процесс разработки исходя из следующего:
1.    Применение визуального программирования позволяет разрабатывать интеллектуальную начинку системы управления инженерам, не являющимися специалистами в области программирования. Проектирование на уровне блок-схем, алгоритмов, «машин состояний» является признанной тенденцией, упрощающей процесс разработки и документирования проекта.
2.    Применение готовых шаблонов программного обеспечения и стандартных аппаратно-зависимых драйверов и модулей протоколов исключает необходимость процесса освоения архитектуры и периферии примененного микроконтроллера.
3.    Встраивание системы в существующие проекты позволяет сохранить предыдущие наработки и инвестиции в проекты. При этом добавление системы в проект позволяет резко увеличить адаптационные возможности устройства - фактически пользователь добавляет в устройство встроенную систему программирования.
4.    Предварительное моделирование работы разрабатываемого кода совместно с моделями будущих объектов управления позволяет исключить глобальные ошибки проектирования и изучить работу программного кода исходя из потенциально возможных эксплуатационных ситуаций на ранних этапах проектирования.
5.    Использование готовых программных процедур из библиотек системы и предоставляемых шаблонов для распространенных систем управления позволяет сократить инвестиции в НИОКР и ускорить этап лабораторных исследований.
6.    Возможности создания графических «виртуальных» пультов управления позволяет упростить этап тестирования системы и ввода ее в эксплуатацию, ускорить процесс освоения устройства обслуживающим персоналом.
7.    Принципиально новым решением системы MexBIOS является процесс графической разработки «на лету», когда в режиме отладки в реальном времени становится возможным не только менять значения переменных, но и алгоритмы исполнения кода. 
8.    Функция генерирования кода оставляет за собой возможности для последующей оптимизации исходя из ресурсов процессора (при наличии такой потребности).
Концепция системы подразумевает наличие «стартового» проекта встроенного программного обеспечения для микроконтроллера (в роли которого может выступать и уже имеющиеся проекты у пользователя системы). «Стартовый» проект, помимо собственных функций, выполняет запуск специализированного программного ядра MexBIOS, в свою очередь запускающего элементы библиотеки в соответствии с правилами, определенными пользователем в процессе графического программирования на персональном компьютере: фактически пользователь должен задать состав исполняемых элементов библиотеки, условия их запуска и потоки данных между входами-выходами примененных элементов библиотеки. Набор данных правил в дальнейшем будем называть «матрица». Фактически ядро системы есть интерпретатор, который вызывает заранее скомпилированные программные блоки в соответствии с созданной графическим способом программой. Интерпретация кода (пусть даже оперирующего с предварительно откомпилированными процедурами) естественно несколько замедляет исполнения программы, хранение «матрицы» в памяти данных уменьшает ее «полезную» емкость, но всё это может быть компенсировано через встроенный механизм генерации кода в текстовом виде после завершения процесса отладки.
Рассмотрим основные элементы САПР MexBIOS для работы по созданию встроенного программного обеспечения для микроконтроллеров.

 

Встраивание системы в проект. Стартовый проект. Распределение памяти. Подключение внешнего компилятора

Для запуска системы необходимо провести минимальное количество действий, позволяющее вызвать ядро системы и осуществлять коммуникации с компьютером, на котором установлена САПР MexBIOS. Занесение ядра и библиотеки в микроконтроллер осуществляется посредством стандартных средств программирования флеш-памяти. Система допускает подключение внешних утилит программирования флеш-памяти, например, рекомендуется утилита С2xx производства компании Codeskin.  Помимо стандартной библиотеки системы пользователь может создать собственные библиотеки и также добавлять их в проект. Ядро совместно с библиотеками заносится в свободные (не занятые «стартовым» проектом) секторы памяти. В «стартовый» проект необходимо добавить вызов ядра (например, в процедуру обслуживания прерывания) и протокол коммуникаций согласно документации и прилагающимся примерам. «Матрица» может храниться как внутри библиотеки, так и отдельно во внешней микросхеме памяти EEPROM, подключение такой микросхемы также описано в документации на систему. Загрузка матрицы осуществляется непосредственно из Системы по последовательному каналу связи (USB, COM). Распределение памяти в микроконтроллере показано на рис.2.

Рис.2. Распределение памяти в системе MexBIOS. Окно для конфигурации памяти позволяет задать области памяти Системы и подключить внешние средства компиляции кода

 

По завершении указанных действий система готова к использованию и может исполнять «матрицу» пользователя параллельно с алгоритмами. 
При создании библиотек используется стандартные средства генерации исполняемого кода, которые поддерживаются производителями микроконтроллеров. Как можно видеть, использование понятия «стартового» проекта и стандартных средств разработки позволяет говорить о том, что рассматриваемая система является надстройкой для уже используемых средств программирования и существующих решений.
Следует отметить особенности библиотек:
1. Каждый блок библиотеки имеет свой уникальный номер, меняющийся при каждом процессе его компиляции – это обеспечивает контроль версионности.
2.. Библиотеки блоков создаются индивидуально для каждого типа ядра микроконтроллеров.
3. Пользователь может исключить из стандартной библиотеки неиспользуемые блоки для того чтобы уменьшить объем занимаемой памяти в микроконтроллере. Система имеет возможность контролировать библиотеки, запрограммированные в микроконтроллер, и если будет обнаружено отсутствие в микроконтроллере требуемого программного блока, об этом будет выдано диагностическое сообщение.
4. Кроме стандартной библиотеки (которую пользователь может модифицировать по собственному усмотрению) возможно создать дополнительно еще и собственную, которую затем также загрузить в оставшиеся свободными сектора флеш-памяти.

 

Основные элементы среды программирования

В качестве инструмента создания «матрицы» предлагается среда программирования MexBIOS Development Studio. Рассмотрим основные элементы среды:
 Палитра блоков: содержит готовые программные блоки, представленные в графическом виде. Блоки находятся в функциональных группах и позволяют реализовывать функции цифровых регуляторов и фильтров, генераторов сигналов, преобразователей координат, драйверы обращения к периферии микроконтроллеров (АЦП, ШИМ, дискретные пины и т.д.), логических и арифметических операций и т.д.. Для использования блока достаточно вынести его на рабочее поле и установить источник получения входных данных. Допускается редактирование блока и создание собственных блоков библиотеки посредством встроенной библиотеки BlockBuilder, работа по созданию блока схожа с технологией S-function builder программы Matlab-Simulink: необходимо назначить количество входов и выходов блока и посредством языка программирования С установить зависимость выходных значений блока от входных. Существует специальная группа блоков Embedded: данная группа содержит «системные» блоки, необходимые для объявления переменных, создания событий, формул и алгоритмов. Следует отметить, что палитра отображается в зависимости от выполняемых действий, предлагая пользователю только разрешенные в текущей ситуации блоки и действия.

Рис.3. Палитра блоков содержит «системные» блоки и блоки библиотек, сгруппированных по функциональному назначению

 Меню: содержит кнопки вызова различных функций, выполняемых при создании проектов программного обеспечения, таких как:

  • работа с файлами (открытие, сохранение и т.д.)
  • моделирование работы созданных схем и объектов управления,
  • редактирования палитры блоков, библиотек и собираемых блок-схем
  • настройки вывода требуемых вспомогательных окон
  • задания режимов отображения блоков на рабочем поле
  • настройка соединения с микроконтроллерами
  • вызов встроенной документации, примеров и видеоуроков.

Также меню содержит функции индикации загрузки процессора по вычислениям, свободной памяти, времени моделирования.
Рабочее поле: Основная часть интерфейса, на которой происходит проектирование системы через прорисовку алгоритмов и блок-диаграмм (формул). Существует корневое поле, в котором указываются события, запускающие требуемые алгоритмы, и переменные для хранения информации. Каждый алгоритм или блок-диаграмма обладает собственным рабочим полем. Строго говоря, существует 2 параллельно существующих рабочих пространства с собственными корневыми полями – одно для разработки кода управления, второе – для создания моделей объектов управления, которыми управляет код и которое используется для тестирования разрабатываемого кода в режиме моделирования. Связь между пространствами происходите за счет элементов коммуникаций TP_in и TP_out.
Окна просмотра значений переменных: представляет возможность сформировать список переменных для отображения/редактирования их значений. Для просмотра значений массивов (например, осциллограммы переходных процессов) существует возможность вызвать виртуальный 6-канальный осциллограф.
Менеджер проекта: показывает список всех элементов проекта, фактически отображает алгоритм работы с учетом всех выполненных вложений, позволяет быстро перейти к требуемому участку алгоритма, менять порядок исполнения элементов алгоритма. С помощью менеджера проекта возможно сгенерировать программный код в текстовом виде на языке программирования Си для выбранной ветки алгоритма или даже для всего проекта.
Инспектор свойств: позволяет сконфигурировать свойства каждого вынесенного на рабочее поле блока. Свойства бывают двух типов: графические (Design) и системные (Run-time). Первые устанавливают параметры отображения блока на рабочем поле, вторые  - по сути являются индивидуальными коэффициентами выполняемых блоком алгоритмов (например, коэффициент усиления регулятора). Свойства блоков изначально задаются в конструкторе блоков.
Окно настройки памяти (показано на рис. 2): позволяет выбрать требуемый компилятор для генерации библиотек блоков и установить необходимые настройки: расположение библиотек в процессоре, область хранения переменных ядра и т.д..
Окно настройки адресов протокола коммуникаций: по умолчанию программное ядро, установленное в микроконтроллер, общается с компьютером (или контроллером) по протоколу Модбас RTU. Соответственно, с помощью данного окна можно произвести настройку адресов требуемых параметров, и в дальнейшем устанавливать коммуникации с использование стандартных правил Modbus RTU.
Следует отметить, что к системе можно подключить выбранные пользователем средства перепрограммирования флеш-памяти микроконтроллеров, и проводить смену библиотеки непосредственно из системы.

 

Объявление переменных. Типы данных. Доступ до значений переменных. Обращение в память. Связь с переменными стартового проекта

Объявление переменных, используемых алгоритмами, осуществляется путем выноса на рабочее поле системного блока VAR. Переменные допускается выносить только на корневое поле проекта. В автоматически открывающемся окне инспектора необходимо задать имя переменной, тип (выбрать из списка как «плавающая запятая» либо «фиксированная запятая» заданного формата).
В дальнейшем к переменной можно обращаться посредством блоков In и Out, предварительно указав в инспекторе свойств данного блока привязку к требуемой переменной.
Для прямого обращения в память существует специальные блоки RD_MEM (для считывания значения ячейки памяти) и WR_MEM (для записи). При использовании данных блоков необходимо в окне инспектора свойств указать адрес в памяти данных, с которым будет работать данный блок.
Для удобства при обмене информации между стартовым проектом и ядром MexBIOS можно подключить map-файл, образованный при компиляции стартового проекта. Данный файл уже содержит информацию об адресах всех глобальных переменных, и список переменных будет отражен в инспекторе свойств в поле Address блоков RD_MEM и WR_MEM, через которые значения требуемых переменных становятся доступными для «матрицы». 

Рис.4. Показано корневое поле для проекта системы управления лифтовой станцией. На экране находится алгоритм, вызывающий последовательно основные модули системы, объявлено использование протоколов коммуникаций (Modbus_RTU для связи с системой управления электродвигателем главного движения, TCP/CLIENT1 и TCP/SERVER1 для связи по сети Ethernet с компьютером диспетчера), в центре рабочего поле объявлены переменные.

 

Назначение событий

Запуск разрабатываемого алгоритма обеспечивается выбранным пользователем событием. По умолчанию система предлагает фоновое исполнение разрабатываемого алгоритма. В случае необходимости вычислений в режиме реального времени пользователь вынужден запускать алгоритм по событию аппаратного таймера микроконтроллера. Для этого необходимо в «стартовом проекте» разрешить соответствующее прерывание, а на рабочее поле вынести системный блок события «Event», и осуществить его привязку через окно свойств к требуемому вектору прерывания.  События могут также быть программные – например, события выполнения условия сравнения двух переменных. Уникальной особенностью системы является возможность проводить моделирование работы алгоритмов на персональном компьютере с привязкой к имитируемым аппаратным событиям.

Рис.5. Показано назначение события по прерыванию таймера (справа в инспекторе свойств указаны его параметры), запускающего алгоритм GUI и формулу расчета CONTROL_SYSTEM. Также в системе существует выполнение фонового (BACKGROUND) алгоритма MAIN.

 

Алгоритмы. Блок схемы. Машина состояний

Как уже говорилось ранее, проектирование системы в среде осуществляется за счет прорисовки алгоритмов, в которых необходимо указать условия запуска формул (осуществляющие изменения значения переменных) и вложенных алгоритмов (осуществляющих условное ветвление при исполнении кода). Формулы создаются путем прорисовывания блок-схем. Алгоритмы могут быть вложены друг в друга. Кроме условий запуска, можно организовать и циклическое исполнение выбранных участков (системный блок «While»).
«Машина состояний» является набирающем все большую популярность создания программ (метод автоматного программирования): пользователь должен определить основные логические состояния, в которых может находиться управляемая система (например «Стоп», «Движение вверх», «Движение вниз» и т.д.), определить действия, характерные для каждого состояния (включить контактор, установить скорость и т.д.) и указать направления и условия перехода между состояниями. Данный метод позволяет легко наращивать функциональность алгоритма, прост и нагляден. Система предлагает возможности создания любого количества состояний (ограничение только по максимально-свободной памяти микроконтроллера), с установлением индивидуальных условий перехода и детализацией действий для каждого состояния.

 

Создание собственных блоков. Генерация кода

Система позволяет создавать собственные блоки, «упаковывая» имеющиеся у пользователя программные процедуры в графический блок Системы. Создание такого блока осуществляется через специальное окно конструктора блоков BlockBuilder, где необходимо выполнить последовательно 7 действий:
1.    Установить графический свойства отображения блока – затем эти свойства будут доступны через инспектор свойств блока (в разделе Design).
2.    Назначить имена и количество входов блока для получения исходных данных,  а также тип данных каждого входа.
3.    Назначить имена и количество выходов блока для выдачи результатов расчета,  а также тип данных каждого выхода.
4.    Назначить параметры блока, через которые можно управлять поведением блока (например, коэффициенты цифрового регулятора), затем эти свойства будут доступны через инспектор свойств блока (в разделе Run-Time). 
5.    Прописать код инициализации блока (если требуется) и код, который будет выполняться при запуске блока. Код пишется на языке программирования Си, и затем будет скомпилирован посредством стандартных средств генерации исполняемого кода, который производитель микроконтроллера рекомендует для использования. Пользователю необходимо указать в коде зависимости между входами и выходами блока, прописав соответствующий алгоритм.
6.    Ввести описательную информацию  о  версии блока, авторстве, способе применения и т.д.
7.    Откомпилировать блок. Если есть ошибки компиляции, они будут выданы в окне сообщений. После компиляции необходимо скомпоновать библиотеку заново и запрограммировать ее во флеш-память микроконтроллера. По завершению создания блока необходимо также выполнить операцию Build (в меню Edit, раздел Library) над самой библиотекой для того, чтобы измененный блок был в нее включен.
Как уже отмечалось, система поддерживает средства генерации кода – созданный в система алгоритм графическим способом можно через менеджер проекта автоматически преобразовать в текстовый файл, и затем этот текст использовать как исходный для создания нового блока. Таким образом, система предоставляет полный контроль разработчику над программой, выполняемой микроконтроллером.

Рис.6. Конструктор блока на примере создания цифрового ПИД регулятора – показан этап создания кода блока.

 

Предварительное моделирование

Система позволяет проводить предварительное моделирование работы кода совместно с моделями объектов управления. При моделировании на персональном компьютере будет исполняться та же программа, которая затем будет загружена в микроконтроллер, при этом учитываются типы данных используемых переменных и ограничения на точность представления значений. В процессе моделирования можно имитировать события, по которым будут запускаться тестируемые алгоритмы (например, имитация прерывания таймера). Для этого необходимо в окне свойств события назначить период запуска и разрешить его работу в режиме моделирования (свойство SimMode выставить как Continious). В качестве моделей объектов, которыми должен управлять разрабатываемый код, могут выступать как имеющиеся в системе модели различных типов электродвигателей, так и самостоятельно разработанные пользователем модели, сконвертированные в блок с помощью описанной выше последовательности действий с инструментом BlockBuilder. Передача данных между рабочим полем моделей и отлаживаемого проекта осуществляется посредством системных блоков «Телепорт» TP_In, TP_Out.

 

Запуск проекта на микроконтроллере

Существует несколько способов запуска созданных в системе алгоритмов.
1.    «Матрица» загружается в ОЗУ микроконтроллера (где уже установлен «стартовый» проект и загружена библиотека блоков) из персонального компьютера, после чего начинается ее выполнение. Данный режим характерен для проведения тестовых и отладочных действий. После нажатия кнопки Refresh становится возможным наблюдать изменения переменных и редактировать их значения. Уникальной особенностью является то, что можно редактировать формулы (блок-диаграммы) прямо в процессе их исполнения, что хоть и требует определенных навыков, но предлагает пользователю фактически non-stop процесс по созданию интеллекта системы и его проверке в режиме Real-Time Mode.
2.    «Матрица» включается в состав библиотеки – при запуске ядра матрица будет вычитана и запущена на исполнение. Данный способ позволяет создавать законченные автономные устройства.
3.    Сгенерировать код в текстовом виде, провести действия по его оптимизации и включить в собственный проект программного обеспечения. При генерации кода на языке Си будут объявлены и проинициализированные все необходимые переменные, а программный код будет взят из самих блоков и сведен в единый файл, где запуск каждого блока соответствует вызову его программной процедуры. Данный метод позволяет разработчику полностью контролировать процесс создания встроенного программного обеспечения, фактически этот метод автоматизирует процедуру создания и предварительного моделирования работы кода, который впоследствии будет интегрирован в проект пользователя, отлаживаемый с помощью одной из стандартных систем программирования микроконтроллеров.
 

Обеспечение коммуникаций. Использование протоколов обмена

Пользователь может встраивать готовые блоки протоколов цифровых коммуникаций в собственные проекты, разрабатываемые в системе. Для этого на корневое рабочее поле необходимо вынести блок настройки выбранного протокола передачи данных (TCP/IP, Modbus RTU и т.д.), в которых задать параметры связи (четность, скорость передачи и т.д.), а затем для записи данных в посылку использовать блок PROTO_OUT, а для считывания – PROTO_IN. У обоих указанных блоков необходимо задать адрес, в который будет записываться значение (поле Address в окне свойств инспектора блоков PROTO_IN  PROTO_OUT). После этого соединяем эти блоки с другими блоками – источниками/приемниками данных, и коммуникация начинает осуществляться.

 

Создание пользовательских интерфейсов

Система позволяет создавать собственные виртуальные интерфейсы управления устройством с персонального компьютера. Пользователю предоставляется возможност посредством стандартных визуальных элементов управления (кнопки, слайдеры, строки редактирования, чек-боксы, радиокнопки) заводить значения в микроконтроллер (фактически это элемент In), а за счет использования визуальных элементов индикации (Метки, полосы прогресса, цифровые и стрелочные индикаторы) выводить информацию на экран (разновидность реализации элемента Out). Отдельно стоит отметить элемент индикации Animate – он позволяет выводить на экран компьютера тот графический файл, который соответствует входящему в него значению данных: это позволяет пользователю анимировать происходящие на экране процессы, делая их более наглядными.

Рис.7. Создание пользовательского интерфейса для схемы тестирования системы управления двигателем и анимационной визуализации управления лифтом

 

Работа с многоядерными процессорами

Система допускает работу, в том числе и с многоядерными микроконтроллерами, например с новейшими процессорами Concerto производства Texas Instruments. Для этого необходимо для каждого ядра установить собственную библиотеку, параллельно запустить экземпляр среды проектирования для каждого ядра, связь между ядрами осуществляется посредством специальных блоков.

 

Использование шаблонов и примеров. Документация. Видеоуроки

Для облегчения использования системы в неё были добавлены большое количество документации и вспомогательных обучающих материалов. Система вызова справки разделена на 3 части – 1) непосредственно по среде проектирования, 2) справка по библиотеке блоков, 3) справка по схеме (это есть pdf-файл, который прикладывается к созданному в среде проекту с таким же именем, как назван сам проект). Дополнительно  прикладываются видеоуроки, на которых показывается способы использования ключевых особенностей системы, а также целый ряд готовых примеров проектов, демонстрирующих её возможности, на русском и английском языках.
Скачать версию системы можно с сайта производителя www.mechatronica-pro.com. Систему допускается бесплатно применять для некоммерческих целей.