S-функции в режиме normal mode модели, на которые ссылаются,

Примечание

Для получения дополнительной информации смотрите Требования Модели - ссылки и Ограничения.

Когда 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);

Для получения информации о моделях, на которые ссылаются смотрите Основы Модели - ссылки.

Поддержка использования нескольких экземпляров моделей, на которые ссылаются, которые находятся в режиме normal mode

Вы, возможно, должны изменить S-функции, которые используются моделью так, чтобы S-функции работали с несколькими экземплярами моделей, на которые ссылаются, в Режиме normal mode. S-функции должны указать явным образом, что они поддерживают несколько экземпляров exec.

  • Для S-функций C используйте ssSupportsMultipleExecInstances(s, true).

  • Для S-функций файла MATLAB® используйте blockSupportMultipleExecInstances = true.

Ограничения для использования S-функций с несколькими экземплярами моделей, на которые ссылаются, в Режиме normal mode совпадают с ограничениями, которые применяются к использованию S-функций с блоком For Each Subsystem.

Смотрите также

| | |

Похожие темы

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