exponenta event banner

Типы векторов DWork

Все векторы DWork представляют собой S-функциональную память, управляемую механизмом Simulink ®. Программное обеспечение Simulink поддерживает четыре типа векторов DWork:

  • Общие векторы DWork содержат информацию любого типа данных.

  • Векторы Dstate содержат дискретную информацию о состоянии. Информация, сохраненная в векторе Dstate, отображается в линеаризованной модели как состояние и доступна во время регистрации состояния.

  • Скретч-векторы содержат значения, которые не должны сохраняться с одного шага времени до следующего.

  • Векторы режимов содержат информацию о режимах, обычно хранящуюся как логические или целочисленные данные.

S-функции регистрируют тип вектора DWork с помощью ssSetDWorkUsageType макро. Этот макрос принимает один из четырех типов использования, описанных в следующей таблице.

DWorkТип использованияФункциональность
Общая информация SS_DWORK_USED_AS_DWORKСохранение постоянных данных для конкретного экземпляра. Общие векторы DWork также могут использоваться для хранения дискретных данных о состоянии и режиме, однако механизм Simulink не будет обрабатывать эту информацию специально. Можно использовать общий вектор DWork для хранения информации о состоянии, если требуется избежать ведения журнала данных.
DStateSS_DWORK_USED_AS_DSTATEХранить дискретную информацию о состоянии. Использование вектора Dstate вместо ssSetNumDiscStates хранение дискретных состояний обеспечивает большую гибкость для именования и ввода данных состояний. Двигатель маркирует блоки с дискретными состояниями как специальные во время распространения времени выборки. Кроме того, механизм делает данные, сохраненные в векторе Dstate, доступными во время регистрации данных.
СпособSS_DWORK_USED_AS_MODEДля модуля Simulink укажите, что S-функция содержит режимы. Движок обрабатывает блоки с режимами специально при решении алгебраических циклов. Кроме того, механизм обновляет S-функцию с режимами только на основных временных шагах. Векторы режима DWork эффективнее, чем рабочие векторы стандартного режима (см. Элементарные рабочие векторы), поскольку они могут хранить информацию о режиме в виде булевых данных. Кроме того, хотя S-функция имеет только один рабочий вектор режима, она может иметь несколько векторов DWork, сконфигурированных для хранения режимов.
ЦарапинаSS_DWORK_USED_AS_SCRATCHХраните память, которая не является постоянной, например, большую переменную, которую не нужно отмечать в стеке. Векторы скретча привязаны к определенному методу S-функции (например, mdlOutputs) и существуют на одном временном шаге. Скретч-память может быть разделена между S-функциональными блоками. Модуль Simulink пытается минимизировать объем памяти, используемый переменными scratch, и по возможности повторно использует память scratch.