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., блокируется без выходных портов), которые используют ПримечаниеЭта установка не позволена, если 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.