генерация кода в матлаб

Школа MATLAB. Урок 22. Автоматическая генерация исполняемого кода средствами MATLAB+Simulink

Введение

Модельно-ориентированное проектирование (МОП) — современный, эффективный и экономически выгодный метод разработки систем управления, мехатронных и робототехнических систем, обработки сигналов и изображений, построения систем связи, создания встраиваемых систем и пр.

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

В МОП систем управления разработка происходит в пять этапов:

Наиболее удобным инструментом для реализации МОП систем управления является среда MATLAB+Simulink. Имеющиеся в составе пакета Simulink приложения и библиотеки, как встроенные, так и подключаемые, дают разработчикам уникальные возможности по исследованию, проектированию и отладке систем управления реального времени.

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

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

В данной статье рассмотрим процесс создания исполняемого кода для контроллеров серии STM32F407/417 с помощью набора библиотечных модулей Waijung Blockset [11]. Указанная библиотека находится в открытом доступе в Интернете и интегрируется в MATLAB, для этого необходимо выполнить следующие действия:

По завершении установки библиотека и компилятор автоматически будут интегрированы в Simulink и MATLAB.

Также необходимо с сайта st.com загрузить, а затем установить утилиту STM32 ST-LINK Utility, посредством которой осуществляется связь между компьютером и контроллером.

Разработка алгоритма модельно-ориенти­рованного проектирования в среде MATLAB+Simulink

Интегрированный в библиотеку компилятор генерирует исполняемый код для контроллеров серии STM32F0, STM32F407/417 и nRF51. На рис. 1 представлен набор библиотечных модулей для работы с периферийными устройствами контроллера.

генерация кода в матлаб. 14 64 01. генерация кода в матлаб фото. генерация кода в матлаб-14 64 01. картинка генерация кода в матлаб. картинка 14 64 01. Модельно-ориентированное проектирование (МОП) — современный, эффективный и экономически выгодный метод разработки систем управления, мехатронных и робототехнических систем, обработки сигналов и изображений, построения систем связи, создания встраиваемых систем и пр.

Рис. 1. Набор библиотечных модулей Waijung Blockset

Для контроллера необходима библиотека STM32F4 Targеt, представленная на рис. 2.

генерация кода в матлаб. 14 64 02. генерация кода в матлаб фото. генерация кода в матлаб-14 64 02. картинка генерация кода в матлаб. картинка 14 64 02. Модельно-ориентированное проектирование (МОП) — современный, эффективный и экономически выгодный метод разработки систем управления, мехатронных и робототехнических систем, обработки сигналов и изображений, построения систем связи, создания встраиваемых систем и пр.

Рис. 2. Набор библиотечных модулей STM32F4 Targеt

На предыдущем уроке (урок 21) была создана имитационная модель асинхронного электропривода, структурная схема которого представлена на рис. 3.

генерация кода в матлаб. 14 64 03. генерация кода в матлаб фото. генерация кода в матлаб-14 64 03. картинка генерация кода в матлаб. картинка 14 64 03. Модельно-ориентированное проектирование (МОП) — современный, эффективный и экономически выгодный метод разработки систем управления, мехатронных и робототехнических систем, обработки сигналов и изображений, построения систем связи, создания встраиваемых систем и пр.

Рис. 3. Структурная схема асинхронного электропривода

Асинхронный электропривод состоит из асинхронного электродвигателя (М), инкрементного датчика контроля скорости (ДС), установленного на оси двигателя, силового полупроводникового преобразователя (VT), датчиков тока в фазах двигателя (ДТ), источника силового питания, состоящего из выпрямителя (VD) с фильтром (С), контроллера и ЭВМ. По последовательному каналу связи USART от ЭВМ на вход контроллера поступает задание по скорости, в ответ контроллер передает текущую скорость вала двигателя. Частота обмена информацией между контроллером и ЭВМ принята равной 100 Гц при скорости 115200 бит/с.

Имитационная модель электропривода в пакете Simulink с дискретными блоками в системе управления, которая реализуется в контроллере, представлена на рис. 4. Система управления представляет собой двухконтурную систему подчиненного регулирования, включающую контур регулирования тока и контур регулирования скорости, расчет которых был приведен на предыдущем уроке.

генерация кода в матлаб. 14 64 04. генерация кода в матлаб фото. генерация кода в матлаб-14 64 04. картинка генерация кода в матлаб. картинка 14 64 04. Модельно-ориентированное проектирование (МОП) — современный, эффективный и экономически выгодный метод разработки систем управления, мехатронных и робототехнических систем, обработки сигналов и изображений, построения систем связи, создания встраиваемых систем и пр.

Рис. 4. Дискретная модель асинхронного электропривода

Дискретизация регуляторов потока и скорости [1, 2] проводилась исходя из периода программного цикла контроллера, равного 0,001 с. Графики переходных процессов представлены на рис. 5.

генерация кода в матлаб. 14 64 05. генерация кода в матлаб фото. генерация кода в матлаб-14 64 05. картинка генерация кода в матлаб. картинка 14 64 05. Модельно-ориентированное проектирование (МОП) — современный, эффективный и экономически выгодный метод разработки систем управления, мехатронных и робототехнических систем, обработки сигналов и изображений, построения систем связи, создания встраиваемых систем и пр.

Рис. 5. Переходные процессы в асинхронном электроприводе

Создание исполняемого кода в среде Waijung Blockset

Ниже рассмотрен процесс по созданию исполняемого кода для электропривода с помощью элементов библиотеки Waijung Blockset. Разрабатываемая программа должна формировать импульсы управления силовыми ключами инвертора в функции заданной скорости вращения двигателя. При разработке исполняемого кода на базе рассмотренной модели необходимо перейти в библиотеку Waijung Blockset, далее на вкладку STM32F4 Target→Device Configuration и перенести блок Target Setup в окно модели. В окне настроек микроконтроллера, представленном на рис. 6, необходимо выполнить следующие действия.

генерация кода в матлаб. 14 64 06. генерация кода в матлаб фото. генерация кода в матлаб-14 64 06. картинка генерация кода в матлаб. картинка 14 64 06. Модельно-ориентированное проектирование (МОП) — современный, эффективный и экономически выгодный метод разработки систем управления, мехатронных и робототехнических систем, обработки сигналов и изображений, построения систем связи, создания встраиваемых систем и пр.

Рис. 6. Окно настройки параметров микроконтроллера

Шаг 1. Настройка параметров микроконтроллера.

Далее нужно сохранить модель.

Примечание: В названии модели и в пути, где будет сохранена модель, категорически запрещается использовать русские символы и буквы.

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

Для этого необходимо перейти в раздел библиотеки STM32F4 Target→On-chip Peripherals→ADC и перенести блок Regular ADC в окно модели. Двойной щелчок левой кнопки мышки по блоку открывает окно настроек АЦП микроконтроллера, представленное на рис. 7.

генерация кода в матлаб. 14 64 07. генерация кода в матлаб фото. генерация кода в матлаб-14 64 07. картинка генерация кода в матлаб. картинка 14 64 07. Модельно-ориентированное проектирование (МОП) — современный, эффективный и экономически выгодный метод разработки систем управления, мехатронных и робототехнических систем, обработки сигналов и изображений, построения систем связи, создания встраиваемых систем и пр.

Рис. 7. Окно настроек АЦП

В микроконтроллере STM32F4DISCOVERY имеется два 16-канальных АЦП (ADC Module 1 и 2) и один восьмиканальный АЦП (ADC Module 3). Все АЦП могут опрашивать входы, перечисленные в окне настроек, т. о. контроллер тремя АЦП может опрашивать до 16 каналов.

В открывшем окне необходимо выполнить следующие операции:

Выходом АЦП является цифровой код, пропорциональной входному напряжению. Для перехода от цифрового кода к напряжению нужно выполнить преобразование:

генерация кода в матлаб. 14 64 f 1. генерация кода в матлаб фото. генерация кода в матлаб-14 64 f 1. картинка генерация кода в матлаб. картинка 14 64 f 1. Модельно-ориентированное проектирование (МОП) — современный, эффективный и экономически выгодный метод разработки систем управления, мехатронных и робототехнических систем, обработки сигналов и изображений, построения систем связи, создания встраиваемых систем и пр.

где ANi — выходной сигнал с АЦП.

Таким образом, после каждого выхода АЦП нужно поставить элемент Gain из библиотеки Simulink→MathOperations.

Ток в обмотках двигателя протекает в двух направлениях, следовательно, в схеме измерения тока введено смещение нуля датчика тока на уровне 2,5 В. Таким образом, максимальное значение для положительного направления тока равно 5 В, максимальное значение для отрицательного тока — 0 В. После компенсации смещения нуля и масштабирования напряжения с АЦП (коэффициент Km) итоговая модель измерения тока примет вид, представленный на рис. 8.

генерация кода в матлаб. 14 64 08. генерация кода в матлаб фото. генерация кода в матлаб-14 64 08. картинка генерация кода в матлаб. картинка 14 64 08. Модельно-ориентированное проектирование (МОП) — современный, эффективный и экономически выгодный метод разработки систем управления, мехатронных и робототехнических систем, обработки сигналов и изображений, построения систем связи, создания встраиваемых систем и пр.

Рис. 8. Модель измерения тока

Шаг 3. Настройка таймера, отвечающего за обработку инкрементного датчика положения.

Измерение текущего угла и скорости двигателей часто осуществляется при помощи инкрементных энкодеров фотоэлектрического типа. В связи с чем в библиотеке Waijung Blockset присутствует блок обработки сигналов энкодера. Инкрементный энкодер формирует импульсы при вращении вала датчика. Этот тип энкодеров, в отличие от абсолютных энкодеров, работающих в коде Грея, не формирует выходные импульсы, когда его вал находится в покое.

Инкрементный оптический энкодер состоит из следующих компонентов: источника света, диска с метками, фототранзисторной сборки и схемы обработки сигнала. Диск инкрементного энкодера разделен на точно позиционированные прозрачные и непрозрачные области (метки). Количество отметок определяет количество импульсов за один оборот. К примеру, если диск поделен на 1000 меток, тогда за 250 импульсов вал должен повернуться на 90°.

Используемый в данном случае инкрементный 5-В датчик CFS50-AFV11X08 имеет на выходе разностные сигналы A, –A, В, –B, N и –N и 2048 отчетов на оборот, где сигналы –A, –B и –N являются инверсными сигналами по отношению к A, B и N. Сигналы A и B сдвинуты по фазе на 90° относительно друг друга. У инкрементного 5-В датчика дорожки A и B используются для счета. Дорожка N используется при соответствующей параметризации для установки счетчика на загружаемое значение. Датчики с этими шестью сигналами называются симметричными. На рис. 9 показана временная последовательность этих сигналов.

генерация кода в матлаб. 14 64 09. генерация кода в матлаб фото. генерация кода в матлаб-14 64 09. картинка генерация кода в матлаб. картинка 14 64 09. Модельно-ориентированное проектирование (МОП) — современный, эффективный и экономически выгодный метод разработки систем управления, мехатронных и робототехнических систем, обработки сигналов и изображений, построения систем связи, создания встраиваемых систем и пр.

Рис. 9. Временная последовательность импульсов инкрементного датчика

Шаг 4. Анализ импульсов.

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

Множественный анализ возможен только у инкрементных 5-В датчиков с сигналами A и B, сдвинутыми на 90°, или у инкрементных 24-В датчиков с сигналами A* и B*, сдвинутыми на 90°.

Однократный анализ означает, что анализируется только один фронт A; импульсы прямого счета регистрируются при нарастающем фронте на A и низком уровне сигнала на B, а импульсы обратного счета регистрируются при падающем фронте на A и низком уровне сигнала на B. На рис. 10 показан однократный анализ сигналов.

генерация кода в матлаб. 14 64 10. генерация кода в матлаб фото. генерация кода в матлаб-14 64 10. картинка генерация кода в матлаб. картинка 14 64 10. Модельно-ориентированное проектирование (МОП) — современный, эффективный и экономически выгодный метод разработки систем управления, мехатронных и робототехнических систем, обработки сигналов и изображений, построения систем связи, создания встраиваемых систем и пр.

Рис. 10. Однократный анализ сигналов инкрементного датчика

Двойной анализ означает, что анализируются нарастающий и падающий фронт сигнала A; генерируются ли импульсы прямого или обратного счета, зависит от уровня сигнала B. На рис. 11 показан двойной анализ сигналов.

генерация кода в матлаб. 14 64 11. генерация кода в матлаб фото. генерация кода в матлаб-14 64 11. картинка генерация кода в матлаб. картинка 14 64 11. Модельно-ориентированное проектирование (МОП) — современный, эффективный и экономически выгодный метод разработки систем управления, мехатронных и робототехнических систем, обработки сигналов и изображений, построения систем связи, создания встраиваемых систем и пр.

Рис. 11. Двукратный анализ сигналов инкрементного датчика

Четырехкратный анализ означает, что анализируются нарастающий и падающий фронты A и B; генерируются ли импульсы прямого или обратного счета, зависит от уровней сигналов A и B. На рис. 12 показан четырехкратный анализ сигналов.

генерация кода в матлаб. 14 64 12. генерация кода в матлаб фото. генерация кода в матлаб-14 64 12. картинка генерация кода в матлаб. картинка 14 64 12. Модельно-ориентированное проектирование (МОП) — современный, эффективный и экономически выгодный метод разработки систем управления, мехатронных и робототехнических систем, обработки сигналов и изображений, построения систем связи, создания встраиваемых систем и пр.

Рис. 12. Четырехкратный анализ сигналов инкрементного датчика

В DSP-контроллерах STM32 используется четырехкратный анализ сигналов, что позволяет программно увеличить точность определения положения в четыре раза.

Датчик обратной связи по скорости (инкрементный оптический энкодер) имеет 2048 отчетов (меток) на оборот. Как правило, блоки, реализующие обработку сигналов с инкрементных датчиков, строятся на таймерах. Для настройки таймера, реализующего алгоритм обработки датчика оси, необходимо перейти в раздел библиотеки STM32F4 Target→On-chip Peripherals→TIM и перенести блок Encoder Read в окно модели. Двойной щелчок левой кнопки мыши по блоку открывает окно настроек АЦП микроконтроллера, представленное на рис. 13.

генерация кода в матлаб. 14 64 13. генерация кода в матлаб фото. генерация кода в матлаб-14 64 13. картинка генерация кода в матлаб. картинка 14 64 13. Модельно-ориентированное проектирование (МОП) — современный, эффективный и экономически выгодный метод разработки систем управления, мехатронных и робототехнических систем, обработки сигналов и изображений, построения систем связи, создания встраиваемых систем и пр.

Рис. 13. Окно настроек таймера

В этом элементе необходимо задать два параметра:

Выходными сигналами с блока Encoder Read будут: направление вращения (Direction), принимающее два значения («+1» и «–1»), а также число пройденных отчетов (Position (count)). Следует отметить, что при первом включении инкрементного датчика его текущее положение будет принято нулевым, и уже от него будет производиться отсчет пройденных меток. Таким образом, без дополнительных программных мер (выставка нулевого положения датчика относительно ротора двигателя) при каждом включении датчик будет принимать новое нулевое положение за исходное. На рис. 14 представлена модель расчета скорости.

генерация кода в матлаб. 14 64 14. генерация кода в матлаб фото. генерация кода в матлаб-14 64 14. картинка генерация кода в матлаб. картинка 14 64 14. Модельно-ориентированное проектирование (МОП) — современный, эффективный и экономически выгодный метод разработки систем управления, мехатронных и робототехнических систем, обработки сигналов и изображений, построения систем связи, создания встраиваемых систем и пр.

Рис. 14. Модель расчета скорости

Подсистема Speed Estimate представлена на рис. 15.

генерация кода в матлаб. 14 64 15. генерация кода в матлаб фото. генерация кода в матлаб-14 64 15. картинка генерация кода в матлаб. картинка 14 64 15. Модельно-ориентированное проектирование (МОП) — современный, эффективный и экономически выгодный метод разработки систем управления, мехатронных и робототехнических систем, обработки сигналов и изображений, построения систем связи, создания встраиваемых систем и пр.

Рис. 15. Подсистема Speed Estimate

Выходом Position (count) таймера является число отчетов, которое прошел датчик за интервал времени измерения, программно умноженное на 4 (программное увеличение точности измерений). В блоках MATLAB Function [4] из библиотеки Simulink→User-Defined Functions прописываются функции. При открытии данного блока запускается Matlab Editor, в котором необходимо набрать текст программы. Функция Encoder2Angel переводит количество отчетов, выданных таймером, в угол в радианах. Текст программы имеет вид:

Функция Angel2Speed производит расчет скорости прямым методом Эйлера с пропуском моментов времени, когда показания датчика обнуляются. Текст программы имеет вид:

Коэффициент Gain пропорционален периоду программного цикла контроллера и определяется как 1/Ts, где Ts — период программного цикла. В данном случае Gain = 1000.

Блок Unit Delay из библиотеки Simulink→Discrete задает задержку на один шаг расчета, для чего в открывшемся окне свойств блока в поле Sample time необходимо записать период программного цикла контроллера (0,001).

Шаг 5. Настройка канала последовательной передачи данных RS232.

Для настройки канала передачи данных необходимо перейти в раздел библиотеки STM32F4 Target→On-chip Peripherals→UART и перенести все находящиеся там блоки в окно модели. На рис. 16 представлены окна настройки параметров канала связи (UART Setup), передатчика (UART Tx) и приемника (UART Rx).

генерация кода в матлаб. 14 64 16. генерация кода в матлаб фото. генерация кода в матлаб-14 64 16. картинка генерация кода в матлаб. картинка 14 64 16. Модельно-ориентированное проектирование (МОП) — современный, эффективный и экономически выгодный метод разработки систем управления, мехатронных и робототехнических систем, обработки сигналов и изображений, построения систем связи, создания встраиваемых систем и пр.

Рис. 16. Настройка параметров последовательного канала связи

В окне UART Setup в выпадающем меню UART Module необходимо указать номер канала последовательного порта контроллера, по которому будет производиться обмен информацией (в данном случае будем использовать порт 3). В поле Baud rate требуется указать скорость передачи данных, а остальные поля оставим по умолчанию. Передача данных из контроллера будет производиться через порт D8, прием данных контроллером — через порт D9.

В окне UART Tx в выпадающем меню UART Module укажем номер канала контроллера, по которому будет производиться передача данных (механическая скорость ротора). В выпадающем меню выбора режима работы передатчика Transfer выберем режим Blocking (передача данных после приема). В выпадающем меню Packet mode (формат передачи данных) выберем ASCII. В поле ASCII format укажем формат передаваемых данных, в нашем случае это символьный (‘%f’). В выпадающем меню End of packet нужно указать форму окончания пакета, в нашем случае — перевод курсора, перевод строки («\r\n»). В поле Simple time зададим период передачи данных.

В окне UART Rx в выпадающем меню UART Module указывается номер канала контроллера, по которому будет производиться прием данных (заданная скорость). В выпадающем меню выбора режима работы передатчика Transfer выберем режим Blocking (передача данных после приема). В выпадающем меню Packet mode (формат передачи данных) выберем ASCII. В поле ASCII format укажем формат передаваемых данных, в нашем случае это символьный (‘%f’). В выпадающем меню End of packet нужно указать форму окончания пакета, в нашем случае перевод строки («\n»). В поле Simple time зададим период передачи данных.

Так как в приемнике и передатчике канала связи формат данных указан как символьный, следовательно, необходима конвертация полученных/принятых данных в требуемый формат посредством блока Data Type Conversion из библиотеки Commonly Used Blocks Simulink. В окне свойств блока Data Type Conversion в выпадающем меню Output data type следует выбрать Inherit: Inherit via back propagation.

Шаг 6. Настройка широтно-импульсной модуляции.

Управление фазными токами в обмотках двигателя осуществляется посредством широтно-импульсной модуляции (ШИМ) режима работы силовых ключей инвертора. Для настройки ШИМ необходимо перейти в раздел библиотеки STM32F4 Target→On-chip Peripherals→TIM и перенести блок Advanved PWM в окно модели. На рис. 17 представлено окно настройки параметров ШИМ.

генерация кода в матлаб. 14 64 17. генерация кода в матлаб фото. генерация кода в матлаб-14 64 17. картинка генерация кода в матлаб. картинка 14 64 17. Модельно-ориентированное проектирование (МОП) — современный, эффективный и экономически выгодный метод разработки систем управления, мехатронных и робототехнических систем, обработки сигналов и изображений, построения систем связи, создания встраиваемых систем и пр.

Рис. 17. Окно настройки параметров ШИМ

В выпадающем меню Timer необходимо выбрать TIM8, т. к. первый таймер используется для обработки сигналов инкрементного датчика. В окне PWM Period зададим требуемую частоту ШИМ. В нашем случае частота ШИМ 10 кГц, что соответствует периоду 1e–4с. В выпадающем меню Output Channel 2 Pulse выберем значение Polarity HIGH and SET when idle; в выпадающем меню Output Channel 2N Pulse — значение Polarity LOW and SET when idle; в выпадающем меню Output Channel 3 Pulse — значение Polarity HIGH and SET when idle; в выпадающем меню Output Channel 3N Pulse — значение Polarity LOW and SET when idle.

Итоговая модель системы управления представлена на рис. 18.

генерация кода в матлаб. 14 64 18. генерация кода в матлаб фото. генерация кода в матлаб-14 64 18. картинка генерация кода в матлаб. картинка 14 64 18. Модельно-ориентированное проектирование (МОП) — современный, эффективный и экономически выгодный метод разработки систем управления, мехатронных и робототехнических систем, обработки сигналов и изображений, построения систем связи, создания встраиваемых систем и пр.

Рис. 18. Модель системы управления

Теперь, при нажатии кнопки Build Modelгенерация кода в матлаб. 14 64 k. генерация кода в матлаб фото. генерация кода в матлаб-14 64 k. картинка генерация кода в матлаб. картинка 14 64 k. Модельно-ориентированное проектирование (МОП) — современный, эффективный и экономически выгодный метод разработки систем управления, мехатронных и робототехнических систем, обработки сигналов и изображений, построения систем связи, создания встраиваемых систем и пр., будет запущен процесс автоматической генерации исполняемого кода для микроконтроллера, его компиляции и записи программы в контроллер (если он подключен к компьютеру), представленный на рис. 19.

генерация кода в матлаб. 14 64 19. генерация кода в матлаб фото. генерация кода в матлаб-14 64 19. картинка генерация кода в матлаб. картинка 14 64 19. Модельно-ориентированное проектирование (МОП) — современный, эффективный и экономически выгодный метод разработки систем управления, мехатронных и робототехнических систем, обработки сигналов и изображений, построения систем связи, создания встраиваемых систем и пр.

Рис. 19. Генерация исполняемого кода

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

Заключение

На примере асинхронного электропривода рассмотрены этапы МОП, включающие в себя переоборудование непрерывной системы управления в цифровой аналог в пакете Simulink. С использованием внешней библиотеки Waijung и средств среды MATLAB+Simulink цифровая модель системы управления привязана к конкретному контроллеру и периферийным устройствам (АЦП, датчики и пр.). Осуществлена компиляция кода и загрузка его в контроллер, работающий в режиме реального времени.

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

Источник

Настройка matlab для генерации C/C++ кода из m файлов в Windows

генерация кода в матлаб. E4JLoTrMpqc 0. генерация кода в матлаб фото. генерация кода в матлаб-E4JLoTrMpqc 0. картинка генерация кода в матлаб. картинка E4JLoTrMpqc 0. Модельно-ориентированное проектирование (МОП) — современный, эффективный и экономически выгодный метод разработки систем управления, мехатронных и робототехнических систем, обработки сигналов и изображений, построения систем связи, создания встраиваемых систем и пр.

Matlab программа с невероятными возможностями, но как и любое прикладное приложение, рано или поздно программу созданную в матлабе нужно переписать для использования в вашем приложении.

Я играю цифровыми фильтрами. При работе с ними нужно использовать свёртку или преобразование Фурье и прочие специфические функции. Естественно писать их с нуля смысла особого нет, но и искать вам придётся скорее всего долго..

И тут апогеем творчества MathWorks стал Matlab Coder который позволяет сгенерировать вам код на C/C++ из функции матлаба.

Наткнулся на подводный камень в виде необходимости установить VS для работы кодера. Почему было не сделать строчку в графическом интерфейсе не ясно..

Итак. Ставим VS (нам понадобится её компилятор). Ставим аккуратно выбирая из таблички на сайте матлаба нужную версию.

У меня 2013 матлаб, табличка говорит что Microsoft Visual C++ 2010 Professional нам вполне подойдёт.

Теперь нужно воспользоваться командой:

Просто пшем её в Command Window матлаба и выполняем. У вас спросят какой компилятор настроить для использования.

Весь вывод команды такой:

Вот впринципе и всё что нужно для работы. Очень странно, что всё делается командой. но это уже не нашего ума дело.

зы без этого матлаб будет выдавать ошибку matlab coder unknown compiler

Источник

Документация

Сгенерируйте код С из модели Simulink

Этот пример использует:

Откройте модель

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

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

Можно альтернативно создать модель с помощью шаблона DSP System. Для получения дополнительной информации смотрите, Конфигурируют окружение Simulink для Моделей Обработки сигналов.

Сконфигурируйте модель для генерации кода

Симулируйте модель

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

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

Array Plot показывает последние 32 веса фильтра, к которым фильтр LMS эффективно адаптировался и отфильтровал шум от сигнала.

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

К этим коэффициентам можно также получить доступ используя следующую команду:

Сгенерируйте код из модели

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

Чтобы сгенерировать код, необходимо внести следующие изменения:

Во вкладке Modeling панели инструментов модели нажмите Model Settings. Диалоговое окно Configuration Parameters открывается. Перейдите к вкладке Code Generation, выберите параметр Generate code only и нажмите Apply.

Создание и запуск сгенерированного кода

Настройте Компилятор C/C++

Чтобы создать исполняемый файл, необходимо настроить поддерживаемый компилятор C. Для списка компиляторов, поддержанных в текущем релизе, см. Поддерживаемые и Совместимые Компиляторы.

Чтобы настроить ваш компилятор, запустите следующую команду в командной строке MATLAB:

Создайте сгенерированный код

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

Во вкладке Modeling панели инструментов модели нажмите Model Settings. Диалоговое окно Configuration Parameters открывается. Перейдите к вкладке Code Generation, очистите параметр Generate code only и нажмите Apply.

Запустите сгенерированный код

Чтобы запустить сгенерированный код, введите следующую команду в командную строку MATLAB:

Можно теперь сравнить переменные из сгенерированного кода с переменными из симуляции модели. Чтобы получить доступ к последнему набору коэффициентов от сгенерированного кода, введите следующее в подсказку MATLAB:

Обратите внимание на то, что коэффициенты в filter_wts(. 1201) и rt_filter_wts(. 1201) соответствие.

Переместите код к другой среде разработки

Если вы генерируете код из своей модели Simulink, можно переместить код к другой среде разработки с помощью утилиты pack-and-go. Используйте эту утилиту, когда среда разработки не будет иметь продукты Simulink и MATLAB.

Утилита pack-and-go использует инструменты для настройки процесса сборки после генерации кода и a packNGo (Simulink Coder) функция, чтобы найти и упаковать файлы для создания исполняемого образа. Файлы упакованы в сжатом файле, что можно переместить и распаковать использование стандартной утилиты zip.

Для примера о том, как группировать код С и исполняемый файл, сгенерированный из этого примера, смотрите, Перемещают Код, Сгенерированный от Модели Simulink до Другой Среды разработки.

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *