Для получения дополнительной информации смотрите Требования Модели - ссылки и Ограничения.
Когда 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)
.
Для S-функций файла MATLAB® используйте blockSupportMultipleExecInstances = true
.
Ограничения для использования S-функций с несколькими экземплярами моделей, на которые ссылаются, в Режиме normal mode совпадают с ограничениями, которые применяются к использованию S-функций с Для Каждого блока Subsystem.
Уровень 2 S-функция MATLAB | Функция MATLAB | S-функция | Разработчик S-функции