Все векторы DWork являются памятью S-функций, которую представляет Simulink® управляет двигателем. Программное обеспечение Simulink поддерживает четыре типа векторов DWork:
Векторы General DWork содержат информацию любого типа данных.
Векторы DState содержат информацию о дискретном состоянии. Информация, сохраненная в векторе DState, появляется как состояние в линеаризированной модели и доступна во время логгирования состояния.
Векторы Scratch содержат значения, которые не должны сохраняться от одного временного шага до следующего.
Векторы Mode содержат информацию о режиме, обычно хранящуюся как логические или целочисленные данные.
S-функции регистрируют тип вектора DWork, используя ssSetDWorkUsageType
макрос. Этот макрос принимает один из четырех типов использования, описанных в следующей таблице.
DWork | Тип использования | Функциональность |
---|---|---|
Общая информация | SS_DWORK_USED_AS_DWORK | Сохраните постоянные данные конкретного образца. Векторы General DWork также могут использоваться для хранения данных о дискретном состоянии и режиме, однако механизм Simulink не будет специально обрабатывать эту информацию. Можно принять решение использовать общий вектор DWork для хранения информации о состоянии, если необходимо избежать логгирования данных. |
DState | SS_DWORK_USED_AS_DSTATE | Сохраните информацию о дискретном состоянии. Использование вектора DState вместо ssSetNumDiscStates хранение дискретных состояний обеспечивает большую гибкость для именования и ввода данных в состояния. Двигатель помечает блоки с дискретными состояниями как специальные во время распространения шага расчета. В сложение механизм делает данные, хранящиеся в векторе DState, доступными во время логгирования данных. |
Способ | SS_DWORK_USED_AS_MODE | Сообщите в механизм Simulink, что S-функция содержит режимы. Двигатель обрабатывает блоки с режимами специально при решении алгебраических циклов. В сложение двигатель обновляет S-функцию с режимами только на основных временных шагах. Векторы режима DWork более эффективны, чем рабочие векторы стандартного режима (см. «Элементарные рабочие векторы»), потому что они могут хранить информацию о режиме как логические данные. В сложение, в то время как S-функция имеет только один режим рабочих векторов, она может иметь несколько векторов DWork, сконфигурированных для хранения режимов. |
Царапина | SS_DWORK_USED_AS_SCRATCH | Сохраните память, которая не является стойкой, например, большую переменную, которую вы не хотите отмечать в стеке. Векторы Scratch масштабируются до определенного метода S-функции (для примера mdlOutputs ) и существовать через один временной шаг. Память Scratch может быть разделена между блоками s-function. Механизм Simulink пытается минимизировать объем памяти, используемый переменными scratch, и по возможности повторно использует память scratch. |