MATLAB/Simulink/Stateflow

    • Михаил
      19.08.2013
      11:34
      В предыдущих записях в блоге я рассказывал о некоторых целевых платформах и средах разработки, поддерживаемых Embedded Coder:
      Запуск моделей Simulink на Arduino
      Поддержка TI MSP430 LaunchPad в Embedded Coder
      Embedded Coder встречает Green Hills Software MULTI

      В документации к Embedded Coder можно увидеть полный список поддерживаемого оборудования, сред разработки и операционных систем.

      В этом посте я расскажу о поддержке (Target Support Package) ОС реального времени QNX в Embedder Coder. Embedded Coder является расширяемой и настраиваемой системой, и, хотя QNX не обозначена в списке выше, поддержка этой RTOS была разрабатана инженерами MathWorks и предоставлена для общего использования. Это позволит всем инженерам, работающим в Simulink и разворачивающим свои системы на QNX, существенно упростить процесс разработки и тестирования, а также адаптировать эту поддержку для своих конкретных нужд.

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

      Вы можете скачать поддержку с ресурса пользователей File Exchange: http://www.mathworks.com/matlabcentral/fileexchange/42290-qnx-target-support-package-for-embedded-coder.
      Либо можете использовать последнюю версию из этого репозитория Github.

      Этот Target Support Package был протестирован на платформе Beagleboard xM, работающей под управлением QNX 6.5.1. В принципе, он также должен работать на других целевых платформах QNX, для которых есть BSP. Для этого потребуется внести минимальные изменения в Template Makefile, чтобы использовать другие флаги компилятора.

      Как я уже раньше писал, поддержка может заключаться в нескольких аспектах. В данном случае доступна автоматическая связь со средой разработки посредством Makefile (что подразумевает автоматическую компиляцию и линковку после генерации С кода), интеграция с QNX посредством POSIX таймеров (что позволяет запускать ваши многочастотные/многозадачные модели в реальном времени), а также поддержка симуляции в режиме External Mode. Такой режим симуляции позволяет осуществлять калибровку параметров, мониторинг и трассировку сигналов непосредственно из модели Simulink при работе вашего кода на встраиваемом процессоре в реальном времени.

      В небольшом видео вы можете увидеть эту поддержку в действии.

      Кстати, в Simulink также доступна встроенная поддержка BeagleBoard. Однако, это совсем другая возможность, не имеющая отношения к QNX и Embedded Coder. Больше информации об этом вы можете почерпнуть в предыдущем посте.
    • Михаил
      09.08.2013
      13:27
      Часто перед нами возникает необходимость интегрировать внешний С код в модель Simulink.

      Когда это может быть полезно?

      Например:
      • У нас есть существующий код, который реализует определенный алгоритм, и мы хотим быстро встроить его в модель Simulink.
      • Мы хотим интегрировать собственные драйвера устройств в Simulink.
      Существует несколько способов интеграции внешнего кода в Simulink:
      Если говорить про интеграцию внешнего кода при помощи S-функций, то есть несколько способов создания S-функций:
      • Legacy Code Tool. Этот инструмент создает C MEX S-функцию из существующего С кода и спецификаций, которые вы задаете при помощи кода MATLAB.
      • S-Function Builder. Этот блок создает C MEX S-функцию из спецификаций и фрагментов кода, которые вы задаете при помощи графического интерфейса пользователя.
      • Написание S-функции вручную. Вы можете написать C MEX S-функцию с нуля. В документации приведены шаблоны для C MEX S-функций, которые вы можете использовать как начальную точку для создания собственных S-функций.
      Обзор этих трех методов в документации дает представление об их преимуществах и недостатках.

      Если вы уже запутались, то диаграмма ниже, надеюсь, поможет вам разобраться:


      В этом видео продемонстрирован подход к интеграции внешнего С кода с использованием Legacy Code Tool.

      Все эти подходы по интеграции внешнего кода, их преимущества и недостатки, а также области применения подробно освещаются в официальном курсе MathWorks "Интеграция кода в Simulink": http://sl-matlab.ru/training/SLEX
    • Михаил
      29.01.2013
      13:43

      Запуск моделей Simulink на Arduino

      В этом небольшом посте я бы хотел рассказать о возможностях по работе с платформой Arduino из Simulink.

      Содержание

      Использование Simulink Run on Target Hardware

      В одном из предыдущих постов я рассказывал, что такое Simulink Run on Target Hardware и как этот функционал позволяет работать с бюджетными аппаратными платформами.

      Для того, чтобы начать использовать этот функционал, достаточно выполнить команду

      targetinstaller
      

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

      В результате, вы получите следующее:

      • Библиотеку блоков Simulink для работы с периферией Arduino:
      - Digital Input/Output
      - Analog Input
      - Servo Read/Write (Continous)
      - Serial Transmit/Receive
      - PWM
      • Примеры и документацию для работы с Arduino

      Заметьте, что для того, чтобы начать использовать этот функционал, вам нужен только Simulink. Вы можете начать с базовых примеров и расширять их своими алгоритмами и функционалом. Чтобы запустить модель Simulink на Arduino, достаточно выбрать Run on Target Hardware > Prepare to Run (или Run) из меню Tools . Дополнительная информация содержится в документации.

      Функционал Simulink Run on Target Hardware доступен любому пользователю Simulink, но эта доступность и простота использования несут определенные ограничения. Например, Simulink Run on Target Hardware поддерживает только Arduino Uno и Arduino Mega 2560. Кроме того, процесс запуска модели на целевой платформе прозрачен для пользователя - т.е. вы не получаете доступа к исходному коду, который генерируется и не имеете возможности тонкого управления различными аспектами генерации кода.

      В случае, если вы хотите работать с любым клоном Arduino или вам важно управлять процессом генерации кода и его сборкой, то вам требуется Embedded Coder.

      Использование Embedded Coder

      Embedded Coder® генерирует удобочитаемый, компактный и быстрый C и C++ код для использования во встраиваемых процессорах, отладочных платах и микропроцессорах, используемых для серийного производства. Embedded Coder активирует дополнительные настройки конфигурации для MATLAB Coder™ и Simulink Coder™, а также включает продвинутые оптимизации для тончайшей настройки функций, файлов и данных в сгенерированном коде. Эти оптимизации улучшают эффективность кода и облегчают интеграцию с существующим кодом, типами данных и калибровочными параметрами, используемыми в производстве. Вы можете подключить стороннюю среду разработки к процессу сборки, чтобы получить исполняемый файл "под ключ" для развертывания на вашей встраиваемой системе.

      Поддержка Arduino в Embedded Coder реализована при помощи Target Support Package, который вы можете скачать с File Exchange: Embedded Coder Support Package for Arduino.

      В дополнение к упомянутым настройкам, и возможностью работать с любым Arduino, вы также получаете возможность верифицировать ваши алгоритмы в режиме Processor-in-the-Loop (больше информации о PIL тестировании в этом посте).

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

      Если у вас есть вопросы, задавайте их нам, мы попробуем помочь.

    • Михаил
      20.11.2012
      15:05
      В релизе MATLAB R2012a появилась возможность запускать модели Simulink на поддерживаемых аппаратных платформах.
      Таким образом, Simulink предлагает встроенную поддержку для прототипирования, тестирования и запуска моделей на недорогом целевом оборудовании, включая Arduino®, LEGO® MINDSTORMS® NXT, PandaBoard и BeagleBoard. Вы можете проектировать алгоритмы в Simulink для систем управления, робототехники, обработки звука и систем компьютерного зрения, и видеть, как они работают на реальном железе.

      Многие, кто читал эту новость, могли задаться вопросом - а что нового в этом функционале? Ведь еще до релиза R2012a у нас была возможность работать из MATLAB/Simulink с Arduino, LEGO и BeagleBoard - скачав соответствующую поддержку с File Exchange.

      Если вкратце, то основное отличие Simulink Run on Target Hardware (ROTH) заключается в том, что для запуска моделей Simulink на железе не требуется Embedded Coder. Для работы этого функционала достаточно иметь студенческую версию Simulink.

      Какие основные возможности Simulink ROTH?

      • Автоматическая установка и настройка поддержки целевого оборудования
      • Библиотека блоков Simulink для аппаратных интерфейсов: I/O портов, датчиков и исполнительных механизмов
      • Выстроенный рабочий процесс для разработки, выполнения и отладки ваших алгоритмов непосредственно на поддерживаемом обрудование
      • Прямая связь между Simulink целевым оборудованием
      • Интерактивная настройка параметров и мониторинг сигналов во время работы вашего приложения
      • Развертывание модели для автономного выполнения

      Главная целевая аудитория ROTH - это, конечно, студенты и преподаватели. Им требуется недорогое оборудование, и нужно, чтобы их алгоритмы просто работали на этом оборудовании.

      Есть два подхода к исследованию и анализу свойств систем – это симуляция и физическое взаимодействие.

      В данном контексте, симуляция – это конфигурация, при которой сам алгоритм, динамика объекта управления, и внешняя среда, с которой они взаимодействуют – все это моделируется на компьютере.

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

      Именно здесь большое значение имеет обучение на реальных проектах (Project-Based Learning).

      Студенты обучаются, выполняя определенные задачи. Это весело, это бросает вызов студентам, и часто позволяет применить на практике полученные теоретические знания.
      Методика обучения на проектах основана на непосредственном экспериментировании с настоящими задачами. Взаимодействие с настоящей средой стимулирует процесс обучения у студента и предлагает возможности по исследованию и анализу сложных проблем. Работа над проектом также предоставляет возможности для командной кооперации и пониманию того, как устроен инженерный процесс – от первоначальной идеи до конечной реализации.

      Итак, какие преимущества вы получаете при использовании технологии Simulink Run on Target Hardware? Во-первых, вы получаете из модели исполняемый файл и запускаете его на целевом железе нажатием одной кнопки. Это позволяет студентам взаимодействовать с реальным железом, при этом избегая работы с низкоуровневыми функциями и интерфейсами. Во-вторых, вы работаете в графической среде и разрабатываете алгоритм на языке блок-схем, что позволяет сконцентрироваться на самом алгоритме, нежели чем на вопросах, связанных с его реализацией. В-третьих, Simulink также предлагает широкий набор расширений, называемых тулбоксами, которые предоставляют дополнительные возможности и функционал для создания приложений обработки изображений и видео. Это упрощает создание продвинутых алгоритмов, которые применяются в индустрии.

      В этом небольшом видео вы можете посмотреть, каким образом осуществляется работа с целевым оборудованием из Simulink на примере платы BeagleBoard.
    • Михаил
      06.11.2012
      09:34
      Часто нам задают вопрос - поддерживает ли Embedded Coder определенный процессор или отладочную плату? Быстрый ответ на этот вопрос - ДА, поддерживает. Ведь Embedded Coder по умолчанию генерирует ANSI C код, который мы можем получить из модели Simulink и вручную (или полуавтоматически) интегрировать в наш проект.  Мы называем это "Экспорт алгоритма":



      Например, в случае Texas Instruments MSP430 LaunchPad, мы можем при помощи Embedded Coder сгенерировать Си-функцию (или несколько функций) из нашего алгоритма (настроив прототип функции, т.е. интерфейсы) и интегрировать её в существующий проект Code Composer Studio - среды разработки для процессоров Texas Instruments. Во многих случаях этого вполне достаточно, но зачастую хочется большей "поддержки". Но, отвечая на самый первый вопрос, давайте сначала разберемся, что означает "поддерживать".

      Поддержка можем состоять из нескольких аспектов:
      1. Автоматическая связь со средой разработки для процессора . Компания MathWorks не разрабатывает компиляторы и среды разработки для встраиваемых процессоров.  При помощи Embedded Coder мы можем автоматизировать создание makefile или целиком проектов для автоматической компиляции кода, линковки и загрузки в процессор. Все это – с использованием среды разработки, которая предоставляется производителем процессора.
      2. Оптимизация кода под конкретный процессор. Code replacement – это часть технологии Embedded Coder, которая позволяет генерировать код, оптимизированный под конкретный процессор. Осуществляется это при помощи специальных таблиц подстановок. Предоставлением оптимизированных под конкретный процессор функций (библиотек) часто занимается фирма-производитель процессора. Например, у Texas Instruments есть оптимизированные библиотеки для тригонометрических функций и т.п. Конечно, можно и свои собственные функции таким образом подставлять.
      3. Специфические интерфейсные драйвера в виде блоков Simulink. Например, для определенных процессоров есть блоки Simulink для ШИМ, ЦАП, АЦП и т.п. При генерации кода из этих блоков генерируется специфичный для интерфейсов этих процессоров код. К этим блокам также относятся низкоуровневые операции с памятью, которые также могут быть реализованы в виде блоков Simulink.
      4. Интеграция с ОС реального времени, планировщиком, прерываниями  обеспечивается также при помощи специальных блоков Simulink и настроек в модели.
      5. Поддержка PIL симуляции. Подробнее об этом режиме симуляции вы можете почитать в моей предыдущей записи здесь.
      6. External Mode. Такой режим симуляции позволяет осуществлять калибровку параметров, мониторинг и трассировку сигналов непосредственно из модели Simulink при работе нашего кода на встраиваемом процессоре.
      Разные процессоры и разные среды разработки могут поддерживаться Embedded Coder в разной степени. С каждым релизом добавляется поддержка новых платформ, при этом устаревшие платформы отпадают. С актуальным списком поддерживаемого оборудования и сред разработки вы можете ознакомиться на странице Embedded Coder на сайте MathWorks. Конечно, невозможно организовать поддержку из коробки для всех возможных процессоров и отладок, поскольку многие инженеры используют собственные отладки, а количество различных микропроцессоров и DSP на рынке зашкаливает. Именно поэтому для каждого из перечисленных пунктов Embedded Coder предоставляет API, который позволяет реализовать поддержку своего железа.

      При реализации своего Target Support мы имеем возможность создавать полный проект «под ключ» из модели Simulink – вместе с драйверами устройств, планировщиком и т.п. Мы называем это "Target Support":




      Конечно, не обязательно реализовывать поддержку всех пунктов, упомянутых выше. Во многих случаях достаточно автоматизировать создание makefile для автоматической компиляции, линковки и заливки прошивки на плату. А также реализовать режим PIL для выполнения верификации скомпилированного кода относительно симуляции модели.

      В Центре компетенций MathWorks в России есть практика проведения небольших пилотных проектов вместе с клиентами, которые интересуются автоматической генерацией кода. Такой пилотный проект позволяет им оценить возможности Embedded Coder и понять необходимость использования автоматической генерации кода в их компании. В списке поддерживаемого оборудования Embedded Coder содержится большое количество актуальных процессоров и отладочных плат.
      Мы решили создать собственный Target Support для TI MSP430 LaunchPad, поскольку для этой платформы существует только возможность "экспорта алгоритмов" (см. выше). Мы рассматриваем эту отладку как доступную платформу для оценки автоматической генерации кода и верификации.

      Алгоритмы, которые мы можем реализовать на MSP430 – достаточно простые, но это только к лучшему. Это позволяет нам больше сконцентрироваться на возможностях по генерации кода, нежели чем на создании алгоритма как такового. Кроме того, наши клиенты могут использовать этот Target Support как базу для создания реализации для своего процессора или отладочной платы. Если вас интересует такая возможность, вы можете получить отладочный комплект (включающий железо и софт) на этой странице.

      Texas Instruments MSP430 LaunchPad это простое в использовании, недорогое, и масштабируемое введение в мир микроконтроллеров и семейства MSP430. Эта отладочная плата включает: два светодиода, две кнопки, одна из которых является пользовательской, внутрисхемный JTAG, DIP разъем для MSP430 (что позволяет устанавливать на плату другой процессор семейства MSP430), пины ввода-вывода и встроенный датчик температуры (в процессоре g2553).

      Типичные применения MSP430 – это бюджетные системы с ультранизким потреблением энергии. Также системы захвата аналоговых сигналов и датчиков, обработка данных для передачи на хост или отображения на LCD. Есть много интересных пользовательских проектов – например, связанных с робототехникой (шагающий паук, рука робота), цветной LCD, Bluetooth, велосипедный компьютер, и даже реализация FAT16. Многим членам сообщества не откажешь в чувстве юмора – если вы не слышали, как LaunchPad и пьезо-спикер играют Имперский Марш – вам это надо послушать!

      Итак, что включает в себя Target Support для MSP430 LaunchPad?
      • Поддерживаемые среды разработки – это Code Composer Studio 5 на Windows и Linux. Кроме того, на Linux поддерживаются mspgcc и mspdebug, которые являются открытыми аналогами Code Composer Studio для MSP430.
      • Библиотека блоков Simulink для периферийных устройств MSP430 LaunchPad поддерживает светодиоды, датчик температуры, пользовательскую кнопку и блоки для передачи/приема данных по последовательному интерфейсу.
      • Поддерживается симуляция в режиме PIL, а также профилирование времени выполнения в режиме PIL.

      Разработка происходит на Github, а релизы можно скачать с File Exchange – официального ресурса MathWorks для обмена пользовательским контентом.

      В этом видео вы можете посмотреть, как осуществляется совместная работа Embedded Coder и TI MSP430 LaunchPad.
  • RSS подписка
    Архив материалов
    Май 2019
    Пн Вт Ср Чт Пт Сб Вс
        1 2 3 4 5
    6 7 8 9 10 11 12
    13 14 15 16 17 18 19
    20 21 22 23 24 25 26
    27 28 29 30 31    
    Поиск