Примечание
Для получения дополнительной информации смотрите Требования Модели - ссылки и Ограничения.
Когда S-функция C появляется в модели, на которую ссылаются, которая выполняется в Режиме normal mode, успешное выполнение невозможно, если все следующее верно:
S-функция имеет обоих mdlProcessParameters
функционируйте и mdlStart
функция.
mdlProcessParameters
функция зависит от mdlStart
функция.
Модель, на которую ссылаются, вызывает mdlProcessParameters
прежде, чем вызвать mdlStart
.
Выполнение перестало работать потому что mdlProcessParameters
имеет требования зависимости что mdlStart
не удовлетворил. Автоматизированный анализ не может принять меры против всех возможных причин такого отказа: необходимо проверять код вручную и проверить тот mdlProcessParameters
ни в коем случае не зависит от mdlStart
быть названным сначала. Примеры такой зависимости включают:
Выделение памяти в mdlStart
и использование той памяти в mdlProcessParameters
. Это часто делается с помощью ssSetUserData
и ssGetUserData
.
Инициализация любого DWork или любой глобальной памяти в mdlStart
и чтение значений в mdlProcessParameters
.
Чтобы напомнить вам проверять на любые такие проблемы зависимости, сообщение об ошибке появляется по умолчанию для любой S-функции, которая используется в Режиме normal mode модель, на которую ссылаются, и содержит обоих mdlProcessParameters
функционируйте и mdlStart
функция. Сообщение об ошибке не означает, что любые проблемы зависимости существуют, но только что они могут существовать.
Если вы получаете такое сообщение об ошибке, проверяйте на любые проблематичные зависимости в S-функции и перекод по мере необходимости, чтобы устранить их. Когда никакие такие зависимости не существуют, можно безопасно подавить сообщение об ошибке и использовать S-функцию в Режиме normal mode модель, на которую ссылаются. Сертифицировать, что S-функция совместима, и сообщение, является поэтому ненужным, включайте следующий оператор в mdlInitializeSizes
:
ssSetModelReferenceNormalModeSupport (S, MDL_START_AND_MDL_PROCESS_PARAMS_OK);
Для получения информации о моделях, на которые ссылаются смотрите Основы Модели - ссылки.
Вы, возможно, должны изменить S-функции, которые используются моделью так, чтобы S-функции работали с несколькими экземплярами моделей, на которые ссылаются, в Режиме normal mode. S-функции должны указать явным образом, что они поддерживают несколько exec
экземпляры.
Для S-функций C используйте ssSupportsMultipleExecInstances(s, true)
.
Для MATLAB® S-функции файла, используйте blockSupportMultipleExecInstances = true
.
Ограничения для использования S-функций с несколькими экземплярами моделей, на которые ссылаются, в Режиме normal mode совпадают с ограничениями, которые применяются к использованию S-функций с блоком For Each Subsystem.
Level-2 MATLAB S-Function | S-Function Builder | S-Function | MATLAB Function