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