Первая фаза моделирования происходит при открытой модели системы и моделировании модели. В редакторе Simulink ® нажмите кнопку Выполнить. При выполнении моделирования модуль Simulink вызывает компилятор модели. Компилятор модели преобразует модель в исполняемую форму, процесс, называемый компиляцией. В частности, компилятор:
Вычисляет выражения параметров блока модели для определения их значений.
Определяет атрибуты сигнала, например имя, тип данных, числовой тип и размерность, явно не определенные моделью, и проверяет, может ли каждый блок принимать сигналы, подключенные к его входам.
Распространяет атрибуты исходного сигнала на входы блоков, которые он управляет, чтобы вычислить ранее не определенные атрибуты в блоках.
Выполняет оптимизацию сокращения блоков.
Выравнивает иерархию модели путем замены виртуальных подсистем блоками, которые они содержат (см. Сравнение решателей).
Определяет порядок выполнения блока по сортировке на основе задач.
Определяет время выборки всех блоков в модели, время выборки которых явно не указано (см. раздел Как распространение влияет на наследуемое время выборки).
Эти события по существу аналогичны событиям, происходящим при обновлении диаграммы (Обновить схему и Выполнить моделирование). Отличие состоит в том, что программное обеспечение Simulink начинает компиляцию модели как часть моделирования модели, где компиляция приводит непосредственно к фазе связывания, как описано в разделе Фаза связывания. Напротив, явное обновление модели запускается как автономная операция для модели.
При компиляции модели или иерархии модели можно отменить компиляцию модели, нажав кнопку Отмена (Cancel) рядом с индикатором выполнения.
На этой фазе механизм Simulink выделяет память, необходимую для рабочих областей (сигналов, состояний и параметров времени выполнения) для выполнения блок-схемы. Он также распределяет и инициализирует память для структур данных, которые хранят информацию времени выполнения для каждого блока. Для встроенных блоков основная структура данных времени выполнения для блока называется SimBlock. Он сохраняет указатели на входные и выходные буферы блока, а также векторы состояния и работы.
На этапе «Связь» модуль Simulink также создает списки выполнения методов. В этих списках перечисляется наиболее эффективный порядок вызова блочных методов модели для вычисления ее выходных данных. Списки порядка выполнения блоков, сгенерированные на этапе компиляции модели, используются для построения списков выполнения методов.
Блоки можно назначать приоритеты обновления. Способы вывода блоков с более высоким приоритетом выполняются до способов вывода блоков с более низким приоритетом. Эти приоритеты соблюдаются только в том случае, если они согласуются с порядком выполнения блока.
После завершения фазы связи моделирование переходит в фазу цикла моделирования. На этой фазе механизм Simulink последовательно вычисляет состояния и выходы системы с интервалами от времени начала моделирования до времени окончания, используя информацию, предоставленную моделью. Последовательные моменты времени, в которые вычисляются состояния и выходы, называются временными шагами. Промежуток времени между шагами называется размером шага. Размер шага зависит от типа решателя (см. Compare Solvers), используемого для вычисления непрерывных состояний системы, основного времени выборки системы (см. Sample Times in Systems) и от того, имеют ли непрерывные состояния системы разрывы (см. Zero-Crossing Detection).
Фаза цикла моделирования имеет две подфазы: фазу инициализации цикла и фазу итерации цикла. Фаза инициализации происходит один раз в начале цикла. Фаза итерации повторяется один раз за шаг времени от времени начала моделирования до времени окончания моделирования.
В начале моделирования модель определяет начальные состояния и выходы системы, подлежащей моделированию. На каждом шаге вычисляются новые значения для входов, состояний и выходов системы, и модель обновляется для отражения вычисленных значений. В конце моделирования модель отражает конечные значения входов, состояний и выходов системы. Программное обеспечение Simulink обеспечивает отображение данных и блоки регистрации. Промежуточные результаты можно просмотреть и/или записать в журнал, включив эти блоки в модель.
Следующая блок-схема объясняет, как работает цикл моделирования, где k обозначает счетчик основных шагов:
На каждом шаге времени движок Simulink:
Вычисляет выходные данные модели.
Модуль Simulink инициирует этот шаг, вызывая метод Simulink model Outputs. Метод «Выходные данные модели», в свою очередь, вызывает метод «Выходные данные системы модели», который вызывает методы «Выходные данные» блоков, содержащихся в модели, в порядке, указанном в списках выполнения метода «Выходные данные», созданных на фазе «Связь» моделирования (см. Сравните решатели).
Системный метод Outputs передает каждому блоку метод Outputs следующие аргументы: указатель на структуру данных блока и его структуру SimBlock. Структуры данных SimBlock указывают на информацию о том, что метод Outputs должен вычислять выходные данные блока, включая местоположение его входных буферов и его выходных буферов.
Вычисляет состояния модели.
Модуль Simulink вычисляет состояния модели, вызывая решатель. То, какой решатель он вызывает, зависит от того, не имеет ли модель состояний, только дискретных состояний, только непрерывных состояний или как непрерывных, так и дискретных состояний.
Если модель имеет только дискретные состояния, механизм Simulink вызывает выбранный пользователем дискретный решатель. Решатель вычисляет размер временного шага, необходимого для определения времени образца модели. Затем вызывается метод Update модели. Метод обновления модели вызывает метод Update своей системы, который вызывает методы Update каждого из блоков, содержащихся в системе, в порядке, указанном в списках методов Update, созданных на фазе Link.
Если модель имеет только непрерывные состояния, модуль Simulink вызывает решатель непрерывной обработки, заданный моделью. В зависимости от решателя решатель либо в свою очередь вызывает метод «Производные» модели один раз, либо вводит подцикл второстепенных временных шагов, где решатель многократно вызывает методы «Выходы» модели и «Производные» для вычисления выходов и производных модели с последовательными интервалами в пределах основного временного шага. Это делается для повышения точности вычисления состояния. Методы модели Outputs и Derivatives, в свою очередь, вызывают соответствующие им системные методы, которые вызывают блок Outputs и Derivatives в порядке, указанном в списках выполнения методов Outputs и Derivatives, созданных на фазе Link.
Опционально проверяет разрывы в непрерывном состоянии блоков.
Метод, называемый обнаружением пересечения нуля, используется для обнаружения разрывов в непрерывных состояниях. Дополнительные сведения см. в разделе Обнаружение пересечения нулей.
Вычисляет время для следующего временного шага.
Этапы 1-4 повторяются до тех пор, пока не будет достигнуто время остановки моделирования.