Используйте проверки Simulink® Model Advisor, чтобы сконфигурировать вашу модель для симуляции.
Simulink Coder проверяет (Simulink Coder)
Simulink Check проверяет (Simulink Check)
Упрощенный режим инициализации был введен в R2008b, чтобы улучшить непротиворечивость результатов симуляции. Этот режим особенно важен для моделей, которые не задают начальные условия для условно выполняемых выходных портов подсистемы. Для получения дополнительной информации смотрите Упрощенный Режим Инициализации и Классический Режим Инициализации.
Использование Model Advisor регистрируется в Migrating to Simplified Initialization Mode, чтобы помочь переместить вашу модель на упрощенный режим инициализации.
ID проверки: mathworks.design.UnconnectedLinesPorts
Проверяйте на несвязанные линии или порты.
Это контрольные списки несвязанные линии или порты. Они могут испытать затруднения при распространении атрибутов сигнала, таких как тип данных, шаг расчета и размерности.
Порты, соединенные с блоками земли/терминатора строки, пройдут этот тест.
Условие | Рекомендуемое действие |
---|---|
Линии, входные порты или выходные порты не связаны. | Соедините сигналы. Дважды кликните список несвязанных элементов, чтобы определить местоположение отказа. |
Вы можете:
Осуществите эту проверку своих моделей библиотеки.
Исключите блоки и графики от этой проверки, если у вас есть лицензия Simulink Check™.
Используйте PortConnectivity
команда, чтобы получить массив структур, описывающих порты ввода или вывода блока.
Common Block Properties для получения информации о PortConnectivity
команда.
Обзор исключения Model Advisor (Simulink Check)
ID проверки: mathworks.design.RootInportSpec
Проверяйте, что корневые блоки модели Inport полностью задают размерности, шаг расчета и тип данных.
Используя корневые блоки модели Inport, которые не полностью задают размерности, шаг расчета или тип данных может привести к нежелательным результатам симуляции. Программное обеспечение Simulink назад - распространяет размерности, шаги расчета и типы данных от нисходящих блоков, если вы явным образом не присваиваете их значения.
Условие | Рекомендуемое действие |
---|---|
Корневой уровень блоки Inport имеет неопределенные атрибуты. | Полностью задайте атрибуты корневого уровня блоки Inport. |
Если у вас есть лицензия Simulink Check, можно исключить блоки и графики от этой проверки.
Следующие настройки передают эту проверку:
Configuration Parameters > Solver > Periodic sample time constraint установлен в Ensure sample time independent
Для моделей экспорта функций не отмечается наследованный шаг расчета.
ID проверки: mathworks.design.OptimizationSettings
Проверяйте на оптимизацию, которая может привести к неоптимальной генерации кода и симуляции.
Эта проверка рассматривает состояние оптимизации, которая может повысить эффективность кода и время симуляции.
Условие | Рекомендуемое действие |
---|---|
Заданная оптимизация выключена. | Установите следующие флажки оптимизации на панели Optimization в диалоговом окне Configuration Parameters:
Установите следующие флажки оптимизации на панели Optimization в диалоговом окне Configuration Parameters:
Установите следующие флажки оптимизации в диалоговом окне Configuration Parameters:
Установите следующие флажки оптимизации на панели Optimization в диалоговом окне Configuration Parameters: ПримечаниеModel Advisor проверяет эти параметры, только если существует график Stateflow® в модели.
|
Продолжительность жизни приложения (дни) установлена как бесконечная. Это могло привести к дорогому 64-битному встречному использованию. | Выберите время остановки, если это не предназначается. |
Заданная диагностика, которая может увеличить время, которое требуется, чтобы симулировать вашу модель, установлена в warning или error . | Выберите
|
Заданные параметры Embedded Coder® выключены. | Если у вас есть лицензия Embedded Coder, и вы используете основанный на ERT системный конечный файл:
|
Если система содержит блоки Model, и модель, на которую ссылаются, находится в Режиме Accelerator, симулирование модели требует генерации и компиляции кода.
проверять
Параметры конфигурации модели: оптимизация генерации кода (Simulink Coder)
ID проверки: mathworks.design.ModelRefSIMConfigCompliance
Проверки на модели, на которые ссылаются, для которых Simulink изменяет настройки параметра конфигурации во время ускоренной симуляции.
Для моделей, на которые ссылаются в режиме Accelerator, Simulink игнорирует настройки следующих параметров конфигурации, которые вы устанавливаете на значение кроме None
.
Array bounds exceeded
Diagnostics> Data Validity> Inf or NaN block output
Diagnostics> Data Validity> Division by singular matrix
Diagnostics> Data Validity> Wrap on overflow
Кроме того, для моделей, на которые ссылаются в режиме Accelerator, Simulink игнорирует следующий Configuration Parameters> Diagnostics> Data Validity> параметры Data Store Memory block, если вы устанавливаете их на значение кроме Disable all
. Для получения дополнительной информации смотрите Диагностику Хранилища данных.
Detect read before write
Detect write after read
Detect write after write
Условие | Рекомендуемое действие |
---|---|
Вы хотите видеть результаты выполнения идентифицированной диагностики с настройками, чтобы произвести предупреждения или ошибки. | Симулируйте модель в Режиме normal mode и разрешите диагностические предупреждения или ошибки. |
ID проверки: mathworks.design.ParamTunabilityIgnored
Проверки, если информация о приспособляемости параметра включена в диалоговое окно Model Parameter Configuration.
Программное обеспечение Simulink игнорирует информацию приспособляемости, указанную в диалоговом окне Model Parameter Configuration. Эта проверка идентифицирует те модели, содержащие информацию о приспособляемости параметра, которую проигнорирует программное обеспечение Simulink, если на модель сошлются другие модели.
Условие | Рекомендуемое действие |
---|---|
Модель содержит проигнорированную информацию о приспособляемости параметра. | Щелкните по ссылкам, чтобы преобразовать в эквивалентные объекты параметра Simulink в рабочей области MATLAB®. |
Создайте настраиваемый калибровочный параметр в сгенерированном коде (Simulink Coder).
ID проверки: mathworks.design.ImplicitSignalResolution
Идентифицируйте модели, которые пытаются решить названный сигналами и состояниями к Simulink.Signal
объекты.
Программное обеспечение Requiring Simulink, чтобы разрешить все именованные сигналы и состояния неэффективно и замедляет инкрементную генерацию кода и модель - ссылку. Эта проверка идентифицирует те сигналы и состояния, для которых можно выключить неявное разрешение сигнала и осуществить разрешение.
Условие | Рекомендуемое действие |
---|---|
Не все сигналы и состояния разрешены. | Выключите неявное разрешение сигнала и осуществите разрешение для каждого сигнала и состояния, которое действительно решает. |
ID проверки: mathworks.design.OptBusVirtuality
Идентифицируйте виртуальные шины, которые могли быть сделаны невиртуальными. Создание этих невиртуальных шин повышает эффективность сгенерированного кода.
Эта проверка идентифицирует блоки, включающие виртуальные шины, которые пересекают контур подсистемы. Изменение их к невиртуальному повышает эффективность сгенерированного кода.
Условие | Рекомендуемое действие |
---|---|
Блоки, которые задают виртуальную шину, пересекающую контур подсистемы. | Измените подсвеченную шину в невиртуальный. |
Вы можете:
Осуществите эту проверку своих моделей библиотеки.
Исключите блоки и графики от этой проверки, если у вас есть лицензия Simulink Check.
Обзор исключения Model Advisor (Simulink Check)
ID проверки: mathworks.design.DiscreteTimeIntegratorInitCondition
Идентифицируйте блоки Интегратора Дискретного времени с портами состояния и начальными портами условия, которые не питаются ни Начальным Условием, ни блоком Constant.
Блоки Интегратора дискретного времени с портом состояния и начальными портами условия не могут быть соответственно инициализированы, если они не питаются от блока Initial Condition или Constant. Это, более вероятно, произойдет, когда блоки Интегратора Дискретного времени будут использоваться, чтобы смоделировать динамические системы высшего порядка или второго порядка.
Условие | Рекомендуемое действие |
---|---|
Блоки Интегратора дискретного времени не инициализируются во время фазы инициализации модели. | Добавьте блок Constant или Initial Condition, чтобы питать внешний порт Initial Condition. |
Вы можете:
Осуществите эту проверку своих моделей библиотеки.
Исключите блоки и графики от этой проверки, если у вас есть лицензия Simulink Check.
Блок IC
Постоянный блок
Обзор исключения Model Advisor (Simulink Check)
ID проверки: mathworks.design.DisabledLibLinks
Поисковая модель для отключенных ссылок библиотеки.
Отключенные ссылки библиотеки могут вызвать неожиданные результаты симуляции. Разрешите отключенные ссылки прежде, чем сохранить модель.
Эта проверка может наложиться с моделью Check для проблем обновления блока.
Условие | Рекомендуемое действие |
---|---|
Ссылки библиотеки отключены. | Нажмите Library Link> опция Resolve link в контекстном меню. |
Вы можете:
Осуществите эту проверку своих моделей библиотеки.
Исключите блоки и графики от этой проверки, если у вас есть лицензия Simulink Check.
Используйте Model Browser, чтобы найти ссылки библиотеки.
Чтобы включить неработающую ссылку, щелкните правой кнопкой по блоку по своей модели, чтобы отобразить контекстное меню. Выберите Library Link> Resolve link.
Восстановите отключенные или параметризованные ссылки
Обзор исключения Model Advisor (Simulink Check)
ID проверки: mathworks.design.CheckVirtualBusAcrossModelReferenceArgs
Сигналы виртуальной шины проверок, которые пересекают контуры модели - ссылки и отмечают случаи, где использование виртуальных шин через контур модели - ссылки увеличивает число аргументов функции значительно.
Чтобы улучшить скорость процесса генерации кода, можно использовать эту проверку, чтобы сократить количество сгенерированных аргументов функции. Если проверка находит модель, что, где много аргументов будут сгенерированы для функции, можно нажать Update Model, чтобы изменить модель так, чтобы это сгенерировало меньше аргументов.
Методы, которые генерируют много аргументов функции как результат сигнала виртуальной шины, пересекающего контур модели - ссылки, замедляют процесс генерации кода.
Условие | Рекомендуемое действие |
---|---|
Методы перечислены, которые генерируют большое количество аргументов для тока настройка модели, которую эта проверка может уменьшать путем изменения модели. | Нажмите Update Model. |
Нажатие на Update Model сбрасывает Inport и параметры блоков Outport и вставляет блоки Signal Conversion, по мере необходимости, чтобы сократить количество сгенерированных аргументов функции для модели.
Соедините шиной данные, пересекающие контуры модели - ссылки
ID проверки: mathworks.design.ParameterizedLibLinks
Поисковая модель для параметризованных ссылок библиотеки.
Параметризованные ссылки библиотеки, которые неумышленны, могут привести к неожиданным установкам параметров в вашей модели. Это может привести к неподходящей операции модели.
Условие | Рекомендуемое действие |
---|---|
Перечислены параметризованные ссылки. | Проверьте, что ссылки предназначаются, чтобы быть параметризованными. |
Вы можете:
Осуществите эту проверку своих моделей библиотеки.
Исключите блоки и графики от этой проверки, если у вас есть лицензия Simulink Check.
Щелкните правой кнопкой по блоку по своей модели, чтобы отобразить контекстное меню. Выберите Link Options
и нажмите Go To Library Block
видеть исходный блок из библиотеки.
Чтобы параметризовать ссылку библиотеки, выберите Look Under Mask
, из контекстного меню и выбора параметр.
Восстановите отключенные или параметризованные ссылки
Обзор исключения Model Advisor (Simulink Check)
ID проверки: mathworks.design.UnresolvedLibLinks
Ищите модель неразрешенные ссылки библиотеки, где заданный библиотечный блок не может быть найден.
Проверяйте на неразрешенные ссылки библиотеки. Модели не симулируют, в то время как существуют неразрешенные ссылки библиотеки.
Условие | Рекомендуемое действие |
---|---|
Ссылки библиотеки не разрешены. | Найдите недостающий библиотечный блок или альтернативу. |
Вы можете:
Осуществите эту проверку своих моделей библиотеки.
Исключите блоки и графики от этой проверки, если у вас есть лицензия Simulink Check.
Зафиксируйте неразрешенные ссылки библиотеки
Обзор исключения Model Advisor (Simulink Check)
ID проверки: mathworks.design.CSStoVSSConvert
Ищите модель, чтобы идентифицировать конфигурируемые блоки подсистемы на уровне подсистемы или модели.
Условие | Рекомендуемое действие |
---|---|
Идентифицированы конфигурируемые блоки подсистемы. | Преобразуйте эти блоки в различные блоки подсистемы, чтобы избежать проблем совместимости. Смотрите Configurable Subsystem. |
Можно осуществить эту проверку моделей библиотеки.
ID проверки: mathworks.design.ConvertMdlrefVarToVSS
Ищите модель, чтобы идентифицировать блоки Variant Model.
Условие | Рекомендуемое действие |
---|---|
Перечислены блоки Variant Model, доступные в модели. | Преобразуйте эти блоки в блоки Variant Subsystem. |
ID проверки: mathworks.design.emptyVariantObjects
Ищите модель, чтобы идентифицировать Различные блоки или библиотеку, имеющую пустые Различные объекты.
Условие | Рекомендуемое действие |
---|---|
Различные блоки в модели или библиотеке, имеющей пустые Различные объекты, перечислены. | Используйте допустимые условия в различных объектах. |
ID проверки: mathworks.design.CheckForProperFcnCallUsage
Проверяйте диагностические настройки модели, которые применяются к возможности соединения вызова функции, и это может повлиять на выполнение модели.
Проверяйте на настройки диагностики возможности соединения, которые могут привести к недетерминированному выполнению модели.
Условие | Рекомендуемое действие |
---|---|
Diagnostics > Connectivity > Invalid function-call connection установлен в warning . Этот вывод силы к недетерминированному выполнению модели. | Установите Diagnostics > Connectivity > Invalid function-call connection на error . |
Diagnostic > Connectivity > Context-dependent inputs установлен в Disable All или Use local settings . Этот вывод силы к недетерминированному выполнению модели. | Установите Diagnostics > Connectivity > Context-dependent inputs на Enable all as errors . |
ID проверки: mathworks.design.DataStoreMemoryBlkIssue
Ищите моделирование проблем, связанных с блоками Data Store Memory.
Проверки на многозадачную целостность данных, строгий контроль типов и затенение хранилищ данных более высокого осциллографа.
Условие | Рекомендуемое действие |
---|---|
Проверка Duplicate data store names установлена в none или warning . | Рассмотрите установку Дублирующейся проверки имен хранилищ данных к error в диалоговом окне Configuration Parameters, на панели Diagnostics > Data Validity. |
Имена переменных хранилища данных не со строгим контролем типов в одном из следующего:
| Задайте тип данных кроме автоматического путем принятия одних из следующих мер:
|
Проверка Multitask data store установлена в none или warning . | Рассмотрите установку Многозадачной проверки хранилища данных к error в диалоговом окне Configuration Parameters, на панели Diagnostics > Data Validity. |
Если у вас есть лицензия Simulink Check, можно исключить блоки и графики от этой проверки.
ID проверки: mathworks.design.DiagnosticDataStoreBlk
Для блоков хранилища данных в модели позвольте проверке порядка диагностики чтения-и-записи обнаружить проблемы во время выполнения.
Проверяйте на проверку порядка диагностики чтения-и-записи. Путем включения диагностики чтения-и-записи вы обнаруживаете потенциальные проблемы во время выполнения.
Условие | Рекомендуемое действие |
---|---|
Проверка Detect read before write отключена. | Полагайте, что включение Обнаруживает чтение перед записью в диалоговом окне Configuration Parameter Diagnostics панель > Data Validity . |
Проверка Detect write after read отключена. | Полагайте, что включение Обнаруживает запись, после того, как считано в диалоговом окне Configuration Parameter Diagnostics панель > Data Validity . |
Проверка Detect write after write отключена. | Полагайте, что включение Обнаруживает запись после записи в диалоговом окне Configuration Parameter Diagnostics панель > Data Validity . |
Исключите блоки и графики от этой проверки, если у вас есть лицензия Simulink Check.
.
Диагностика во время выполнения может значительно замедлить симуляции. Если вы проверили, что Simulink не генерирует предупреждения или ошибки в процессе моделирования, установите их на Disable all
.
Обзор исключения Model Advisor (Simulink Check)
ID проверки: mathworks.design.DataStoreBlkSampleTime
Идентифицируйте ошибки моделирования из-за шагов расчета блоков хранилища данных.
Проверяйте блоки хранилища данных на непрерывный или фиксированное в шагах расчета незначительного шага.
Условие | Рекомендуемое действие |
---|---|
Блоки хранилища данных в вашей модели имеют непрерывный или фиксированный в шагах расчета незначительного шага. | Считайте создание перечисленных блоков дискретным или заменяющий их или на Memory или на блоки From и Goto. |
Если у вас есть лицензия Simulink Check, можно исключить блоки и графики от этой проверки.
ID проверки: mathworks.design.OrderingDataStoreAccess
Ищите проблемы чтения-записи, которые могут вызвать погрешности в результатах.
Во время Update Diagram идентифицируйте потенциальные проблемы, относящиеся к чтению перед записью, записи после чтения и условиям записи после записи для блоков хранилища данных.
Условие | Рекомендуемое действие |
---|---|
Чтение и запись (чтение перед записью или условие записи после чтения) происходят не в порядке. | Рассмотрите реструктуризацию вашей модели так, чтобы блок Data Store Read выполнился перед блоком Data Store Write. |
Несколько записей происходят в одном временном шаге. | Измените модель, чтобы записать данные только однажды на временной шаг или относиться к следующему разделу Tips. |
Если у вас есть лицензия Simulink Check, можно исключить блоки и графики от этой проверки.
Эта проверка выполняет статический анализ, который не может идентифицировать каждый экземпляр неподходящего использования. А именно, Подсистемы вызова функций, диаграммы Stateflow, MATLAB для генерации кода, Для Подсистем Итератора, и Для Каждого Подсистемы могут вызвать и пропущенные обнаружения и ложные положительные стороны. Для более всесторонней проверки рассмотрите включение следующей диагностики на панели Diagnostics > Data Validity в диалоговом окне Configuration Parameters: Обнаружьте чтение перед записью, Обнаружьте запись, после того, как считано и Обнаружьте запись после записи.
ID проверки: mathworks.design.MismatchedBusParams
Идентифицируйте блоки и Simulink.Signal
объекты, которые инициализируют сигналы шины при помощи несовпадающих структур.
В модели можно использовать структуру MATLAB, чтобы инициализировать сигнал шины. Например, если вы передаете сигнал шины через блок Unit Delay, можно установить параметр Initial condition на структуру. Для основной информации об инициализации шин при помощи структур смотрите, Задают Начальные условия для Сигналов Шины.
Осуществите эту проверку, чтобы сгенерировать эффективный и читаемый код путем соответствия с формой и типами числовых данных начальных структур условия с теми из сигналов шины. Соответствие с этими характеристиками избегает ненужных явных преобразований типа и заменяет присвоения структуры поля полем на, например, вызовы memcpy
.
Это блоки контрольных списков и Simulink.Signal
объекты, которые инициализируют сигналы шины при помощи частичных структур. Во время итеративного процесса создания модели можно использовать частичные структуры, чтобы фокусироваться на подмножестве элементов сигнала в шине. Для зрелой модели используйте полные структуры для:
Сгенерируйте читаемый и эффективный код.
Поддержите стиль моделирования, который явным образом инициализирует незаданные сигналы. Когда вы используете частичные структуры, Simulink неявно инициализирует незаданные сигналы.
Для получения дополнительной информации о полных и частичных структурах, смотрите, Создают Полные Структуры для Инициализации и Создают Частичные Структуры для Инициализации.
Это блоки контрольных списков и Simulink.Signal
объекты, начальные структуры условия которых вводят неверные типы данных. Поля этих структур имеют типы числовых данных, которые не совпадают с типами данных соответствующих элементов сигнала шины.
Когда вы сконфигурируете начальную структуру условия, чтобы появиться как настраиваемая глобальная структура в сгенерированном коде, избегайте ненужных явных преобразований типа путем соответствия с типами данных. Смотрите Генерируют Настраиваемую Начальную Структуру Условия для Сигнала Шины (Simulink Coder).
Условие | Рекомендуемое действие |
---|---|
Блокируйте или сигнализируйте, что объект использует частичную структуру | Рассмотрите использование функционального |
Типы данных полей структуры не совпадают с типами данных соответствующих элементов сигнала | Рассмотрите определение структуры как |
ID проверки: mathworks.design.ReplaceZOHDelayByRTB
Идентифицируйте Delay, Unit Delay или блоки Zero-Order Hold, которые используются в переходе уровня. Замените эти блоки на фактические блоки Rate Transition.
Если модель использует Delay, Unit Delay, или блоки Zero-Order Hold, чтобы обеспечить переход уровня между сигналами ввода и вывода, Simulink делает скрытую замену этих блоков со встроенными блоками Rate Transition. В скомпилированной блок-схеме желтый символ и буквы “RT” появляются в верхнем левом углу заменяющего блока. Эта замена может влиять на поведение модели, можно следующим образом:
Эти блоки теряют свои алгоритмические свойства проекта, чтобы задержать сигнал, или нулевой порядок реализации содержат. Вместо этого они получают поведение перехода уровня.
Эта техника моделирования работает только в определенных настройках перехода (быстрое не спешение для Delay и Unit Delay blocks, и быстрый-к-медленному для блока Zero-Order Hold). Установите шаг расчета блока быть равным более медленному уровню (источник для Delay и блоков Unit Delay и места назначения для блока Zero-Order Hold).
Когда шаг расчета блока нисходящего или восходящего блока изменяется, они, Delay, Unit Delay и блоки Zero-Order Hold не могут выполнить переход уровня. Например, установка источника и целевых шагов расчета равняется переходу уровня остановок. Блоки затем принимают свои исходные алгоритмические свойства проекта.
Шаг расчета блока показывает неполную информацию об уровнях шага расчета. Блочный код достигает двух различных уровней, чтобы обработать передачу данных. Однако шаг расчета блока и цвет шага расчета показывают его односкоростным блоком. Инструменты и скрипты MATLAB, которые используют информацию о шаге расчета, основывают свое поведение на этой информации.
Альтернатива должна заменить Delay, Unit Delay или блоки Zero-Order Hold с фактическими блоками Rate Transition.
Метод гарантирует однозначные результаты в поведении блока. Delay, Unit Delay или Zero-Order Hold блокируют действие согласно их алгоритмическому проекту, чтобы задержать и содержать сигналы соответственно. Только блоки Rate Transition выполняют фактический переход уровня.
Используя фактический блок Rate Transition для предложений перехода уровня конфигурируемое решение обработать передачу данных, если вы хотите задать детерминированное поведение или тип буферов памяти, чтобы реализовать.
Используйте эту проверку, чтобы идентифицировать экземпляры в вашей модели, где Delay, Unit Delay или блоки Zero-Order Hold подвергаются скрытой замене, чтобы обеспечить переход уровня между сигналами. Нажмите Upgrade Model, чтобы заменить эти блоки на фактические блоки Rate Transition.
Условие | Рекомендуемое действие |
---|---|
Модель не имеет никаких экземпляров Delay, Unit Delay или блоков Zero-Order Hold, используемых в переходе уровня. | Никакое действие не требуется. |
Модель имеет экземпляры Delay, Unit Delay или блоков Zero-Order Hold, используемых в переходе уровня. | Проверка идентифицирует эти экземпляры и позволяет вам обновлять модель.
|
Если вы не принимаете решение заменить Delay, Unit Delay и/или блоки Zero-Order Hold с фактическими блоками Rate Transition, Simulink продолжает выполнять скрытую замену этих блоков со встроенными блоками перехода уровня.
Вы можете:
Осуществите эту проверку своих моделей библиотеки.
Исключите блоки и графики от этой проверки, если у вас есть лицензия Simulink Check.
ID проверки: mathworks.design.CallslDataTypeAndScale
Идентифицируйте вызовы внутреннего функционального slDataTypeAndScale
.
В некоторых предыдущих версиях Simulink, открывая модель, которая была сохранена в более ранней версии, инициировал автоматическое обновление кода для обработки типа данных. Автоматическое обновление вставляет вызовы внутреннего функционального slDataTypeAndScale
. Несмотря на то, что Simulink продолжает поддерживать некоторое использование функции, если вы устраняете вызовы его, вы получаете более чистый и более быстрый код.
Simulink не делает обращений за поддержкой к slDataTypeAndScale
когда:
Первым аргументом является Simulink.AliasType
объект.
Первым аргументом является Simulink.NumericType
объект со свойством IsAlias
установите на истину.
Осуществление Проверки для вызовов slDataTypeAndScale идентифицирует вызовы slDataTypeAndScale
это требуется или рекомендуется для замены. В большинстве случаев осуществление проверки и после рекомендуемого действия удаляет вызовы. Можно проигнорировать вызовы, которые остаются. Осуществите проверку, если вы не уверены, что нет вызовов slDataTypeAndScale
.
Условие | Рекомендуемое действие |
---|---|
Необходимые заменяющие случаи | Вручную или автоматически замените вызовы slDataTypeAndScale . Перечисленные случаи требуют, чтобы вы заменили вызовы slDataTypeAndScale . |
Рекомендуемые заменяющие случаи | Для перечисленных случаев рекомендуется, чтобы вы вручную или автоматически заменили вызовы slDataTypeAndScale . |
Ручные инспекционные случаи | Смотрите каждый перечисленный случай, чтобы определить, должен ли он быть вручную обновлен. |
Если у вас есть лицензия Simulink Check, можно исключить блоки и графики от этой проверки.
Вручную не вставляйте вызов slDataTypeAndScale
в модель. Функция была для внутреннего пользования только.
Осуществление Проверки для вызовов slDataTypeAndScale вызывает функцию Simulink slRemoveDataTypeAndScale
. Вызывание этой функции непосредственно предоставляет более широкий спектр опций преобразования. Однако вам очень редко нужно больше опций преобразования.
Для получения дополнительной информации об обновлении типов данных и шкал, в Окне Команды MATLAB, выполняют следующее:
help slDataTypeAndScale
help slRemoveDataTypeAndScale
Обзор исключения Model Advisor (Simulink Check)
ID проверки: mathworks.design.BusTreatedAsVector
Идентифицируйте, что шина сигнализирует, что Simulink обрабатывает как векторы.
Вы не можете использовать сигналы шины, что программное обеспечение Simulink неявно преобразует в векторы. Вместо этого или вставьте блок преобразования Bus to Vector между сигналом шины и входным портом блока, который он питает, или используйте Simulink.BlockDiagram.addBusToVector
команда.
Условие | Рекомендуемое действие |
---|---|
Сигналы шины неявно преобразованы в векторы. | Используйте |
Модель не сконфигурирована, чтобы идентифицировать, что шина сигнализирует, что Simulink обрабатывает как векторы. | В диалоговом окне Configuration Parameters, на панели > Connectivity Diagnostics, устанавливает Bus signal treated as vector на |
Нажатие на Modify вставляет блок Bus to Vector во входных портах блоков, которые неявно преобразуют сигналы шины в векторы.
Осуществите эту проверку прежде, чем запустить Check consistency of initialization parameters for Outport and Merge blocks.
Для получения дополнительной информации смотрите Правильные Шины, Используемые в качестве Векторов.
ID проверки: mathworks.design.DelayedFcnCallSubsys
Идентифицируйте возвращаемые значения вызова функции, которые могут быть задержаны, потому что программное обеспечение Simulink вставило неявный блок Signal Conversion.
Таким образом, это сигнализирует, находятся в непрерывной памяти, программное обеспечение Simulink может автоматически вставить неявный блок Signal Conversion перед входными портами блока инициатора вызова функции. Это может привести к задержке с одним шагом возвращающихся значений сигналов от вызова подсистем вызова функций. Задержки можно избежать путем гарантирования, что сигнал происходит из блока сигнала в системе вызова функции. Или, если задержка приемлема, вставьте блок Unit Delay перед затронутыми входными портами.
Условие | Рекомендуемое действие |
---|---|
Перечисленные входные порты блока могли иметь неявный блок Signal Conversion. | Решите, приемлема ли задержка с одним шагом возвращающихся значений сигналов для перечисленных сигналов.
|
Если у вас есть лицензия Simulink Check, можно исключить блоки и графики от этой проверки.
Блок Conversion сигнала
Блок Unit Delay
Обзор исключения Model Advisor (Simulink Check)
ID проверки: mathworks.design.OutputSignalSampleTime
Найдите время непрерывной выборки, выходные сигналы нес плавающей точкой.
Сигналы нес плавающей точкой не могут представлять непрерывные переменные без потери информации.
Условие | Рекомендуемое действие |
---|---|
Сигналы с временами непрерывной выборки имеют тип данных нес плавающей точкой. | На идентифицированных сигналах или измените шаг расчета, чтобы быть дискретными или фиксированными на незначительном шаге ([0 1]). |
Если у вас есть лицензия Simulink Check, можно исключить блоки и графики от этой проверки.
Обзор исключения Model Advisor (Simulink Check)
ID проверки: mathworks.design.MergeBlkUsage
Идентифицируйте блоки Слияния с установками параметров, которые могут привести к неожиданному поведению, и справка перемещает вашу модель на упрощенный режим инициализации.
Осуществите эту проверку наряду с другими регистрациями Миграции на Упрощенный Обзор Режима Инициализации.
Упрощенный режим инициализации был введен в R2008b, чтобы улучшить непротиворечивость результатов симуляции. Для получения дополнительной информации смотрите Упрощенный Режим Инициализации и Классический Режим Инициализации.
Эта проверка Model Advisor идентифицирует настройки в блоках Слияния в вашей модели, которая может вызвать проблемы, если вы используете классический режим инициализации. Это также рекомендует настройки для сопоставимого поведения блоков Слияния. Результаты подпроверок содержат два типа операторов: Отказавший и Предупреждение. Не пройдено операторы идентифицируют проблемы, которые необходимо решить вручную, прежде чем можно будет переместить модель на упрощенный режим инициализации. Операторы предупреждения идентифицируют проблемы или изменения в поведении, которое может произойти после миграции.
Условие | Рекомендуемое действие |
---|---|
Проверяйте диагностическую установку во время выполнения блока Merge. |
|
Проверяйте на блоки Model, которые используют режим PIL симуляции. | Упрощенный режим инициализации не поддерживает Процессор в цикле (PIL) симуляция для моделей - ссылок. |
Проверяйте на библиотечные блоки с экземплярами, которые не могут быть перемещены. | Исследуйте не пройдено результаты подпроверки на каждый блок, чтобы определить корректирующие действия. |
Проверяйте на блоки Слияния одно входа. | Замените и блок Mux, используемый, чтобы произвести входной сигнал и блок Merge с одним блоком мультивхода Merge. Одно вход блоки Merge не поддержан в упрощенном режиме инициализации. |
Проверяйте на корневые блоки Слияния, которые имеют незаданное значение Initial output. | Если вы не задаете явное значение для параметра Initial output root Merge blocks, то Simulink использует начальное значение по умолчанию типа выходных данных. Корневой блок Merge является блоком Merge с выходным портом, который не соединяется с другим блоком Merge. Для получения информации о начальном значении по умолчанию смотрите Значения сигналов Инициализации. |
Проверяйте на блоки Слияния с ненулевыми смещениями входного порта. | Очистите параметр Allow unequal port widths блока Merge. ПримечаниеРассмотрите использование блоков Merge только для элементов сигнала, которые требуют истинного слияния. Можно объединить другие элементы с объединенными элементами с помощью блока Concatenate. |
Проверяйте на блоки Слияния, которые имеют несвязанные входные параметры или которые имеют входные параметры от неусловно выполняемых подсистем. | Установите параметр Number of inputs блока Merge к количеству входных параметров блока Merge. Необходимо соединить каждый вход с сигналом. Проверьте, что каждый вход блока Merge управляется условно выполняемой подсистемой. блоки Merge не могут управляться непосредственно Iterator Subsystem или блоком, который не является условно выполняемой подсистемой. |
Проверяйте на блоки Слияния с входными параметрами, которые объединены или переупорядочены за пределами условно выполняемых подсистем. | Проверьте, что комбинации или переупорядочение входных сигналов блока Merge происходят в условно выполняемой подсистеме. Такие проекты могут использовать Mux, Bus Creator или блоки Selector. |
Проверяйте на блоки Слияния с противоречивыми входными шагами расчета. | Проверьте, что входные сигналы с каждым блоком Merge имеют тот же Sample time. Отказ сделать так мог привести к непредсказуемому поведению. Следовательно, упрощенный режим инициализации не позволяет противоречивые шаги расчета. |
Проверяйте на блоки Слияния с несколькими входными портами, которые управляются одним источником. | Проверьте, что блок Merge не имеет нескольких входных сигналов, которые управляются той же условно выполняемой подсистемой или условно выполняемым блоком Model. |
Проверяйте на блоки Слияния, которые используют объекты сигнала, чтобы задать значение Initial output. | Проверьте, что следующее поведение приемлемо. В упрощенном режиме инициализации объекты сигнала не могут задать параметр Initial output блока Merge. В то время как можно все еще инициализировать выходной сигнал для блока Merge, использующего объект сигнала, результат инициализации может быть перезаписан тем из блока Merge. ПримечаниеSimulink генерирует предупреждение, что начальное значение объекта сигнала было проигнорировано. |
ID проверки: mathworks.design.InitParamOutportMergeBlk
Идентифицируйте блоки Выходного порта и условные подсистемы с установками параметров, которые могут привести к неожиданному поведению, и справка перемещает вашу модель на упрощенный режим инициализации.
Осуществите эту проверку наряду с другими регистрациями Миграции на Упрощенный Обзор Режима Инициализации.
Упрощенный режим инициализации был введен в R2008b, чтобы улучшить непротиворечивость результатов симуляции. Этот режим особенно важен для моделей, которые не задают начальные условия для условно выполняемых выходных портов подсистемы. Для получения дополнительной информации смотрите Упрощенный Режим Инициализации и Классический Режим Инициализации.
Эта проверка Model Advisor идентифицирует блоки Выходного порта и условные подсистемы в вашей модели, которая может вызвать проблемы, если вы используете упрощенный режим инициализации. Это также рекомендует настройки для сопоставимого поведения блоков Выходного порта. Результаты подпроверок содержат два типа операторов: Отказавший и Предупреждение. Не пройдено операторы идентифицируют проблемы, которые необходимо решить вручную, прежде чем можно будет переместить модель на упрощенный режим инициализации. Операторы предупреждения идентифицируют проблемы, или изменения в поведении могут произойти после миграции.
Условие | Рекомендуемое действие |
---|---|
Проверяйте на блоки в Подсистеме Итератора, которые требуют прошедшего времени. | В иерархии Подсистемы Итератора не используйте блоки, которые требуют сервиса, который обеспечивает время, которое протекло между двумя последовательным выполнением. Поскольку Подсистема Итератора может выполнить многократно в установленный срок шаг, концепция прошедшего времени не четко определена между двумя таким выполнением. Используя эти блоки в Итераторе Подсистема может вызвать неожиданное поведение. |
Проверяйте на блоки Выходного порта, которые имеют конфликтные буферные требования сигнала. | Блок Outport имеет триггер вызова функции или прохождение сигнала зависимости по данным вызова функции через него, наряду со стандартными сигналами данных. Некоторые стандартные сигналы данных требуют явного буфера сигнала для инициализации выходного сигнала соответствующей подсистемы. Однако буферизация связанных с вызовом функции сигналов приводит к нарушению зависимостей данных вызова функции. Полагайте, что изменение модели передает связанные с вызовом функции сигналы через отдельный блок Outport. Для примеров нарушений зависимостей данных вызова функции см. модель Стандартный сигнал данных может потребовать дополнительной копии сигнала по одной из следующих причин:
|
Проверяйте на блоки Выходного порта, которые управляются сигналом шины и чье значение Initial output не является скаляром. | Для блоков Outport, управляемых сигналами шины, классический режим инициализации не поддерживает структуры Начального условия (IC), в то время как упрощенный режим инициализации делает. Следовательно, при миграции модели от классики до упрощенного режима, задайте скаляр для параметра Initial Output. После того, как миграция завершается, чтобы задать различные начальные значения для различных элементов сигнала шины, использовать структуры IC. Для получения дополнительной информации смотрите, Создают Начальные Структуры Условия. |
Проверяйте на блоки Выходного порта, которые требуют явной копии сигнала. | Явная копия сигнала шины управление блоком Outport требуется для инициализации выходного сигнала соответствующей подсистемы. Вставьте блок Signal Conversion перед блоком Outport, затем установите параметр Output блока Signal Conversion к Стандартный сигнал данных может потребовать дополнительной копии сигнала по одному или нескольким следующих причин:
|
Проверяйте на объединенные блоки Выходного порта, которые наследовали значение Initial Output от блоков Выходного порта, которые были сконфигурированы, чтобы сбросить, когда блоки становятся отключенными. | Когда блоки Outport будут управлять блоком Merge, не устанавливайте их параметры Output when disabled на reset . |
Проверяйте на блоки merged Outport, которые управляются вложенными условно выполняемыми подсистемами. | Определите, приемлемо ли новое поведение блоков Outport. Если это не приемлемо, измените модель, чтобы составлять новое поведение прежде, чем мигрировать на упрощенный режим инициализации. |
Проверяйте на объединенные блоки Выходного порта, которые сбрасывают, когда блоки отключены. | Установите параметр Output when disabled блока Outport к Для получения дополнительной информации смотрите Outport. |
Проверяйте на блоки Выходного порта, которые имеют неопределенное значение Initial output с недопустимыми начальными источниками условия. | Проверьте, что следующее поведение приемлемо. Когда параметр Initial output не задан ( Для упрощенного режима инициализации допустимые источники Outport могут наследоваться блоки, значение Initial output от: Constant, Initial Condition, Merge (с начальным выходом), диаграмма Stateflow, модель - ссылка вызова функции или условно выполняемые блоки подсистемы. |
Проверяйте блоки Выходного порта, которые имеют автоматические переходы уровня. | Simulink вставил блок Rate Transition во входе блока Outport. Задайте параметр Initial output для каждого блока Outport. В противном случае выполните следующую процедуру:
|
Проверяйте блоки Выходного порта, которые имеют специальное требование устройства хранения данных сигнала и имеют неопределенное значение Initial output. | Проверьте, что следующее поведение приемлемо. Задайте параметр Initial output для блока Outport. Установите это значение к |
Проверяйте установку Initial output блоков Выходного порта, которые сбрасывают, когда они отключены. | Задайте параметр Initial output блока Outport. Необходимо задать значение Initial output для блоков, которые сконфигурированы, чтобы сбросить, когда они становятся отключенными. |
Проверяйте установку Initial output на блоки Выходного порта, которые проходят через сигнал зависимости по данным вызова функции. | Вы не можете задать значение Initial output для блока Outport, потому что сигналы зависимости по данным вызова функции проходят через него. Устанавливать значение Initial output:
|
Проверяйте на блоки Выходного порта, которые используют объекты сигнала, чтобы задать значение Initial output. | Проверьте, что следующее поведение приемлемо. В упрощенном режиме инициализации объекты сигнала не могут задать параметр Initial output блока Outport. Можно все еще инициализировать сигналы ввода или вывода для использующего блока Outport объекты сигнала, но результаты инициализации могут быть перезаписаны теми из блока Outport. ПримечаниеЕсли вы работаете с условно выполняемым блоком Outport подсистемы, Simulink генерирует предупреждение, что начальное значение объекта сигнала было проигнорировано. |
Проверяйте на библиотечные блоки с экземплярами, которые имеют предупреждения. | Исследуйте результаты подпроверки предупреждения на каждый блок прежде, чем мигрировать на упрощенный режим инициализации. |
Проверяйте на объединенные блоки Выходного порта, которые или не связаны или связаны с блоком Ground. | Проверьте, что следующее поведение приемлемо. Блок Outport управляет блоком Merge, но его входные параметры или не связаны или связаны с блоками Ground. В классическом режиме инициализации несвязанные или основанные выходные порты не обновляют сигнал слияния, даже когда их родительский элемент условно выполнился, подсистемы выполняются. В упрощенном режиме инициализации, однако, эти выходные порты обновят сигнал слияния со значением нуля, когда их родительский элемент условно выполнился, подсистемы выполняются. |
Проверяйте на блоки Выходного порта, которые получают значение Initial output из входного сигнала, когда они перемещаются. | Проверьте, что следующее поведение приемлемо. Параметр Initial output блока Outport не задан. В результате упрощенный режим инициализации примет, что значение Initial output для блока Outport получено на входной сигнал. Это предположение может привести к различному поведению инициализации. Если это поведение не приемлемо, измените свою модель, прежде чем вы мигрируете на упрощенный режим инициализации. |
Проверяйте на внешние блоки Outport, которые имеют явный Initial output. | Проверьте, что следующее поведение приемлемо. В классическом режиме инициализации Initial output и параметры Output when disabled блока Outport должны совпадать с теми из их источника блоки Outport. В упрощенном режиме инициализации Simulink устанавливает параметр Initial output внешних блоков Выходного порта к |
Проверяйте на условно выполняемые подсистемы, которые распространяют контекст выполнения через выходной контур. | Проверьте, что следующее поведение приемлемо. Параметр Propagate execution context across subsystem boundary выбран для подсистемы. Контекст выполнения будет все еще распространен через входные контуры; однако, распространение будет отключено на выходной стороне для инициализации в упрощенном режиме инициализации. |
Проверяйте на блоки, что читает вход из условно выполняемых подсистем во время инициализации. | Проверьте, что следующее поведение приемлемо. Некоторые блоки, такие как блок Discrete-Time Integrator, читают свои входные параметры из условно выполняемых подсистем во время инициализации в классическом режиме инициализации. Simulink выполняет этот шаг как метод оптимизации. Эта оптимизация не позволена в упрощенном режиме инициализации, потому что выход условно выполняемой подсистемы на первом временном шаге после инициализации может отличаться, чем начальное значение, объявленное в соответствующем блоке Outport. В частности, это несоответствие происходит, если подсистема активна на первом временном шаге. |
Проверяйте на конфликт миграции для блоков Выходного порта, которые используют Dialog как Source of initial output value. | Другие экземпляры блоков Выходного порта с той же библиотекой соединяются или не могут быть перемещены или перемещаются другим способом. Рассмотрите результаты Check for library blocks with instances that cannot be migrated, чтобы узнать о различных миграционных путях для других экземпляров каждого блока Outport. Блок Outport будет обеспечивать свои текущие настройки и использовать его заданное значение Initial output. |
Проверяйте на конфликт миграции для блоков Выходного порта то использование Input signal как значение Source of initial output. | Другие экземпляры блоков Выходного порта с той же библиотекой соединяются или не могут быть перемещены или перемещаются другим способом. Рассмотрите результаты Check for library blocks with instances that cannot be migrated, чтобы узнать о различных миграционных путях для других экземпляров каждого блока Outport. Блок Outport в настоящее время задает Initial output После миграции параметр Source of initial output value будет установлен в |
Проверяйте на конфликт миграции для блоков Выходного порта, которые имеют семантику SimEvents®. | Другие экземпляры блоков Выходного порта с той же библиотекой соединяются или не могут быть перемещены или перемещаются другим способом. Рассмотрите результаты Check for library blocks with instances that cannot be migrated, чтобы узнать о различных миграционных путях для других экземпляров каждого блока Outport. Блоки Outport продолжат использовать значение Initial output |
Проверяйте на конфликт миграции для самых внутренних блоков Выходного порта с входом переменного размера и незаданным Initial output. | Для этих блоков Выходного порта размер сигнала варьируется только, когда родительская подсистема блока повторно включена. Поэтому Simulink неявно принимает, что параметр Initial output равен 0, даже при том, что параметр не задан, []. Следовательно, если вы не задаете параметр, Model Advisor явным образом установит параметр на 0, когда модель будет перемещена на упрощенный режим инициализации. Другие экземпляры блоков Выходного порта с той же библиотекой соединяются или не могут быть перемещены или перемещаются другим способом. Рассмотрите результаты Check for library blocks with instances that cannot be migrated, чтобы узнать о различных миграционных путях для других экземпляров каждого блока Outport. |
Проверяйте на конфликт миграции для блоков Выходного порта, которые используют наземное значение по умолчанию в качестве Initial выход. | Параметр Initial output устанавливается на [] (пустая матрица), и источник Outport является недопустимым начальным источником условия. Таким образом блок использует начальное значение по умолчанию в качестве начального выхода в упрощенном режиме инициализации. Другие экземпляры блоков Выходного порта с той же библиотекой соединяют или имеют ошибки или перемещаются по-другому. |
Проверяйте на конфликт миграции для объединенных блоков Выходного порта без явной спецификации Initial output. | Рассмотрите результаты подпроверки Check for library blocks with instances that cannot be migrated, чтобы узнать о различных миграционных путях для других экземпляров каждого блока Outport. Для остающихся блоков Выходного порта Initial output установлен в [] (пустая матрица), и Output when disabled установлен в held соответственно, в упрощенном режиме инициализации. |
ID проверки: mathworks.design.DiscreteBlock
Идентифицируйте блоки Интегратора Дискретного времени с установками параметров, которые могут привести к неожиданному поведению, и справка перемещает вашу модель на упрощенный режим инициализации.
Осуществите эту проверку наряду с другими регистрациями Миграции на Упрощенный Обзор Режима Инициализации.
Упрощенный режим инициализации был введен в R2008b, чтобы улучшить непротиворечивость результатов симуляции. Для получения дополнительной информации смотрите Упрощенный Режим Инициализации и Классический Режим Инициализации.
Эта проверка Model Advisor идентифицирует настройки в блоках Интегратора Дискретного времени в вашей модели, которая может вызвать проблемы, если вы используете упрощенный режим инициализации. Это также рекомендует настройки для сопоставимого поведения блоков Интегратора Дискретного времени. Результаты подпроверок содержат два типа операторов: Отказавший и Предупреждение. Не пройдено операторы идентифицируют проблемы, которые необходимо решить вручную, прежде чем можно будет переместить модель на упрощенный режим инициализации. Операторы предупреждения идентифицируют проблемы или изменения в поведении, которое может произойти после миграции.
Условие | Рекомендуемое действие |
---|---|
Проверяйте на блоки Интегратора Дискретного времени, параметр которых Initial condition setting установлен в | Определите, приемлемо ли новое поведение блоков Discrete-Time Integrator. Если это не приемлемо, измените модель, чтобы составлять новое поведение прежде, чем мигрировать на упрощенный режим инициализации. |
Проверяйте на блоки Интегратора Дискретного времени, параметр Initial condition setting которых устанавливается на | Используйте периодический шаг расчета в блоке или установите Initial Condition setting на |
Проверяйте на блоки в Подсистеме Итератора, которые требуют прошедшего времени. | В иерархии Подсистемы Итератора не используйте блоки, которые требуют сервиса, который обеспечивает время, которое протекло между двумя последовательным выполнением. Поскольку Подсистема Итератора может выполнить многократно в установленный срок шаг, концепция прошедшего времени не четко определена между двумя таким выполнением. Используя эти блоки в Итераторе Подсистема может вызвать неожиданное поведение. |
Не запускайте эту регистрацию изоляции. Осуществите эту проверку наряду с другими регистрациями Миграции на Упрощенный Обзор Режима Инициализации.
ID проверки: mathworks.design.ModelLevelMessages
Идентифицируйте настройки в блоках Model и параметрах конфигурации модели, которые могут привести к неожиданному поведению, и справка перемещает вашу модель на упрощенный режим инициализации.
Упрощенный режим инициализации был введен в R2008b, чтобы улучшить непротиворечивость результатов симуляции. Для получения дополнительной информации смотрите Упрощенный Режим Инициализации и Классический Режим Инициализации.
Эта проверка Model Advisor идентифицирует проблемы в параметрах конфигурации модели и блоки Model в вашей модели, которая может вызвать проблемы, когда вы мигрируете на упрощенный режим инициализации. Результаты подпроверок содержат два типа операторов: Отказавший и Предупреждение. Не пройдено операторы идентифицируют проблемы, которые необходимо решить вручную, прежде чем можно будет переместить модель на упрощенный режим инициализации. Операторы предупреждения идентифицируют проблемы или изменения в поведении, которое может произойти после миграции.
После выполнения этой проверки на непротиворечивость Model Advisor, если вы нажимаете кнопку Explore Result, сообщения принадлежат только блокам, которые не являются ссылками библиотеки.
Поскольку это затрудняет, чтобы отменить эти изменения, выберите File> Save Restore Point As, чтобы поддержать вашу модель прежде, чем мигрировать на упрощенный режим инициализации.
Для получения дополнительной информации смотрите Параметры конфигурации Модели: Диагностика Возможности соединения.
Условие | Рекомендуемое действие |
---|---|
Проверьте, что все блоки Model используют упрощенный режим инициализации. | Переместите модель, на которую ссылается блок Model к упрощенному режиму инициализации, затем переместите топ-модель. |
Проверьте упрощенную установку режима инициализации | Установите Configuration Parameters> Underspecified initialization detection к |
Нажатие на Modify Settings вызывает следующее:
Параметр модели устанавливается на simplified
Если блоку Outport установили параметр Initial output на пустой символьный вектор, []
, затем SourceOfInitialOutputValue
параметр устанавливается на Input signal.
Если Выходной порт имеет пустой Initial output и сигнал переменного размера, то Initial output обнуляется.
ID проверки: mathworks.design.SFuncAnalyzer
Выполните проверки качества на S-функциях в моделях Simulink или подсистемах.
S-функция анализатор выполняет проверки качества на S-функциях, чтобы идентифицировать улучшения и потенциальные проблемы в заданной модели.
Условие | Рекомендуемое действие |
---|---|
Непрерывные состояния изменяются в mdlOutputs метод. | Измените Непрерывные состояния на главном временном шаге и используйте ssSetSolverNeedsReset функция в коде S-функции. |
Непрерывные состояния изменяются в mdlUpdate метод. | Измените Непрерывные состояния только на главном временном шаге и используйте ssSetSolverNeedsReset функция в коде S-функции. |
Дискретные состояния S-функции изменяются в mdlOutputs на незначительном шаге. | Измените дискретные состояния только на существенном шаге, который охраняет ssIsMajorTimeStep функция. |
Вектор режима S-функции изменяется в mdlOutputs метод на незначительном шаге. | Измените вектор режима только на существенном шаге, который охраняет sslsMajorTimeStep функция. |
S-функция использует статические или глобальные переменные, чтобы объявить внутренние состояния. | Объявите состояния явным образом с помощью ssSetNumDiscStates функциональные или Глобальные данные Модели путем Создания Хранилищ данных. |
S-функция имеет непрерывные состояния, но шаг расчета не объявляется непрерывный. | Задайте время непрерывной выборки с помощью ssSetSampleTime функция. |
S-функция имеет дискретные состояния, но mdlOutputs и mdlUpdate методы объединены. | Задайте mdlOutputs и mdlUpdate методы отдельно и изменяют дискретные состояния только в mdlUpdate метод. |
S-функция устанавливает SS_OPTION_CAN_BE_CALLED_CONDITIONALLY опция при наличии подобных состоянию данных или нескольких шагов расчета. | Удалите опции, когда S-функция будет иметь подобные состоянию данные или несколько шагов расчета. |
MEX компиляторы не существуют на машине. | Проверяйте на присутствие или установите MEX компиляторы на машине. |
S-функция сталкивается с ошибками при компиляции модели. | Проверяйте Diagnostic Viewer выход и перекомпилируйте модель. |
ID проверки: mathworks.design.NonContSigDerivPort
Идентифицируйте ненепрерывные сигналы та производная диска порты.
Ненепрерывные сигналы, что порты производной диска заставляют решатель сбрасывать каждый раз значение изменений сигнала, которое замедляет симуляцию.
Условие | Рекомендуемое действие |
---|---|
Существуют ненепрерывные сигналы в модели ведущие производные порты. |
|
Если у вас есть лицензия Simulink Check, можно исключить блоки и графики от этой проверки.
ID проверки: mathworks.design.DiagnosticSFcn
Проверяйте границы массивов и непротиворечивость решателя, если блоки S-Function находятся в модели.
Подтверждает, придерживаются ли блоки S-Function правил непротиворечивости решателя ОДУ, что Simulink применяется к своим встроенным блокам.
Условие | Рекомендуемое действие |
---|---|
Solver data inconsistency установлен в none . | В диалоговом окне Configuration Parameters, набор Solver data inconsistency к warning или error . |
Array bounds exceeded установлен в none . | В диалоговом окне Configuration Parameters, набор Array bounds exceeded к warning или error
|
Если у вас есть лицензия Simulink Check, можно исключить блоки и графики от этой проверки.
Обзор исключения Model Advisor (Simulink Check)
ID проверки: mathworks.design.characterEncoding
Проверяйте на символы, которые несовместимы с текущим кодированием
Проверяйте на символы в файле модели, который не может быть представлен в текущем кодировании. Они могут вызвать ошибки в процессе моделирования и могут быть повреждены при сохранении модели.
Условие | Рекомендуемое действие |
---|---|
Найдены несовместимые символы | Измените текущее кодирование в кодирование, заданное в файле модели, с помощью slCharacterEncoding . Чтобы изменить текущее кодирование, необходимо закрыть модели, и это закрывает Model Advisor. |
Советнику по вопросам Обновления, которого отчет показывает кодированию вас, нужно, или можно получить кодирование из модели с помощью команды:
get_param(modelname,'SavedCharacterEncoding')
Используйте slCharacterEncoding
изменить кодирование. Эта установка применяется к текущему сеансу работы с MATLAB, поэтому если вы перезапустите MATLAB и захотите открыть ту же модель, необходимо будет внести то же изменение в текущее кодирование снова.
Для получения дополнительной информации см.:
ID проверки: mathworks.design.UnitMismatches
Идентифицируйте экземпляры модульных несоответствий между портами в модели.
Проверяйте на экземпляры модульных несоответствий между портами в модели.
Условие | Рекомендуемое действие |
---|---|
Модульные несоответствия найдены | Измените одну из несовпадающих модульных настроек, чтобы совпадать с модульными настройками для другого порта. |
ID проверки: mathworks.design.AutoUnitConversions
Идентифицируйте экземпляры автоматических модульных преобразований в модели.
Идентифицируйте экземпляры автоматических модульных преобразований в модели.
Условие | Рекомендуемое действие |
---|---|
Найдены автоматические модульные преобразования | Проверяйте, что преобразованные единицы ожидаются для модели. |
ID проверки: mathworks.design.DisallowedUnitSystems
Идентифицируйте экземпляры запрещенных модульных систем в модели.
Идентифицируйте экземпляры запрещенных модульных систем в модели.
Условие | Рекомендуемое действие |
---|---|
Найдены запрещенные модульные системы | Или выберите модуль, который соответствует сконфигурированной модульной системе, или выберите другую модульную систему. Для получения дополнительной информации смотрите Модульные Системы Ограничения. |
ID проверки: mathworks.design.UndefinedUnits
Идентифицируйте экземпляры модульных спецификаций, не заданных в модульной базе данных, в модели.
Идентифицируйте экземпляры модульных спецификаций, не заданных в модульной базе данных, в модели.
Условие | Рекомендуемое действие |
---|---|
Найдены неопределенные модули | Измените модуль в тот, который поддерживает Simulink. |
ID проверки: mathworks.design.Update
Проверяйте на общие проблемы обновления блока.
Проверяйте блоки в модель для проблем совместимости, следующих из использования новой версии программного обеспечения Simulink.
Условие | Рекомендуемое действие |
---|---|
Блоки с найденными проблемами совместимости. | Нажмите Modify, чтобы устранить обнаруженные проблемы блока. |
Проверяйте состояние обновления на S-функции API Уровня 2. | Рассмотрите заменяющий S-функции Уровня 1 на Уровень 2. |
Нажатие на Modify заменяет блоки из предыдущего релиза программного обеспечения Simulink с последними версиями.
ID проверки: mathworks.design.UpdateRequireCompile
Проверяйте на общие проблемы обновления блока.
Проверяйте блоки на проблемы совместимости, следующие из обновления до новой версии программного обеспечения Simulink. Некоторые обновления блока требуют набора информации или данных, когда модель находится в режиме компиляции. Для этой проверки модель устанавливается в скомпилированный режим и затем проверяется на обновления.
Условие | Рекомендуемое действие |
---|---|
Модель содержит Lookup Table или блоки Lookup Table (2-D), и некоторые блоки задают Use Input Nearest или Use Input Above для метода поиска. | Замените блоки Lookup Table и блоки Lookup Table (2-D) с блоками n-D Lookup Table. Не применяйте Use Input Nearest или Use Input Above для методов поиска; выберите другую опцию. |
Модель содержит Lookup Table или блоки Lookup Table (2-D), и некоторые блоки выполняют умножение сначала во время интерполяции. | Замените блоки Lookup Table и блоки Lookup Table (2-D) с блоками n-D Lookup Table. Однако, потому что блок n-D Lookup Table выполняет деление сначала, эта замена может вызвать числовое различие в результате. |
Модель содержит блоки Lookup Table (2-D) или Lookup Table. Некоторые из этих блоков specify Interpolation-Extrapolation как Lookup method, но их ввод и вывод не являются тем же типом с плавающей точкой. | Замените блоки Lookup Table и блоки Lookup Table (2-D) с блоками n-D Lookup Table. Затем измените метод экстраполяции или типы данных порта для замены блока. |
Модель содержит блоки Unit Delay с набором Sample time к | Замените блоки Unit Delay на блоки Memory. |
Нажатие на Modify заменяет блоки из предыдущего релиза программного обеспечения Simulink с последними версиями.
ID проверки: mathworks.design.UseSLXFile
Проверяйте, что модель сохранена в формате SLX.
Проверяйте, сохранена ли модель в формате SLX.
Условие | Рекомендуемое действие |
---|---|
Модель, не сохраненная в формате SLX | Полагайте, что обновление до формата файла SLX использует последние функции в Simulink. |
Можно осуществить эту проверку моделей библиотеки.
Проекты Simulink могут помочь вам обновить модели до формата SLX и сохранить историю версии файла в системе контроля версий. Смотрите Преобразуют от MDL до SLX в Истории Версии Проекта и Заповедника.
ID проверки: mathworks.simulink.SB2SL.Check
Проверяйте, что модель не имеет устаревших блоков SB2SL.
Проверяйте, содержит ли модель устаревшие блоки SB2SL.
Условие | Рекомендуемое действие |
---|---|
Модель содержит устаревшие блоки SB2SL | Рассмотрите обновление модели с текущими блоками SB2SL. |
Нажатие на Update SB2SL Blocks заменяет блоки на последние версии.
ID проверки: mathworks.design.SLXModelProperties
Проверяйте на отредактированные свойства истории модели
Проверяйте модели на отредактированные значения свойств Истории Модели, которые могли использоваться с заменой ключевого слова инструмента системы контроля версий. Эта замена ключевого слова несовместима с форматом файла SLX.
В формате файла MDL можно сконфигурировать некоторые свойства модели использовать замену ключевого слова инструмента системы контроля версий. Если вы сохраняете своя модель в формате SLX, инструменты системы контроля версий не могут выполнить замену ключевого слова. Информация в файле модели от такой замены ключевого слова кэшируется, когда вы сначала сохранили файл MDL как SLX, и не обновляется снова. Панель Истории Свойств Модели и Model Info блокируют в вашей модели show устаревшую информацию с тех пор.
Условие | Рекомендуемое действие |
---|---|
Отредактированные свойства истории модели | Вручную или автоматически сброс свойства к значениям по умолчанию. Нажмите кнопку, чтобы сбросить, или смотреть и изменить эти свойства вручную, открыть диалоговое окно Model Properties и взгляд в панели Истории. |
Можно осуществить эту проверку моделей библиотеки.
ID проверки: mathworks.design.ModelInfoKeywordSubstitution
Используйте эту проверку, чтобы найти блоки Model Info, которые могут быть изменены внешними инструментами системы контроля версий через замену ключевого слова.
Эта проверка ищет векторы символов в блоке Model Info, заключенном в знаках доллара, которые могут быть перезаписаны внешним инструментом системы контроля версий. Используя независимый источник расширение ключевого слова инструмента управления может повредить ваши файлы модели, когда вы представляете их. Замена ключевого слова не доступна в формате файла модели SLX.
Для более гибкого интерфейса к инструментам системы контроля версий используйте проект Simulink вместо блока Model Info. Займитесь Системой контроля версий с Проектами.
Условие | Рекомендуемое действие |
---|---|
Блок Model Info содержит поля как это: | Рассмотрите список полей в отчете, затем удалите векторы символов ключевого слова из блока Model Info. |
ID проверки: mathworks.design.ModelInfoConfigurationManager
Используйте эту проверку, чтобы найти блоки Model Info, которые используют Менеджер конфигурации.
Блоки Model Info с помощью Менеджера конфигурации позволяют опасную замену ключевого слова с помощью внешних инструментов системы контроля версий. Используя независимый источник расширение ключевого слова инструмента управления может повредить ваши файлы модели, когда вы представляете их. Замена ключевого слова не доступна в формате файла модели SLX. Менеджер конфигурации для блока Model Info будет демонтирован в будущем релизе.
Для более гибкого интерфейса к инструментам системы контроля версий используйте проект Simulink вместо блока Model Info. Займитесь Системой контроля версий с Проектами.
Условие | Рекомендуемое действие |
---|---|
Блок Model Info использует Менеджер конфигурации. | Нажмите Remove the Configuration Manager. |
ID проверки: mathworks.design.Aeroblks.CheckDOF
Блоки списков 3DoF и 6DoF устарели.
Эта проверка ищет 3DoF и 6DoF блоки из версий библиотеки до 3,13 (R2014a).
Условие | Рекомендуемое действие |
---|---|
Найдены блоки, сконфигурированные со старыми версиями 3DoF или 6DoF блоки. | Нажмите Replace 3DoF and 6DoF Blocks, чтобы заменить блоки на последние версии. |
Нажатие на Replace 3DoF and 6DoF Blocks заменяет блоки на последние версии.
Уравнения движения (Aerospace Blockset)
ID проверки: mathworks.design.Aeroblks.CheckFG
Блоки списков сконфигурировали, чтобы использовать версии FlightGear, которые устарели или не поддерживаемые.
Эти поисковые запросы проверки и блоки списков, сконфигурированные, чтобы использовать версии FlightGear, которые устарели или не поддерживаемые.
Условие | Рекомендуемое действие |
---|---|
Блоки, сконфигурированные со старыми версиями FlightGear, найдены. | Нажмите Update FlightGear blocks, чтобы изменить настройки блока к последней поддерживаемой версии FlightGear. Затем загрузите последнюю версию FlightGear, который поддерживает MATLAB. |
Нажатие на Update FlightGear blocks изменяет настройки блока к последней поддерживаемой версии FlightGear.
Интерфейсы средства моделирования рейса (Aerospace Blockset)
ID проверки: mathworks.design.Aeroblks.CheckNAV
Поиски Инерционного Модуля Измерения С тремя осями, Гироскопа С тремя осями и Акселерометра С тремя осями блокируются до 3,21 (R2018a).
Эта проверка ищет Инерционный Модуль Измерения С тремя осями, Гироскоп С тремя осями и блоки Акселерометра С тремя осями, которые были обновлены в R2018a.
Условие | Рекомендуемое действие |
---|---|
Инерционный Модуль Измерения с тремя осями, Гироскоп С тремя осями и Акселерометр С тремя осями блокируются до R2018a. | В R2018a или позже, если вы ранее не решили для условий устойчивого состояния, сохраняют модель теперь. Если вы ранее решили для условий устойчивого состояния для модели, решите для этих условий устойчивого состояния снова, и затем сохраните модель. |
ID проверки: mathworks.design.CheckAndUpdateOldMaskedBuiltinBlocks
Проверяйте на библиотеки, которые должны быть обновлены, чтобы использовать продвинутые параметры.
Эти библиотеки поисковых запросов проверки создали перед R2011b для маскированных блоков, которые должны быть обновлены, чтобы использовать продвинутые параметры. Начиная с R2011b, если параметры блоков не продвинуты, его значение в соединенном блоке заблокировано к его значению в библиотечном блоке. Эта проверка исключает блоки Подсистемы типа, Модели - ссылки, S-функции и M-S-Function.
Условие | Рекомендуемое действие |
---|---|
Библиотеки, которые должны быть обновлены, найдены | Нажмите Update. Если библиотеки были обновлены, осуществлял проверку снова |
Вы можете:
Осуществите эту проверку своих моделей библиотеки.
Исключите блоки и графики от этой проверки, если у вас есть лицензия Simulink Check.
ID проверки: mathworks.design.CheckMaskDisplayImageFormat
Проверка идентифицирует маски с помощью команд отображения изображений с ненужными вызовами imread()
функция.
Эта проверка ищет команды отображения маски, которые выполняют ненужные вызовы к imread()
функция, и обновляет их с командами отображения маски, которые не вызывают imread()
функция. С тех пор 2013a, производительность и оптимизация памяти доступно для рисунков маски, заданных с помощью канала передачи изображения вместо матрицы триплета RGB.
Условие | Рекомендуемое действие |
---|---|
Команды отображения маски, которые выполняют ненужные вызовы к imread() функция найдена. | Нажмите Update. Если блоки были обновлены, осуществлял проверку снова. |
Вы можете:
Осуществите эту проверку своих моделей библиотеки.
Исключите блоки и графики от этой проверки, если у вас есть лицензия Simulink Check.
ID проверки: mathworks.design.CheckMaskRunInitFlag
Проверка идентифицирует, имеют ли команды рисования значка маски зависимость от рабочей области маски.
Эта проверка идентифицирует, имеют ли команды рисования значка маски зависимость от рабочей области маски, и обновляет RunInitForIconRedraw
свойство соответственно. Если нет никакой зависимости от рабочей области маски, значения RunInitForIconRedraw
установлен в off
, тогда как, если существует зависимость от рабочей области маски, значения установлены к on
.
Устанавливание значений RunInitForIconRedraw
к off
то, когда нет никакой зависимости от рабочей области маски, оптимизирует производительность, не выполняя код инициализации маски прежде, чем чертить значок блока.
Условие | Рекомендуемое действие |
---|---|
Команды рисования маски, которые зависят или независимы от рабочей области маски, найдены. | Нажмите Update. Если блоки были обновлены, осуществлял проверку снова. |
Вы можете:
Осуществите эту проверку своих моделей библиотеки.
Исключите блоки и графики от этой проверки, если у вас есть лицензия Simulink Check.
ID проверки: mathworks.design.CheckAndUpdateOldMaskTabnames
Эта проверка идентифицирует маскированные блоки, которые задают вкладки в диалоговом окне маски использование MaskTabNames
параметр.
Эта проверка идентифицирует маскированные блоки, которые используют MaskTabNames
параметр, чтобы программно создать вкладки в диалоговом окне маски. Начиная с R2013b диалоговые средства управления используются к параметрам группы во вкладке на диалоговом окне маски.
Условие | Рекомендуемое действие |
---|---|
Маскированные блоки, которые используют MaskTabNames параметр, чтобы создать вкладки программно в диалоговом окне маски найден. | Нажмите Upgrade, доступный в разделе Action. Если блоки были обновлены, осуществлял проверку снова. |
Можно осуществить эту проверку моделей библиотеки.
ID проверки: mathworks.design.StowawayDoubles
Для строгого проекта с одинарной точностью эта проверка идентифицирует блоки, которые вводят операции с двойной точностью и неоптимальные настройки модели.
Для строгого проекта с одинарной точностью эта проверка идентифицирует блоки, которые вводят операции с двойной точностью и неоптимальные настройки модели.
Условие | Рекомендуемое действие |
---|---|
Операции с плавающей точкой с двойной точностью найдены в модели. | VerifyThat:
|
Модель использует стандарт библиотеки, который не оптимален для строго-одного проектов. | VerifyThat:
|
Логические сигналы не реализованы как булевы данные. | VerifyThat:
|
Если у вас есть лицензия Simulink Check, можно исключить блоки и графики от этой проверки.
ID проверки: mathworks.design.CallsGetParamCompiledSampleTime
Используйте эту проверку, чтобы идентифицировать файлы MATLAB в вашей рабочей среде, которые содержат get_param
вызовы функции возвратить блок CompiledSampleTime
параметр.
Для многоскоростных блоков (включая подсистемы), возвращается Simulink, блок скомпилировал шаг расчета как массив ячеек частот дискретизации в блоке. Возвращаемое значение является массивом ячеек пар, удваивается. Код MATLAB, который принимает это возвращаемое значение только как пары, удваивается, может возвратить ошибку, когда названо многоскоростным блоком. Используйте эту проверку, чтобы идентифицировать такой код в вашей среде. Измените эти экземпляры кода, чтобы признать, что массив ячеек пар удваивается вместо этого.
Например, рассмотрите переменную blkTs, который был присвоен скомпилированный шаг расчета многоскоростного блока.
blkTs = get_param(block,'CompiledSampleTime');
Вот некоторые примеры, в которых работает оригинальный код, только если blkTs является парой, удваивается, и блок является односкоростным блоком:
Пример 1
if isinf(blkTs(1)) disp('found constant sample time') end
Поскольку blkTs является теперь массивом ячеек, Simulink дает это сообщение об ошибке:
Undefined function 'isinf' for input arguments of type 'cell'
if isequal(blkTs, [inf,0]) disp('found constant sample time') end
Пример 2
if all(blkTs == [-1,-1]) disp('found triggered sample time') end
Для вышеупомянутого примера, поскольку blkTs является теперь массивом ячеек, Simulink дает эту ошибку:
Undefined function 'eq' for input arguments of type 'cell'
Вместо этого используйте этот код, для которого blkTs может быть массивом ячеек, или пара удваивается.
if isequal(blkTs, [-1,-1]) disp('found triggered sample time') end
Пример 3
if (blkTs(1) == -1) disp('found a triggered context') end
Снова, поскольку blkTs является теперь массивом ячеек, Simulink дает эту ошибку:
Undefined function 'eq' for input arguments of type 'cell'
Вместо этого используйте этот код.
if ~iscell(blkTs) blkTs = {blkTs}; end for idx = 1:length(blkTs) thisTs = blkTs{idx}; if (thisTs(1) == -1) disp('found a triggered context') end end
Вышеупомянутый код проверяет на инициированный шаг расчета типа (инициированный или асинхронный). В случаях, в которых блок имеет постоянный шаг расчета ([inf, 0]) в дополнение к инициированному или асинхронному или когда блок имеет несколько асинхронных уровней, это альтернативное свойство обнаруживает инициированный шаг расчета типа.
Эта проверка сканирует файлы MATLAB в вашей среде. Если проверка находит экземпляры кода MATLAB, которые содержат get_param
вызовы, чтобы вывести блок скомпилировали шаг расчета, Советник по вопросам Обновления отображает эти результаты. Это предлагает, чтобы вы изменили код, который признает, что блок скомпилировал шаг расчета от многоскоростных блоков.
Условие | Рекомендуемое действие |
---|---|
Никакие файлы MATLAB не вызывают get_param(block,CompiledSampleTime) | 'none' |
Некоторые файлы MATLAB вызывают get_param(block,CompiledSampleTime) | Если файлы используют блок CompiledSampleTime параметр от многоскоростных блоков, измените эти файлы, чтобы признать, что параметр как массив ячеек пар удваивается |
ID проверки: mathworks.design.CheckSingleSimulationOutput
Используйте эту проверку, чтобы идентифицировать, возвращен ли результат симуляции как один Simulink.SimulationOutput
объект.
Эта проверка сканирует вашу модель, чтобы проверить если параметр ReturnWorkspaceOutputs
включен. При включении этого параметра, возвращает симуляцию выходные параметры в Simulink.SimulationOutput
при симуляции в интерактивном режиме. Симуляция выходные параметры включает сигнал, состояние, выход, логгирование DSM, и осциллограф и To Workspace
блокируйте логгирование.
Когда ReturnWorkspaceOutputs
включен, это обеспечивает:
Более легкое управление данными моделирования.
Автоматический доступ к SimulationMetadata
.
Совместимость с несколькими параллельными симуляциями и пакетными симуляциями.
Условие | Рекомендуемое действие |
---|---|
Симуляция выходные параметры не возвращена как single Simulink.SimulationOutput объект | Возвратите всю симуляцию выходные параметры как один |
ID проверки: mathworks.design.ParameterTuning
Используйте эту проверку, чтобы идентифицировать проблемы в модели, которые происходят, когда вы инициализируете параметры или настраиваете их.
Эта проверка сканирует вашу модель для инициализации параметра и настраивающихся проблем как:
Несоответствие уровня между блоками
Разделитесь на нулевую проблему в условно выполняемых подсистемах
Недопустимое значение порта управления в блоках Index Vector
Условие | Рекомендуемое действие |
---|---|
Модель имеет проблемы перехода уровня. | Выберите Automatically handle rate transition for data transfer в панели Solver параметров конфигурации модели. |
Модель имеет деление нулевой проблемой в условно выполняемой подсистеме с портом управления. | В командной строке, запуске set_param(control_port,'DisallowConstTsAndPrmTs', 'on') |
Модель имеет недопустимое значение порта управления в условно выполняемой подсистеме. | В командной строке, запуске set_param(control_port,'DisallowConstTsAndPrmTs', 'on') |
Выберите Upgrade model, чтобы решить вопросы в модели, связанной с инициализацией параметра и настройкой.
ID проверки: mathworks.design.CheckVirtualBusAcrossModelReference
Проверяйте сигналы виртуальной шины та перекрестная модель - ссылка контуры.
Эта проверка идентифицирует корневой уровень Inport и блоки Outport в моделях, на которые ссылаются, и блоках Model с виртуальной шиной выходные параметры, которые требуют, чтобы обновления превратились в невиртуальные сигналы шины.
Если проверка идентифицирует проблемы, нажмите Update Model, чтобы преобразовать корневой уровень Inport и блоки Outport, сконфигурированные для виртуальных шин, чтобы использовать невиртуальные шины в этих ситуациях:
Для корневого уровня блоки Inport — Включают параметр Output as nonvirtual bus и вставляют блок Signal Conversion после блока Inport. Блок Signal Conversion сконфигурирован, чтобы вывести виртуальную шину.
Для корневого уровня блоки Outport — Включают параметр Output as nonvirtual bus in parent model.
Для блоков Model — порты For, блоки Outport которых были обновлены, чтобы решить проблемы, вставляют блок Signal Conversion после соответствующих портов блока Model. Блок Signal Conversion сконфигурирован, чтобы вывести виртуальную шину.
Чтобы решить вопросы, нажмите Upgrade Model.
Осуществите проверку Analyze model hierarchy and continue upgrade sequence модели верхнего уровня и затем вниз через иерархию модели - ссылки.
Нажатие на Upgrade Model преобразует затронутый корневой уровень Inport и блоки Outport, сконфигурированные для виртуальных шин, чтобы использовать невиртуальные шины в моделях где вы:
Используйте управление прототипом функции
Выполните генерацию Кода С++ с I/O arguments step method
опция.
В качестве альтернативы можно изменить настройки спецификации функции генерации Кода С++ на Default step method
:
В Configuration Parameters> Code Generation> панель Interface, нажмите Configure C++ Class Interface.
В диалоговом окне, установленном параметр Function specification на Default step method
.
Используйте шины, которые имеют сигналы переменной размерности
Используйте связанный неавтоматический класс памяти в блоках-сигналах Outport
Преобразование для неавтоматического класса памяти происходит, только если у вас есть целевая лицензия генерации, которой требует модель. Например, цель ERT требует лицензии Embedded Coder.
Используйте модели Экспорта функций, где блок Outport управляется невиртуальной шиной
Имейте блоки Model, что эталонные модели, содержащие блоки Outport, которые были зафиксированы — Нажатия блоки Model обновлений Upgrade Model, ссылающиеся на модели, которым зафиксировала блоки Outport проверка Analyze model hierarchy and continue upgrade sequence.
ID проверки: mathworks.design.DSPFrameUpgrade
Эта проверка идентифицирует пользовательские библиотечные блоки в модели, которые зависят от состояния системы координат сигнала.
Описание
Эта проверка ищет пользовательские библиотечные блоки в модели, которые зависят от состояния системы координат сигнала. Проверка анализирует блоки, рекомендует, фиксирует и приводит причины для мер. Необходимо сделать меры вручную.
Результаты и рекомендуемые действия
Условие | Рекомендуемое действие |
---|---|
Проверка находит пользовательские библиотечные блоки, которые зависят от состояния системы координат сигнала. | Следуйте рекомендации, данной Советником по вопросам Обновления. |
Возможности и ограничения
Можно осуществить эту проверку только пользовательских библиотечных блоков в модели.
Необходимо сделать меры вручную.
Эта проверка появляется, только если вам установили DSP System Toolbox™.
Смотрите также
Основанная на системе координат обработка (DSP System Toolbox)
ID проверки: 'mathworks.design.CheckForSFcnUpgradeIssues'
Используйте это проверяет вашу модель, чтобы идентифицировать проблемы совместимости обновления вашей S-функции. Эти проблемы могут включать использование 32-битных API, компиляцию с несовместимыми опциями или использование отдельных комплексных API устаревших. Некоторые распространенные проблемы и информация, связанная с мерами, описаны в разделе результатов и рекомендаций ниже.
При обновлении S-функций, чтобы использовать функции в последнем релизе, эта проверка сканирует модель, чтобы предостеречь от проблем несовместимости обновления S-функции. Если результат этой проверки дает предупреждение или ошибку, зафиксируйте свои S-функции MEX C согласно описанию.
Условие | Рекомендуемое действие |
---|---|
Сделанные на заказ S-функции не поддержаны. | Перекомпилируйте свою S-функцию с доступными совместимыми опциями. Смотрите Сделанный на заказ файл MEX, Не Поддержанный В Текущем Релизе (MATLAB) для получения дополнительной информации. |
S-функция не скомпилирована с последним API ( | Перекомпилируйте использование последнего флага ( |
S-функция использует 32-битные функции. | Измените свой код согласно инструкциям в Вызовах файла MEX 32-битная Функция (MATLAB). |
S-функция использует удержанные от использования отдельные комплексные API (mxGetPi, mxSetPi, mxGetImagData, mxSetImagData). | Используйте чередованные комплексные API и перекомпилируйте ваш код с последним флагом ( |
S-функция использует удержанный от использования небезопасный типом API данных (mxGetData, mxSetData). | Используйте безопасные с точки зрения типов API данных и перекомпилируйте ваш код. Смотрите Вызовы файла MEX Невведенная Функция Доступа к данным (MATLAB) для получения дополнительной информации. |
S-функция скомпилирована с будущим релизом и не поддержана в текущем релизе. | Смотрите файл MEX, Созданный В Релизе MATLAB, Не Поддержанном В Текущем Релизе (MATLAB), чтобы перекомпилировать ваши файлы. |
ID проверки: mathworks.design.CheckRapidAcceleratorSignalLogging
При симуляции модели в быстром режиме Accelerator используйте эту проверку, чтобы найти, что сигналы вошли в систему модель, которые глобально отключены. Быстрый режим Accelerator поддерживает логгирование сигнала. Используйте эту проверку, чтобы включить сигнал, регистрирующий глобально.
Эта проверка сканирует вашу модель, чтобы видеть, находится ли симуляция в быстром режиме Accelerator и содержит ли модель сигналы с логгированием сигнала. Если проверка находит экземпляр, и логгирование сигнала глобально отключено, опция, чтобы включить логгирование сигнала глобально появляется.
Условие | Рекомендуемое действие |
---|---|
Режим Simulation не является быстрым акселератором. | 'none'. Можно включить сигнал, входящий в систему быстрый режим Accelerator. |
Режим Simulation является быстрым акселератором. Обновление Советник не нашло сигналы с логгированием сигнала включенными. | 'none'. Модель не использует логгирование сигнала. Включите логгирование сигнала для сигналов и глобально если вы хотите регистрировать сигналы. |
Режим Simulation является быстрым акселератором. Обновите найденные сигналы Советника с включенным логгированием сигнала. Однако глобальная установка для логгирования сигнала была отключена. | Включите сигнал, регистрирующий глобально, если вы хотите регистрировать сигналы с включенным логгированием сигнала. |
Логгирование сигнала было уже глобально включено. | 'none'. |
Выбор Modify включает сигнал, регистрирующий глобально в вашей модели.
ID проверки: mathworks.design.VirtualBusUsage
Входные сигналы контрольной шины для набора блоков.
Входные сигналы контрольной шины для набора блоков.
Начиная в R2015b, сигнал виртуальной шины вводит с блоками, которые требуют нешины, или невиртуальный вход шины может вызвать ошибку. Примеры блоков, которые могут задать объект шины как их тип выходных данных, включают блок Bus Creator и корневой блок Inport. Блоки, которые вызывают ошибку, когда у них есть виртуальный вход шины в этой ситуации:
Assignment
Delay
Блок Delay вызывает ошибку, только если вы используете диалоговое окно Block Parameters для:
Установите начальное условие, которое является структурой MATLAB или нулем.
Задайте значение для State name.
Permute Dimension
Reshape
Selector
Unit Delay
Блок Unit Delay вызывает ошибку, только если вы используете диалоговое окно Block Parameters для:
Установите начальное условие, которое является структурой MATLAB или нулем.
Задайте значение для State name.
Vector Concatenate
Условие | Рекомендуемое действие |
---|---|
Вход сигнала виртуальной шины с этими блоками:
| В Советнике по вопросам Обновления нажмите Modify. Проверка вставляет блок Bus to Vector, чтобы попытаться преобразовать виртуальные входные сигналы шины в векторные сигналы. Для проблем, которые Советник по вопросам Обновления идентифицирует, но не может зафиксировать, изменить модель вручную. Для получения дополнительной информации смотрите Правильные Шины, Используемые в качестве Векторов. |
Нажатие на Modify вставляет блок Bus to Vector во входных портах блоков.
Для многих моделей, запуская Советника по вопросам Обновления изменяет вашу модель так, чтобы сигналы шины не были обработаны как векторы. Однако для некоторых моделей можно столкнуться с проблемами совместимости даже после осуществления проверки. Измените свою модель вручную, чтобы решить те проблемы.
После того, как вы компилируете модель с помощью Советника по вопросам Обновления, Редактор Simulink иногда указывает, что необходимо сохранить модель (модель грязна), даже при том, что вы не вносили изменения. Чтобы препятствовать тому, чтобы эта проблема повторялась для этой модели, сохраните модель.
Моделирование шаблона | Проблема | Решение |
---|---|---|
Блок Data Store Memory с набором Data Type к | Блок Data Store Memory, связанный Data Store Read которого или Data Store Write блокируют данные сигнала шины чтения или шины записи, должен использовать объект шины. | В блоке Data Store Memory, набор Data Type сигнализируют об атрибуте к |
Блок Signal Conversion параметр Output совпадает с типом входной шины | Блок Signal Conversion, параметр Output которого устанавливается на Блок Signal Conversion, параметр Output которого устанавливается на | Чтобы создать копию входного сигнала, установите Output на |
Merge, Switch или блок Multiport Switch с несколькими входными параметрами шины | Merge, Switch или блоки Multiport Switch с несколькими входными параметрами шины требуют, чтобы те входные параметры имели те же имена и иерархию. | Реконфигурируйте модель так, чтобы входные параметры шины имели те же имена и иерархию. |
Корневой блок Inport, выводящий виртуальную шину и задающий значение для Port dimensions | Корневой блок Inport, что выходные параметры к виртуальной шине должны наследовать размерности. | Установите блок Inport атрибут сигнала Port dimensions на |
Блок Mux с невиртуальными входными параметрами шины | Блок Mux не может принять невиртуальные сигналы шины. | Чтобы обработать выход как массив, замените блок Mux на блок Vector Concatenate. Если вы хотите виртуальную шину выход, используйте блок Bus Creator, чтобы объединить сигналы. |
Блок Bus to Vector без сигнала виртуальной шины вводится | Сигналу нешины не нужен блок Bus to Vector. | Удалите блок Bus to Vector. |
Блок Assignment с виртуальными входными параметрами шины | Советник по вопросам Обновления преобразует блок Assignment | Добавьте блок Bus to Vector перед блоком Assignment. |
S-функция с помощью невиртуальной шины | S-функция, которая не является S-функцией Уровня 2 C, не поддерживает невиртуальные сигналы шины. | Измените S-функцию, чтобы быть S-функцией Уровня 2 C. Рассмотрите использование блока S-Function Builder, чтобы создать S-функцию Уровня 2 C. |
Диаграмма Stateflow с параметризованным типом данных | В диаграмме Stateflow вы не можете параметризовать тип данных ввода или вывода в терминах другого ввода или вывода, если тип данных является объектом шины. | Для параметризованного порта, набор Data Type к |
Подсистема с автобусными перевозками в диаграмме Stateflow | Блок Inport в подсистеме в диаграмме Stateflow требует типа данных Object шины, если его сигнал является шиной. | В блоке Inport, набор Data type к |
Блок Ground используется в качестве источника шины | Выходной сигнал блока Ground не может быть источником для шины. | Используйте блок Constant с набором Constant value к 0 и набором атрибута сигнала Output data type к |
Корневой блок Outport с одноэлементным типом данных Object шины | Вход с блоком Outport должен быть шиной, если это задает объект шины как свой тип данных. | В блоке Outport, набор Data type к |
ID проверки: mathworks.design.CheckConstRootOutportWithInterfaceUpgrade
Используйте эту проверку, чтобы идентифицировать корневые выходные порты с постоянным шагом расчета, используемым с целью AUTOSAR, Управлением Прототипом функции или интерфейсом класса C++ модели.
Корневые выходные порты с постоянным шагом расчета не поддержаны при использовании цели AUTOSAR, Управления Прототипом функции или интерфейса класса C++ модели. Используйте эту проверку, чтобы идентифицировать корневые блоки Выходного порта с этим условием и изменить блоки, как рекомендуется.
Условие | Рекомендуемое действие |
---|---|
Корневой выходной порт с постоянным шагом расчета, используемым с целью AUTOSAR, Управлением Прототипом функции или интерфейсом класса C++ модели. | Рассмотрите одно из следующего:
|
ID проверки: com.mathworks.Simulink.UpgradeAdvisor.UpgradeModelHierarchy
Проверяйте на дочерние модели и проведите вас по проверкам обновления.
Эта проверка идентифицирует дочерние модели этой модели и проводит вас по проверкам обновления, чтобы запустить и некомпиляцию и проверки компиляции. Советник обеспечивает инструменты, чтобы помочь с этими задачами:
Если проверка находит дочерние модели, она предлагает запускать Советника по вопросам Обновления на каждую дочернюю модель в свою очередь и продолжать последовательность обновления. Если у вас есть иерархия модели, необходимо проверять и обновить каждую дочернюю модель в свою очередь.
Если нет никаких дочерних моделей, все еще необходимо продолжить последовательность проверки, пока вы не запустили и некомпиляцию и компилируете проверки.
Необходимо запустить регистрации обновления этого порядка: сначала проверки, которые не запрашивают информацию времени компиляции и не инициировать Схему Обновления, затем проверки компиляции.
Нажмите Continue Upgrade Sequence, чтобы осуществить следующие проверки. Если будут дочерние модели, это откроет следующую модель. Продолжите нажатие по Continue Upgrade Sequence до передач проверки.
Условие | Рекомендуемое действие |
---|---|
Найдены дочерние модели | Нажмите Continue Upgrade Sequence, чтобы осуществить следующие проверки. Если будут дочерние модели, это закроет текущего Советника по вопросам Обновления сеанс и откроет Советника по вопросам Обновления по следующей модели в иерархии. |
Никакие дочерние модели, но больше проверок, чтобы запуститься | Если нет никаких дочерних моделей, нажмите Continue Upgrade Sequence, чтобы обновить Советника по вопросам Обновления с выбранными проверками компиляции. Проверки компиляции инициировали Схему Обновления (отмеченный ^ ). Осуществите следующие проверки и примите рекомендуемые меры. Когда вы возвратитесь к этой проверке, нажмите Continue Upgrade Sequence до этой проверки передачи. |
Лучшая практика для обновления иерархии модели состоит в том, чтобы проверять и обновить каждую модель, запускающуюся в листовом конце и работающую до корневой модели.
Когда вы нажимаете Continue Upgrade Sequence, Upgrade Advisor открывает листовую модель настолько далеко в иерархии, как это может найти. Последующие шаги проводят вас по обновлению вашей иерархии от листа, чтобы базироваться модель.
Когда вы открываете Советника по вопросам Обновления, проверки, которые выбраны, не запрашивают информацию времени компиляции и не инициировали Схему Обновления. Проверки, которые инициировали Схему Обновления, не выбраны, чтобы запуститься по умолчанию и отмечены ^
. Когда вы будете использовать Советника по вопросам Обновления на иерархии, продолжите нажатие по Continue Upgrade Sequence, чтобы переместиться через эту последовательность анализа:
Советник по вопросам Обновления открывает каждую модель и библиотеку в свою очередь, от листа, чтобы базироваться, и выбирает проверки некомпиляции. Осуществите проверки, примите любые рекомендуемые меры, затем нажмите Continue Upgrade Sequence, чтобы открыть следующую модель и продолжиться.
Когда вы достигаете корневого конца иерархии, Советник по вопросам Обновления затем открывает каждую модель снова в том же порядке (но не библиотеки) и выбирает только проверки, которые требуют компиляции модели. Осуществите проверки, примите любые рекомендуемые меры, затем нажмите Continue Upgrade Sequence, чтобы открыть следующую модель. Продолжите, пока вы не достигнете конца иерархии и этой проверки передачи.
ID проверки: mathworks.design.ConflictsForDataStoreReadWriters
Идентифицируйте потенциальную чувствительность порядка выполнения при чтении и записи в хранилища данных.
Порядок выполнения блоков, которые читают и пишут в то же хранилище данных, может изменить результат симуляции. Когда блоки в той же иерархии получают доступ к тому же хранилищу данных, порядок выполнения не детерминирован.
Условие | Рекомендуемое действие |
---|---|
К Блоку памяти Хранилища данных получают доступ несколько блоков в той же иерархии. | Чтобы осуществить порядок выполнения для блоков, рассмотрите следующее:
|
ID проверки: mathworks.design.TaskBasedSorting
Проверяйте, что относительный порядок выполнения изменяется между наследием и основанной на задаче сортировкой для блоков Записи Чтения и Хранилища данных Хранилища данных.
.
Устаревшие модели использовали блочную сортировку, чтобы определить порядок выполнения блока. С основанной на задаче сортировкой может измениться относительный порядок выполнения, включающий Блоки памяти Хранилища данных. Эта проверка обнаруживает изменения и предоставляет возможность обновлять вашу модель с исходным порядком выполнения.
Условие | Рекомендуемое действие |
---|---|
Порядок выполнения с Блоком памяти Хранилища данных изменяется. Вы хотите исходный порядок выполнения. | Нажмите кнопку Modify. |