• Регистрация
Schogoleva
Schogoleva +2.03
н/д

О культуре моделирования

07.04.2021

Публикация о том, как можно сократить время моделирования в Simulink, зная особенности пирменения некоторых блоков. Рассмотренные приемы нельзя назвать оптимизацией, это просто культура моделирования. 

Познакомилась я с MATLAB в студенческие годы – те далекие времена, когда инсталляторы MATLAB, MathCad, Mathematica, Statistica могли уместиться на одном CD-диске. И это была любовь с первого запуска. Задания в этой программе выполнялись с удовольствием и в большем объеме, чего требовала учебная программа.

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

Для выяснения причин, по которым моделирование происходило так неспешно, был проведен анализ модели.

На рисунке 1 изображена исходная модель.

Рисунок 1 – Исходная модель

Рисунок 1 – Исходная модель

 

С помощью функции profile получила следующие данные о времени однократного моделирования (напомню, что запускать модель для получения нужных результатов приходилось многократно) и сразу определила слабое звено:

 

Таблица 1 – Отчет о выполнении исходной модели

Таблица 1 – Отчет о выполнении исходной модели

Время выполнения модели              32 с

*Self Time – время выполнения функции за исключением времени выполнения дочерних функций

 

Рисунок 2 – Подсистема Subsystem5

Рисунок 2 – Подсистема Subsystem5

 

Из таблицы 1 видно, что наибольшее время затрачено на выполнение функции square, которая скрывалась в блоке MATLAB Function подсистемы Subsystem5. Эта часть модели представляет собой широтно-импульсный модулятор ШИМ – устройство, которое преобразует заданный на вход уровень сигнала в импульс, длительность которого соответствует (пропорциональна) этому уровню. Проблема заключается в том, что при использовании блока MATLAB Function модель обращается в рабочее пространство MATLAB и это происходит каждую итерацию. Таким образом, количество вызовов функции square равно отношению времени выполнения к времени дискретизации. Заменить square можно с помощью подсистемы, включающей в себя стандартные блоки Simulink. Вариант такой подсистемы представлен на рисунке 3. Можно задать амплитуду, период ШИМ и период синхронизации ШИМ. Получился полноценный блок, как в стандартных библиотеках. Для сравнения с исходной моделью задаются параметры – рисунок 4, такие же, как в исходной модели. Модель с новым блоком представлена на рисунке 5.

 

Рисунок 3 – Подсистема ШИМ

Рисунок 3 – Подсистема ШИМ

 

Рисунок 4 – Маска блока ШИМ

Рисунок 4 – Маска блока ШИМ

 

Рисунок 5 – Модель с новым блоком ШИМ (PWM)

Рисунок 5 – Модель с новым блоком ШИМ (PWM)

 

Анализ времени выполнения функций модели c новым блоком представлен в таблице 2. Из полученных данных видно, что время выполнения новой модели в 6 раз меньше времени выполнения исходной.

Таблицы 2 вскрыла еще одну проблему - много времени уходит на выполнение функций блоков Scope. Это связано с тем, что количество точек, отображаемых блоком, не ограничено (чтобы можно было наблюдать данные в течении всего времени моделирования). Очевидно, что с увеличением времени моделирования, доля (%), которая приходится на выполнения функций, связанных с блоками Scope, возрастает. Для того, чтобы оценить выгоду, полученную от применения нового блока ШИМ, можно убрать блоки Scope и провести моделирование обоих систем для нескольких интервалов времени, например: 0,1 с; 0,25 с; 0,5с; 1,0 с. Результаты моделирования сведены в таблицу 3.

 

Таблица 2 – Отчет о выполнении модели с новым блоком

Таблица 2 – Отчет о выполнении модели

 

Таблица 3 – Результаты моделирования

Таблица 3 – Результаты моделирования

В данном случае большое время моделирование вызвано использованием блока MATLAB Function там, где можно применить стандартные блоки Simulink, и злоупотреблением визуализацией с помощью блоков Scope. Показано, как можно решить такую проблему.

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

Теги

    07.04.2021

    Комментарии