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

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

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

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

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

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

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

DWorkТип использованияФункциональность
Общая информация SS_DWORK_USED_AS_DWORKСохраните постоянные данные конкретного образца. Векторы General 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Сохраните память, которая не является стойкой, например, большую переменную, которую вы не хотите отмечать в стеке. Векторы Scratch масштабируются до определенного метода S-функции (для примера mdlOutputs) и существовать через один временной шаг. Память Scratch может быть разделена между блоками s-function. Механизм Simulink пытается минимизировать объем памяти, используемый переменными scratch, и по возможности повторно использует память scratch.