Simulink® позволяет вам задать шаг расчета блока непосредственно как числовое значение или символически путем определения вектора времени расчета. В случае дискретного шага расчета вектор является [Ts
,
] где To
- период дискретизации и Ts
- начальное смещение времени. Например, рассмотрим дискретную модель, которая производит свои выходы каждые две секунды. Если ваш базовый модуль времени является секундами, можно непосредственно задать дискретный шаг расчета, задав числовое значениеTo
2
как SampleTime
параметр. Поскольку значение смещения равно нулю, вам не нужно его задавать; однако можно ввести [2,0
] в поле Sample time.
Для недискретных блоков компонентами вектора являются символические значения, которые представляют один из типов в Типах шага расчета. В следующей таблице представлены эти типы и соответствующие шаги расчета. Таблица также определяет явный характер каждого типа шага расчета и определяет связанный цвет и аннотацию. Поскольку унаследованный шаг расчета явное, можно задать его как [-1, 0]
или как -1
. Принимая во внимание, что срабатывающий шаг расчета неявен; только Simulink может назначить шаг расчета [-1, -1]
. (Для получения дополнительной информации о цветах и аннотациях смотрите Просмотр информации о шаге расчета.)
Обозначения информации о шаге расчета
Тип шага расчета | Шаг расчета | Цвет | Аннотация | Явный |
---|---|---|---|---|
Дискретный | [Ц, К] | В порядке убывания скорости: красный, зеленый, синий, светло-синий, темно-зеленый, оранжевый | D1, D2, D3, D4, D5, D6, D7... Di | Да |
Непрерывный | [0, 0] | черный | Продолжение следует | Да |
Исправлено в мелком шаге | [0, 1] | серый | FiM | Да |
Унаследованный | [–1, 0] | Н/Д | Н/Д | Да |
Постоянный | [Inf, 0] | пурпурный | Inf | Да |
Переменная | [-2,Tvo] | коричневый | V1, V2... Вай | Нет |
Управляемый | [основа, -2i], i = 0, 1, 2,..., | коричневый | Ctrl1, Ctrl2, Ctrl3, …. Ctrli | Да |
Гибрид | Н/Д | желтый | Н/Д | Нет |
Вызванный | Source: D 1, Источник: D2,... Источник: Di | голубой | T1, T2... Ti | Нет |
Асинхронный | [-1, -n] | фиолетовый | A1, A2... Ай | Нет |
Поток информации | Н/Д | светло-фиолетовый | Н/Д | Нет |
Цвет, который назначается каждому блоку, зависит от его шага расчета относительно других шагов расчета в модели. Это означает, что одному и тому же шагу расчета могут быть назначены различные цвета в родительской модели и в моделях, на которые он ссылается. (См. «Модели-ссылки».)
Например, предположим, что модель задает три шага расчета: 1
, 2
, и 3
. Кроме того, предположим, что она ссылается на модель, которая задает два шага расчета: 2
и 3
. В этом случае блоки, работающие на 2
частота дискретизации появляется зеленым цветом в родительской модели и красным цветом в ссылочной модели.
Важно отметить, что Mux и Demux блоки - это просто группировка операторов; проходящие через них сигналы сохраняют свои времена выполнения. По этой причине линии, исходящие из блока Demux, могут иметь различные цвета, если они управляются источниками, имеющими разные шаги расчета. В этом случае блоки Mux и Demux кодируются как гибриды (желтые), чтобы указать, что они обрабатывают сигналы с несколькими скоростями.
Точно так же блоки Subsystem, которые содержат блоки с различными шагами расчета, также окрашены как гибриды, потому что с ними не связана единственная скорость. Если все блоки подсистемы выполняются с одной скоростью, блок Subsystem окрашивается в соответствии с этой частотой.
Можно использовать явные значения шага расчета в этой таблице, чтобы задать шаги расчета в интерактивном или программном режиме для основанных на блоках или основанных на портах шагов расчета.
Следующая модель, ex_specify_sample_time
, служит в качестве ссылки для этого раздела.
ex_specify_sample_time
В этом примере установите шаг расчета входного сигнала синусоиды равным 0.1
. Цель состоит в том, чтобы достичь выходного шага расчета 0.2
. Блок Rate Transition служит удержанием нулевого порядка. Получившийся блок после установки шагов расчета и симуляции модели показана на следующем рисунке. (Цвета и аннотации указывают, что это дискретная модель.)
ex_specify_sample_time после установки шагов расчета
Чтобы задать шаг расчета блока в интерактивном режиме:
В окне модели Simulink дважды кликните блок. Откроется диалоговое окно параметров блоков.
Введите шаг расчета в поле Sample time.
Нажмите OK.
Ниже показан рисунок диалогового окна параметров для блока Sine Wave после ввода 0.1
в поле Sample time.
Чтобы задать и просмотреть основанные на блоках шаги расчета во всей модели, рассмотрите использование Model Data Editor (на вкладке Modeling, нажмите Model Data Editor). На Inports/Outports, Signals и Data Stores вкладках установите выпадающий список Change view равным Design
и используйте столбец Sample Time. Дополнительные сведения о Model Data Editor см. в разделе Настройка свойств данных при помощи Model Data Editor.
Блок Rate Transition имеет основанные на портах шаги расчета. Вы можете установить выходу порт шага расчета в интерактивном режиме, выполнив следующие шаги:
Дважды кликните Rate Transition блок. Откроется диалоговое окно параметров.
Оставьте выбор раскрывающегося меню Output port sample time options следующим Specify
.
Замените -1
в Output port sample time поле с 0.2
.
Нажмите OK.
Для получения дополнительной информации об опциях шага расчета в диалоговом окне Параметры перехода скорости (Rate Transition parameters) см. Rate Transition страницы с описанием.
Чтобы задать программно шаг расчета блока, установите его SampleTime
параметр к желаемому шагу расчета с использованием set_param
команда. Например, чтобы задать шаг расчета блока Gain в модели Specify_Sample_Time равным унаследованному (-1
), введите следующую команду:
set_param('Specify_Sample_Time/Gain','SampleTime','[-1, 0]')
Как и в случае интерактивной спецификации, можно ввести только первый векторный компонент, если второй компонент равен нулю.
set_param('Specify_Sample_Time/Gain','SampleTime','-1')
Чтобы задать шаг расчета выходного порта блока Rate Transition равным 0.2
, использовать set_param
команда с параметром OutPortSampleTime
:
set_param('Specify_Sample_Time/Rate Transition',... 'OutPortSampleTime', '0.2')
Чтобы получить доступ ко всем шагам расчета, сопоставленным с моделью, используйте API Simulink.BlockDiagram.getSampleTimes
.
Чтобы получить доступ ко шаг расчета одного блока, используйте API Simulink.Block.getSampleTimes
.
Можно проектировать пользовательские блоки, чтобы входные и выходные порты работали с различными шагами расчета. Для получения информации об указании основанных на блоках и основанных на портах шагов расчета для S-функций, смотрите Specify S-Function Sample Time.
Поскольку выполнение модели Simulink не зависит от определенного набора модулей, вы должны определить соответствующий базовый временной модуль для вашего приложения и задать значения шага расчета соответственно. Для примера, если ваш базовый модуль времени является вторым, то вы представите шагу расчета 0.5
во-вторых, установив значение шага расчета 0.5
.
Чтобы изменить шаг расчета после начала моделирования, вы должны остановить симуляцию, сбросить SampleTime
Параметр, а затем перезапустите выполнение.