Simulink – это среда моделирования и проектирования на основе моделей для динамических и встроенных систем, интегрированная с MATLAB. Simulink, также разработанный MathWorks, представляет собой инструмент языка графического программирования потоков данных для моделирования, моделирования и анализа многодоменных динамических систем. В основном это графический инструмент для построения блок-схем с настраиваемым набором библиотек блоков.
Это позволяет включать алгоритмы MATLAB в модели, а также экспортировать результаты моделирования в MATLAB для дальнейшего анализа.
Simulink поддерживает –
Существует несколько других дополнительных продуктов, предоставляемых MathWorks и сторонними аппаратными и программными продуктами, которые доступны для использования с Simulink.
Следующий список дает краткое описание некоторых из них –
Stateflow позволяет разрабатывать конечные автоматы и блок-схемы.
Simulink Coder позволяет генерировать исходный код на C для автоматической реализации систем в реальном времени.
xPC Target вместе с системами реального времени на базе x86 обеспечивают среду для имитации и тестирования моделей Simulink и Stateflow в реальном времени на физической системе.
Встроенный кодер поддерживает определенные встроенные цели.
HDL Coder позволяет автоматически генерировать синтезируемые VHDL и Verilog.
SimEvents предоставляет библиотеку графических строительных блоков для моделирования систем массового обслуживания.
Stateflow позволяет разрабатывать конечные автоматы и блок-схемы.
Simulink Coder позволяет генерировать исходный код на C для автоматической реализации систем в реальном времени.
xPC Target вместе с системами реального времени на базе x86 обеспечивают среду для имитации и тестирования моделей Simulink и Stateflow в реальном времени на физической системе.
Встроенный кодер поддерживает определенные встроенные цели.
HDL Coder позволяет автоматически генерировать синтезируемые VHDL и Verilog.
SimEvents предоставляет библиотеку графических строительных блоков для моделирования систем массового обслуживания.
Simulink способен систематически проверять и проверять модели посредством проверки стиля моделирования, отслеживания требований и анализа охвата модели.
Simulink Design Verifier позволяет выявлять ошибки проектирования и генерировать сценарии тестирования для проверки модели.
Чтобы открыть Simulink, введите рабочее пространство MATLAB –
simulink
Simulink открывается с помощью браузера библиотеки . Браузер библиотеки используется для построения имитационных моделей.
В левой части окна вы найдете несколько библиотек, распределенных по категориям на основе различных систем, щелкнув по каждой из них, вы увидите блоки дизайна на правой панели окна.
Чтобы создать новую модель, нажмите кнопку « Создать» на панели инструментов браузера библиотеки. Это открывает новое безымянное окно модели.
Модель Simulink – это блок-схема.
Элементы модели добавляются путем выбора соответствующих элементов в браузере библиотеки и перетаскивания их в окно модели.
Кроме того, вы можете скопировать элементы модели и вставить их в окно модели.
Перетащите элементы из библиотеки Simulink, чтобы создать свой проект.
В этом примере для моделирования будут использоваться два блока – Источник (сигнал) и Раковина (область). Генератор сигналов (источник) генерирует аналоговый сигнал, который затем будет графически визуализирован областью действия (приемником).
Начните с перетаскивания необходимых блоков из библиотеки в окно проекта. Затем соедините блоки вместе, что можно сделать, перетаскивая соединители из точек соединения одного блока в точки другого.
Давайте перетащим блок «Синусоида» в модель.
Выберите «Sinks» из библиотеки и перетащите блок «Scope» в модель.
Перетащите сигнальную линию с выхода блока синусоидальной волны на вход блока Scope.
Запустите симуляцию, нажав кнопку « Выполнить », сохраняя все параметры по умолчанию (вы можете изменить их из меню симуляции)
Вы должны получить ниже график из области видимости.
Важной практической задачей является использование Matlab/Simulink с реальной аппаратурой которая позволит принять сигнал из реального мира. Это очень полезно для отладки алгоритмов. В данной работе представлена технология подключения к Simulink устройств АЦП производства АО «ИнСис».
Для подключения используется DLL, которая видна в Simulink как компонент sm_adc. Для работы с аппаратурой используется отдельная консольная программа. Связь с DLL производится через разделяемую память. По данной технологии могут быть подключены любые АЦП на любых несущих модулях АО «ИнСис». В работе представлена система из генератора A7_DAC и модуля сбора FMC128E/FM412x500M.Данная работа демонстрировалась на конференции «Технологии разработки и отладки сложных технических систем» 27-28 марта 2018 года.
Постановка задачи
Требуется разработка системы из генератора сигналов и АЦП которая будет формировать сигнал с заданными параметрами и производить его оцифровку. Полученные данные должны быть переданы в Simulink на обработку.
Аппаратура
Для работы собран стенд из модуля АЦП и генератора. В качестве АЦП используется субмодуль FM412x500M в котором есть четыре канала АЦП с частотой дискретизации 500 МГЦ. Субмодуль установлен на несущий модуль FMC128E в котором есть ПЛИС Artix 7 и интерфейс USB 3.
Внешний вид стенда:
Структурная схема стенда:
Сформированный сигнал:
Алгоритм работы стенда:
Это классический однократный режим сбора. Его особенностью является именно однократность. Аппаратура по фронту сигнала собирает заданный массив данных. Фаза сбора данных происходит в режиме «жёсткого реального времени», а вот обработка — как получиться. Скорость сбора определяется числом выбранных каналов и частотой дискретизации.
Для четырёх каналов АЦП и частоте дискретизации 500 МГц скорость потока данных составляет 4 Гбайт/с. С этой скоростью данные могут быть записаны в SODIMM модуля FMC128E. То есть может быть сохранена выборка объёмом 4 Гбайт.Далее данные должны быть переданы в компьютер. Модуль FMC128E подключается к компьютеру через интерфейс USB 3.0. Скорость передачи данных составляет 300 Мбайт/c.
Simulink принимает массив данных и передаёт его на дальнейшую обработку. Время этой обработки уже определяется сложностью модели. В данном примере массив просто отображается на панели осциллографа.
В какой-то момент Simulink решает что нужно проводить следующий цикл и всё повторяется. Опять по USB передаются команды на подготовку АЦП, на запуск генератора и на сбор данных.
Такой режим очень удобен для отладки аппаратуры и алгоритмов. Можно никуда не торопиться. Собрать массив данных. На него спокойно посмотреть, записать на диск, выпить кофе. А вот когда всё будет отработано, то тогда уже можно переходить на непрерывный режим сбора.
Подключение DLL
Matlab позволяет подключать функции реализованные во внешних DLL. Simulink также имеет возможность подключения внешних DLL, при этом он добавляет некоторые требования. Внутри Simulink внешняя DLL выглядит как блок S-Function.
MATLAB предоставляет огромное количество примеров, в том числе и по созданию внешних DLL. Однако способ который предлагает MATLAB не очень удобный. Существует OpenSource проект easyLink. В этом проекте разработана библиотека классов для подключения к Simulink.
Для создания компонента требуется создать класс наследник от BaseBlock и объявить порты:
Проблемы подключения DLL
Внешние DLL позволяют очень многое, но при работе с ними есть ряд проблем. Наиболее существенными лично для меня являются следующие:
При отладке программы требуется проводить пошаговую отладку. В случае DLL существует возможность подключиться к уже загруженной в память DLL, назначить там точку останова и провести сеанс отладки. Но это надо отлавливать момент загрузки DLL через Simulink, каким то образом задерживать старт работы. Всё это сделать можно, но неудобно.
В процессе работы очень хочется видеть отладочный вывод который формируется как стандартный потоко stdout. В случае с DLL этот поток как то можно перехватить, но мне это не удалось.
Ну и наконец самое главное неудобство это необходимость выхода из MATLAB при перекомпиляции DLL. Иначе просто не удаётся записать новый файл. А выход и последующий запуск MATLAB занимает много времени.
Для решения этих проблем существует классический способ построения сложных программных комплексов. Это взаимодействие между программами через разделяемую память.
Подключение через разделяемую память
Современные операционные системы, как Windows так и Linux, позволяют организовывать общие области памяти. Это позволяет создавать надёжные программы. Например одна программа может содержать графический интерфейс и взаимодействовать с оператором, а другая программа может взаимодействовать с аппаратурой. При этом зависание программы которая взаимодействует с аппаратурой не приведёт к зависанию программы взаимодействия с оператором. В случае с Simulink такой подход также даёт некоторые преимущества. Программа для работы с аппаратурой будет запущена один раз, она подготовит аппаратуру и будет ждать команды через разделяемую память. DLL будет загружаться каждый раз при запуске Simulink на моделирование. Поскольку DLL не работает напрямую с аппаратурой, то это этот запуск будет производиться быстро.
Для данного стенда разработаны две программы и две DLL:
Структурная схема представлена на рисунке ниже:
Программа simulink_adc построена на основе библиотеки Bardy.
Вид схемы в Simulink
Ну и наконец как это выглядит внутри Simulink:
Всё выглядит так как и принято в Simulink. Один блок для управления АЦП. Второй блок для управления генератором. Для управления генератором доступен ряд параметров. Для АЦП — всё через файл инициализации. При необходимости ряд параметров АЦП также можно вывести на уровень блока.
Обратите внимание на два задающих генератора. Они задают в терминах модельного времени момент старта и момент сбора данных. Эти моменты очень важны. Они собственно и задают связь между моделью и реальным миром. Сигнал старта поступает в блок АЦП, он обрабатывается в DLL. Через разделяемую память он поступает в программу АЦП. Далее он преобразуется в последовательность команд записи в регистры, которые через USB поступают в ПЛИС. А внутри ПЛИС взводится автомат поиска фронта сигнала старта. И только после того как автомат будет взведён в обратную сторону по этой же цепочке пойдёт подтверждение. Когда подтверждение дойдёт до Simulink на выходе блока sm_adc появиться сигнал start_out который будет передан в блок sm_ctrl. Причём это будет всё тот же самый момент модельного времени. В блоке sm_ctrl по такой же цепочке сигнал будет передан в ПЛИС генератора и она сформирует посылку сигнала. АЦП захватит этот сигнал в своей памяти. От второго задающего генератора будет сформирован сигнал сбора данных. По такому же пути данные попадут в Simulink и поступят на выход данных блока sm_adc. В данный момент возвращается блок размером 16384 отсчёта. Принятый блок отображается в осциллографе.
Результаты
Работа через разделяемую память показала свою эффективность. Программа управления АЦП позволяет работать с любыми нашими АЦП. При этом остаётся удобный способ настройки параметров через файл конфигурации. Программа разработана как консольное приложение, при этом виден весь отладочный вывод. Есть индикация работоспособности. Компонент SM_CTRL позволяет подключать различные внешние приложения для управления аппаратурой. Отладка программы управления АЦП не вызывает никаких трудностей. Это обычная программа, в которой можно установить точки останова и проводить отладку. По этой же технологии могут быть разработаны и другие программы для взаимодействия между Matlab/Simulink и внешним миром.
Работа опубликована на сайте hub.exponenta.ru;
Ссылки:
весь процесс.
Узнайте, как использовать модельно-ориентированное проектирование в своих проектах
Исследуйте широкое пространство для проектирования и заранее протестируйте свои системы с помощью многодоменного моделирования и симуляции.
Подробнее о работе в многодоменной среде
Системное проектирование на основе моделей (MBSE) — это применение моделей для поддержки полный жизненный цикл системы. Simulink объединяет процесс разработки требований и системной архитектуры с подробным проектированием компонентов, реализацией и тестированием.
Получите максимум от системного проектирования на основе моделей
Гибкая разработка программного обеспечения помогает командам быстрее приносить пользу своим клиентам, используя короткие итерационные циклы с акцентом на непрерывную интеграцию и командное сотрудничество. Моделирование, автоматизированное тестирование и генерация кода сокращают цикл разработки, позволяя вам стать успешной командой Agile.
Узнайте, почему гибкая разработка подходит вам и вашей команде
Используйте MATLAB и Simulink вместе, чтобы объединить возможности текстового и графического программирования в одной среде.
Примените свои знания MATLAB к:
«Simulink особенно полезен на двух этапах нашего процесса разработки. На раннем этапе это помогает нам пробовать новые идеи и визуализировать, как они будут работать. После генерации кода и проведения испытаний в автомобиле мы можем запускать несколько симуляций, улучшать дизайн и регенерировать код для следующей итерации».
Джонни Андерссон, Scania
Посмотреть другие истории клиентов
Получить бесплатную пробную версию
Посмотреть цены
Запросить цену
Используйте Simulink через веб-браузер.
Узнать больше
Узнайте, что нового в Simulink R2022a.
Посмотреть видео (18:04)
БЕСПЛАТНАЯ БЕЛАЯ БУМАГА
Модельно-ориентированное проектирование встроенных систем управления
Бесплатные уроки
Самостоятельные онлайн-курсы
Особенности выпуска
Что нового в последней версии MATLAB и Simulink
Выберите веб-сайт
Выберите веб-сайт, чтобы получить переведенный контент, где он доступен, и увидеть местные события и предложения. В зависимости от вашего местоположения мы рекомендуем вам выбрать: .
Вы также можете выбрать веб-сайт из следующего списка:
Обратитесь в местный офис
Согласно прогнозу McKinsey, к 2030 году ИИ создаст во всем мире экономическую стоимость в размере 13 триллионов долларов.
Это потому, что искусственный интеллект меняет инженерию почти во всех отраслях и областях применения.
Помимо автоматизированного вождения, ИИ также используется в моделях, которые прогнозируют отказы машин, указывая, когда они потребуют обслуживания; аналитика здоровья и датчиков, например, системы мониторинга пациентов; и роботизированные системы, которые учатся и совершенствуются непосредственно на основе опыта.
ИИ для инженеров: создание системы ИИ.3:40 Продолжительность видео 3:40.
ИИ для инженеров: создание системы ИИ
Для успеха с ИИ требуется нечто большее, чем обучение модели ИИ, особенно в системах, управляемых ИИ, которые принимают решения и действуют. Надежный рабочий процесс ИИ включает в себя подготовку данных, создание модели, проектирование системы, в которой модель будет работать, и развертывание на оборудовании или в корпоративных системах.
Этапы рабочего процесса ИИ.
Получение необработанных данных и превращение их в точную, эффективную и осмысленную модель является важным шагом. Фактически, представляет собой большую часть ваших усилий по искусственному интеллекту .
Подготовка данных требует знаний в предметной области , таких как опыт работы с речью и звуковыми сигналами, навигация и объединение датчиков, обработка изображений и видео, а также радар и лидар. Инженеры в этих областях лучше всего подходят для определения критических характеристик данных, которые не важны, и какие редкие события следует учитывать.
ИИ также использует огромные объемы данных. Тем не менее, маркировка данных и изображений утомительна и требует много времени. Иногда у вас недостаточно данных, особенно для критически важных с точки зрения безопасности систем. Создание точных синтетических данных может улучшить ваши наборы данных. В обоих случаях автоматизация имеет решающее значение для соблюдения сроков.
Ключевыми факторами успеха в моделировании систем ИИ являются:
Модели искусственного интеллекта существуют в полной системе. В автоматизированных системах вождения ИИ для восприятия должен интегрироваться с алгоритмами локализации и планирования пути, а также с элементами управления торможением, ускорением и поворотом.
ИИ используется в сценарии автоматического вождения.
Рассмотрите возможность использования ИИ в профилактическом обслуживании ветряных электростанций и управлении автопилотом для современных самолетов.
Подобные сложные системы с искусственным интеллектом требуют интеграции и моделирования.
Модели ИИ необходимо развернуть на ЦП, ГП и/или ПЛИС в конечном продукте, будь то часть встроенного или граничного устройства, корпоративной системы или облака. Модели ИИ, работающие на встроенном или периферийном устройстве, обеспечивают быстрые результаты, необходимые в полевых условиях, а модели ИИ, работающие в корпоративных системах и облаке, предоставляют результаты на основе данных, собранных на многих устройствах. Часто модели ИИ развертываются в комбинации этих систем.
Процесс развертывания ускоряется, когда вы генерируете код из своих моделей и ориентируетесь на свои устройства. Используя методы оптимизации генерации кода и аппаратно-оптимизированные библиотеки, вы можете настроить код так, чтобы он соответствовал профилю с низким энергопотреблением, требуемому встроенными и периферийными устройствами, или требованиям высокой производительности корпоративных систем и облака.
Хорошо задокументирована нехватка навыков в области ИИ. Однако инженеры и ученые, использующие MATLAB или Simulink ® обладают навыками и инструментами, необходимыми для создания систем на основе ИИ в своих областях знаний.
Вы потратите меньше времени на предварительную обработку данных. Приложения и типы данных MATLAB значительно сокращают время, необходимое для предварительной обработки данных, от данных датчиков временных рядов до изображений и текста. Функции высокого уровня позволяют легко синхронизировать разрозненные временные ряды, заменять выбросы интерполированными значениями, фильтровать зашумленные сигналы, разбивать необработанный текст на слова и многое другое. Вы можете быстро визуализировать свои данные, чтобы понять тенденции и выявить проблемы с качеством данных с помощью графиков и Live Editor.
Приложения MATLAB автоматизируют наземную маркировку изображений, видео и аудиоданных.
Для тестирования алгоритмов до получения данных от датчиков или другого оборудования можно сгенерировать синтетические данные из Simulink. Этот подход обычно используется в автоматизированных системах вождения, таких как адаптивный круиз-контроль, помощь в удержании полосы движения и автоматическое экстренное торможение.
Использование приложений для маркировки для рабочих процессов глубокого обучения, таких как семантическая сегментация.
Взаимодействие с платформами глубокого обучения.
Методы моделирования ИИ зависят от приложения.
Пользователи MATLAB развернули тысячи приложений для профилактического обслуживания, анализа датчиков, финансов и коммуникационной электроники. Statistics and Machine Learning Toolbox™ упрощает трудные задачи машинного обучения с помощью приложений для обучения и сравнения моделей, расширенной обработки сигналов и алгоритмов выделения признаков, классификации, регрессии и кластеризации для контролируемого и неконтролируемого обучения.
Компания ASML, производитель полупроводников, использовала методы машинного обучения для создания технологии виртуальной метрологии для улучшения выравнивания наложений в сложных структурах, составляющих микросхему. «Как инженер-технолог у меня не было опыта работы с нейронными сетями или машинным обучением. Я работал с примерами MATLAB, чтобы найти лучшие функции машинного обучения для создания виртуальной метрологии. Я не смог бы сделать это на C или Python — поиск, проверка и интеграция нужных пакетов заняли бы слишком много времени», — объяснил инженер Эмиль Шмитт-Уивер.
Модели MATLAB также имеют более быстрое выполнение, чем модели с открытым исходным кодом, для большинства статистических вычислений и вычислений машинного обучения.
Приложение Classification Learner, которое позволяет вам попробовать разные классификаторы и найти наиболее подходящий для вашего набора данных.
Инженеры используют возможности глубокого обучения MATLAB для автоматизированного вождения, компьютерного зрения, обработки речи и естественного языка и других приложений. Deep Learning Toolbox™ позволяет создавать, соединять, обучать и оценивать слои глубокой нейронной сети. Примеры и предварительно обученные сети упрощают использование MATLAB для глубокого обучения даже без знаний о передовых алгоритмах компьютерного зрения или нейронных сетях.
MATLAB позволяет инженерам работать вместе в различных средах глубокого обучения. Благодаря поддержке ONNX MATLAB позволяет импортировать и экспортировать последние модели в другие поддерживаемые платформы, включая TensorFlow, и из них.
Приложение Deep Network Designer, которое позволяет создавать, визуализировать и редактировать сети глубокого обучения.
В системах управления, которые извлекают выгоду из обучения на основе кумулятивного вознаграждения, обучение с подкреплением является идеальным методом. Reinforcement Learning Toolbox™ позволяет обучать политики с использованием DQN, A2C, DDPG и других алгоритмов обучения с подкреплением. Вы можете использовать эти политики для реализации контроллеров и алгоритмов принятия решений для сложных систем, таких как роботы и автономные системы. Вы можете реализовать политики с помощью глубоких нейронных сетей, полиномов или интерполяционных таблиц.
Использование Reinforcement Learning Toolbox для разработки и обучения политик.
Модели обработки естественного языка обычно используются для анализа настроений, профилактического обслуживания и тематического моделирования. Text Analytics Toolbox™ предоставляет алгоритмы и визуализации для предварительной обработки, анализа и моделирования текстовых данных. Он позволяет извлекать и обрабатывать необработанный текст из таких источников, как журналы оборудования, новостные ленты, опросы, отчеты операторов и социальные сети.
Используя методы машинного обучения, такие как LSA, LDA и встраивание слов, вы можете находить кластеры и создавать объекты из многомерных наборов текстовых данных. Функции, созданные с помощью Text Analytics Toolbox, можно комбинировать с функциями из других источников данных для создания моделей машинного обучения, использующих преимущества текстовых, числовых и других типов данных.
Идентификация тем в данных отчета о шторме.
Сложные системы, управляемые искусственным интеллектом, должны интегрироваться с другими алгоритмами. Дизайн системы и моделирование важны, потому что система в целом влияет на эффективность моделей ИИ. Инженеры используют Simulink для быстрой итерации проекта и тестирования с обратной связью.
Например, в автоматизированной системе вождения вы используете искусственный интеллект и моделирование для общего проектирования системы. Вы используете Simulink для моделирования динамики транспортного средства, разработки контроллера вождения и объединения сигналов различных датчиков. Вы используете MATLAB для разработки и обучения модели ИИ и включения обученной модели в Simulink для моделирования на уровне системы. Вы можете использовать программное обеспечение, такое как Unreal Engine, для синтеза изображений с камеры для подачи модели AI и для 3D-визуализации. Компания
Voyage, производящая беспилотные такси для пенсионеров, менее чем за три месяца развернула автономный автомобиль 3-го уровня. Интегрированная модель ускорила процесс от идеи до дорожных испытаний. Simulink позволяет им безопасно проводить испытания в опасных условиях.
Simulink также позволяет генерировать данные об отказах на основе известных условий отказа. На ветровой электростанции вы можете добавить синтетические данные об отказах к измеренным данным от ветряных турбин. Вы можете уточнить модель своей системы, чтобы получить точный прогноз будущих отказов оборудования.
Глубокое обучение в Simulink.3:45 Продолжительность видео 3:45.
Глубокое обучение в Simulink
Использование синтетических данных об отказах из модели вместе с измеренными данными для создания надежного прогноза будущих отказов.
Модели ИИ в MATLAB можно развернуть на встроенных устройствах или платах, полевых устройствах, в корпоративных системах или в облаке.
Для моделей глубокого обучения вы можете использовать GPU Coder™ для создания и развертывания графических процессоров NVIDIA ® CUDA ® .