Завершающий доклад дня будет посвящён реализации и верификации разработанных алгоритмов обработки сигналов на конечных целевых платформах. Мы продемонстрируем современный подход к решению этой задачи в рамках концепции МОП, подразумевающий активное использование поведенческой модели алгоритма, а также автоматизацию многих этапов разработки и тестирования.
Завершающий доклад дня будет посвящён реализации и верификации разработанных алгоритмов обработки сигналов на конечных целевых платформах. Мы продемонстрируем современный подход к решению этой задачи в рамках концепции МОП, подразумевающий активное использование поведенческой модели алгоритма, а также автоматизацию многих этапов разработки и тестирования.
Безопасность на максималках: как писать надёжный C/C++ код для встраиваемых с...Andrey Karpov
В своем докладе автор расскажет о стандартах написания кода, созданных специально для высокоответственных встраиваемых систем, таких как MISRA C, MISRA C++ и AUTOSAR C++. Для тех, кто не слышал про эти стандарты, он проведет краткий экскурс: в чем их философия, каковы предпосылки их создания и где они используются. Также он расскажет, как сделать проект соответствующим этим стандартам.
Доклад будет полезен embedded-разработчикам, а также программистам, разрабатывающим критически важные программы.
Парсим и кодогенерируем для С++ с использованием clangcorehard_by
Зачастую в промышленном программировании возникают рутинные задачи, которые могут быть единожды эффективно решены с помощью кодогенерации. В докладе представлена классификация таких проблем в контексте С++ и предложено решение, основанное на семействе инструментов clang. Приводятся примеры решения подобных задач из реальных проектов.
Formal Verification of a Linux Security ModuleDenis Efremov
Формальная верификация модуля безопасности Linux. Презентация про проект AstraVer ИСП РАН. Доклад представлен на сессии коротких докладов летней школы Мастерчейн. НИУ ВШЭ, Москва, 09 июля 2018.
Юрий Василевский «Автоматизация в XCode»
Yandex Mobile Camp в Санкт-Петербурге 2012
http://events.yandex.ru/events/yamobcamp/spb-may-2012/
Xcode — основной инструментарий разработки приложений под Mac OS X и Apple iOS. Он обладает широкими возможностями как для редактирования кода, так и для автоматизации задач. Мы обсудим некоторые из аспектов автоматизации (Code Sense, Targets, Services, Help), связанные с нумерацией сборок билдов, форматированием и контролем стиля кода, анализом дублированных участков кода, управлением внешними библиотеками.
Yandex Mobile Camp в Санкт-Петербурге, 30 мая 2012
Юрий Василевский, ведущий разработчик EPAM Systems, Mobile Solutions
Тема: Автоматизация в XCode
Тезисы:
Xcode — основной инструментарий разработки приложений под Mac OS X и Apple iOS. Он обладает широкими возможностями как для редактирования кода, так и для автоматизации задач.
Мы рассмотрим некоторые из аспектов автоматизации (Code Sense, Targets, Services, Help), связанные с нумерацией сборок билдов, форматированием и контролем стиля кода, анализом дублированных участков кода, управлением внешними библиотеками.
Нужно ли статическому анализу машинное обучение?Andrey Karpov
Целью этого доклада является представление взгляда на использование машинного обучения в статическом анализе кода со стороны классического подхода. Нужен ли этот "инновационный подход" в этой сфере вообще и какие проблемы связаны с его использованием?
Рассмотрим популярные решения присутствующие на рынке и получим общее представление для каких задач в них используется машинное обучение. Проблемы обучения статического анализатора "вручную". Проблемы обучения на большом количестве открытого исходного кода. О том, решение каких задач в сфере статического анализа с использованием машинного обучения кажется особенно перспективным.
QA Fest 2015. Владимир Скляр. Организация тестирования встроенных систем в ко...QAFest
Когда наша компания стала поставлять системы на базе ПЛК на рынке атомной энергетики, возник вопрос подтверждения соответствия процессов разработки и тестирования различным стандартам в области безопасности. Мы создали и обучили команду тестировщиков, владеющую практиками статического анализа кода, функционального и структурного тестирования (как для этапа юнит-тестов, так и интеграции), а также симуляции физических сигналов. Вот как мы решили эту непростую задачу.
Есть три богатыря нагрузочного тестирования, и каждый инструмент хорош по-своему: Microsoft Visual Studio, HP LoadRunner и Apache JMeter. Хотели бы Вы выполнять нагрузочное тестирование удобно, бесплатно и правильно? Тогда можно взять от каждого инструмента самое лучшее. Впомогательные инструменты и структуру теста удобно взять из HP LoadRunner. Писать и отлаживать скрипт удобнее всего в Visual Studio. А подавать нагрузку, создавать контролируемое количество потоков выполнения, из Apache JMeter.
Open Source Testing Framework: real project example and best practicesAliaksandr Ikhelis
Summary: Presentation on open source testing frameworks (improved version, more focus on real project example) at Software Engineering Forum 2009 (SEF-1) conference by Aliaksandr Ikhelis. Sponte framework developer and owner is Stanislaw Wozniak, Expedia Limited, UK. Sponte project homepage: http://rubyforge.org/projects/sponte/; http://github.com/swozniak/sponte/tree/master
Безопасность на максималках: как писать надёжный C/C++ код для встраиваемых с...Andrey Karpov
В своем докладе автор расскажет о стандартах написания кода, созданных специально для высокоответственных встраиваемых систем, таких как MISRA C, MISRA C++ и AUTOSAR C++. Для тех, кто не слышал про эти стандарты, он проведет краткий экскурс: в чем их философия, каковы предпосылки их создания и где они используются. Также он расскажет, как сделать проект соответствующим этим стандартам.
Доклад будет полезен embedded-разработчикам, а также программистам, разрабатывающим критически важные программы.
Парсим и кодогенерируем для С++ с использованием clangcorehard_by
Зачастую в промышленном программировании возникают рутинные задачи, которые могут быть единожды эффективно решены с помощью кодогенерации. В докладе представлена классификация таких проблем в контексте С++ и предложено решение, основанное на семействе инструментов clang. Приводятся примеры решения подобных задач из реальных проектов.
Formal Verification of a Linux Security ModuleDenis Efremov
Формальная верификация модуля безопасности Linux. Презентация про проект AstraVer ИСП РАН. Доклад представлен на сессии коротких докладов летней школы Мастерчейн. НИУ ВШЭ, Москва, 09 июля 2018.
Юрий Василевский «Автоматизация в XCode»
Yandex Mobile Camp в Санкт-Петербурге 2012
http://events.yandex.ru/events/yamobcamp/spb-may-2012/
Xcode — основной инструментарий разработки приложений под Mac OS X и Apple iOS. Он обладает широкими возможностями как для редактирования кода, так и для автоматизации задач. Мы обсудим некоторые из аспектов автоматизации (Code Sense, Targets, Services, Help), связанные с нумерацией сборок билдов, форматированием и контролем стиля кода, анализом дублированных участков кода, управлением внешними библиотеками.
Yandex Mobile Camp в Санкт-Петербурге, 30 мая 2012
Юрий Василевский, ведущий разработчик EPAM Systems, Mobile Solutions
Тема: Автоматизация в XCode
Тезисы:
Xcode — основной инструментарий разработки приложений под Mac OS X и Apple iOS. Он обладает широкими возможностями как для редактирования кода, так и для автоматизации задач.
Мы рассмотрим некоторые из аспектов автоматизации (Code Sense, Targets, Services, Help), связанные с нумерацией сборок билдов, форматированием и контролем стиля кода, анализом дублированных участков кода, управлением внешними библиотеками.
Нужно ли статическому анализу машинное обучение?Andrey Karpov
Целью этого доклада является представление взгляда на использование машинного обучения в статическом анализе кода со стороны классического подхода. Нужен ли этот "инновационный подход" в этой сфере вообще и какие проблемы связаны с его использованием?
Рассмотрим популярные решения присутствующие на рынке и получим общее представление для каких задач в них используется машинное обучение. Проблемы обучения статического анализатора "вручную". Проблемы обучения на большом количестве открытого исходного кода. О том, решение каких задач в сфере статического анализа с использованием машинного обучения кажется особенно перспективным.
QA Fest 2015. Владимир Скляр. Организация тестирования встроенных систем в ко...QAFest
Когда наша компания стала поставлять системы на базе ПЛК на рынке атомной энергетики, возник вопрос подтверждения соответствия процессов разработки и тестирования различным стандартам в области безопасности. Мы создали и обучили команду тестировщиков, владеющую практиками статического анализа кода, функционального и структурного тестирования (как для этапа юнит-тестов, так и интеграции), а также симуляции физических сигналов. Вот как мы решили эту непростую задачу.
Есть три богатыря нагрузочного тестирования, и каждый инструмент хорош по-своему: Microsoft Visual Studio, HP LoadRunner и Apache JMeter. Хотели бы Вы выполнять нагрузочное тестирование удобно, бесплатно и правильно? Тогда можно взять от каждого инструмента самое лучшее. Впомогательные инструменты и структуру теста удобно взять из HP LoadRunner. Писать и отлаживать скрипт удобнее всего в Visual Studio. А подавать нагрузку, создавать контролируемое количество потоков выполнения, из Apache JMeter.
Open Source Testing Framework: real project example and best practicesAliaksandr Ikhelis
Summary: Presentation on open source testing frameworks (improved version, more focus on real project example) at Software Engineering Forum 2009 (SEF-1) conference by Aliaksandr Ikhelis. Sponte framework developer and owner is Stanislaw Wozniak, Expedia Limited, UK. Sponte project homepage: http://rubyforge.org/projects/sponte/; http://github.com/swozniak/sponte/tree/master
Доклад посвящен различным способам построения математического описания ОУ с точностью достаточной для разработки алгоритмов управления. Мы продемонстрируем как построить модель, имея математическое описание и данные экспериментов, снятые с объекта. Покажем как совместить имеющиеся модели и эксперименты для повышения точности.
На данном докладе мы познакомимся с новейшими методами проектирования сложных междисциплинарных систем (на примере РЛС), и посмотрим, как Модельно-Ориентированное Проектирование (МОП) помогает создавать подобные системы с меньшими трудозатратами.
В рамках этого доклада мы продемонстрируем преимущества сквозного моделирования систем связи, рассмотрим методики повышения точности описания компонентов модели, а также познакомимся с платформами программно-определяемого радио (SDR).
Первый доклад дня будет посвящён современным методам создания алгоритмов ЦОС, решению типовых задач обработки, а также преодолению таких трудностей, как обработка и визуализация потоковых данных, генерация специализированных сигналов, связь с контрольно-измерительным оборудованием.
· Различные подходы построения модели
· Новые возможности импорта, обработки и визуализации данных
· Работа с облаком ThingSpeak для интернета вещей
· Создание графических приложений с App Designer
Мы постараемся показать, как любой технический специалист может использовать различные методы машинного обучения в своей повседневной работе. Продемонстрируем специализированные инструменты Classification Learner и Regression Learner для быстрого обучения классификаторов и сравнения точности распознавания. Особе внимание уделим созданию и обучению сверточных нейронных сетей (CNN)
Мы покажем, как можно перенести разработанные алгоритмы для работы с Big Data с минимальными изменениями исходных программ. Рассмотрим возможности по распараллеливанию счета на многоядерных процессорах (вычислительных кластерах) и графических процессорах, поддерживающих CUDA.
Лучшие практики для повышения надежности разрабатываемых вами систем начиная от организации командной разработки до автоматизации тестирования алгоритмов и применения формальных методов для доказательства отсутствия ошибок.
Использование отладочных стендов является естественным шагом при внедрении модельно-ориентированного проектирования. Мы хотим показать как быстро и эффективно строить стенды реального времени для проведения безопасных испытаний систем управления.
3. 3
Темы секции
Автоматическая генерация кода
Оптимизация кода
Разработка пакетов поддержки для целевых
вычислителей
Применения технологии генерации кода
5. 5
Пользовательские истории
Dongfeng
Battery Management System
GM
Hybrid Powertrain
manroland
Printing Press Controller
Honeywell Aerospace
Flight Control Systems
OHB Corp
Satellite GNC Systems
TU München
Flight Simulator
6. 6
SAE Technical Paper 2004-01-0269, March 2004
http://www.mathworks.com/tagteam/20307_91197v00_Multi-Target_Modeling_2004-01-0269.pdf
Размер кода
Сгенерированный код
меньше, чем ручной
7. 7
MADC :Thales Dual Core Code Generation, March 2008
http://www.mathworks.com/tagteam/48884_Thales_DualCore.pdf
Скорость кода
Сгенерированный код
быстрее, чем ручной
8. 8
C/C++ Coders
MATLAB Coder – код из MATLAB
– Портируемый код для численных алгоритмов
– Десктопные приложения (и библиотеки)
Simulink Coder – код из Simulink
– Быстрое прототипирование и HIL
– Машины реального времени (Simulink Real-Time)
Embedded Coder – генерация производственного кода
– Встраиваемые приложения
– MCU и DSP (с фикс. или плав. точкой)
– Верификация кода (-в-контуре)
– Оптимизация под конкретный процессор
Все кодеры генерируют портируемый (ANSI/ISO C) код по умолчанию.
C/C++
Generate
MATLAB and Simulink
Algorithm and System Design
Verify
9. 9
HDL Coder
HDL Coder
VHDL и Verilog
ASIC и FPGA
Платформонезависимый
– По умолчанию
Платформозависимый
– Xilinx FPGA
– Altera FPGA
HDL Verifier
HDL co-simulation
– ModelSim, Incisive
FPGA in-the-loop (FIL)
– Xilinx, Altera
MCU DSP FPGA ASIC
C/C++ VHDL/Verilog
Generate
MATLAB and Simulink
Algorithm and System Design
Verify
Generate
Verify
10. 10
PLC Coder
Simulink PLC Coder
Structured text
PLC и PAC
Платформонезависимый
– По умолчанию
(IEC 61131)
Платформозависимый
– Rockwell
– Siemens
– B&R
– Другие
MCU DSP FPGA ASIC
C/C++ VHDL / Verilog
Generate
Simulink and Stateflow
Algorithm and System Design
Verify
Generate
Verify
PLC PAC
Structured Text
Generate
Verify
12. 12
Процесс разработки встраиваемой системы
с использованием МОП
Системные
требования
Проектирование
системы
Проектирование
ПО
Кодирование
Интеграция
ПО
Программно-
аппаратная
интеграция
Системная интеграция
и калибровка
Sim
RP
OTRP SIL
PIL
HIL
Sim: Симуляция
RP: Быстрое прототипирование
OTRP: БП на целевой платформе
PCG: Генерация производственного кода
SIL: Программа-в-контуре
PIL: Процессор-в-контуре
HIL: Железо-в-контуре
PCG
Моделирование
и симуляция
Исполняемые
спецификации
Непрерывное
тестирование
и
верификация
Автоматическая
генерация кода
Модели
22. 25
Экспорт алгоритма (код ANSI/ISO)
A B C
M
I NPUT
BLUE G REEN RED
PO W ER
RGBSplit-4BLACK BOX
V RCS
Драйверы
входов
Драйверы
выходов
Драйверы
спец.
устройств
Драйверы
интерф.
ОС, Планировщик
Интерфейсы
Датчики
Исполнительные
механизмы
Специальные
интерфейсы
Калибровка
Алгоритм
Модель
регулятора
23. 26
Поддерживает ли Embedded Coder мой процессор/мою
плату?
Автоматическая связь со средой разработки для процессора
Оптимизация под конкретный процессор
Специфические драйвера/блоки Simulink
Интеграция с RTOS/планировщиком/ISR
Processor-in-the-Loop симуляция
External Mode
Документированные API для реализации
своего пакета поддержки
24. 27
A B C
M
I NPUT
BLUE G REEN RED
PO W ER
RGBSplit-4BLACK BOX
V RCS
Сгенериро-
ванный код
Драйверы
входов
Драйверы
выходов
Драйверы
спец.
устройств
Драйверы
интерф.
ОС и планировщик
Интерфейсы
Датчики
Исполнительные
механизмы
Специальные интерфейсы
Калибровка
Ручной код
Модель
контроллера с
драйверами
Полный проект (Target Support)
Оптим. код
25. 28
Подходы к интеграции кода
Экспорт алгоритма Полный проект
Цель Серийное производство БП на целевой платформе
Мелкосерийное производство
Использование Системные инженеры и
программисты
Системные инженеры
Оборудование Любой процессор Определенные отладочные платы и
киты
Гибкость Выше Ниже
Простота
использования
(«под ключ»)
Работает после однократной
настройки
Работает «из коробки»
26. 29
Поддержка целевого оборудования
Примеры и API Embedded Coder
Ключевые API
Управление прототипом функции
Настраиваемые классы памяти
Pack-and-go
Code replacement tool
Legacy code tool
PIL и External Mode
S-Functions
Примеры (для TI C2000)
Экспорт алгоритма
>> rtwdemo_pmsmfoc_system
Полный проект
>> c2000_motor_algo
Дополнительные примеры и демо
ЦИТМ Экспонента предлагает сервис по
разработке поддержки оборудования
27. 30
Подстановка кода
Поддержка базовых операторов и
функций
– Add, Subtract, Multiply, Divide, ...
– Abs, Cos, Memset, Sqrt, …
Поддержка фикс. точки
Поддержка выравнивания данных
– Для SIMD, Intel IPP и т.п.
Поддержка MATLAB, Simulink, and
Stateflow
Замена операторов и функций в
модели на процессоро-
оптимизированные
void mDA_step(void)
{
matrix_add_4x4s_w_da(mDA_U.In1, mDA_U.In2,
&mDA_B.Add[0]);
……
matrix_mul_4x4s_w_da(mDA_U.In1, mDA_U.In2,
*(real32_T (*)[16])&mDA_Y.Out2[0]);
}
typedef struct {
__declspec(align(16)) real32_T Add[16];
} BlockIO_mDA;
typedef struct {
__declspec(align(16)) real32_T In1[16];
__declspec(align(16)) real32_T In2[16];
} ExternalInputs_mDA;
typedef struct {
real32_T Out1[16];
__declspec(align(16)) real32_T Out2[16];
} ExternalOutputs_mDA;
2
Out2
1
Out1
Matrix
Multiply
Mul
Add
2
In2
1
In1 single [4x4]
single [4x4][4x4]
[4x4]
single [4x4]
[4x4]
[4x4]
single [4x4]
model.c
model.h
>> echodemo rtwdemo_tfl_script
31. 34
Синхронизация с
хостом на каждом шаге (не
реальное время)
История выполнения
• Сравнение эквивалентности
• Покрытие кода
• Профилирование выполнения
Communication
Gateway
Как работают SIL и PIL
Симуляция на целевой платформе
36. 42
C *.dlm
Двигатель и силовая часть
Быстрое прототипирование алгоритмов управления
ШИМ, цифровые
выходы
Квадратурный
сигнал
Машина реального времени
37. 43
C/C++ *.hex
ШИМ, цифровые
выходы
C *.dlm
Полунатурное моделирование (HIL)
Машина реального времени
Квадратурный
сигнал
38. 44
C/C++ *.hex
ШИМ, цифровые
выходы
Независимое выполнение
Квадратурный
сигнал
Двигатель и силовая часть
39. 45
Тренинги
Курс «Генерация кода для встраиваемых систем с использованием
Embedded Coder» (3 дня)
Структура сгенерированного кода и его выполнение
Настройки генератора кода и параметры оптимизации
Интеграция сгенерированного кода с внешним кодом
Генерация кода для многочастотных систем
Настройка сгенерированного кода
Настройка данных сгенерированного кода
Развертывание кода
http://matlab.ru/training/SLEC
41. 47
Использование модельно-ориентированного
проектирования для разработки родстера от Tesla
«В Tesla мы разработали Tesla Roadster 2008, первый в мире
стопроцентно электрический спортивный автомобиль, при
бюджете всего $145 миллионов. Поскольку наш бюджет
крошечный по сравнению с традиционными автомобильными
компаниями, мы были вынуждены оптимизировать инженерные
ресурсы и искать остроумные проектные решения.
Для достижения этих целей мы использовали инструменты
MathWorks для модельно-ориентированного проектирования
(МОП): мы моделировали транспортное средство в целом и
его главные подсистемы, запускали детальные симуляции,
анализировали работу и оценивали компромиссы в
проекте.»
Доктор Крис Гадда и доктор Эндрю
Симпсон, компания Tesla Motors
http://matlab.ru/success-story/tesla
42. 48
Airbus разрабатывает систему управления подачей топлива для
A380 на основе модельно- ориентированного проектирования
Задача
Разработать контроллер для системы подачи топлива Airbus A380
Решение
Использовать MATLAB, Simulink и Stateflow для модельно-
ориентированного проектирования для создания модели и
симуляции управляющей логики, взаимодействия функциональных
спецификаций и ускорения разработки симуляторов
Результаты
Сокращены месяцы разработки
Полученные модели имеют многократное применение в процессе
всего проекта
Дополнительно возникающие трудности отрабатываются без
увеличения штата сотрудников
http://matlab.ru/success-story/airbus-razrabatyvaet-sistemu-upravleniya-podachey-topliva-dlya-a380-na-osnove-modelno-orientirovannogo-proektirovaniya
«Модельно-ориентированное
проектирование дало нам расширенную
видимость в функциональной
разработке системы. Так же мы
закончили валидацию требований
быстрее, чем это было
возможно ранее, и смогли
промоделировать многочисленные
одновременные отказы деталей,
поэтому мы знаем, что может
случиться, и быть уверенным в том,
что управляющая логика
справится с этим». — КРИСТОФЕР
СЛЭК, Airbus
43. 49
Alstom генерирует программный код для системы управления
преобразователем мощности с повышенными требованиями к
безопасности
Задача
Разработать и реализовать систему реального времени преобразователя
мощности, а также системы правления для трамваев, метро и железных дорог.
Решение
Использовать инструменты MathWorks для проектирования на основе концепции
модельно-ориентированного проектирования, моделирования и автоматической
генерации кода серийного производства для транспортных систем с
повышенными требованиями к безопасности.
Результаты
Время разработки сокращено на 50 процентов
Безошибочный, безопасный код был сгенерирован и сертифицирован
Утвержден единый язык общения между группами разработчиков
«Мы использовали инструменты
MathWorks для разработки,
тестирования, изменения и
реализации системы управления
привода на постоянных магнитах в
течение одного года. Учитывая
имеющиеся ресурсы, это было бы
невозможно сделать в соответствии
с графиком без инструментов
MathWorks», - Хан Гирлигс, Alstom
http://matlab.ru/success-story/alstom-generiruet-programmnyj-kod-dlya-gotovogo-produkta-serijnogo-proizvodstva-sistem-upravleniya-preobrazovatelem-
moshhnosti-s-povyshennymi-trebovaniyami-k-bezopasnostid
44. 50
Услуга: разработка пакета поддержки в Embedded Coder
Интеграция с набором инструментов для
построения кода
Независимое выполнение на целевой системе
(интеграция с планировщиком ОСРВ)
Верификация и профилирование в режиме
Процессор-в-контуре (PIL)
Генерация оптимизированного для целевой
системы кода
Специализированные блоки Simulink
Настройка параметров и отладка в режиме
External Mode
45. 51
Центр инженерных технологий и моделирования Экспонента
Вебинары, семинары, обучение, демонстрационные версии,
консалтинг, внедрение МОП :
www.MATLAB.ru
E-mail: matlab@exponenta.ru
Тел.: +7 (495) 009 65 85
Дополнительная информация:
www.mathworks.com, www.exponenta.ru
www.youtube.com/user/MATLABinRussia