Используйте Simulink® Model Advisor проверяет, чтобы сконфигурировать модель для симуляции.
Simulink Coder проверяет (Simulink Coder)
Simulink Check проверки ( Simulink Check)
Упрощенный режим инициализации был введен в R2008b для улучшения согласованности результатов симуляции. Этот режим особенно важен для моделей, которые не задают начальные условия для условно выполненных выходных портов подсистемы. Для получения дополнительной информации см. «Упрощенный режим инициализации» и «Классический режим инициализации».
Используйте Model Advisor проверяет Migrating to Simplified Initialization Mode, чтобы помочь перенести модель в упрощенный режим инициализации.
Проверяйте идентификатор: mathworks.design.UnconnectedLinesPorts
Проверьте наличие несвязанных линий или портов.
Эта проверка приводит список несвязанных линий или портов. Они могут иметь трудности с распространением атрибутов сигнала, таких как тип данных, шаг расчета и размерностей.
Примечание
Порты, подключенные к блокам ground/terminator, пройдут этот тест.
Состояние | Рекомендуемое действие |
---|---|
Линии, входные порты или выходные порты не подключены. | Соедините сигналы. Дважды кликните список несвязанных элементов, чтобы найти отказ. |
Вы можете:
Запустите эту проверку на своих моделях библиотеки.
Исключить блоки и графики из этой проверки, если у вас есть лицензия Simulink Check™.
Используйте PortConnectivity
команда для получения массива структур, описывающих входные или выходные порты блоков.
Общие свойства блоков для информации о PortConnectivity
команда.
Обзор исключения Model Advisor (Simulink Check)
Проверяйте идентификатор: mathworks.design.RootInportSpec
Проверяйте, что корневая модель Блоки Inport полностью определяют размерности, шаг расчета и тип данных.
Использование корневой модели Блоки Inport, которые не полностью определяют размерности, шаг расчета или тип данных, может привести к нежелательным результатам симуляции. Программа Simulink обратно распространяет размерности, шаги расчета и типы данных из нисходящих блоков, если вы не присвоите им явно значения.
Состояние | Рекомендуемое действие |
---|---|
Блоки Inport корневого уровня имеют неопределенные атрибуты. | Полностью определите атрибуты блоков Inport корневого уровня. |
Если у вас есть лицензия Simulink Check, можно исключить блоки и графики из этой проверки.
Эту проверку проходят следующие строения:
Configuration Parameters > Solver > Periodic sample time constraint установлено на Ensure sample time independent
Для моделей export-function унаследованный шаг расчета не помечен.
Проверяйте идентификатор: 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)
Проверяйте идентификатор: 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 и устраните диагностические предупреждения или ошибки. |
Проверяйте идентификатор: mathworks.design.ParamTunabilityIgnored
Проверяет, включена ли информация о настраиваемости параметров в диалоговое окно Параметр модели Configuration.
Программа Simulink игнорирует информацию о настраиваемости, заданную в диалоговом окне Параметра модели Строения. Эта проверка идентифицирует модели, содержащие информацию о настраиваемости параметров, которую программное обеспечение Simulink будет игнорировать, если на модель ссылаются другие модели.
Состояние | Рекомендуемое действие |
---|---|
Модель содержит проигнорированную информацию о настраиваемости параметра. | Щелкните ссылки, чтобы преобразовать в эквивалентные объекты параметра Simulink в MATLAB® рабочей области. |
Создайте настраиваемый параметр калибровки в сгенерированном коде (Simulink Coder)
Проверяйте идентификатор: mathworks.design.ImplicitSignalResolution
Идентифицируйте модели, которые пытаются разрешить именованные сигналы и состояния, чтобы Simulink.Signal
объекты.
Требование к программному обеспечению Simulink разрешить все именованные сигналы и состояния неэффективно и замедляет инкрементальную генерацию кода и модель-ссылку. Эта проверка идентифицирует те сигналы и состояния, для которых вы можете выключить неявное разрешение сигнала и обеспечить разрешение.
Состояние | Рекомендуемое действие |
---|---|
Не все сигналы и состояния разрешены. | Отключите неявное разрешение сигнала и обеспечьте разрешение для каждого сигнала и состояния, которое разрешается. |
Проверяйте идентификатор: mathworks.design.OptBusVirtuality
Идентифицируйте виртуальные шины, которые можно сделать невиртуальными. Делая эти шины невиртуальными, улучшает эффективность сгенерированного кода.
Эта проверка идентифицирует блоки, включающие виртуальные шины, которые пересекают контур подсистемы. Изменение их на невиртуальные улучшает эффективность сгенерированного кода.
Состояние | Рекомендуемое действие |
---|---|
Блоки, которые задают виртуальную шину, пересекающую контур подсистемы. | Измените подсвеченную шину на невиртуальную. |
Вы можете:
Запустите эту проверку на своих моделях библиотеки.
Исключить блоки и графики из этой проверки, если у вас есть лицензия Simulink Check.
Обзор исключения Model Advisor (Simulink Check)
Проверяйте идентификатор: mathworks.design.DiscreteTimeIntegratorInitCondition
Идентифицируйте блоки Интегратора в Дискретном Времени с портами состояний и портами начальных условий, которые не питаются ни от блока Initial Condition, ни от блока Constant.
Блоки Интегратора в Дискретном Времени с портами состояний и начальных условий могут не быть подходящим образом инициализированы, если они не поданы из блока Initial Condition или Constant. Это, скорее всего, произойдет, когда блоки Интегратора Дискретного Времени используются для моделирования динамических систем второго или более высокого порядка.
Состояние | Рекомендуемое действие |
---|---|
Блоки Интегратора в Дискретном Времени не инициализируются во время фазы инициализации модели. | Добавьте блок Constant или Initial Condition для подачи внешнего порта Initial Condition. |
Вы можете:
Запустите эту проверку на своих моделях библиотеки.
Исключить блоки и графики из этой проверки, если у вас есть лицензия Simulink Check.
Обзор исключения Model Advisor (Simulink Check)
Проверяйте идентификатор: mathworks.design.DisabledLibLinks
Модель поиска отключенных библиотечных ссылок.
Отключенные библиотечные ссылки могут привести к неожиданным результатам симуляции. Разрешение отключенных ссылок перед сохранением модели.
Примечание
Эта проверка может перекрываться с моделью Check для проблем с обновлением блоков.
Состояние | Рекомендуемое действие |
---|---|
Библиотечные ссылки отключены. | Щелкните Library Link > Resolve link опции в контекстном меню. |
Вы можете:
Запустите эту проверку на своих моделях библиотеки.
Исключить блоки и графики из этой проверки, если у вас есть лицензия Simulink Check.
Используйте Model Browser для поиска библиотечных ссылок.
Чтобы включить разорванную ссылку, щелкните правой кнопкой мыши блок в модели, чтобы отобразить контекстное меню. Выберите Library Link > Resolve link.
Восстановление отключенных ссылок
Обзор исключения Model Advisor (Simulink Check)
Проверяйте идентификатор: mathworks.design.CheckVirtualBusAcrossModelReferenceArgs
Проверяет сигналы виртуальной шины, которые пересекают модель-ссылку контуров и помечает случаи, когда использование виртуальных шин через модель-ссылку контура значительно увеличивает количество аргументов функции.
Чтобы улучшить скорость процесса генерации кода, можно использовать эту проверку, чтобы уменьшить количество сгенерированных аргументов функции. Если проверка находит модель, в которой будет сгенерировано много аргументов для функции, можно щелкнуть Update Model, чтобы изменить модель так, чтобы она генерировала меньше аргументов.
Методы, которые генерируют много аргументов функции в результате пересечения сигнала виртуальной шины модели-ссылки контура замедлить процесс генерации кода.
Состояние | Рекомендуемое действие |
---|---|
Перечислены методы, которые генерируют большое количество аргументов для текущего строения модели, которую эта проверка может уменьшить путем изменения модели. | Нажмите Update Model. |
Клик Update Model сбрасывает Inport и Outport параметры блоков и вставляет Signal Conversion блоки, при необходимости, чтобы уменьшить количество сгенерированных аргументов функции для модели.
Проверяйте идентификатор: mathworks.design.ParameterizedLibLinks
Поиск модели для параметризованных библиотечных ссылок.
Параметризованные библиотечные ссылки, которые являются непреднамеренными, могут привести к неожиданным настройкам параметров в вашей модели. Это может привести к неправильной операции модели.
Состояние | Рекомендуемое действие |
---|---|
Перечислены параметризованные ссылки. | Проверьте, что ссылки предназначены для параметризации. |
Вы можете:
Запустите эту проверку на своих моделях библиотеки.
Исключить блоки и графики из этой проверки, если у вас есть лицензия Simulink Check.
Щелкните правой кнопкой мыши блок в модели, чтобы отобразить контекстное меню. Выберите Link Options
и нажмите Go To Library Block
чтобы увидеть исходный блок из библиотеки.
Чтобы параметризовать ссылку на библиотеку, выберите Look Under Mask
, из контекстного меню и выберите параметр.
Восстановление отключенных ссылок
Обзор исключения Model Advisor (Simulink Check)
Проверяйте идентификатор: mathworks.design.UnresolvedLibLinks
Поиск в модели неразрешенных библиотечных ссылок, где указанный библиотечный блок не может быть найден.
Проверьте наличие неразрешенных библиотечных ссылок. Модели не моделируются, пока существуют неразрешенные библиотечные ссылки.
Состояние | Рекомендуемое действие |
---|---|
Ссылки на библиотеку не разрешены. | Найдите отсутствующие библиотечные блоки или альтернативу. |
Вы можете:
Запустите эту проверку на своих моделях библиотеки.
Исключить блоки и графики из этой проверки, если у вас есть лицензия Simulink Check.
Исправление неразрешенных библиотечных ссылок
Обзор исключения Model Advisor (Simulink Check)
Проверяйте идентификатор: mathworks.design.CSStoVSSConvert
Найдите модель, чтобы идентифицировать конфигурируемые блоки подсистемы на уровне модели или подсистемы.
Состояние | Рекомендуемое действие |
---|---|
Идентифицируются конфигурируемые блоки подсистем. | Преобразуйте эти блоки в варианты подсистемных блоков, чтобы избежать проблем совместимости. См. Configurable Subsystem. |
Эту проверку можно запустить на моделях библиотеки.
Проверяйте идентификатор: mathworks.design.ConvertMdlrefVarToVSS
Найдите модель, чтобы идентифицировать блоки Variant Model.
Состояние | Рекомендуемое действие |
---|---|
Variant Model блоки, доступные в модели. | Преобразуйте эти блоки в блоки Variant Subsystem. |
Проверяйте идентификатор: mathworks.design.emptyVariantObjects
Найдите модель, чтобы идентифицировать блоки или библиотеку Variant, имеющую пустые объекты вариант.
Состояние | Рекомендуемое действие |
---|---|
Перечислены блоки Variant в модели или библиотеке, имеющие пустые объекты вариант. | Используйте действительные условия в объектах варианта. |
Проверяйте идентификатор: mathworks.design.CheckForProperFcnCallUsage
Проверьте настройки диагностики модели, которые применяются к соединению вызова функции и которые могут повлиять на выполнение модели.
Проверьте параметры диагностики связи, которые могут привести к выполнению недетерминированной модели.
Состояние | Рекомендуемое действие |
---|---|
Diagnostic > Connectivity > Context-dependent inputs установлено на Disable All или Use local settings . Это может привести к недетерминированному выполнению модели. | Установите Diagnostics > Connectivity > Context-dependent inputs значение Enable all as errors . |
Проверяйте идентификатор: mathworks.design.DataStoreMemoryBlkIssue
Проверьте проблемы моделирования, связанные с блоками Data Store Memory.
Проверяет целостность данных многозадачности, сильное типирование и затенение хранилищ данных более высоких возможностей.
Состояние | Рекомендуемое действие |
---|---|
Проверка Duplicate data store names установлена на none или warning . | Рассмотрите установку проверки имен хранилища данных на error в диалоговом окне «Параметры конфигурации» на панели Diagnostics > Data Validity. |
Имена переменных хранилища данных не сильно вводятся в одном из следующих типов:
| Задайте тип данных, отличный от auto, выполнив одно из следующих действий:
|
Проверка Multitask data store установлена на none или warning . | Рассмотрите установку проверки хранилища данных Multitask на error в диалоговом окне «Параметры конфигурации» на панели Diagnostics > Data Validity. |
Если у вас есть лицензия Simulink Check, можно исключить блоки и графики из этой проверки.
Проверяйте идентификатор: mathworks.design.DiagnosticDataStoreBlk
Для блоков хранилища данных в модели включите проверку порядка диагностики чтения и записи, чтобы обнаружить проблемы во время выполнения.
Проверьте наличие проверки порядка диагностики чтения и записи. Включив диагностику чтения и записи, вы обнаруживаете потенциальные проблемы во время выполнения.
Состояние | Рекомендуемое действие |
---|---|
Проверка Detect read before write отключена. | Рассмотрите возможность включения функции «Обнаружить чтение перед записью» в диалоговом окне Параметра конфигурации Diagnostics > Data Validity панели. |
Проверка Detect write after read отключена. | Рассмотрите включение функции Обнаружить запись после чтения в диалоговом окне Параметра конфигурации Diagnostics > Data Validity панели. |
Проверка Detect write after write отключена. | Рассмотрите включение Обнаружить запись после записи в диалоговом окне Параметра конфигурации Diagnostics > Data Validity панели. |
Исключить блоки и графики из этой проверки, если у вас есть лицензия Simulink Check.
.
Диагностика во время выполнения может значительно замедлить симуляции. После проверки того, что Simulink не генерирует предупреждения или ошибки во время симуляции, установите их на Disable all
.
Обзор исключения Model Advisor (Simulink Check)
Проверяйте идентификатор: mathworks.design.DataStoreBlkSampleTime
Идентифицируйте ошибки моделирования из-за шагов расчета блоков хранилища данных.
Проверяйте блоки хранилища данных на непрерывные или незначительные шаги расчета.
Состояние | Рекомендуемое действие |
---|---|
Блоки хранения данных в вашей модели имеют непрерывное или фиксированные шаги расчета в мелком шаге. | Рассмотрите возможность сделать перечисленные блоки дискретными или заменить их Memory или Goto и From блоками. |
Если у вас есть лицензия Simulink Check, можно исключить блоки и графики из этой проверки.
Проверяйте идентификатор: mathworks.design.OrderingDataStoreAccess
Проверьте проблемы чтения/записи, которые могут вызвать неточности в результатах.
Во время Update Diagram идентифицируйте потенциальные проблемы, связанные с условиями чтения до записи, записи после чтения и записи после записи для блоков хранилища данных.
Состояние | Рекомендуемое действие |
---|---|
Чтение и запись (условие чтения до записи или записи после чтения) происходят вне порядка. | Рассмотрите реструктуризацию модели так, чтобы блок Data Store Read выполнялся перед блоком Data Store Write. |
Несколько операций записи выполняются за один временной шаг. | Измените модель, чтобы записывать данные только один раз за временной шаг или обратитесь к следующему разделу «Советы». |
Если у вас есть лицензия Simulink Check, можно исключить блоки и графики из этой проверки.
Эта проверка выполняет статический анализ, который может не идентифицировать каждый образец неправильного использования. В частности, подсистемы вызова функций, диаграммы Stateflow, MATLAB для генерации кода, для подсистем итератора и для каждой подсистемы могут вызвать как пропущенные обнаружения, так и ложные срабатывания. Для более полной проверки рассмотрите включение следующей диагностики на панели Diagnostics > Data Validity в диалоговом окне Параметров конфигурации: Обнаружение чтения перед записью, Обнаружение записи после чтения и Обнаружение записи после записи.
Проверяйте идентификатор: mathworks.design.MismatchedBusParams
Идентифицируйте блоки и Simulink.Signal
объекты, которые инициализируют сигналы шины при помощи несовпадающих структур.
В модели можно использовать структуру MATLAB, чтобы инициализировать сигнал шины. Например, если вы передаете сигнал шины через блок Unit Delay, можно задать параметр Initial condition в структуру. Основные сведения об инициализации шин при помощи структур см. в разделе «Задание начальных условий для элементов шины».
Запустите эту проверку, чтобы сгенерировать эффективный и читаемый код путем согласования типов формы и числовых данных начальных структур условий с типами сигналов шины. Соответствие этим характеристикам позволяет избежать ненужных явных наборов типов и заменяет присвоения структуры по полям на, например, вызовы memcpy
.
В этом чеке перечислены блоки и Simulink.Signal
объекты, которые инициализируют сигналы шины при помощи частичных структур. Во время итерационного процесса создания модели можно использовать частичные структуры, чтобы фокусироваться на подмножестве сигнальных элементов в шине. Для зрелой модели используйте полные структуры, чтобы:
Сгенерируйте читаемый и эффективный код.
Поддержка стиля моделирования, который явно инициализирует неопределенные сигналы. Когда вы используете частичные структуры, Simulink неявно инициализирует неопределенные сигналы.
Дополнительные сведения о полных и частичных структурах см. в разделе Создание полных структур для инициализации и Создание частичных структур для инициализации.
В этом чеке перечислены блоки и Simulink.Signal
объекты, структуры начальных условий которых вводят несоответствия типов данных. Поля этих структур имеют типы числовых данных, которые не совпадают с типами данных соответствующих элементов сигнала шины.
Эта проверка не обнаруживает несоответствия для блоков, таких как блок Unit Delay, который неявно преобразует тип данных начального условия в входной сигнал.
Когда вы конфигурируете начальную структуру условий как настраиваемую глобальную структуру в сгенерированном коде, избегайте ненужных явных наборов типов, совпадая с типами данных. Смотрите Generate Tunable Initial Condition Structure для сигнала шины (Simulink Coder).
Состояние | Рекомендуемое действие |
---|---|
Блок или сигнальный объект использует частичную структуру | Рассмотрите использование функции |
Типы данных структурных полей не совпадают с типами данных соответствующих сигнальных элементов | Рассмотрите определение структуры как |
Проверяйте идентификатор: 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.
Проверяйте идентификатор: mathworks.design.CallslDataTypeAndScale
Идентифицируйте вызовы внутренней функциональной slDataTypeAndScale
.
В некоторых предыдущих версиях Simulink открытие модели, которая была сохранена в более ранней версии, запускает автоматическое обновление до кода для обработки типов данных. Автоматическое обновление вставляет вызовы внутренней функции slDataTypeAndScale
. Хотя Simulink продолжает поддерживать некоторые виды использования функции, если вы устраняете вызовы к ней, то получаете более чистый и быстрый код.
Simulink не поддерживает вызовы в slDataTypeAndScale
когда:
Первый аргумент является Simulink.AliasType
объект.
Первый аргумент является Simulink.NumericType
объект со свойством IsAlias
установите значение true.
Выполнение проверки вызовов slDataTypeAndScale идентифицирует вызовы к slDataTypeAndScale
которые требуются или рекомендуются для замены. В большинстве случаев выполнение проверки и выполнение рекомендуемого действия устраняет вызовы. Можно игнорировать вызовы, которые остаются. Запустите проверку, если вы не уверены, что нет вызовов для slDataTypeAndScale
.
Состояние | Рекомендуемое действие |
---|---|
Требуемые варианты замены | Вручную или автоматически заменить вызовы на slDataTypeAndScale . Перечисленные случаи требуют, чтобы вы заменяли вызовы на slDataTypeAndScale . |
Рекомендуемые варианты замены | В перечисленных случаях рекомендуется вручную или автоматически заменить вызовы на slDataTypeAndScale . |
Случаи ручного контроля | Проверьте каждый перечисленный случай, чтобы определить, следует ли его обновление вручную. |
Если у вас есть лицензия Simulink Check, можно исключить блоки и графики из этой проверки.
Не вставляйте вызов вручную на slDataTypeAndScale
в модель. Функция предназначена только для внутреннего использования.
Running Check for calls to slDataTypeAndScale вызывает функцию Simulink slRemoveDataTypeAndScale
. Вызов этой функции непосредственно обеспечивает более широкую область значений опций преобразования. Однако вам очень редко нужно больше опций преобразования.
Для получения дополнительной информации об обновлении типов данных и шкал в Командном окне MATLAB выполните следующее:
help slDataTypeAndScale
help slRemoveDataTypeAndScale
Обзор исключения Model Advisor (Simulink Check)
Проверяйте идентификатор: mathworks.design.BusTreatedAsVector
Идентифицируйте сигналы шины, которые Simulink обрабатывает как векторы.
Вы не можете использовать сигналы шины, которые программа Simulink неявно преобразует в векторы. Вместо этого либо вставьте блок преобразования Bus to Vector между сигналом шины и входным портом блока, который он питает, либо используйте Simulink.BlockDiagram.addBusToVector
команда.
Состояние | Рекомендуемое действие |
---|---|
Сигналы шины неявно преобразуются в векторы. | Использование |
Модель не сконфигурирована, чтобы идентифицировать сигналы шины, которые Simulink обрабатывает как векторы. | В диалоговом окне Configuration Parameters на панели Diagnostics > Connectivity установите Bus signal treated as vector |
Щелчок мыши Modify вставляет блок Bus to Vector во входные порты блоков, которые неявно преобразуют сигналы шины в векторы.
Запустите эту проверку перед выполнением Check consistency of initialization parameters for Outport and Merge blocks.
Для получения дополнительной информации смотрите Идентификация автоматического преобразования шины.
Проверяйте идентификатор: mathworks.design.DelayedFcnCallSubsys
Идентифицируйте возвраты вызова функции, которые могут быть отложены, потому что программное обеспечение Simulink вставило неявный блок преобразования сигнала.
Так что сигналы находятся в смежной памяти, программное обеспечение Simulink может автоматически вставить неявный блок преобразования сигнала перед блоком входа портов инициатора вызова функции. Это может привести к одноэтапной задержке в возвращении значений сигналов из вызывающих подсистем вызова функций. Задержки можно избежать, гарантируя, что сигнал исходит из сигнального блока в системе вызова функции. Или, если задержка приемлема, вставьте блок Unit Delay перед затронутыми входными портами.
Состояние | Рекомендуемое действие |
---|---|
Перечисленные входные порты блоков могут иметь неявный блок Signal Conversion. | Решите, является ли одношаговая задержка в возвращении значений сигналов приемлемой для перечисленных сигналов.
|
Если у вас есть лицензия Simulink Check, можно исключить блоки и графики из этой проверки.
Обзор исключения Model Advisor (Simulink Check)
Проверяйте идентификатор: mathworks.design.OutputSignalSampleTime
Найдите непрерывные шаги расчета сигналы без выхода с плавающей точкой.
Сигналы без плавающей точки могут не представлять непрерывные переменные без потери информации.
Состояние | Рекомендуемое действие |
---|---|
Сигналы с непрерывными шагами расчета имеют тип данных без плавающей точки. | На идентифицированных сигналах либо измените шаг расчета, чтобы оно было дискретным, либо исправьте незначительный шаг ([0 1]). |
Если у вас есть лицензия Simulink Check, можно исключить блоки и графики из этой проверки.
Обзор исключения Model Advisor (Simulink Check)
Проверяйте идентификатор: mathworks.design.MergeBlkUsage
Идентифицируйте блоки Merge с настройками параметров, которые могут привести к неожиданному поведению и помочь перенести вашу модель в упрощенный режим инициализации.
Примечание
Запустите эту проверку вместе с другими проверками в обзоре режима миграции на упрощенную инициализацию.
Упрощенный режим инициализации был введен в R2008b для улучшения согласованности результатов симуляции. Для получения дополнительной информации см. «Упрощенный режим инициализации» и «Классический режим инициализации».
Эта проверка Model Advisor идентифицирует настройки в блоках Merge в вашей модели, которые могут вызвать проблемы, если вы используете классический режим инициализации. Он также рекомендует настройки для согласованного поведения блоков Merge. Результаты подшеков содержат два типа операторов: Failed и Warning. Неудачные операторы идентифицируют проблемы, которые необходимо решить вручную, прежде чем можно будет перенести модель в упрощенный режим инициализации. Операторы предупреждения идентифицируют проблемы или изменения в поведении, которые могут произойти после миграции.
Состояние | Рекомендуемое действие |
---|---|
Проверьте настройку диагностики во время выполнения блока Merge. |
|
Проверьте блоки Model, которые используют режим PIL симуляции. | Упрощенный режим инициализации не поддерживает симуляцию цикла (PIL) для моделей-ссылок. |
Проверьте наличие библиотечных блоков с образцами, которые не могут быть перенесены. | Исследуйте результаты неудачного подмножества для каждого блока, чтобы определить корректирующие действия. |
Проверьте наличие блоков Merge с одним входом. | Замените и блок Mux, используемый для создания входного сигнала, и блок Merge на один блок Merge с мультивходами. Блоки Merge с одним входом не поддерживаются в упрощенном режиме инициализации. |
Проверьте корневые блоки Merge, которые имеют неопределенное Initial output значение. | Если вы не задаете явное значение для параметра Initial output root Merge blocks, то Simulink использует начальное значение по умолчанию для типа выходных данных. Корневой Merge блок является Merge блоком с выходом портом, который не соединяется с другим Merge блоком. Для получения информации об исходном значении по умолчанию см. Раздел «Инициализация значений сигналов». |
Проверьте наличие блоков Merge с ненулевыми смещениями входного порта. | Очистите параметр Allow unequal port widths блока Merge. Примечание Рассмотрите использование Merge блоков только для сигнальных элементов, которые требуют истинного слияния. Можно объединить другие элементы с объединенными элементами с помощью блока Concatenate. |
Проверяйте на наличие блоков Merge, которые имеют несвязанные входы или имеют входы от не выполняемых по условию подсистем. | Установите параметр Number of inputs блока Merge в количество входов блока Merge. Вы должны подключить каждый вход к сигналу. Проверьте, что каждый вход блока Merge управляется условно выполненной подсистемой. Merge блоки не могут управляться непосредственно Iterator Subsystem или блоком, который не является условно выполненной подсистемой. |
Проверяйте блоки слияния с входами, которые объединяются или переупорядочиваются вне условно выполненных подсистем. | Проверьте, что комбинации или переупорядочивание входных сигналов Merge блоков происходят в пределах условно выполненной подсистемы. Такие проекты могут использовать Mux, Bus Creator или Selector блоки. |
Проверьте наличие блоков Merge с несогласованными входами шагов расчета. | Проверьте, что входные сигналы к каждому блоку Merge имеют одинаковые Sample time. Отказ сделать это может привести к непредсказуемому поведению. Следовательно, упрощенный режим инициализации не допускает несогласованных шагов расчета. |
Проверьте наличие блоков Merge с несколькими входными портами, которые управляются одним источником. | Проверьте, что блок Merge не имеет нескольких входных сигналов, которые управляются одной и той же условно выполненной подсистемой или условно выполненным Model блоком. |
Проверьте наличие блоков Merge, которые используют сигнальные объекты для задания Initial output значения. | Проверьте, что следующее поведение приемлемо. В упрощенном режиме инициализации объекты сигнала не могут задать параметр Initial output блока Merge. Хотя вы все еще можете инициализировать выходной сигнал для блока Merge с помощью объекта сигнала, результат инициализации может быть перезаписан результатом для блока Merge. Примечание Simulink генерирует предупреждение о том, что начальное значение объекта сигнала было проигнорировано. |
Проверяйте идентификатор: mathworks.design.InitParamOutportMergeBlk
Идентифицируйте блоки Outport и условные подсистемы с настройками параметров, которые могут привести к неожиданному поведению, и помогают перенести вашу модель в упрощенный режим инициализации.
Примечание
Запустите эту проверку вместе с другими проверками в обзоре режима миграции на упрощенную инициализацию.
Упрощенный режим инициализации был введен в R2008b для улучшения согласованности результатов симуляции. Этот режим особенно важен для моделей, которые не задают начальные условия для условно выполненных выходных портов подсистемы. Для получения дополнительной информации см. «Упрощенный режим инициализации» и «Классический режим инициализации».
Эта проверка Model Advisor идентифицирует блоки Outport и условные подсистемы в вашей модели, которые могут вызвать проблемы, если вы используете упрощенный режим инициализации. Он также рекомендует настройки для согласованного поведения блоков Outport. Результаты подшеков содержат два типа операторов: Failed и Warning. Неудачные операторы идентифицируют проблемы, которые необходимо решить вручную, прежде чем можно будет перенести модель в упрощенный режим инициализации. Операторы предупреждения идентифицируют проблемы или изменения в поведении, которые могут произойти после миграции.
Состояние | Рекомендуемое действие |
---|---|
Проверьте наличие блоков внутри Подсистемы итератора, которые требуют истекшего времени. | В иерархии Подсистемы итератора не используйте блоки, которые требуют службы, которая сохраняет время, прошедшее между двумя последовательными выполнение. Поскольку Подсистема Итератора может выполняться несколько раз в установленный временной шаг, концепция истекшего времени не четко определена между двумя такими выполнениями. Использование этих блоков внутри Подсистемы итератора может вызвать неожиданное поведение. |
Проверьте блоки Outport, которые имеют конфликтующие требования к буферу сигналов. | Блок Outport имеет триггер вызова функции или сигнал зависимости данных вызова функции, проходящий через него, наряду со стандартными сигналами данных. Некоторые стандартные сигналы данных требуют явного буфера сигнала для инициализации выходного сигнала соответствующей подсистемы. Однако буферизация связанных с вызовом функции сигналов приводит к нарушению зависимостей данных вызова функции. Рассмотрите изменение модели, чтобы передать связанные с вызовом функции сигналы через отдельный блок Outport. Для примеров нарушений зависимостей данных вызова функции смотрите модель примера Стандартный сигнал данных может потребовать дополнительную копию сигнала по одной из следующих причин:
|
Проверьте блоки Outport, которые управляются сигналом шины и Initial output значение которых не скаляром. | Для блоков Outport, управляемых сигналами шины, классический режим инициализации не поддерживает структуры Initial Condition (IC), в то время как упрощенный режим инициализации. Следовательно, при миграции модели из классического в упрощенный режим задайте скаляр для параметра Initial Output. После завершения миграции, чтобы задать различные начальные значения для различных элементов сигнала шины, используйте структуры IC. Для получения дополнительной информации см. раздел «Создание начальных структур условий». |
Проверьте наличие блоков Outport, которые требуют явной копии сигнала. | Явная копия сигнала шины, управляющего блоком Outport , требуется для инициализации выходного сигнала соответствующей подсистемы. Вставьте Signal Conversion блок перед блоком Outport, затем установите параметр Output блока Signal Conversion на Стандартный сигнал данных может потребовать дополнительную копию сигнала по одной или нескольким из следующих причин:
|
Проверьте наличие объединенных блоков Outport, которые наследуют значение Initial Output от блоков Outport, настроенных для сброса при отключении блоков. | Когда Outport блоки управляют блоком Merge, не устанавливайте их параметры Output when disabled reset . |
Проверяйте слияние блоков Outport, которые управляются вложенными условно выполненными подсистемами. | Определите, является ли новое поведение блоков Outport приемлемым. Если это недопустимо, измените модель, чтобы учесть новое поведение перед миграцией в упрощенный режим инициализации. |
Проверьте наличие объединенных блоков Outport, которые сбрасываются, когда блоки отключены. | Установите параметр Output when disabled блока Outport равным Для получения дополнительной информации см. раздел Outport. |
Проверьте блоки Outport, которые имеют неопределенное Initial output значение с недопустимыми исходными условиями. | Проверьте, что следующее поведение приемлемо. Когда параметр Initial output не задан ( Для упрощенного режима инициализации действительными источниками, от которых блоки Outport могут наследовать Initial output значение, являются: Constant, Initial Condition, Merge (с исходным выходом), диаграмма Stateflow, модель-ссылка вызова функции или условно выполненные блоки подсистемы. |
Проверьте блоки Outport, которые имеют автоматические переходы скорости. | Simulink вставил блок Rate Transition на вход блока Outport. Задайте параметр Initial output для каждого блока Outport. В противном случае выполните следующую процедуру:
|
Проверьте блоки Outport, которые имеют специальное требование к сохранению сигнала и имеют неопределенное Initial output значение. | Проверьте, что следующее поведение приемлемо. Задайте параметр Initial output для блока Outport. Установите это значение равным |
Проверьте настройку Initial output блоков Outport, которые сбрасываются, когда они отключены. | Задайте параметр Initial output блока Outport. Необходимо задать значение Initial output для блоков, которые настроены для сброса, когда они становятся отключенными. |
Проверьте настройку Initial output для блоков Outport, которые проходят через сигнал зависимости данных вызова функции. | Вы не можете задать Initial output значение для блока Outport, потому что через него проходят сигналы зависимости данных вызова функции. Чтобы задать Initial output значение:
|
Проверьте наличие блоков Outport, которые используют сигнальные объекты для определения значения Initial output. | Проверьте, что следующее поведение приемлемо. В упрощенном режиме инициализации объекты сигнала не могут задать параметр Initial output блока Outport. Можно все еще инициализировать входные или выходные сигналы для блока Outport, используя объекты сигнала, но результаты инициализации могут быть перезаписаны результатами блока Outport. Примечание Если вы работаете с условно выполненной подсистемой Outport блоком, Simulink генерирует предупреждение о том, что начальное значение объекта сигнала было проигнорировано. |
Проверьте наличие библиотечных блоков с образцами, которые имеют предупреждения. | Исследуйте результаты предупреждающего подмножества для каждого блока перед миграцией в упрощенный режим инициализации. |
Проверьте наличие объединенных блоков Outport, которые либо не связаны, либо соединены с блоком Ground. | Проверьте, что следующее поведение приемлемо. Блок Outport управляет блоком Merge, но его входы либо не соединены, либо соединены с блоками Ground. В классическом режиме инициализации несвязанные или заземленные выходные порты не обновляют сигнал слияния, даже когда выполняются их родительские условно выполненные подсистемы. Однако в упрощенном режиме инициализации эти выходные порты обновляют сигнал слияния со значением нуля, когда выполняются их родительские выполняемые по условию подсистемы. |
Проверяйте блоки Outport, которые получают Initial output значение из входного сигнала при миграции. | Проверьте, что следующее поведение приемлемо. Параметр Initial output блока Outport не задан. В результате упрощенный режим инициализации будет принимать, что значение Initial output для блока Outport выведено из входного сигнала. Это предположение может привести к другому поведению инициализации. Если это поведение не приемлемо, измените модель перед миграцией в упрощенный режим инициализации. |
Проверяйте наличие блоков внешних Outport с явной Initial output. | Проверьте, что следующее поведение приемлемо. В классическом режиме инициализации параметры Initial output и Output when disabled блока Outport должны совпадать с параметрами их исходных блоков Outport. В упрощенном режиме инициализации Simulink устанавливает параметр Initial output внешних блоков Outport в |
Проверяйте блоки, которые считывают вход от условно выполненных подсистем во время инициализации. | Проверьте, что следующее поведение приемлемо. Некоторые блоки, такие как Discrete-Time Integrator блок, считывают свои входы от условно выполненных подсистем во время инициализации в классическом режиме инициализации. Simulink выполняет этот шаг как метод оптимизации. Эта оптимизация не допускается в упрощенном режиме инициализации, потому что выход условно выполненной подсистемы на первом временном шаге после инициализации может отличаться от начального значения, объявленного в соответствующем блоке Outport. В частности, это расхождение происходит, если подсистема активна на первом временном шаге. |
Проверьте наличие конфликта миграции для блоков Outport, которые используют Dialog как Source of initial output value. | Другие образцы блоков Outport с тем же библиотечным звеном либо не могут быть перенесены, либо переносятся другим способом. Проверьте результаты из Check for library blocks with instances that cannot be migrated, чтобы узнать о различных путях миграции для других образцов каждого блока Outport. Блок Outport будет поддерживать свои текущие настройки и использовать заданное Initial output значение. |
Проверьте наличие конфликта миграции для блоков Outport, которые используют Input signal как Source of initial output значение. | Другие образцы блоков Outport с тем же библиотечным звеном либо не могут быть перенесены, либо переносятся другим способом. Проверьте результаты из Check for library blocks with instances that cannot be migrated, чтобы узнать о различных путях миграции для других образцов каждого блока Outport. Блок Outport в настоящее время задает Initial output После миграции для Source of initial output value параметра будет задано значение |
Проверьте наличие конфликта миграции для блоков Outport, имеющих SimEvents® семантика. | Другие образцы блоков Outport с тем же библиотечным звеном либо не могут быть перенесены, либо переносятся другим способом. Проверьте результаты из Check for library blocks with instances that cannot be migrated, чтобы узнать о различных путях миграции для других образцов каждого блока Outport. Блоки Outport будут продолжать использовать Initial output значение |
Проверьте наличие конфликта миграции для самых внутренних блоков Outport с входным параметром переменного размера и неопределенными Initial output. | Для этих блоков Outport размер сигнала изменяется только, когда родительская подсистема блока включена повторно. Поэтому Simulink неявно принимает, что параметр Initial output равен 0, даже если параметр не задан, []. Следовательно, если вы не задаете параметр, Model Advisor явно установит параметр равным 0, когда модель будет перенесена в упрощенный режим инициализации. Другие образцы блоков Outport с тем же библиотечным звеном либо не могут быть перенесены, либо переносятся другим способом. Проверьте результаты из Check for library blocks with instances that cannot be migrated, чтобы узнать о различных путях миграции для других образцов каждого блока Outport. |
Проверьте наличие конфликта миграции для блоков Outport, которые используют значение земли по умолчанию в качестве выхода. | Значение Initial output параметра установлено равным [] (пустая матрица), и источник Outport является недопустимым исходным условием. Таким образом, блок использует начальное значение по умолчанию в качестве начального выхода в упрощенном режиме инициализации. Другие образцы блоков Outport с тем же библиотечным звеном либо имеют ошибки, либо мигрируют по-разному. |
Проверяйте на конфликт миграции для объединенных блоков Outport без явной спецификации Initial output. | Проверьте результаты из Check for library blocks with instances that cannot be migrated subcheck, чтобы узнать о различных путях миграции для других образцов каждого блока Outport. Для остальных блоков Outport Initial output установлено значение [] (пустая матрица) и Output when disabled установлено в held соответственно в упрощенном режиме инициализации. |
Проверяйте идентификатор: mathworks.design.DiscreteBlock
Идентифицируйте блоки Интегратора Дискретного Времени с параметрами, которые могут привести к неожиданному поведению и помочь перенести вашу модель в упрощенный режим инициализации.
Примечание
Запустите эту проверку вместе с другими проверками в обзоре режима миграции на упрощенную инициализацию.
Упрощенный режим инициализации был введен в R2008b для улучшения согласованности результатов симуляции. Для получения дополнительной информации см. «Упрощенный режим инициализации» и «Классический режим инициализации».
Эта проверка Model Advisor идентифицирует настройки в блоках интегратора дискретного времени в вашей модели, которые могут вызвать проблемы, если вы используете упрощенный режим инициализации. Он также рекомендует настройки для согласованного поведения блоков интегратора дискретного времени. Результаты подшеков содержат два типа операторов: Failed и Warning. Неудачные операторы идентифицируют проблемы, которые необходимо решить вручную, прежде чем можно будет перенести модель в упрощенный режим инициализации. Операторы предупреждения идентифицируют проблемы или изменения в поведении, которые могут произойти после миграции.
Состояние | Рекомендуемое действие |
---|---|
Проверяйте блоки Интегратора в Дискретном Времени, чей Initial condition setting параметра установлен в | Определите, является ли новое поведение блоков Discrete-Time Integrator приемлемым. Если это недопустимо, измените модель, чтобы учесть новое поведение перед миграцией в упрощенный режим инициализации. |
Проверяйте блоки интегратора в дискретном времени, чей параметр Initial condition setting установлен в | Используйте периодические шаги расчета для блока или установите Initial Condition setting равным |
Проверьте наличие блоков внутри Подсистемы итератора, которые требуют истекшего времени. | В иерархии Подсистемы итератора не используйте блоки, которые требуют службы, которая сохраняет время, прошедшее между двумя последовательными выполнение. Поскольку Подсистема Итератора может выполняться несколько раз в установленный временной шаг, концепция истекшего времени не четко определена между двумя такими выполнениями. Использование этих блоков внутри Подсистемы итератора может вызвать неожиданное поведение. |
Примечание
Не запускайте эту проверку изолированно. Запустите эту проверку вместе с другими проверками в обзоре режима миграции на упрощенную инициализацию.
Проверяйте идентификатор: mathworks.design.ModelLevelMessages
Идентифицируйте настройки в блоках Model и параметрах конфигурации модели, которые могут привести к неожиданному поведению, и помогают перенести модель в упрощенный режим инициализации.
Был введен упрощенный режим инициализации в R2008b повышения согласованности результатов симуляции. Для получения дополнительной информации см. «Упрощенный режим инициализации» и «Классический режим инициализации».
Эта проверка Model Advisor идентифицирует проблемы в параметрах конфигурации модели и блоках Model в вашей модели, которые могут вызвать проблемы при миграции в упрощенный режим инициализации. Результаты подшеков содержат два типа операторов: Failed и Warning. Неудачные операторы идентифицируют проблемы, которые необходимо решить вручную, прежде чем можно будет перенести модель в упрощенный режим инициализации. Операторы предупреждения идентифицируют проблемы или изменения в поведении, которые могут произойти после миграции.
После выполнения этой проверки согласованности 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.
Если у Outport есть пустой Initial output и сигнал переменного размера, то Initial output устанавливается в нуль.
Проверяйте идентификатор: mathworks.design.SFuncAnalyzer
Выполните проверку качества S-функций в моделях Simulink или подсистемах.
Анализатор S-функций выполняет проверки качества S-функций, чтобы идентифицировать улучшения и потенциальные проблемы в указанной модели.
Состояние | Рекомендуемое действие |
---|---|
Непрерывные состояния изменяются в mdlOutputs способ. | Изменение непрерывных состояний в основной временной шаг и использование ssSetSolverNeedsReset функция в коде S-функции. |
Непрерывные состояния изменяются в mdlUpdate способ. | Изменение непрерывных состояний только в основной временной шаг и использование ssSetSolverNeedsReset функция в коде S-функции. |
Дискретные состояния S-функции изменяются в mdlOutputs за мелкий шаг. | Измените дискретные состояния только на основном шаге, охраняемом ssIsMajorTimeStep функция. |
Вектор режима S-функции изменен в mdlOutputs метод за мелкий шаг. | Измените вектор режима только на основном шаге, охраняемом sslsMajorTimeStep функция. |
S-функция использует статические или глобальные переменные, чтобы объявить внутренние состояния. | Явное объявление состояний с помощью ssSetNumDiscStates Function или Model Global Data путем создания хранилищ данных. |
S-функция имеет непрерывные состояния, но шаг расчета не объявляется непрерывным. | Задайте непрерывный шаг расчета используя ssSetSampleTime функция. |
S-функция имеет дискретные состояния, но mdlOutputs и mdlUpdate методы объединяются. | Определите mdlOutputs и mdlUpdate методы отдельно и изменяют дискретные состояния только в mdlUpdate способ. |
S-функция устанавливает SS_OPTION_CAN_BE_CALLED_CONDITIONALLY опция при наличии данных, подобных состоянию, или нескольких шагов расчета. | Удалите опции, когда S-функция имеет похожие на состояние данные или несколько шагов расчета. |
MEX компиляторы не существуют на компьютере. | Проверьте наличие или установите MEX компиляторы на машине. |
S-функция сталкивается с ошибками при компиляции модели. | Проверьте выходные данные Diagnostic Viewer и повторно скомпилируйте модель. |
Проверяйте идентификатор: mathworks.design.NonContSigDerivPort
Идентифицируйте непоследовательные сигналы, которые управляют портами производной.
Непоследовательные сигналы, которые управляют портами производной, заставляют решатель сбрасывать каждый раз, когда сигнал изменяет значение, что замедляет симуляцию.
Состояние | Рекомендуемое действие |
---|---|
В модели существуют непоследовательные сигналы, ведущие порты производной. |
|
Если у вас есть лицензия Simulink Check, можно исключить блоки и графики из этой проверки.
Проверяйте идентификатор: mathworks.design.DiagnosticSFcn
Проверяйте границы массива и согласованность решателя, если S-Function блоки находятся в модели.
Проверяет, соответствуют ли блоки S-Function правилам согласованности решателя ОДУ, которые Simulink применяет к своим встроенным блокам.
Состояние | Рекомендуемое действие |
---|---|
Solver data inconsistency установлено на none . | В диалоговом окне Параметров конфигурации установите Solver data inconsistency равным warning или error . |
Array bounds exceeded установлено на none . | В диалоговом окне Параметров конфигурации установите Array bounds exceeded равным warning или error
|
Если у вас есть лицензия Simulink Check, можно исключить блоки и графики из этой проверки.
Обзор исключения Model Advisor (Simulink Check)
Проверяйте идентификатор: mathworks.design.characterEncoding
Проверьте наличие символов, несовместимых с текущей кодировкой
Проверьте наличие символов в файле модели, которые не могут быть представлены в текущей кодировке. Они могут вызвать ошибки при попытке сохранить модель.
Состояние | Рекомендуемое действие |
---|---|
Найдены несовместимые символы | Измените текущую кодировку на UTF-8 при помощи slCharacterEncoding . |
Отчет Upgrade Advisor показывает необходимую кодировку, в которой вы нуждаетесь, или можно извлечь кодировку из модели с помощью команды:
get_param(modelname,'SavedCharacterEncoding')
Чтобы изменить кодировку, используйте slCharacterEncoding
. Этот параметр применяется к текущему сеансу работы с MATLAB. Если вы перезапускаете MATLAB и хотите сохранить ту же модель снова, необходимо внести то же самое изменение в текущую кодировку.
Для получения дополнительной информации смотрите:
Проверяйте идентификатор: mathworks.design.UnitMismatches
Идентифицируйте образцы из модуля несоответствий портов в модели.
Проверьте образцы несоответствия модуля между портами в модели.
Состояние | Рекомендуемое действие |
---|---|
Обнаружены несоответствия единиц измерения | Измените один из несовпадающих параметров модуля так, чтобы он совпадал с параметрами другого порта. |
Проверяйте идентификатор: mathworks.design.AutoUnitConversions
Идентифицируйте образцы автоматических единичных преобразований в модели.
Идентифицируйте образцы автоматических единичных преобразований в модели.
Состояние | Рекомендуемое действие |
---|---|
Найдено автоматических преобразований модулей | Проверьте, что преобразованные модули ожидаются для модели. |
Проверяйте идентификатор: mathworks.design.DisallowedUnitSystems
Идентифицируйте образцы запрещенных единичных систем в модели.
Идентифицируйте образцы запрещенных единичных систем в модели.
Состояние | Рекомендуемое действие |
---|---|
Найдены запрещенные единичные системы | Выберите модуль, которая соответствует настроенной модулем системе, или другой модуль систему. Для получения дополнительной информации см. Раздел «Ограничение единичных систем» |
Проверяйте идентификатор: mathworks.design.UndefinedUnits
Идентифицируйте образцы спецификаций единиц измерения, не определенные в базе данных модулей, в модели.
Идентифицируйте образцы спецификаций единиц измерения, не определенные в базе данных модулей, в модели.
Состояние | Рекомендуемое действие |
---|---|
Найдены неопределенные модули | Измените модуль измерения на единицу, которую поддерживает Simulink. |
Проверяйте идентификатор: mathworks.design.AmbiguousUnits
Идентифицируйте образцы неоднозначных спецификаций единиц измерения, таких как повторяющиеся имена модулей в базе данных модулей, в модели.
Идентифицируйте образцы неоднозначных спецификаций единиц измерения, таких как повторяющиеся имена модулей в базе данных модулей, в модели.
Состояние | Рекомендуемое действие |
---|---|
Найдены неоднозначные модули | Вы можете игнорировать предупреждение или задать модуль с соответствующей модульной системой с помощью формата unit_system::unit_name . |
Проверяйте идентификатор: mathworks.design.Update
Проверьте наличие распространенных проблем с обновлением блоков.
Проверяйте блоки в модели на проблемы совместимости, возникающие из-за использования новой версии программного обеспечения Simulink.
Состояние | Рекомендуемое действие |
---|---|
Найдены блоки с проблемами совместимости. | Щелкните Modify, чтобы исправить обнаруженные проблемы с блоками. |
Проверьте состояние обновления для S-функций API уровня 2. | Рассмотрите замену S-функций уровня 1 на Level 2. |
Нажатие кнопки Modify заменяет блоки из предыдущего релиза программного обеспечения Simulink на последние версии.
Проверяйте идентификатор: 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 или Lookup Table (2-D) блоков. Некоторые из этих блоков задают Interpolation-Extrapolation как Lookup method, но их входные и выходные параметры не совпадают с типом с плавающей точкой. | Замените блоки Lookup Table и блоки Lookup Table (2-D) на блоки n-D Lookup Table. Затем измените метод экстраполяции или типы данных портов для замены блоков. |
Модель содержит Unit Delay блоков с Sample time значением | Замените Unit Delay блоки на Memory блоки. |
Нажатие кнопки Modify заменяет блоки из предыдущего релиза программного обеспечения Simulink на последние версии.
Проверяйте идентификатор: mathworks.design.UseSLXFile
Проверьте, что модель сохранена в формате SLX.
Проверьте, сохранена ли модель в формате SLX.
Состояние | Рекомендуемое действие |
---|---|
Модель не сохранена в формате SLX | Рассмотрите обновление до формата файла SLX, чтобы использовать последние функции в Simulink. |
Эту проверку можно запустить на моделях библиотеки.
Проекты могут помочь вам обновить модели до формата SLX и сохранить историю версий файлов в системе контроля версий. См. раздел Преобразование из MDL в SLX в проекте и сохранение истории ревизий.
Проверяйте идентификатор: mathworks.design.CheckSLXFileCompressionLevel
Проверьте, отключено ли сжатие файла SLX, чтобы уменьшить размер Git™ репозитория.
Проверьте, отключено ли сжатие для модели SLX.
Состояние | Рекомендуемое действие |
---|---|
Модель, библиотека или подсистема сохраняются в формате SLX. Включено сжатие файла. | Рассмотрите отключение сжатия файлов, чтобы оптимизировать хранилище под системой контроля версий. |
Модель, библиотека или подсистема не сохраняются в формате SLX. | Затем рассмотрите обновление до формата файла SLX, отключив сжатие файла, чтобы оптимизировать хранилище под системой контроля версий. |
Можно запустить эту проверку для моделей, библиотек и подсистем, возвращенных в систему контроля версий Git.
Проекты могут помочь вам обновить все модели и библиотеки в вашем проекте. Смотрите Upgrade All Project Models, Libraries и КОД MATLAB Files.
Проверяйте идентификатор: mathworks.design.CheckSavedInCurrentVersion
Проверьте, что модель, библиотека или подсистема сохранены в текущей версии Simulink.
Проверьте, сохранен ли файл модели в текущем релизе Simulink.
Состояние | Рекомендуемое действие |
---|---|
Модель, библиотека или подсистема не сохранены в текущей версии Simulink. | Рассмотрите пересохранение файла модели в текущей версии Simulink. |
Эту проверку можно запустить для моделей, библиотек и подсистем.
Проекты могут помочь вам сохранить все модели и библиотеки в проекте в текущем релизе Simulink. Смотрите Upgrade All Project Models, Libraries и КОД MATLAB Files.
Проверяйте идентификатор: mathworks.simulink.SB2SL.Check
Проверяйте, что модель не имеет устаревших блоков SB2SL.
Проверьте, содержит ли модель устаревшие блоки SB2SL.
Состояние | Рекомендуемое действие |
---|---|
Модель содержит устаревшие блоки SB2SL | Рассмотрите обновление модели до текущих блоков SB2SL. |
Нажатие кнопки Update SB2SL Blocks заменяет блоки на последние версии.
Проверяйте идентификатор: mathworks.design.SLXModelProperties
Проверяйте на отредактированные свойства истории модели
Проверьте модели на отредактированные значения свойств Model History, которые могут использоваться с подстановкой ключевого слова инструмента системы контроля версий. Эта подстановка ключевых слов несовместима с форматом файла SLX.
В формате файла MDL можно сконфигурировать некоторые свойства модели, чтобы использовать замену ключевого слова инструмента системы контроля версий. Если вы сохраняете модель в формате SLX, инструменты системы контроля версий не могут выполнить замену ключевого слова. Информация в файле модели от такой подстановки ключевых слов кэшируется, когда вы впервые сохраняете файл MDL как SLX, и не обновляется снова. Панели История свойств модели (Model Properties History) и блоки Информация о модели (Model Info) в вашей модели показывают устаревшую информацию с тех пор.
Состояние | Рекомендуемое действие |
---|---|
Отредактированные свойства истории модели | Вручную или автоматически обнулите свойства до значений по умолчанию. Нажмите кнопку, чтобы сбросить, или чтобы просмотреть и изменить эти свойства вручную, откройте диалоговое окно Свойства модели (Model Properties) и проверьте в панели История (History). |
Эту проверку можно запустить на моделях библиотеки.
Проверяйте идентификатор: mathworks.design.ModelInfoKeywordSubstitution
Используйте эту проверку для поиска блоков Model Info, которые могут быть изменены внешними инструментами системы контроля версий посредством подстановки ключевых слов.
Эта проверка ищет векторы символов в блоке Model Info, заключенном в долларовые знаки, которые могут быть перезаписаны внешним инструментом системы контроля версий. Использование стороннего инструмента системы контроля версий может повредить ваши файлы модели при их отправке. Подстановка ключевых слов недоступна в формате файла модели SLX.
Для более гибкого интерфейса с инструментами системы контроля версий используйте проект Simulink вместо блока Model Info. См. раздел «О системе контроля версий с проектами».
Состояние | Рекомендуемое действие |
---|---|
Блок Model Info содержит такие поля, как: | Проверьте список полей в отчете, а затем удалите векторы символов ключевых слов из блока Model Info. |
Проверяйте идентификатор: mathworks.design.ModelInfoConfigurationManager
Используйте эту проверку для поиска блоков Model Info, которые используют Configuration Manager.
Блоки Model Info с помощью Configuration Manager допускают рискованную подстановку ключевых слов с помощью внешних инструментов системы контроля версий. Использование стороннего инструмента системы контроля версий может повредить ваши файлы модели при их отправке. Подстановка ключевых слов недоступна в формате файла модели SLX. Configuration Manager для блока Model Info будет удален в следующем релизе.
Для более гибкого интерфейса с инструментами системы контроля версий используйте проект Simulink вместо блока Model Info. См. раздел «О системе контроля версий с проектами».
Состояние | Рекомендуемое действие |
---|---|
Блок Model Info использует Configuration Manager. | Нажмите Remove the Configuration Manager. |
Проверяйте идентификатор: mathworks.design.serdesUpgrades
Списки блоков, сохраненных в предыдущей версии SerDes Toolbox™, которые устарели.
Эта проверка выполняет поиск и список блоков SerDes Toolbox, которые могут быть обновлены для совместимости с текущим релизом.
Состояние | Рекомендуемое действие |
---|---|
Найдены блоки, сохраненные в старых версиях SerDes Toolbox. | Щелкните Upgrade SerDes Toolbox Blocks, чтобы обновить блоки SerDes Toolbox, чтобы быть совместимыми с текущим релизом. |
Если щелкнуть Upgrade SerDes Toolbox Blocks, устаревшие блоки SerDes Toolbox будут совместимы с текущим релизом.
Проектирование и моделирование систем SerDes (SerDes Toolbox)
Проверяйте идентификатор: 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)
Проверяйте идентификатор: mathworks.design.Aeroblks.CheckNAV
Ищет блоки Three-Axis Inertial Measurement Модуля, Three-Axis Gyroscope и Three-Axis Accelerometer до 3.21 (R2018a).
Эта проверка ищет блоки Three-Axis Inertial Measurement Unit, Three-Axis Gyroscope и Three-Axis Accelerometer, которые были обновлены в R2018a.
Состояние | Рекомендуемое действие |
---|---|
Блоки Трехосевого Инерционного Модуля Измерения, Трехосевого Гироскопа и Трехосевого Акселерометра перед R2018a. | В R2018a или позже, если вы ранее не решали для статических условий, сохраните модель сейчас. Если вы ранее решили для статических условий для модели, решите для этих статических условий еще раз, и затем сохраните модель. |
Three-axis Accelerometer (Aerospace Blockset)
Three-axis Gyroscope (Aerospace Blockset)
Three-axis Inertial Measurement Unit (Aerospace Blockset)
Проверяйте идентификатор: mathworks.design.CheckAndUpdateOldMaskedBuiltinBlocks
Проверьте наличие библиотек, которые должны быть обновлены для использования повышенных параметров.
Эта проверка выполняет поиск в библиотеках, созданных перед R2011b, маскированных блоков, которые должны быть обновлены для использования повышенных параметров. Поскольку R2011b, если параметры блоков не повышается, его значение в связанном блоке блокируется на его значение в блоке библиотеки. Эта проверка исключает блоки типа Subsystem, Модель-ссылка, S-Function и M-S-Function.
Состояние | Рекомендуемое действие |
---|---|
Найдены библиотеки, которые необходимо обновить | Нажмите Update. После обновления библиотек снова запустите проверку |
Вы можете:
Запустите эту проверку на своих моделях библиотеки.
Исключить блоки и графики из этой проверки, если у вас есть лицензия Simulink Check.
Проверяйте идентификатор: mathworks.design.CheckMaskDisplayImageFormat
Проверка идентифицирует маски с помощью команд отображения изображений с ненужными вызовами imread()
функция.
Эта проверка ищет команды отображения маски, которые делают ненужные вызовы imread()
и обновляет их с помощью команд отображения маски, которые не вызывают imread()
функция. С 2013a оптимизация эффективности и памяти доступна для масочных изображений, заданных с помощью пути изображения вместо тройной матрицы RGB.
Состояние | Рекомендуемое действие |
---|---|
Команды отображения маски, которые делают ненужные вызовы imread() функция найдена. | Нажмите Update. После обновления блоков запустите проверку еще раз. |
Вы можете:
Запустите эту проверку на своих моделях библиотеки.
Исключить блоки и графики из этой проверки, если у вас есть лицензия Simulink Check.
Проверяйте идентификатор: mathworks.design.CheckMaskRunInitFlag
Проверка определяет, имеют ли команды чертежа значка маски зависимость от рабочей области маски.
Эта проверка определяет, имеют ли команды чертежа значка маски зависимость от рабочей области маски, и обновляет RunInitForIconRedraw
соответственно. Если нет зависимости рабочей области маски, значение RunInitForIconRedraw
установлено в off
, тогда как, если существует зависимость рабочей области маски, значения устанавливаются на on
.
Установка значений RunInitForIconRedraw
на off
при отсутствии зависимости рабочей области маски оптимизирует эффективность, не выполняя код инициализации маски перед рисованием значка блока.
Состояние | Рекомендуемое действие |
---|---|
Найдены команды маскирования чертежа, которые являются зависимыми или независимыми от рабочей области маски. | Нажмите Update. После обновления блоков запустите проверку еще раз. |
Вы можете:
Запустите эту проверку на своих моделях библиотеки.
Исключить блоки и графики из этой проверки, если у вас есть лицензия Simulink Check.
Проверяйте идентификатор: mathworks.design.CheckAndUpdateOldMaskTabnames
Эта проверка идентифицирует маскированные блоки, которые задают вкладки в диалоговом окне маски с помощью MaskTabNames
параметр.
Эта проверка идентифицирует маскированные блоки, которые используют MaskTabNames
параметр для программного создания вкладок в диалоговом окне маски. С R2013b года элементы управления диалогового окна используются для группирования параметров на вкладке в диалоговом окне маски.
Состояние | Рекомендуемое действие |
---|---|
Маскированные блоки, которые используют MaskTabNames найден параметр для программного создания вкладок в маскировочном диалоговом окне. | Щелкните Upgrade доступной в Action разделе. После обновления блоков запустите проверку еще раз. |
Эту проверку можно запустить на моделях библиотеки.
Проверяйте идентификатор: mathworks.design.StowawayDoubles
Для строгого проекта с одной точностью эта проверка идентифицирует блоки, которые вводят операции двойной точности и неоптимальные настройки модели.
Для строгого проекта с одной точностью эта проверка идентифицирует блоки, которые вводят операции двойной точности и неоптимальные настройки модели.
Состояние | Рекомендуемое действие |
---|---|
Операции с двойной точностью с плавающей точкой, найденные в модели. | Проверьте, что:
|
Модель использует стандарт библиотеки, который не оптимален для строгих-одиночных проектов. | Проверьте, что:
|
Логические сигналы не реализованы как логические данные. | Проверьте, что:
|
Если у вас есть лицензия Simulink Check, можно исключить блоки и графики из этой проверки.
Проверяйте идентификатор: 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
вызовы для вывода скомпилированного блока шага расчета, Upgrade Advisor отображает эти результаты. Это предполагает, что вы изменяете код, который принимает блочное скомпилированный шаг расчета из многоскоростных блоков.
Состояние | Рекомендуемое действие |
---|---|
Никакие файлы MATLAB не вызывают get_param(block,CompiledSampleTime) | Ничего |
Некоторые файлы MATLAB вызывают get_param(block,CompiledSampleTime) | Если файлы используют блок CompiledSampleTime параметр из многоскоростных блоков, измените эти файлы, чтобы принять параметр как массив ячеек из пар двойных чисел |
Проверяйте идентификатор: mathworks.design.CheckSingleSimulationOutput
Используйте эту проверку, чтобы идентифицировать, возвращен ли результат симуляции как один Simulink.SimulationOutput
объект.
Эта проверка сканирует вашу модель, чтобы проверить, является ли параметр ReturnWorkspaceOutputs
включен. Включив этот параметр, возвращает выходы симуляции в Simulink.SimulationOutput
при интерактивной симуляции. Выходы симуляции включают сигнал, состояние, выход, логгирование DSM, а также возможности и To Workspace
блочное логгирование.
Когда ReturnWorkspaceOutputs
включено, обеспечивает:
Более легкое управление данными моделирования.
Автоматический доступ к SimulationMetadata
.
Совместимость с несколькими параллельными симуляциями и пакетными симуляциями.
Состояние | Рекомендуемое действие |
---|---|
Выходы симуляции не возвращаются как единичные Simulink.SimulationOutput объект | Верните все выходы симуляции как одну |
Проверяйте идентификатор: 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, чтобы решить проблемы в модели, связанные с инициализацией и настройкой параметра.
Проверяйте идентификатор: 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 - Для портов, чьи блоки 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.
Используйте модели Export-function, где блок Outport управляется невиртуальной шиной
Иметь Model блоки, которые ссылаются на модели, содержащие Outport блоки, которые были исправлены - Клик Upgrade Model обновляет Блоки Model, ссылающиеся на модели, которые имели Outport блоки, фиксированные проверкой Analyze model hierarchy and continue upgrade sequence.
Проверяйте идентификатор: mathworks.design.DSPFrameUpgrade
Эта проверка идентифицирует пользовательские библиотечные блоки в модели, которые зависят от состояния системы координат сигнала.
Описание
Эта проверка ищет пользовательские библиотечные блоки в модели, которая зависит от состояния системы координат сигнала. Проверка анализирует блоки, рекомендует исправления и приводит причины исправлений. Исправления необходимо выполнить вручную.
Результаты и рекомендуемые действия
Состояние | Рекомендуемое действие |
---|---|
Проверка находит пользовательские библиотечные блоки, которые зависят от состояния системы координат сигнала. | Следуйте рекомендациям советника по вопросам обновления. |
Возможности и ограничения
Эту проверку можно запустить только для пользовательских библиотечных блоков в модели.
Исправления необходимо выполнить вручную.
Эта проверка появляется только при наличии установленный DSP System Toolbox™.
См. также
Кадровая обработка (DSP System Toolbox)
Проверяйте идентификатор: 'mathworks.design.CheckForSFcnUpgradeIssues'
Используйте эту проверку на вашей модели, чтобы идентифицировать проблемы совместимости обновления вашей S-функции. Эти проблемы могут включать использование 32-битных API, компиляцию с несовместимыми опциями или использование устаревших отдельных сложных API. Некоторые общие вопросы и информация, связанные с исправлениями, описаны в приведенном ниже разделе результатов и рекомендаций.
При обновлении S-функций, чтобы использовать функции в последнем релизе, эта проверка сканирует вашу модель, чтобы предупредить о проблемах несовместимости обновления S-функций. Если результат этой проверки дает предупреждение или ошибку, исправьте свои функции C MEX S в соответствии с описанием.
Состояние | Рекомендуемое действие |
---|---|
Пользовательские S-функции не поддерживаются. | Перекомпилируйте S-функцию с помощью доступных совместимых опций. Для получения дополнительной информации см. Пользовательский файл MEX, не поддерживаемый в текущем Релизе. |
S-функция не скомпилирована с последним API ( | Перекомпилируйте с помощью последнего флага ( |
S-функция использует 32-битные функции. | Измените код в соответствии с инструкциями в Файл MEX Calls A 32-bit Function. |
S-функция использует устаревшие отдельные комплексные API (mx Get Pi, mx Set Pi, mx Get Imag Data, mx Set Imag Data). | Используйте перемеженные комплексные API и повторно скомпилируйте код с последним флагом ( |
S-функция использует устаревший type-небезопасный API данных (mxGetData, mxSetData). | Используйте API данных, безопасных для типа, и повторно скомпилируйте код. Для получения дополнительной информации смотрите Файл MEX Вызовов Untyped Данных Доступа Function. |
S-функция скомпилирована с будущим релизом и не поддерживается в текущем релизе. | Смотрите файл MEX, созданный в Релиз Не поддерживается в текущем релизе, чтобы перекомпилировать файлы. |
Проверяйте идентификатор: 'mathworks.design.CheckSystemObjectUpdate'
Используйте эту проверку, чтобы идентифицировать и обновить любые пользовательские системные object™ MATLAB в вашей модели, которые имеют устаревший синтаксис.
Эта проверка сканирует вашу модель, чтобы идентифицировать устаревший синтаксис системного объекта. Если проверка прошла, все синтаксис актуален. Если проверка не выполнена, можно обновить синтаксис.
Состояние | Рекомендуемое действие |
---|---|
Синтаксис системного объекта обновлен. | Ничего. |
Синтаксис системного объекта требует обновления. | Отчет генерируется для каждого уникального системного объекта, связанного с блоком MATLAB System. Используйте Update для обновления синтаксиса. |
Проверяйте идентификатор: mathworks.design.CheckRapidAcceleratorSignalLogging
При симуляции модели в быстрых режимах Accelerator используйте эту проверку, чтобы найти сигналы, зарегистрированные в вашей модели, которые глобально отключены. Быстрый режим Accelerator поддерживает логгирование сигналов. Используйте эту проверку, чтобы включить глобальную регистрацию сигналов.
Эта проверка сканирует вашу модель, чтобы увидеть, находится ли симуляция в быстром режиме Accelerator и содержит ли модель сигналы с логгированием сигнала. Если проверка находит образец, и логгирование сигналов глобально отключена, появляется опция включения регистрации сигналов глобально.
Состояние | Рекомендуемое действие |
---|---|
Режим симуляции не является быстрым ускорителем. | Ничего. Вы можете включить регистрацию сигнала в быстром режиме Accelerator. |
Режим симуляции - быстрый ускоритель. Upgrade Advisor не обнаружил сигналы с включённым логгированием сигналов. | Ничего. Модель не использует логгирование сигналов. Включите регистрацию сигналов для сигналов и глобально, если вы хотите записывать сигналы. |
Режим симуляции - быстрый ускоритель. Upgrade Advisor обнаружил сигналы с включённым логгированием сигналов. Однако глобальная настройка для логгирования сигналов была отключена. | Включите глобальную регистрацию сигналов, если вы хотите регистрировать сигналы с включённым логгированием сигналов. |
Логгирование сигналов уже включено в глобальном масштабе. | Ничего. |
Выбор Modify позволяет регистрировать сигнал глобально в вашей модели.
Проверяйте идентификатор: mathworks.design.VirtualBusUsage
Проверьте входные сигналы шины для набора блоков.
Проверьте входные сигналы шины для набора блоков.
Начиная с R2015b, входы сигнала виртуальной шины в блоки, которые требуют небусового или невиртуального ввода шины, могут вызвать ошибку. Примеры блоков, которые могут задать объект шины в качестве типа выходных данных, включают блок Bus Creator и блок корневого Inport. Блоки, которые вызывают ошибку, когда у них есть вход виртуальной шины в этой ситуации:
Assignment
Delay
Блок Delay вызывает ошибку только в том случае, если вы используете диалоговое окно Параметров блоков для:
Установите начальное условие, которое является структурой MATLAB или нули.
Задайте значение для State name.
Permute Dimension
Reshape
Selector
Unit Delay
Блок Unit Delay вызывает ошибку только в том случае, если вы используете диалоговое окно Параметров блоков для:
Установите начальное условие, которое является структурой MATLAB или нули.
Задайте значение для State name.
Vector Concatenate
Состояние | Рекомендуемое действие |
---|---|
Сигнал виртуальной шины, входа к этим блокам:
| В окне Upgrade Advisor нажмите Modify. Проверка вставляет блок Bus to Vector, чтобы попытаться преобразовать входные сигналы виртуальной шины в сигналы вектора. Для проблем, которые Upgrade Advisor идентифицирует, но не может исправить, измените модель вручную. Для получения дополнительной информации смотрите Идентификация автоматического преобразования шины. |
Клик Modify вставляет Bus to Vector блок во входные порты блоков.
Для многих моделей выполнение Upgrade Advisor изменяет вашу модель, так что сигналы шины не рассматриваются как векторы. Однако для некоторых моделей можно столкнуться с проблемами совместимости даже после запуска проверки. Измените модель вручную, чтобы решить эти проблемы.
После компиляции модели с помощью Upgrade Advisor, Редактор 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 блок без входного сигнала виртуальной шины | Nonbus сигнал не нуждается в Bus to Vector блоке. | Удалите Bus to Vector блок. |
Assignment блок с входами виртуальной шины | Советник по обновлению преобразует блок Assignment | Добавьте Bus to Vector блок перед блоком Assignment. |
S-функция, использующая невиртуальную шину | S-функция, которая не является Level-2 S-функцией C, не поддерживает невиртуальные сигналы шины. | Измените S-функцию на Level-2 C-функцию. Рассмотрите использование блока S-Function Builder для создания Level-2 S-функции C. |
Диаграмма Stateflow с параметризованным типом данных | На диаграмме Stateflow вы не можете параметризовать тип данных входа или выхода в терминах другого входа или вывода, если тип данных является объектом шины. | Для параметризованного порта установите Data Type равным |
Подсистема с шинными операциями на диаграмме Stateflow | Блок Inport внутри подсистемы в диаграмме Stateflow требует тип данных объекта шины, если его сигнал является шиной. | В блоке Inport установите Data type равным |
Ground блок, используемый в качестве источника шины | Выходной сигнал блока Ground не может быть источником для шины. | Используйте блок Constant с Constant value, установленным на 0, и атрибут Output data type сигнала, установленный на |
Корневой Outport блок с одноэлементным типом данных объекта шины | Вход блока Outport должен быть шиной, если он задает в качестве типа данных объект шины. | В блоке Outport установите Data type равным |
Проверяйте идентификатор: mathworks.design.CheckConstRootOutportWithInterfaceUpgrade
Используйте эту проверку, чтобы идентифицировать корневые выходные порты с постоянным шагом расчета, используемым с целью AUTOSAR, Function Prototype Control или интерфейсом класса C++ модели.
Корневые выходные порты с постоянным шагом расчета не поддерживаются при использовании цели AUTOSAR, Function Prototype Control или интерфейса класса C++ модели. Используйте эту проверку, чтобы идентифицировать корневые блоки Outport с этим условием и изменить блоки в соответствии с рекомендациями.
Состояние | Рекомендуемое действие |
---|---|
Корневой вывод с постоянным шагом расчета, используемым с целью AUTOSAR, Function Prototype Control или интерфейсом класса C++ модели. | Рассмотрим одно из следующих:
|
Проверяйте идентификатор: com.mathworks.Simulink.UpgradeAdvisor.UpgradeModelHierarchy
Проверьте дочерние модели и проведите вас через проверки обновления.
Эта проверка идентифицирует дочерние модели этой модели и направляет вас через проверки обновления, чтобы запустить проверки без компиляции и компиляции. Advisor предоставляет инструменты для решения следующих задач:
Если проверка находит дочерние модели, она предлагает запустить Upgrade Advisor для каждой дочерней модели в свою очередь и продолжить последовательность обновления. Если у вас есть иерархия модели, вам нужно проверить и обновить каждую дочернюю модель в свою очередь.
Если дочерних моделей нет, вам все еще нужно продолжать последовательность проверок, пока вы не запустите проверки без компиляции и компиляции.
Необходимо запустить проверки обновления в таком порядке: сначала проверки, которые не требуют информации о времени компиляции и не запускают схему обновления, затем проверки компиляции.
Щелкните Continue Upgrade Sequence, чтобы запустить следующие проверки. Если есть дочерние модели, это откроет следующую модель. Продолжайте кликать Continue Upgrade Sequence, пока чек не пройдет.
Состояние | Рекомендуемое действие |
---|---|
Найдены дочерние модели | Щелкните Continue Upgrade Sequence, чтобы запустить следующие проверки. При наличии дочерних моделей будет закрыт текущий сеанс Upgrade Advisor и откроется Upgrade Advisor для следующей модели в иерархии. |
Нет дочерних моделей, но больше проверок, чтобы запустить | Если дочерних моделей нет, щелкните Continue Upgrade Sequence, чтобы обновить Upgrade Advisor с выбранными проверками компиляции. Проверки компиляции запускают схему обновления (отмеченную ^ ). Выполните следующие проверки и выполните рекомендуемые действия. Когда вы вернетесь к этой проверке, нажмите кнопку Continue Upgrade Sequence до тех пор, пока эта проверка не пройдет. |
Лучшая практика для обновления иерархии модели состоит в том, чтобы проверить и обновить каждую модель, начиная с конца листа и работая до корневой модели.
При нажатии кнопки Continue Upgrade Sequence Upgrade Advisor открывает модель листа так далеко в иерархии, как она может найти. Последующие шаги проведут вас через обновление иерархии с листовой на корневую модель.
Когда вы открываете Upgrade Advisor, выбранные проверки не требуют информации о времени компиляции и не запускают схему обновления. Проверки, инициирующие запуск схемы обновления, не выбраны для выполнения по умолчанию и отмечены ^
. Когда вы используете Upgrade Advisor в иерархии, продолжайте кликать Continue Upgrade Sequence, чтобы пройти эту последовательность анализа:
Upgrade Advisor открывает каждую модель и библиотеку в свою очередь от листа до корня и выбирает проверки без компиляции. Запустите проверки, выполните любые рекомендуемые действия, затем нажмите Continue Upgrade Sequence, чтобы открыть следующую модель и продолжить.
Когда вы достигаете корневого конца иерархии, Upgrade Advisor снова открывает каждую модель в том же порядке (но не библиотеки) и выбирает только проверки, которые требуют компиляции модели. Запустите проверки, выполните любые рекомендуемые действия, а затем нажмите Continue Upgrade Sequence, чтобы открыть следующую модель. Продолжайте до тех пор, пока вы не достигнете конца иерархии, и эта проверка не пройдет.
Проверяйте идентификатор: mathworks.design.ConflictsForDataStoreReadWriters
Идентифицируйте потенциальную чувствительность порядка выполнения при чтении и записи в хранилища данных.
Порядок выполнения блоков, которые читают и записывают в то же хранилище данных, может изменить результат симуляции. Когда блоки в той же иерархии получают доступ к тому же хранилищу данных, порядок выполнения не является детерминированным.
Состояние | Рекомендуемое действие |
---|---|
Блок памяти хранилища данных, доступ к которому осуществляется несколькими блоками в одной иерархии. | Чтобы применить порядок выполнения для блоков, примите к сведению следующее:
|
Проверяйте идентификатор: mathworks.design.TaskBasedSorting
Проверьте относительные изменения порядка выполнения между устаревшей и основанной на задачах сортировкой для блоков чтения и записи хранилища данных.
Унаследованные модели использовали сортировку блоков, чтобы определить порядок выполнения блоков. При основанной на задаче сортировке может измениться относительный порядок выполнения с участием блоков Data Store Memory. Эта проверка обнаруживает изменения и предоставляет опцию обновить вашу модель с помощью исходного порядка выполнения.
Состояние | Рекомендуемое действие |
---|---|
Порядок выполнения с блоком памяти хранилища данных изменяется. Вам нужен исходный порядок выполнения. | Нажмите кнопку Modify. |
Проверяйте идентификатор: mathworks.design.CaseSensitiveBlockDiagramNames
Идентифицируйте и исправьте без учета регистра ссылки на модели и библиотеки.
Начиная с R2020a, модели Simulink и имена библиотек чувствительны к регистру. Эта проверка обнаруживает и предоставляет опцию исправить чувствительные к регистру ссылки на модели и библиотеки.
Состояние | Рекомендуемое действие |
---|---|
Проверка находит несоответствия случаев в ссылках на модели и библиотеки. | Следуйте рекомендациям советника по вопросам обновления. |
Проверяйте идентификатор: mathworks.design.rfblockset.ce.checkDisconnectedDividerBlocks
Найдите модель и перечислите блоки RF Blockset™ Divider с помощью компонента делителя степени Уилкинсона с разорванными соединениями портов на 3 портов.
Начиная R2021a, изменяются положения портов блоков RF Blockset Divider, использующих компонент делителя степени Уилкинсона. Эта проверка ищет и перечисляет блоки Divider, используя модель компонента делителя степени Уилкинсона с разорванными соединениями портов на порту 3 до R2021a. Затем можно перемонтировать соединения с помощью кнопки «Изменить».
Состояние | Рекомендуемое действие |
---|---|
Модели имеют блоки RF Blockset Divider, использующие компонент делителя степени Уилкинсона с разорванными портовыми соединениями на порту 3. | Нажмите кнопку Modify, чтобы перемонтировать разорванные соединения на порте 3 блоков RF Blockset Divider. |
Нажатие кнопки Modify переключает разорванные соединения портов на порте 3 блоков RF Blockset Divider.
Примечание
Кнопка Modify попытается автоматически перемонтировать все разорванные соединения в порту 3 блоков Divider с помощью компонента делителя степени Уилкинсона в вашей модели. Для обеспечения точности необходимо впоследствии:
Проверьте подробные сведения, перечисленные на панели результатов консультанта по обновлению.
В первом списке перечислены блоки RF Blockset Divider, использующие компонент делителя степени Уилкинсона, который требует ручной переделки из-за сложности модели.
Во втором списке перечисляются автоматически подключенные блоки.
Блоки Fixed и unfixed Divider временно подсвечиваются зеленым и красным цветами соответственно. Щелкните ссылку Remove all temporary block highlighting в нижней части панели результатов, чтобы удалить подсветки.