Соответствие S-функции с SimState

Спецификация соответствия SimState для S-функций C-MEX

Как с S-функцией MATLAB®, ваш код S-функции C-MEX должен сообщить Simulink® соответствия S-функции с функцией SimState. Можно выполнить эту задачу при помощи API S-функции, ssSetSimStateCompliance.

В большинстве случаев определение соответствия, чтобы быть значением по умолчанию достаточно, чтобы сохранить и восстановить необходимые данные состояния. Чтобы задать соответствие по умолчанию, добавьте эту строку:

ssSetSimStateCompliance(S, USE_DEFAULT_SIM_STATE).

Опции следующие:

УстановкаРезультат
SIM_STATE_COMPLIANCE_UNKNOWNЭто - настройка по умолчанию для всех S-функций. Для S-функций, которые не используют PWorks, Симулинк сохраняет и восстанавливает состояние моделирования по умолчанию (см. следующую опцию), и выдает предупреждение, чтобы сообщить пользователю этого предположения. С другой стороны, Симулинк сообщает об ошибке во время сохранения и восстановления, если это сталкивается с S-функцией, которая использует PWorks.
USE_DEFAULT_SIM_STATEЭта установка дает Simulink команду обрабатывать S-функцию как встроенный блок при сохранении и восстановлении SimState.
HAS_NO_SIM_STATE

Эта установка сообщает Симулинку, что S-функция не имеет никакого состояния моделирования. С этой установкой никакая информация состояния не сохранена для этого блока. Эта установка, в основном, полезна для блоков "приемника" (i. e., блокируется без выходных портов), которые используют PWorks или DWorks, чтобы сохранить указатели на файлы или окна фигуры.

Примечание

Эта установка не позволена, если S-функция указывает какие-либо дискретные или непрерывные состояния или нулевые сигналы пересечения.

DISALLOW_SIM_STATEЭта установка сообщает Симулинку, что S-функция не позволяет сохранение или восстановление его состояния моделирования. Симулинк сообщает об ошибке, если вы сохраняете и восстанавливаете SimState модели, которая содержит эту S-функцию.
USE_CUSTOM_SIM_STATEЭта установка сообщает Симулинку, что S-функция имеет методы mdlSetSimState и mdlGetSimState.

Для S-функций, которые используют векторы PWork или статические переменные, чтобы содержать данные, которые Simulink обновляет во время моделирования, S-функция должна использовать пользовательский mdlGetSimState и методы mdlSetSimState. Следующие операторы демонстрируют соответствующий формат.

mxArray* mdlGetSimState(SimStruct* S)
void mdlSetSimState(SimStruct* S, const mxArray* inSS)

Для примера того, как реализовать эти методы, смотрите sfun_simstate.c c.

Похожие темы

Была ли эта тема полезной?