Использование эмуляторов Sauris для интеграции системы MexBIOS в микроконтроллеры Texas Instruments

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

В настоящее время флагманы электротехнической промышленности все чаще оснащают свои специализированные электронные устройства управления встроенными системами программирования, посредством которых пользователь может  устанавливать собственные алгоритмы работы устройства промышленного применения – преобразователи частоты, сервоконтроллеры, модули управления движением, блоки диагностики и сигнализации. Целесообразность интеграции функции программирования внутрь устройства очевидна и положительно оценена пользователями – не требуется дополнительного внешнего контроллера и специалистов по его программированию, отсутствуют проблемы габаритов и кабельных соединений, пользователь в соответствие с конкретными требованиями, может изменить логику его работы.  Всё это в свою очередь снижает стоимость запуска конечного оборудования, обслуживающего технологический процесс. С помощью встроенной системы программирования, выполняемых как правило на языках программирования BASIC и Си, пользователь без привлечения разработчика устройства может изменить алгоритм функционирования устройства с целью адаптации к требованиям собственного технологического процесса. Осуществляется это посредством написанного пользователем программного кода, для которого в качестве входных данных является состояние дискретных и аналоговых входов, а также логических состояний и значений внутренних переменных, а выходными величинами – задания на отработку технологической величины и значения коэффициентов и параметров настроек. При этом базовое (системное) программное обеспечение устройства остается неизменным, меняется только логический «интерфейс» взаимодействия с внешней средой. В связи с тем, что встраивание систем программирования внутрь устройства практически не ведет к изменению аппаратной части, и более того, может быть встроено в уже выпускающиеся устройства, создание универсальной системы исполнения программ пользователя на микроконтроллере видится перспективным для увеличения конкурентных преимуществ проектируемой и выпускаемой продукции. Компания «Мехатроника-Про», участник Texas Instruments Developer Network, разработала систему MexBIOS, которая является интерпретатором программ пользователя и может быть интегрирована в проекты встроенного программного обеспечения различных микроконтроллерных устройств.  Установка системы в микроконтроллеры может быть осуществлена в том числе посредством эмуляторов серии Sauris. 
Описание системы программирования   Система МехBIOS предназначена для интеграции в 16- и 32-разрядные микроконтроллеры, позволяет создавать программное обеспечение микроконтроллеров графическим и текстовым методом, в том числе формировать события, формулы, алгоритмы,  объявлять переменные и обращаться к ячейкам памяти.  Система ориентирована на решение прикладных задач, в то время как обслуживание коммуникаций и периферийных устройств решается разработчиком на уровне системного программного обеспечения микроконтроллера.  Система состоит из 2 частей:
1. Аппаратно-зависимой (ядра интерпретатора и библиотека функций).
2. Среда программирования MexBIOS Development Studio.
Ядро интерпретатора и библиотека, содержащая скомпилированные функции, загружается в память микроконтроллера и является аппаратно зависимой, адаптация для конкретного типа микроконтроллера выполняется с помощью его стандартного компилятора. Вызов ядра интерпретатора осуществляется из системного программного обеспечения микроконтроллера, вызов функций библиотеки осуществляет интерпретатор исходя из программы пользователя.  В качестве функций библиотеки выступают операции арифметики и логики, вычисления цифровых регуляторов и фильтров, координатные и тригонометрические преобразования и т.д. (всего более 100 стандартных функций). Следует отметить, что при этом обеспечивается высокая скорость исполнения интерпретатором программного кода за счет запуска уже предварительной скомпилированных функций.
Среда программирования MexBIOS Development Studio предназначена для создания графических программ пользователя с возможностью последующей загрузки в микроконтроллер. MexBIOS Development Studio запускается на персональном компьютере, позволяет предварительно моделировать работу разрабатываемого алгоритма совместно с моделями объектов управления и проводить визуализацию управляемых процессов. При моделировании на персональном компьютере будет исполняться та же программа, которая затем будет загружена в микроконтроллер, при этом учитываются типы данных используемых переменных и ограничения на точность представления значений. В качестве моделей объектов, которыми должен управлять разрабатываемый код, могут выступать как имеющиеся в системе модели различных типов электродвигателей и механизмов, так и самостоятельно разработанные пользователем модели. Внешний вид среды программирования показан на рис.1, где продемонстрированы фрагменты проекта по созданию встроенного программного обеспечения для станции управления лифтами.
Среда программирования кодирует разработанные алгоритмы и блок схемы в специальный файл, содержащий условия запуска требуемых функций библиотеки и направления передачи данных между функциями. Данный файл с программой загружается в микроконтроллер и выполняется интерпретатором. 
Загрузка во флеш-память ядра интерпретатора и библиотек может осуществляться  как через стандартные среды программирования микроконтроллеров, так и непосредственно из среды программирования MexBIOS Development Studio. Также возможна загрузка из среды MexBIOS Development Studio собственных проектов пользователя, разработанная в других средах программирования, например в среде CodeComposerStudio. MexBIOS Development Studio позволяет подключать внешние утилиты программирования, в том числе exe-файлы и скрипты, исполняемые во встроенном в среду программном интерпретаторе TCL. В рассматриваемой ситуации использование скриптов TCL необходимо для запуска процедуры перепрограммирования флеш-памяти микроконтроллеров серии С2000 производства Texas Instruments посредством эмуляторов серии SAU (рис.2). 
Рис. 1. Внешний вид конфигуратора MexBIOS. Продемонстрирован экран работы по созданию системы управления лифтовой станцией: 1 – панель визуализации, 2 – поле алгоритмов, 3 – корневое поле для объявления переменных, событий и используемых протоколов коммуникаций, 4 – поле блок диаграмм, 5 – поле машины состояний, 6 – окно структуры проекта, 7 – панель меню. 



Рис.2. Демонстрация возможности выбора утилит программирования флеш-памяти в среде MexBIOS Development Studio


Подключение системы к проекту с использованием эмуляторов серии SAURIS Для запуска системы на имеющемся микроконтроллере необходимо провести минимальное количество действий, позволяющее вызвать ядро системы и осуществлять коммуникации с компьютером, на котором установлена система MexBIOS. Для этого необходимо:
1. Подключить библиотеку к имеющемуся проекту программного обеспечения устройства (далее - системному программному обеспечению). Размер библиотеки зависит от количества блоков, которое может быть откорректировано разработчиком, предоставляются возможности по добавлению в библиотеку собственных блоков.
2. Сконфигурировать интерфейс коммуникаций устройства для обеспечения связи с компьютером для обеспечения процесса загрузки программы пользователя и последующей отладки программы.
3. Настроить драйвер работы с EEPROM микросхемой для сохранения программы пользователя в устройстве.
4. Установить вызов интерпретатора по требуемому событию (например, прерыванию таймера).
Более детально действия описаны в документации к системе, а также приведены примеры подключения системы для различных типов микроконтроллеров.
Рассмотрим перепрограммирование флеш-памяти микроконтроллера TMS320F2812, осуществляемое непосредственно из среды MexBIOS Development Studio c помощью эмуляторов серии SAU. Утилита SAUflash, которая поддерживает данный тип эмуляторов, изначально встроена в  MexBIOS Development Studio. При установке системы будет инсталлирована  библиотека расширения языка программирования TCL TCLXDS и базирующийся на ней система программирования флэш-памяти SAUFlash, которые  являются решением фирмы Sauris. 
Для вызова окна настроек работы с эмулятором серии SAU необходимо открыть выпадающее меню кнопки Program вкладки Edit, и выбрать выпадающий элемент меню SAUFlash TCLXDS.  При этом откроется окно согласно рис. 3.
 Рис. 3. Окно конфигурации перепрограммирования флеш-памяти микроконтроллера для эмуляторов серии SAURIS


В данном окне в качестве исполняемого файла при прошивке (поле Executable file) используется командный исполняемый файл, находящихся в папке среды MexBIOS Development Studio. Данный командный файл осуществляет запуск интерпретатора языка TCL со скриптом SAUFlash.tcl, который содержит инструкцию для программирования флеш-памяти. В поле Command Line Parameters содержится список парамертров, передаваемый в скрипт. Например, приведенная на рисунке 3 строка конфигурации «sau510iso:mZdsp2812:f2812:internal:flash» означает следующее:
-  sau510iso: используется тип эмулятора SAU510ISO
- mZdsp2812: используется плата mZdsp2812, на которую установлен процессор. Предназначена для конфигурации при работе с данной платой – частота кварца и т.д.
- f2812: устанавливает тип используемого микроконтроллера. В данном случае это TMS320LF2812.
- internal: используется «условный» интерфейс для работы с памятью микроконтроллера.
- flash: устанавливает тип памяти.
Более подробную документацию по данным параметрам можно найти в документации производителя эмуляторов серии SAU и на сайте производителя эмуляторов.
Поле Main library output file задает путь к файлу основной скомпилированной пользователем библиотеки MexBIOS.
Поле User library output file задает путь к файлу дополнительной пользовательской  библиотеки MexBIOS (если пользователь используется одновременно с основной).
Поле Start project output file содержит путь к скомпилированному файлу стартового проекта пользователя, из которого осуществляется вызов интерпретатора MexBIOS и его библиотек (по умолчанию установлен пусть к файлу стартового проекта, поставляемого в составе библиотеки среды MexBIOS Development Studio).
Для прошивки необходимо подтвердить приведенные выше настройки, нажав на кнопку OK (окно конфигурации при этом закроется), далее нажать на кнопку Program среды MexBIOS Development Studio. При этом вызовется окно, показывающее прогресс  прошивки файлов, указанных в окне конфигурации, во флеш-память микроконтроллера и сопутствующие сообщения (см.рис.4). 

Рис.4. Окно сообщений при занесении файлов системы в флеш-память микроконтроллера посредством эмуляторов серии SAURIS


При запуске процедуры прошивки для эмуляторов серии SAURIS происходят следующие процессы:
1.    Используются Hex-файлы, которые были генерируются при компиляции библиотек средой MexBIOS Development Studio c помощью команды Build.
2.    Данные файлы используются для получения bin-файлов, которые содержат данные для программирования памяти микроконтроллеров. Формат файлов – бинарный, т.е. каждый байт файла физически программируется в каждый байт микросхемы памяти, вне зависимости от того, куда и каким образом подключена эта память, и какой она разрядности. Также при этом запоминаются начальные физические адреса в памяти, которые используются для определения смещения адреса, необходимого для работы скрпита sauflash.
3.    С помощью  механизма TCLXDS происходит подключение к микроконтроллер через эмулятор серии SAU, инициализация периферии, загрузка проекта bootloader, передача данных из бинарных файлов в оперативную  память микроконтроллера и последующее занесение в флеш-память.
После загрузки исполняемого файла и библиотек в микроконтроллер пользователь связывается с ним посредством персонального компьютера, на котором создаются программы пользователя в графическом виде и после предварительного моделирования загружаются на исполнение в микропроцессор. 

Использование системы   Применение визуального программирования позволяет разрабатывать интеллектуальную начинку встроенной системы управления инженерам, не являющимися специалистами в области программирования. Проектирование на уровне блок-схем, алгоритмов, «машин состояний» является признанной тенденцией, упрощающей процесс разработки и документирования проекта.
Проектирование программного обеспечения в системе осуществляется с объявления переменных, используемых разрабатываемыми алгоритмами. Объявление переменных осуществляется путем выноса на рабочее поле системного блока VAR (см.рис.5). Переменные допускается выносить только на корневое поле проекта. В автоматически открывающемся окне инспектора необходимо задать имя переменной и тип (возможно выбрать из списка как «плавающая запятая» либо «фиксированная запятая» заданного формата).
В дальнейшем к переменной можно обращаться посредством блоков In и Out (соответственно считать значение и записать значение), предварительно указав в инспекторе свойств данного блока привязку к требуемой переменной.
Для прямого обращения в память существует специальные блоки RD_MEM (для считывания значения ячейки памяти) и WR_MEM (для записи). При использовании данных блоков необходимо в окне инспектора свойств блока указать адрес в памяти данных, с которым будет работать данный блок.
Для удобства при обмене информации между основным (системным) программным обеспечением и интерпретатором можно подключить map-файл, образованный при компиляции проекта встроенного программного обеспечения. Данный файл уже содержит информацию об адресах всех глобальных переменных, и список переменных будет отражен в инспекторе свойств в поле Address блоков RD_MEM и WR_MEM, через которые значения требуемых переменных становятся доступными для программы пользователя, что позволяет ему обращаться к переменным системного программного обеспечения.  
Рис.5. Показано корневое поле для проекта системы управления лифтовой станцией. На экране находится алгоритм, вызывающий последовательно основные модули системы, объявлено использование протоколов коммуникаций (Modbus_RTU для связи с системой управления электродвигателем главного движения, TCP/CLIENT1 и TCP/SERVER1 для связи по сети Ethernet с компьютером диспетчера), в центре рабочего поле объявлены переменные.
 
Проектирование системы в среде осуществляется за счет прорисовки алгоритмов, в которых необходимо указать условия запуска формул (осуществляющие изменения значения переменных) либо следующих вложенных алгоритмов.
Формулы создаются путем прорисовывания блок-схем за счет использования готовых блоков, являющихся графическим отображением функции запрограммированной в микроконтроллер библиотеки. Пользователь должен установить требуемый набор блоков и соединить между собой их входы и выходы, обеспечивающие требуемые потоки данных, пример блок-схемы цифрового ПИД регулятора  показан на рис.6. 

Рис.6. Блок-схема цифрового ПИД регулятора. Блоки мультиплексора A_MUX определяет источник получения сигнала обратной связи и задания на основе состояния внешних переменных 
Каждый блок изначально создан с помощью текстового программирования, текст  может быть просмотрен пользователем и при необходимости модифицирован (для этого потребуется перепрограммировать микроконтроллер в связи с изменением библиотеки, либо воспользоваться блоком текстового интерпретатора), на рис.7. показано окно текстового редактора утилиты конструктора блоков среды MexBIOS Development Studio, демонстрирующее создание блока нелинейной зависимости.
 
Рис. 7. Конструктор блоков системы, позволяющий задавать количество и тип входов/выходов и прописывать программный код в текстовом виде. 
Алгоритмы могут быть вложены друг в друга согласно иерархии исполнения. Кроме условий запуска, можно организовать и циклическое исполнение выбранных участков (блок «While»). Фактически алгоритмы определяют условия запуска и порядок выполнения формул, в свою очередь выполняющих непосредственные действия над данными.
 
Рис.8. Пример алгоритма в среде MexBIOS Development Studio. Элементы условного ветвления «if» (ромбы) на основании своих условий запускают либо другую ветку алгоритма, либо требуемую формулу (прямоугольник) 
«Машина состояний» является набирающем все большую популярность создания программ (метод автоматного программирования): пользователь должен определить основные логические состояния, в которых может находиться управляемая система (например «Стоп», «Движение вверх», «Движение вниз» и т.д.), определить действия, характерные для каждого состояния (включить контактор, установить скорость и т.д.) и указать направления и условия перехода между состояниями. Данный метод позволяет легко наращивать функциональность алгоритма, прост и нагляден. Система предлагает возможности создания любого количества состояний (ограничение только по максимально-свободной памяти микроконтроллера), с установлением индивидуальных условий перехода и детализацией действий для каждого состояния.
Для создания машины состояний необходимо вынести на рабочее поле нужное количество блоков состояний, соединить состояния между собой стрелками, указывающими направления перехода, разместить на стрелках условия перехода, и в каждом состоянии установить соответствующие блок-схемы. На рис.9 показана машина состояний для управления перемещения лифтом.
 
Рис.9. Пример машины состояний, описывающей логику управления лифтом 
 
Следует отметить, что MexBIOS Development Studio предоставляет множество дополнительных возможностей, позволяющих говорить о ней как о полномасштабной системе автоматизированного проектирования программного обеспечения, большинство из них продемонстрированы в видеоуроках, прилагающихся к системе. Перечислим лишь некоторые из них:
Генерация кода – позволяет на основе графически сформированной программы создать ее текстовое представление на языке Си, с последующем применением в системном программном обеспечении микроконтроллера.
Вывод графиков – позволяет визуализировать изменение значения наблюдаемой переменной за заданный промежуток времени.
Блоки драйверов – позволяют напрямую конфигурировать периферийные блоки микроконтроллеров (АЦП, ШИМ, дискретные пины процессора и т.д.)
Работа с событиями – позволяет запускать алгоритмы исходя из аппаратных событий (например, прерывание таймера), так и программных (например, превышение значения переменной выше заданного уровня).
Создание интерфейсов управления – позволяет создавать графические (в том числе анимированные) интерфейсы управления для персональных компьютеров.
Поддержка протоколов коммуникаций – позволяет непосредственно из среды MexBIOS Development Studio связываться по стандартным протоколам коммуникаций типа Ethernet, Modbus и т.д. с устройствами, поддерживающими данные протоколы. 
Подключение внешних приложений – позволяет среде обмениваться данными с другими приложениями.
Готовые шаблоны распространенных систем управления – позволяют быстро запустить управление электродвигателем требуемого типа.
 
 Заключение 
Как можно видеть, рассмотренная система эффективно позволяет программировать одновременно как в текстовом виде (задачи системного программного обеспечения и создания блоков), так и в различных парадигмах графического программирования. Встраивание системы в существующие проекты программного обеспечения позволяет значительно повысить функциональные свойства устройств, предоставить пользователю  возможность настраивать не только параметры устройства управления, но и логику его работы. Эмуляторы серии SAU, поддержка которых интегрирована в систему, позволяют находясь в пределах одного программного продукта MexBIOS Development Studio, выполнять полный цикл разработки встроенного программного обеспечения, с возможностью внесения во флеш-память стандартных библиотек системы, а также пользовательские библиотеки. Наглядное графическое представление алгоритмов значительно упрощает их понимание и делает возможным проводить дальнейшие работы по оптимизации работы устройства, при изменении объекта управления или требований технологического процесса. Система прежде всего рассчитана для устройств, пользователи которых обладают минимально-достаточной квалификацией для  создания собственных алгоритмов управления, которые разработчики устройства не могут заложить изначально вследствие отсутствия знаний об особенностях его применения для конкретных целей. Систему можно скачать с сайта производителя www.mechatronica-pro.com. Описание эмуляторов серии SAU можно найти на сайте производителя sauris.de