Методика генерации из моделей  MATLAB текста программ  на языке  С 

для  процессоров встроенных систем

В.М. Понятский,

нач. сект., к.т.н, доц.,
Д.В. Кушников,

нач. сект.,
В.Г. Федорищева,

вед. инж.,

ГУП «КБП», kbkedr@tula.net, г. Тула

Пакет MATLAB помимо широких возможностей  динамического моделирования сложных изделий, состоящих из подсистем различной физической природы, имеет возможности по автоматической генерации С-кода. Генерация С-кода основана на применении пакетов-расширений MATLAB: Real-Time Workshop и Real-Time Workshop Embedded Coder [1]. Сгенерированный исходный код может применяться для создания приложений, работающих в реальном времени вне среды MATLAB, в том числе и для микропроцессоров встроенных систем.

В развитие технологий, изложенных в [2, 3], предлагается методика  генерации  С-кода  из  модели  Simulink,  включающая следующие этапы:

этап 1 – создание  Simulink-модели в  соответствии  с  заданным  алгоритмом и ее отладка;

этап 2 – доработка Simulink-модели с учетом дискретных преобразований сигналов;

этап 3 – преобразование Simulink-модели  в модель для расчетов c фиксированной точкой;

этап 4 – генерация С-кода из модели Simulink;

этап 5 – тестирование сгенерированного С-кода;

этап 6 – интеграция сгенерированного С-кода  в  среду  разработки  процессора.

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

На этапе 1  в соответствии со структурной схемой и математическим описанием в среде динамического моделирования Simulink пакета MATLAB создается и отлаживается непрерывная модель рулевого привода (рис.1).

рис. 1  Модель рулевого привода  в  Simulink

Проводится проверка правильности функционирования разработанной модели на соответствие заданному алгоритму  с помощью построения ЛАФЧХ звеньев модели, а также по результатам отработки тестовых сигналов (рис.2).

а)

б)

рис. 2  Отработка тестовых сигналов  Simulink-модели рулевого привода:

a – в линейной зоне;  б – на упорах

На рисунках обозначены: входной сигнал

               выход Simulink-модели

 

Блок  управления рулевого привода, из которого  будет  генерироваться  C-код,  с помощью команды  Create subsystem  преобразуется  в  подсистему  BU  (рис.3).

рис. 3  Simulink-модель рулевого привода с блоком управления в виде подсистемы

Внутренняя структура блока  управления рулевым приводом приведена на риcунке.4.

рис.4   Внутренняя структура блока управления рулевым приводом

На этапе 2 осуществляется приведение Simulink-модели к физической модели реальной аппаратуры, для которой будет генерироваться С-код. Доработка Simulink-модели заключается в добавлении блоков, реализующих преобразование сигналов с помощью АЦП, ЦАП  и  различные инверсии сигналов, присутствующие в реальной системе управления (рис.5, 6).

На этапе 3 осуществляется преобразование непрерывной модели Simulink в модель для расчетов с фиксированной точкой. Основными критериями при назначении типов данных блоков Simulink-модели являются:

·         требуемая точность;

·         диапазон изменения сигналов;

·         разрядность процессора.

На этапе 3  выполняются следующие шаги:

·      преобразование непрерывных блоков подсистемы (интеграторов, блоков передаточных функций) в дискретные;

·      подключение входов и выходов подсистемы к непрерывной части модели через блоки преобразования типов данных Data Type Conversion;

·      назначение типов  данных  блоков  с  фиксированной точкой  с  определением места положения точки  по известным диапазонам изменения сигналов;

·      уточнение положения точки (дробной части числа) с помощью графического интерфейса Fixed-Point Tool.

 

 

рис.5   Simulink-модель рулевого привода с учетом преобразования сигналов

рис.6   Simulink-модель  блока  управления рулевым приводом с учетом преобразования сигналов

Окно графического интерфейса Fixed-Point Tool показано на рисунке 7.

Для уточнения положения точки с помощью Fixed-Point Tool  выполняются следующие действия:

·      определяются реальные диапазоны изменения сигналов в блоках моделированием с  типом  данных double;

·      пересчитываются в зависимости от диапазонов типы данных блоков подсистемы;

·      присваиваются новые рассчитанные типы данных;

·      проводится сравнение результатов моделирования  с double  и  с  fixed point.

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

 

рис.7   Окно графического интерфейса Fixed-Point Tool

На рисунке 8 приведена окончательная модель блока управления рулевым приводом, преобразованная для расчетов с фиксированной точкой  и готовая к генерации С-кода.

 

рис.8   Simulink-модель  блока  управления рулевым приводом для расчетов с фиксированной точкой

На этапе 4 проводится генерация С-кода из подсистемы блока управления рулевым приводом, преобразованной для расчетов с фиксированной точкой.

Процесс генерации С-кода включает следующие процедуры:        

·         настройка параметров решателя;

·         выбор целевого файла;

·         выбор аппаратной реализации;

·         выбор опций оптимизации кода;

·         генерация С-кода.

Можно воспользоваться уже готовыми настройками параметров генерации кода для получения оптимизированного С-кода, выбрав из библиотеки Real-Time Embedded Coder->Configurations Wizard соответствующий блок и перенеся его внутрь подсистемы, из которой генерируется код. Настройки активируются с помощью двойного клика.

Вместе с файлами кода можно сгенерировать файл отчета о сгенерированном коде (рис.9). Отчет содержит информацию о дате генерации кода, версии MATLAB, версии Simulink-модели, информацию о настройках генерации кода, тексты файлов кода. Также отчет позволяет осуществлять навигацию из текста кода в Simulink-модель и обратно.

 

рис.9   Резюме отчета о сгенерированном коде

На этапе 5 осуществляется проверка сгенерированного кода путем сравнения результатов его выполнения с моделью Simulink -  SIL-тестирование. Для этого из сгенерированного кода создается S-функция. Эта S-функция представляет собой обертку, в которую помещается сгенерированный С-код. Получить S-функцию из сгенерированного кода можно с помощью инструментов  Real-Time Workshop,  Legacy Code Tool  или  блока Simulink

S-Function Builder. S-функция подключается параллельно модели Simulink и проводится моделирование для сравнения результатов выполнения С-кода и модели (рис.10).

а)

б)

в)

рис.10   Тестирование сгенерированного кода с помощью S-функции (SIL-тестирование):

aSimulink-модель рулевого привода с S-функцией;  б – результаты тестирования в линейной зоне;

в – результаты тестирования при выходе на упоры

На рисунках обозначены:

входной сигнал        

                 выход Simulink-модели с непрерывным блоком управления

                         выход Simulink-модели с блоком управления в виде S-функции, содержащей  сгенерированный код

 

На этапе 6 осуществляется интеграция MATLAB со средой разработки процессора, для которого генерируется С-код. В пакете MATLAB есть специальные инструменты для интеграции Simulink с программной средой специализированных микропроцессоров: Embedded IDE Link и Target Support Package. Они позволяют создавать из  генерируемого кода  исполняемую программу  и загружать ее  в  процессор.

На рисунке 11 показана Simulink-модель блока управления рулевым приводом с блоком Custom Board для интеграции со средой  Texas Instruments Code Composer Studio

           

рис.11    Simulink-модель блока управления рулевым приводом с блоком Custom Board

На этом этапе проводится PIL-тестирование – сравнение результатов выполнения программы в процессоре с моделью Simulink. В режиме PIL-симуляции  программное обеспечение Real-Time Workshop Embedded Coder  генерирует эффективный код из модели алгоритма управления.  Этот код выполняется на  микроконтроллере в пошаговом режиме и результаты его выполнения сравниваются с результатами моделирования Simulink-модели. Для генерации кода на компьютере вместе с пакетом MATLAB должна быть установлена среда разработки специализированного процессора (например, для процессоров Texas Instruments – среда Code Composer Studio),  микропроцессор или его эмулятор.

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

Литература

1.   Дьяконов В., Круглов В. Математические пакеты расширения MATLAB. Специальный справочник. – СПб.: Питер, 2001.

2.   Понятский В.М., Гусев А.В., Фимушкин В.С. и др. Компьютерные технологии проектирования приводов летательного аппарата с использованием САПР SolidWorks и MATLAB. Всероссийская научно-техническая конференция «Фундаментальные основы баллистического проектирования». Санкт-Петербург, 28 июня - 2 июля 2010 г. Сборник материалов. Т.2 / Под ред. д.т.н. проф. Кэрта Б.Э.– СПб.: Балт. гос. техн.ун-т , 2010. - С. 165 – 170.

3.   Понятский В.М. Кушников Д.В., Федорищева В.Г. Автоматизированная технология генерации программы в среде MATLAB для реализации алгоритмов управления рулевого привода  Изв. ТулГУ. Сер. «Проблемы проектирования и производства систем и комплексов». - Тула: ТулГУ, 2010, Вып.11. С. 462-467.