Delfino TM и студия MexBIOS ускоряют разработку промышленных систем

Источник http://www.terraelectronica.ru/

1. Традиционное программирование микроконтроллерных систем

В настоящее время для программирования микроконтроллерных систем управления используются в основном языки высокого уровня, часто Си. Традиционные системы программирования, такие как IAR Workbench, Keil, Code Soucery и другие имеют развитые средства поддержки работы программиста: редакторы текста с поддержкой синтаксиса, оптимизирующие компиляторы, развитые библиотеки, отладчики с возможностями моделирования и трассировки.

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

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

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

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

2. Концепция и особенности системы MexBIOS

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

3. Подключение MexBIOS к модулю  TE-TMS320F28335

Для работы MexBIOS c конкретным контроллером необходимо провести минимальное количество действий, позволяющее вызвать ядро системы и осуществить коммуникации с компьютером, на котором установлена система MexBIOS. Необходимо:
1. Подключить библиотеку к имеющемуся проекту программного обеспечения устройства (далее - системному программному обеспечению). Размер библиотеки зависит от количества блоков, которое может быть откорректировано разработчиком, предоставляются возможности по добавлению в библиотеку собственных блоков. 
2. Сконфигурировать интерфейс коммуникаций устройства для обеспечения связи с компьютером для обеспечения процесса загрузки программы пользователя и последующей отладки программы. 
3. Настроить драйвер работы с EEPROM микросхемой для сохранения программы пользователя в устройстве. 
4. Установить вызов интерпретатора по требуемому событию (например, прерыванию таймера). 
После загрузки исполняемого файла в микроконтроллер пользователь связывается с ним посредством персонального компьютера, на котором создаются программы пользователя в графическом виде и после предварительного моделирования загружаются на исполнение в микропроцессор. 
Одним из наиболее привлекательных процессоров реального времени является TMS320F2833x. Компания Терраэлектроника предоставляет готовое решение с этим процессора - встраиваемый модуль TE-TMS320F28335 (рис.2), который содержит всё необходимое для создания микроконтроллерного ядра системы управления электродвигателем.  MexBIOS. Стенд управления электродвигателем при помощи модуля TE-TMS320F28335 и программировании  MexBIOS приведен на рис.3
Рис. 2. Встраиваемый модуль TE-TMS320F28335
Рис. 3. Стенд управления электродвигателем  при помощи модуля TE-TMS320F28335 при программировании системой MexBIOS
 
 
Для работы с MexBIOS™ Development Studio можно воспользоваться предоставляемым вместе со средой стартовым проектом. Загрузка стартового проекта и библиотеки производится через JTAG. Стартовый проект содержит настройки периферии и нужных для работы модулей. Ядро MexBIOS™ поддерживает обмен данными между стартовым проектом и проектом, созданным в системе MexBIOS™. Благодаря этому, целесообразно использовать проект пользователя с готовым ПО, а в системе MexBIOS™ реализовать какую-то часть программы, например, логику управления.
Чтобы подключить ядро MexBIOS в проект пользователя, необходимо выполнить следующие действия:
1) Подключить в модуле заголовочный файл, генерируемый системой MexBIOS™ Development Studio при компиляции библиотеки.
2) В структуру конфигурации коммуникации добавить адрес, передающий данные для ядра MexBIOS.
3) Вызвать в секции инициализации функцию «MBS_Create» и передать параметры в ядро MexBIOS. После этого подать команду на запуск (*MbsEnable=1).
4) В фоновой задаче вызвать функции задании конфигурации и исполнения фоновых задач
5) В обработчике основного прерывания, например TINT0 - «CpuTimer0IsrHandler» вызвать обработчик периодических задач ядра
6) По команде выполнить операцию записи конфигурации в энергонезависимую память
7) Выполнить расчет загрузки системы и передать значение в ядро для отображения в среде разработки
8) Выделить адресное пространство памяти программ и данных в командном файле для ядра MexBIOS, согласно настройкам Program memory в MexBIOS™ Development Studio.
 
После загрузки стартового проекта в память платы, можно подключиться с помощью системы MexBIOS™ через USB интерфейс. Покажем простой пример реализации программы мигания светодиода. Мигание светодиодом можно осуществить двумя способами. Первый – использовать генератор прямоугольных сигналов, второй – создать событие срабатывания сигнала. Реализация первого способа. Вынести на поле набора блок EVENT. Настроить его как Hardware Interrupt. Выбрать прерывание TINT0 (объявленное в стартовом проекте), частота прерывания будет 10 кГц. Подключить к блоку EVENT блок FORMULA. Внутри блока FORMULA собрать следующую схему:
Рис. 4. Схема мигания светодиода с помощью встроенного генератора
 
Второй способ – создать событие включение светодиода. Для этого нужно добавить условие (Рис.4), по которому будет зажигаться/гаснуть светодиод. Такая схема представлена на следующем рисунке. 
Рис. 5. Схема мигания светодиода с помощью события
 
Реализация условия (Рис.5) начинается с добавления переменной VAR на поле набора. Переменная VAR подключается к счётчику (счётчик состоит из двух блоков IN, блока сумматора ADD и блока OUT), к которому также подключено условие зажигание светодиода (блок больше или равно GE и блок задания порога срабатывания CONST). Управление светодиодами происходит с помощью драйверов GPIO. Чтобы светодиоды мигали по очереди необходимо добавить блок инверсии сигнала LNOT.
Рис. 6. Схема счётчика
 
Для сброса счётчика необходимо добавить условие IF, при выполнении которого будет происходить сброс счётчика. В блок IF задать условие выполнения ветки true (VAR>=2000).
Рис. 7. Схема сброса счётчика.
 
После загрузки файла конфигурации, на плате начнут мигать два светодиода GPIO3, GPIO4.
Благодаря применению метода графических библиотек становится возможным создавать программы для DSP без знания специфики программирования цифровых процессоров. Специалист, знающий структуру и настройки системы управления, может самостоятельно собрать графическую программу.
 

4. Программирование модулю  TE-TMS320F28335 в системе MexBIOS на стенде управления электродвигателем

 

Для создания простейшей скалярной системы управления на рис.8 необходимо проделать следующие действия:
1. Создать проект для TMS320F2833x.
2. Добавить блок EVENT (Палитра, группа блоков Embedded). Настроить блок следующим образом:
2.1. Источник прерываний Source выбрать как Hardware interrupt (HW_INT).
2.2. Вектор прерываний выбрать TINT0 (либо выбрать вектор прерываний настроенный в стартовом проекте).
2.3. Период задать равным периоду выбранного прерывания. Параметр Period необходим для моделирования, задаёт период выполнение схемы при моделировании.
2.4. Параметр SimMode установить как Continuous. Настройка нужна для моделирования периодического прерывания. Если установлен пункт Enable, то присоединённые к EVENT блоки не будут выполняться. При установке One Short – присоединённые блоки выполняться один раз.
3. Добавить на поле набора формула FORMULA из Palette → Embedded.
4. Подключить FORMULA к блоку EVENT. Переименовать блок FORMULA. Полученную структуру программы см. на рис.7
Рис.8.  Структура программы
 
1. Перейти внутрь формулы PWM. Палитра изменит состав.
2. Добавить на поле набора блоки для скалярной системы управления:
2.1. Блоки задания IN (Palette→Embedded).
2.2. Из группы Palette→TMS320F2833x→Motor Control добавить блоки: кривая U/f V_HZ, генератор пилообразного сигнала RAMPGEN, обратный преобразователь Парка IPARK, блок формирования вектора ШИМ SVGEN_DQ.
2.3. Из группы Palette→TMS320F2833x→Drivers добавить драйвер ШИМ PWM6, драйвер дискретной ножки процессора GPIO. При необходимости блоки можно копировать стандартными сочетаниями клавиш.
3. Собрать схему, аналогичную представленной на рис. 8. Чтобы вызвать Inspector параметров блоков, нужно выделить блок и нажать F11.
4. Параметры Ref_V_HZ: SampleTime=0.0001, BaseFreq=50, Gain=1, Offset=0. V_HZ: LowFreq=0, HighFreq=1, MaxFreq=1, VoltMin=0, VoltMax=0.707.
5. Амплитуда вектора напряжения не может быть больше 1, поэтому ограничение двух составляющих обратного преобразователя Парка должно быть 0.707.
6. Блок SVGEN_DQ не требует настройки.
7. Блок выбор группы ШИМ PWM6 Id = 1:EPWM5-6/GPIO6-11, системная частота SysClk = 150, несущая частота (Гц) Frequency = 10000, полярность сигнала при которой формируется мёртвое время Polarity = 0, значение мёртвого времени DeadTime = 3, SocPulse = 0.
8. Задание частоты производится в относительных единицах, для этого используем блок IN: Format 31:Float, Variable 0: None, Value = 10.
9. Для сигнализации работы программы на плате собрана схема с генератором прямоугольных импульсов G_SIMM_PULSE_EN (Palette→TMS320F2833x→Sources). И двумя драйверами дискретных ножек, для управления пользовательскими светодиодами GPIO3, GPIO4. На вход генератора подключить IN: IN: Format 0:Integer, Variable 0: None, Value = 1
10. Для управления разрешением ШИМ используется схема с виртуальной кнопкой (Palette→Controls) и драйвером ножки процессора GPIO5. После загрузки проекта в контроллер светодиоды на плате начнут мигать с заданным в G_SIMM_PULSE_EN периодом.
Рис. 9
Указанные в таблице 1 выводы необходимо подключить к выводам платы, которые управляют IGBT модулем. В рассматриваемом примере промышленный модуль подключался к плате MCB-02, схема подключения приведена на рис.9.
Рис. 10. Соединение TE-TMS320F28335 с MCB-02
 

Использование системы

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

Рис. 13. Конструктор блоков системы, позволяющий задавать количество и тип входов/выходов и прописывать программный код в текстовом виде.

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

Рис. 14. Пример алгоритма в среде MexBIOS Development Studio. Элементы условного ветвления «if» (ромбы) на основании своих условий запускают либо другую ветку алгоритма, либо требуемую формулу (прямоугольник)

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

Для создания машины состояний необходимо вынести на рабочее поле нужное количество блоков состояний, соединить состояния между собой стрелками, указывающими направления перехода, разместить на стрелках условия перехода, и в каждом состоянии установить соответствующие блок-схемы. На рис.6 показана машина состояний для управления перемещения лифтом.

Рис. 15. Пример машины состояний, описывающей логику управления лифтом
 
Следует отметить, что MexBIOS Development Studio предоставляет множество дополнительных возможностей, позволяющих говорить о ней как о полномасштабной системе автоматизированного проектирования программного обеспечения, большинство из них продемонстрированы в видеоуроках, прилагающихся к системе. Перечислим лишь некоторые из них: 
Генерация кода – позволяет на основе графически сформированной программы создать ее текстовое представление на языке Си, с последующем применением в системном программном обеспечении микроконтроллера. 
Вывод графиков – позволяет визуализировать изменение значения наблюдаемой переменной за заданный промежуток времени.
Блоки драйверов – позволяют напрямую конфигурировать периферийные блоки микроконтроллеров (АЦП, ШИМ, дискретные пины процессора и т.д.)
Работа с событиями – позволяет запускать алгоритмы исходя из аппаратных событий (например, прерывание таймера), так и программных (например, превышение значения переменной выше заданного уровня). 
Создание интерфейсов управления – позволяет создавать графические (в том числе анимированные) интерфейсы управления для персональных компьютеров. 
Поддержка протоколов коммуникаций – позволяет непосредственно из среды MexBIOS Development Studio связываться по стандартным протоколам коммуникаций типа Ethernet, Modbus и т.д. с устройствами, поддерживающими данные протоколы.  
Подключение внешних приложений – позволяет среде обмениваться данными с другими приложениями. 
Готовые шаблоны распространенных систем управления – позволяют быстро запустить управление электродвигателем требуемого типа. 
 

Заключение

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

Для облегчения использования системы в неё добавлено большое количество документации и вспомогательных обучающих материалов. Система вызова справки разделена на 3 части 

 1) справки непосредственно по среде проектирования, 

2) справка по библиотеке блоков, 

3) справка по схеме (это  pdf-файл, который прикладывается к созданному в среде проекту с таким же именем, как назван сам проект). 

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

Систему допускается бесплатно применять для некоммерческих целей

Систему можно скачать с сайта производителя www.mechatronica-pro.com .