О культуре моделирования
Публикация о том, как можно сократить время моделирования в Simulink, зная особенности пирменения некоторых блоков. Рассмотренные приемы нельзя назвать оптимизацией, это просто культура моделирования.
Познакомилась я с MATLAB в студенческие годы – те далекие времена, когда инсталляторы MATLAB, MathCad, Mathematica, Statistica могли уместиться на одном CD-диске. И это была любовь с первого запуска. Задания в этой программе выполнялись с удовольствием и в большем объеме, чего требовала учебная программа.
Студенческие годы закончились практикой на предприятии и трудоустройством. Радости моей не было предела, когда на новом месте меня встретили мои старые знакомые MATLAB и Simulink. Выдали мне модель управляющего контура. Задача была следующая: сделать моделирование несколько раз с разными параметрами. Запустив модель, поняла, почему такую ответственную работу поручили зеленому новичку: моделирование занимало огромное количество времени, весь процесс длился часами. Вот она – возможность показать себя и, возможно, избежать мучительной рутины, которая, несомненно, ожидала меня.
Для выяснения причин, по которым моделирование происходило так неспешно, был проведен анализ модели.
На рисунке 1 изображена исходная модель.
Рисунок 1 – Исходная модель
С помощью функции profile получила следующие данные о времени однократного моделирования (напомню, что запускать модель для получения нужных результатов приходилось многократно) и сразу определила слабое звено:
Таблица 1 – Отчет о выполнении исходной модели
Время выполнения модели 32 с
*Self Time – время выполнения функции за исключением времени выполнения дочерних функций
Рисунок 2 – Подсистема Subsystem5
Из таблицы 1 видно, что наибольшее время затрачено на выполнение функции square, которая скрывалась в блоке MATLAB Function подсистемы Subsystem5. Эта часть модели представляет собой широтно-импульсный модулятор ШИМ – устройство, которое преобразует заданный на вход уровень сигнала в импульс, длительность которого соответствует (пропорциональна) этому уровню. Проблема заключается в том, что при использовании блока MATLAB Function модель обращается в рабочее пространство MATLAB и это происходит каждую итерацию. Таким образом, количество вызовов функции square равно отношению времени выполнения к времени дискретизации. Заменить square можно с помощью подсистемы, включающей в себя стандартные блоки Simulink. Вариант такой подсистемы представлен на рисунке 3. Можно задать амплитуду, период ШИМ и период синхронизации ШИМ. Получился полноценный блок, как в стандартных библиотеках. Для сравнения с исходной моделью задаются параметры – рисунок 4, такие же, как в исходной модели. Модель с новым блоком представлена на рисунке 5.
Рисунок 3 – Подсистема ШИМ
Рисунок 4 – Маска блока ШИМ
Рисунок 5 – Модель с новым блоком ШИМ (PWM)
Анализ времени выполнения функций модели c новым блоком представлен в таблице 2. Из полученных данных видно, что время выполнения новой модели в 6 раз меньше времени выполнения исходной.
Таблицы 2 вскрыла еще одну проблему - много времени уходит на выполнение функций блоков Scope. Это связано с тем, что количество точек, отображаемых блоком, не ограничено (чтобы можно было наблюдать данные в течении всего времени моделирования). Очевидно, что с увеличением времени моделирования, доля (%), которая приходится на выполнения функций, связанных с блоками Scope, возрастает. Для того, чтобы оценить выгоду, полученную от применения нового блока ШИМ, можно убрать блоки Scope и провести моделирование обоих систем для нескольких интервалов времени, например: 0,1 с; 0,25 с; 0,5с; 1,0 с. Результаты моделирования сведены в таблицу 3.
Таблица 2 – Отчет о выполнении модели с новым блоком
Таблица 3 – Результаты моделирования
В данном случае большое время моделирование вызвано использованием блока MATLAB Function там, где можно применить стандартные блоки Simulink, и злоупотреблением визуализацией с помощью блоков Scope. Показано, как можно решить такую проблему.
Вот так скучная рутинная работа превратилась в увлекательное исследование, позволившее мне представить себя как хорошего специалиста и завоевать уважение в новом коллективе и поощрение начальства.
Комментарии