Используйте проверки Simulink ® Model Advisor для настройки модели для моделирования.
Проверки кодера Simulink (кодер Simulink)
Проверки Simulink (проверка Simulink)
Для повышения согласованности результатов моделирования был введен упрощенный режим инициализации в R2008b. Этот режим особенно важен для моделей, не задающих начальных условий для условно выполняемых выходных портов подсистемы. Дополнительные сведения см. в разделах Упрощенный режим инициализации и Классический режим инициализации.
Используйте проверки Model Advisor в разделе Перенос в упрощенный режим инициализации, чтобы помочь перенести модель в упрощенный режим инициализации.
Код чека: mathworks.design.UnconnectedLinesPorts
Проверьте наличие неподключенных линий или портов.
Эта проверка содержит список несвязанных линий или портов. Они могут иметь трудности с распространением атрибутов сигнала, таких как тип данных, время выборки и размеры.
Примечание
Порты, подключенные к блокам заземления/оконечного устройства, пройдут этот тест.
| Состояние | Рекомендуемое действие |
|---|---|
| Линии, входные порты или выходные порты не подключены. | Подключите сигналы. Дважды щелкните список не подключенных элементов, чтобы найти ошибку. |
Вы можете:
Выполните эту проверку для моделей библиотек.
Исключите блоки и диаграммы из этой проверки, если у вас есть лицензия Simulink Check™.
Используйте PortConnectivity для получения массива структур, описывающих входные или выходные порты блока.
Общие свойства блока для получения информации о PortConnectivity команда.
Обзор исключения Model Advisor (Simulink Check)
Код чека: mathworks.design.RootInportSpec
Убедитесь, что блоки ввода корневой модели полностью определяют размеры, время выборки и тип данных.
Использование блоков ввода корневой модели, которые не полностью определяют размеры, время выборки или тип данных, может привести к нежелательным результатам моделирования. Программное обеспечение Simulink обеспечивает обратное распространение размеров, времени выборки и типов данных из нижестоящих блоков, если только они не назначены явно.
| Состояние | Рекомендуемое действие |
|---|---|
| Блоки ввода корневого уровня имеют неопределенные атрибуты. | Полностью определите атрибуты блоков ввода корневого уровня. |
При наличии лицензии Simulink Check из этой проверки можно исключить блоки и диаграммы.
Следующие конфигурации проходят эту проверку:
Параметры конфигурации > Решатель > Временное ограничение периодической выборки установлено на Ensure sample time independent
Для моделей с функцией экспорта наследуемое время выборки не отмечается.
Код чека: 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:
|
Если система содержит блоки модели, а ссылочная модель находится в режиме ускорителя, для моделирования модели требуется генерация и компиляция кода.
проверить
Параметры конфигурации модели: оптимизация генерации кода (Simulink Coder)
Код чека: mathworks.design.ModelRefSIMConfigCompliance
Проверка ссылочных моделей, для которых Simulink изменяет настройки параметров конфигурации во время ускоренного моделирования.
Для моделей, на которые имеются ссылки в режиме ускорения, Simulink игнорирует настройки следующих параметров конфигурации, для которых задано значение, отличное от None.
Превышены границы массива
Диагностика > Валидность данных > Вывод блока Inf или NaN
Диагностика > Валидность данных > Разделение по сингулярной матрице
Диагностика > Валидность данных > Перенос при переполнении
Кроме того, для моделей, на которые имеются ссылки в режиме ускорения, Simulink игнорирует следующие параметры конфигурации > Диагностика > Валидность данных > Параметры блока памяти хранилища данных, если для них задано значение, отличное от Disable all. Дополнительные сведения см. в разделе Диагностика хранилища данных.
Обнаружение чтения перед записью
Обнаружение записи после чтения
Обнаружение записи после записи
| Состояние | Рекомендуемое действие |
|---|---|
Необходимо просмотреть результаты выполнения идентифицированной диагностики с настройками для создания предупреждений или ошибок. | Моделирование модели в обычном режиме и устранение диагностических предупреждений или ошибок. |
Код чека: mathworks.design.ParamTunabilityIgnored
Проверяет, включена ли информация о настройке параметров в диалоговое окно Конфигурация параметров модели (Model Parameter Configuration).
Программа Simulink игнорирует информацию о настройке, указанную в диалоговом окне Конфигурация параметров модели (Model Parameter Configuration). Эта проверка определяет модели, содержащие информацию о настройке параметров, которую программное обеспечение Simulink будет игнорировать, если на модель ссылаются другие модели.
| Состояние | Рекомендуемое действие |
|---|---|
| Модель содержит пропущенные сведения о настройке параметров. | Щелкните ссылки для преобразования в эквивалентные объекты параметров Simulink в рабочей области MATLAB ®. |
Код чека: mathworks.design.ImplicitSignalResolution
Определение моделей, которые пытаются разрешить именованные сигналы и состояния Simulink.Signal объекты.
Требование программного обеспечения Simulink для разрешения всех именованных сигналов и состояний неэффективно и замедляет инкрементную генерацию кода и ссылку на модель. Эта проверка определяет сигналы и состояния, для которых можно отключить неявное разрешение сигнала и принудительно включить разрешение.
| Состояние | Рекомендуемое действие |
|---|---|
| Не все сигналы и состояния разрешены. | Отключите неявное разрешение сигнала и обеспечьте разрешение для каждого сигнала и состояния, разрешающего этот сигнал. |
Код чека: mathworks.design.OptBusVirtuality
Определите виртуальные шины, которые могут быть сделаны не виртуальными. Создание этих шин, не являющихся виртуальными, повышает эффективность генерируемого кода.
Эта проверка идентифицирует блоки, включающие виртуальные шины, которые пересекают границу подсистемы. Изменение этих параметров на невиртуальные повышает эффективность генерируемого кода.
| Состояние | Рекомендуемое действие |
|---|---|
| Блоки, определяющие виртуальную шину, пересекающую границу подсистемы. | Измените выделенную шину на невиртуальную. |
Вы можете:
Выполните эту проверку для моделей библиотек.
Исключите блоки и диаграммы из этой проверки, если у вас есть лицензия Simulink Check.
Код чека: mathworks.design.DiscreteTimeIntegratorInitCondition
Идентифицируйте блоки интегратора дискретного времени с портами состояния и портами начального состояния, которые не питаются ни блоком начального состояния, ни блоком константы.
Блоки интегратора дискретного времени с портом состояния и портами начального состояния могут не быть соответствующим образом инициализированы, если только они не подаются из блока начального состояния или константы. Это, скорее всего, произойдет, когда блоки интегратора дискретного времени будут использоваться для моделирования динамических систем второго или более высокого порядка.
| Состояние | Рекомендуемое действие |
|---|---|
| Блоки интегратора дискретного времени не инициализируются на этапе инициализации модели. | Добавьте блок «Constant» или «Initial Condition» для подачи внешнего порта «Initial Condition». |
Вы можете:
Выполните эту проверку для моделей библиотек.
Исключите блоки и диаграммы из этой проверки, если у вас есть лицензия Simulink Check.
Блок ИС
Обзор исключения Model Advisor (Simulink Check)
Код чека: mathworks.design.DisabledLibLinks
Модель поиска отключенных ссылок на библиотеки.
Отключенные связи с библиотекой могут привести к неожиданным результатам моделирования. Разрешить отключенные связи перед сохранением модели.
Примечание
Эта проверка может перекрываться с моделью проверки для проблем обновления блоков.
| Состояние | Рекомендуемое действие |
|---|---|
| Ссылки на библиотеки отключены. | Выберите в контекстном меню пункт «Ссылка на библиотеку» > «Разрешить ссылку». |
Вы можете:
Выполните эту проверку для моделей библиотек.
Исключите блоки и диаграммы из этой проверки, если у вас есть лицензия Simulink Check.
Для поиска ссылок на библиотеки используйте браузер модели.
Чтобы включить разорванную связь, щелкните правой кнопкой мыши блок в модели, чтобы отобразить контекстное меню. Выберите «Ссылка на библиотеку» > «Разрешить ссылку».
Восстановить отключенные связи
Обзор исключения Model Advisor (Simulink Check)
Код чека: mathworks.design.CheckVirtualBusAcrossModelReferenceArgs
Проверяет сигналы виртуальной шины, которые пересекают границы привязки модели, и помечает случаи, когда использование виртуальных шин через границу привязки модели значительно увеличивает число аргументов функции.
Чтобы повысить скорость процесса генерации кода, можно использовать эту проверку для уменьшения числа созданных аргументов функции. Если при проверке обнаруживается модель, в которой будет создано много аргументов для функции, можно щелкнуть Обновить модель (Update Model), чтобы изменить модель так, чтобы она генерировала меньше аргументов.
Методы, которые генерируют множество аргументов функции в результате пересечения опорной границы модели сигнала виртуальной шины, замедляют процесс генерации кода.
| Состояние | Рекомендуемое действие |
|---|---|
| Перечислены методы, генерирующие большое количество аргументов для текущей конфигурации модели, которую эта проверка может уменьшить путем изменения модели. | Щелкните Обновить модель (Update Model). |
Щелкните Обновить модель (Update Model), чтобы сбросить параметры блока Ввод (Inport) и Вывод (Outport) и вставить блоки преобразования сигнала (Signal Conversion blocks), если необходимо, чтобы уменьшить количество сгенерированных аргументов функции для модели.
Код чека: 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
Выполните поиск в модели для определения конфигурируемых блоков подсистемы на уровне модели или подсистемы.
| Состояние | Рекомендуемое действие |
|---|---|
| Определяются конфигурируемые блоки подсистем. | Преобразуйте эти блоки в блоки подсистем исполнения, чтобы избежать проблем совместимости. См. раздел Конфигурируемая подсистема. |
Эту проверку можно выполнить на моделях библиотек.
Код чека: mathworks.design.ConvertMdlrefVarToVSS
Выполните поиск в модели для определения блоков модели исполнения.
| Состояние | Рекомендуемое действие |
|---|---|
Список блоков исполнительной модели, доступных в модели. | Преобразуйте эти блоки в блоки исполнительной подсистемы. |
Код чека: mathworks.design.emptyVariantObjects
Выполните поиск в модели для определения блоков исполнения или библиотеки, имеющих пустые объекты исполнения.
| Состояние | Рекомендуемое действие |
|---|---|
| Отображаются блоки исполнения в модели или библиотеке, имеющие пустые объекты исполнения. | Используйте допустимые условия в объектах вариантов. |
Код чека: mathworks.design.CheckForProperFcnCallUsage
Проверьте параметры диагностики модели, которые применяются к подключению вызова функции и могут повлиять на выполнение модели.
Проверьте параметры диагностики подключения, которые могут привести к выполнению недетерминированной модели.
| Состояние | Рекомендуемое действие |
|---|---|
Диагностика > Связность > Контекстно-зависимые входные данные имеют значение Disable All или Use local settings. Это может привести к выполнению недетерминированной модели. | Задать диагностику > Связность > Контекстно-зависимые входы в Enable all as errors. |
Код чека: mathworks.design.DataStoreMemoryBlkIssue
Поиск проблем моделирования, связанных с блоками памяти хранилища данных.
Проверка целостности многозадачных данных, строгой типизации и затенения хранилищ данных более высокой области.
| Состояние | Рекомендуемое действие |
|---|---|
Флажок Дублировать имена хранилищ данных имеет значение none или warning. | Попробуйте установить флажок Дублировать имена хранилищ данных в значение error в диалоговом окне Параметры конфигурации (Configuration Parameters) на панели Диагностика (Diagnostics) > Валидность данных (Data Validity). |
Имена переменных хранилища данных не имеют строгой типизации в одном из следующих типов:
| Укажите тип данных, отличный от автоматического, выполнив одно из следующих действий.
|
Для проверки многозадачного хранилища данных установлено значение none или warning. | Попробуйте установить проверку многозадачного хранилища данных на error в диалоговом окне Параметры конфигурации (Configuration Parameters) на панели Диагностика (Diagnostics) > Валидность данных (Data Validity). |
При наличии лицензии Simulink Check из этой проверки можно исключить блоки и диаграммы.
Код чека: mathworks.design.DiagnosticDataStoreBlk
Для блоков хранения данных в модели включите проверку порядка диагностики чтения и записи для обнаружения проблем во время выполнения.
Проверьте порядок диагностики для чтения и записи. Включив диагностику «чтение и запись», можно обнаружить потенциальные проблемы во время выполнения.
| Состояние | Рекомендуемое действие |
|---|---|
| Проверка «Обнаружить чтение перед записью» отключена. | Перед записью в диалоговом окне Параметр конфигурации (Configuration Parameter) Диагностика (Diagnostics) > панель Валидность данных (Data Validity) включите функцию Обнаружить чтение (Detect re |
| Проверка обнаружения записи после чтения отключена. | Рекомендуется включить функцию обнаружения записи после прочтения в диалоговом окне Параметр конфигурации (Configuration Parameter) Диагностика (Diagnostics) > панель Валидность данных (Data Validity). |
| Проверка обнаружения записи после записи отключена. | Рекомендуется включить функцию обнаружения записи после записи в диалоговом окне Параметр конфигурации (Configuration Parameter) Диагностика (Diagnostics) > панель Валидность данных (Data Validity). |
Исключите блоки и диаграммы из этой проверки, если у вас есть лицензия Simulink Check.
.
Диагностика во время выполнения может значительно замедлить моделирование. После проверки того, что Simulink не генерирует предупреждения или ошибки во время моделирования, установите для них значение Disable all.
Код чека: mathworks.design.DataStoreBlkSampleTime
Выявление ошибок моделирования из-за времени выборки блоков хранилища данных.
Проверьте блоки хранения данных на непрерывное или фиксированное время выборки на второстепенном шаге.
| Состояние | Рекомендуемое действие |
|---|---|
| Блоки хранения данных в модели имеют непрерывное или фиксированное время выборки на малом шаге. | Попробуйте сделать перечисленные блоки дискретными или заменить их блоками «Память» или «Перейти к» и «Из». |
При наличии лицензии Simulink Check из этой проверки можно исключить блоки и диаграммы.
Код чека: mathworks.design.OrderingDataStoreAccess
Поиск проблем чтения/записи, которые могут привести к неточностям в результатах.
Во время схемы обновления определите потенциальные проблемы, связанные с условиями чтения-перед-записью, записи-после-чтения и записи-после-записи для блоков хранения данных.
| Состояние | Рекомендуемое действие |
|---|---|
| Чтение и запись (условие чтения-перед-записью или записи-после-чтения) происходят в неправильном порядке. | Рассмотрите возможность реструктуризации модели таким образом, чтобы блок чтения хранилища данных выполнялся перед блоком записи хранилища данных. |
| Несколько операций записи выполняются в течение одного временного шага. | Измените модель на запись данных только один раз за шаг времени или обратитесь к следующему разделу «Советы». |
При наличии лицензии Simulink Check из этой проверки можно исключить блоки и диаграммы.
Эта проверка выполняет статический анализ, который может не идентифицировать каждый экземпляр неправильного использования. В частности, Function-Call Subsystems, Stateflow Charts, MATLAB для генерации кода, For Iterator Subsystems и For Each Subsystems могут вызывать как пропущенные обнаружения, так и ложные срабатывания. Для более полной проверки рекомендуется включить на панели Диагностика (Diagnostics) > Валидность данных (Data Validity) диалогового окна Параметры конфигурации (Configuration Parameters) следующие функции диагностики: Обнаружение чтения перед записью, Обнаружение записи после чтения и Обнаружение записи после записи.
Код чека: mathworks.design.MismatchedBusParams
Идентификация блоков и Simulink.Signal объекты, инициализирующие сигналы шины с использованием несовпадающих структур.
В модели для инициализации сигнала шины можно использовать структуру MATLAB. Например, при прохождении сигнала шины через блок «Единичная задержка» можно задать для параметра «Начальное условие» значение структуры. Основные сведения о инициализации шин с помощью структур см. в разделе Задание начальных условий для элементов шины.
Выполните эту проверку для создания эффективного и читаемого кода путем сопоставления типов формы и числовых данных структур исходных условий с типами сигналов шины. Сопоставление этих признаков позволяет избежать ненужных явных типоразмеров и заменяет назначения структуры «поле за полем», например, вызовами memcpy.
Эта проверка содержит список блоков и Simulink.Signal объекты, инициализирующие сигналы шины с помощью частичных структур. Во время итерационного процесса создания модели можно использовать частичные структуры для фокусировки на подмножестве сигнальных элементов в шине. Для зрелой модели используйте полные структуры для:
Создание удобочитаемого и эффективного кода.
Поддержка стиля моделирования, который явно инициализирует неуказанные сигналы. При использовании частичных структур Simulink неявно инициализирует неуказанные сигналы.
Дополнительные сведения о полных и частичных структурах см. в разделах Создание полных структур для инициализации и Создание частичных структур для инициализации.
Эта проверка содержит список блоков и Simulink.Signal объекты, структуры исходных условий которых приводят к несоответствиям типов данных. Поля этих структур имеют числовые типы данных, которые не соответствуют типам данных соответствующих элементов сигнала шины.
Эта проверка не обнаруживает несоответствие для блоков, таких как блок единичной задержки, которые неявно преобразуют тип данных начального условия во входной сигнал.
При настройке структуры начального условия для отображения в создаваемом коде в качестве настраиваемой глобальной структуры избегайте ненужных явных типов путем сопоставления типов данных. См. раздел Создание настраиваемой структуры начальных условий для сигнала шины (Simulink Coder).
| Состояние | Рекомендуемое действие |
|---|---|
Блок или сигнальный объект использует частичную структуру | Рассмотрите возможность использования функции |
Типы данных полей структуры не соответствуют типам данных соответствующих сигнальных элементов | Рассмотрите возможность определения структуры как |
Код чека: mathworks.design.ReplaceZOHDelayByRTB
Определите блоки задержки, единичной задержки или удержания нулевого порядка, которые используются для изменения скорости. Замените эти блоки фактическими блоками Rate Transition.
Если модель использует блоки задержки, единичной задержки или удержания нулевого порядка для обеспечения перехода скорости между входным и выходным сигналами, Simulink выполняет скрытую замену этих блоков встроенными блоками перехода скорости. В скомпилированной блок-схеме в левом верхнем углу блока замены появляются желтый символ и буквы «RT». Эта замена может повлиять на поведение модели следующим образом:
Эти блоки теряют свои алгоритмические конструктивные свойства, задерживая сигнал или реализуя удержание нулевого порядка. Вместо этого они приобретают поведение перехода скорости.
Этот метод моделирования работает только в определенных конфигурациях перехода (медленный-быстрый для блоков задержки и единичной-задержки и быстрый-медленный для блока удержания нулевого порядка). Установите время выборки блока равным более низкой скорости (источник для блоков задержки и единичной задержки и адресат для блока удержания нулевого порядка).
При изменении времени выборки блока в нисходящем или восходящем направлении эти блоки задержки, единичной задержки и удержания нулевого порядка могут не выполнять переход скорости. Например, установка времени выборки источника и назначения, равного, останавливает переход скорости. Затем блоки принимают свои исходные алгоритмические свойства проектирования.
Время выборки блока показывает неполную информацию о временных скоростях выборки. Блочный код работает с двумя различными скоростями для обработки передачи данных. Однако время выборки блока и цвет времени выборки показывают его как односкоростной блок. Инструменты и сценарии MATLAB, использующие информацию о времени образца, основывают свое поведение на этой информации.
Альтернативой является замена блоков задержки, единичной задержки или удержания нулевого порядка блоками фактического перехода скорости.
Метод обеспечивает однозначные результаты в поведении блока. Блоки задержки, единичной задержки или удержания нулевого порядка действуют в соответствии с их алгоритмической конструкцией для задержки и удержания сигналов соответственно. Только блоки Rate Transition выполняют фактический переход скорости.
Использование фактического блока Rate Transition для rate transition предлагает настраиваемое решение для обработки передачи данных, если требуется указать детерминированное поведение или тип реализуемых буферов памяти.
Эта проверка используется для определения экземпляров модели, в которых блоки Задержка (Delay), Задержка единицы измерения (Unit Delay) или Удержание нулевого порядка (Zero-Order Hold) подвергаются скрытой замене для обеспечения перехода скорости между сигналами. Щелкните Обновить модель (Upgrade Model), чтобы заменить эти блоки фактическими блоками изменения скорости.
| Состояние | Рекомендуемое действие |
|---|---|
| Модель не имеет экземпляров блоков задержки, единичной задержки или удержания нулевого порядка, используемых для перехода скорости. | Никаких действий не требуется. |
| Модель имеет экземпляры блоков задержки, единичной задержки или удержания нулевого порядка, используемых для перехода скорости. | Проверка идентифицирует эти экземпляры и позволяет обновить модель.
|
Если вы не решили заменить блоки задержки, единичной задержки и/или удержания нулевого порядка блоками фактического перехода скорости, 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 в модель. Функция предназначена только для внутреннего использования.
Выполнение проверки вызовов slDataTypeAndScale вызывает функцию Simulink slRemoveDataTypeAndScale. Вызов этой функции непосредственно обеспечивает более широкий диапазон опций преобразования. Однако очень редко требуются дополнительные варианты преобразования.
Для получения дополнительной информации об обновлении типов и масштабов данных в окне команд MATLAB выполните следующее:
help slDataTypeAndScale
help slRemoveDataTypeAndScale
Обзор исключения Model Advisor (Simulink Check)
Код чека: mathworks.design.BusTreatedAsVector
Определите сигналы шины, которые Simulink рассматривает как векторы.
Нельзя использовать сигналы шины, которые программное обеспечение Simulink неявно преобразует в векторы. Вместо этого либо вставьте блок преобразования шины в вектор между сигналом шины и входным портом блока, который он подает, либо используйте Simulink.BlockDiagram.addBusToVector команда.
| Состояние | Рекомендуемое действие |
|---|---|
Сигналы шины неявно преобразуются в векторы. | Использовать |
Модель не настроена для идентификации сигналов шины, которые Simulink рассматривает как векторы. | В диалоговом окне Параметры конфигурации (Configuration Parameters) на панели Диагностика (Diagnostics) > Связность (Connectivity) установите значение Сигнал шины (Bus signal), обрабатываемый как вектор |
При нажатии кнопки «Изменить» блок Bus to Vector вставляется на входные порты блоков, которые неявно преобразуют сигналы шины в векторы.
Выполните эту проверку перед запуском проверки непротиворечивости параметров инициализации для блоков Outport и Merge.
Дополнительные сведения см. в разделе Определение автоматических преобразований шины.
Код чека: mathworks.design.DelayedFcnCallSubsys
Определите возвращаемые значения вызова функции, которые могут быть задержаны, поскольку программное обеспечение Simulink вставило неявный блок преобразования сигнала.
Чтобы сигналы находились в непрерывной памяти, программное обеспечение Simulink может автоматически вставлять неявный блок преобразования сигналов перед входными портами блока инициатора функционального вызова. Это может привести к одношаговой задержке при возврате значений сигналов от подсистем вызова функций. Задержки можно избежать, гарантируя, что сигнал исходит из сигнального блока в системе функционального вызова. Или, если задержка допустима, вставьте блок единичной задержки перед затронутыми портами ввода.
| Состояние | Рекомендуемое действие |
|---|---|
| Перечисленные входные порты блока могут иметь неявный блок преобразования сигнала. | Решите, допустима ли одношаговая задержка при возврате значений сигнала для перечисленных сигналов.
|
При наличии лицензии Simulink Check из этой проверки можно исключить блоки и диаграммы.
Блок единичной задержки
Обзор исключения Model Advisor (Simulink Check)
Код чека: mathworks.design.OutputSignalSampleTime
Поиск непрерывных отсчетов выходных сигналов без плавающей точки.
Сигналы без плавающей точки могут не представлять собой непрерывные переменные без потери информации.
| Состояние | Рекомендуемое действие |
|---|---|
| Сигналы с непрерывным временем выборки имеют тип данных без плавающей точки. | По идентифицированным сигналам измените время выборки на дискретное или на фиксированный шаг ([0 1]). |
При наличии лицензии Simulink Check из этой проверки можно исключить блоки и диаграммы.
Обзор исключения Model Advisor (Simulink Check)
Код чека: mathworks.design.MergeBlkUsage
Определите блоки объединения с параметрами, которые могут привести к неожиданному поведению, и помогите перенести модель в упрощенный режим инициализации.
Примечание
Выполните эту проверку вместе с другими проверками в окне Обзор переноса в упрощенный режим инициализации.
Для повышения согласованности результатов моделирования был введен упрощенный режим инициализации в R2008b. Дополнительные сведения см. в разделах Упрощенный режим инициализации и Классический режим инициализации.
Эта проверка Model Advisor определяет настройки в блоках объединения в модели, которые могут вызвать проблемы при использовании классического режима инициализации. Он также рекомендует параметры для согласованного поведения блоков объединения. Результаты подчек содержат два типа операторов: Failed и Warning. Неуспешные инструкции определяют проблемы, которые необходимо устранить вручную перед переносом модели в упрощенный режим инициализации. Предупреждения определяют проблемы или изменения в поведении, которые могут произойти после миграции.
| Состояние | Рекомендуемое действие |
|---|---|
| Проверьте параметры диагностики во время выполнения блока слияния. |
|
| Проверьте блоки модели, использующие режим моделирования PIL. | Упрощенный режим инициализации не поддерживает моделирование процессора в цикле (PIL) для привязок модели. |
| Проверьте наличие блоков библиотеки с экземплярами, которые не могут быть перенесены. | Проверьте результаты неудавшейся подконтроля для каждого блока, чтобы определить корректирующие действия. |
| Проверьте наличие блоков объединения с одним входом. | Замените блок Mux, используемый для формирования входного сигнала, и блок Merge на один блок Merge с несколькими входами. Блоки слияния с одним входом не поддерживаются в упрощенном режиме инициализации. |
| Проверьте наличие корневых блоков объединения с неопределенным начальным выходным значением. | Если явное значение параметра Initial output корневого блока Merge не задано, Simulink использует исходное значение по умолчанию для типа выходных данных. Корневой блок объединения - это блок объединения с выходным портом, который не подключается к другому блоку объединения. Сведения о исходном значении по умолчанию см. в разделе Инициализация значений сигналов. |
| Проверьте наличие блоков объединения с ненулевыми смещениями входных портов. | Снимите флажок «Разрешить неравную ширину порта» для блока «Объединение». Примечание Рекомендуется использовать блоки объединения только для сигнальных элементов, требующих истинного объединения. Другие элементы можно объединить с объединенными элементами с помощью блока «Конкатенат». |
Проверьте наличие блоков объединения, которые имеют неподключенные входы или которые имеют входы от не условно выполненных подсистем. | Задайте для параметра «Количество входов» блока «Объединение» число входов блока «Объединение». Необходимо подключить каждый вход к сигналу. Убедитесь, что каждый вход блока объединения управляется условно выполненной подсистемой. Блоки объединения не могут управляться непосредственно подсистемой итератора или блоком, не являющимся условно выполняемой подсистемой. |
| Проверьте наличие блоков объединения с входами, которые объединяются или переупорядочиваются вне условно выполняемых подсистем. | Убедитесь, что комбинации или переупорядочивание входных сигналов блока слияния происходит в условно выполняемой подсистеме. В таких конструкциях могут использоваться блоки Mux, Bus Creator или Selector. |
| Проверьте наличие блоков объединения с несогласованными временами ввода образцов. | Убедитесь, что входные сигналы для каждого блока слияния имеют одинаковое время выборки. Невыполнение этого требования может привести к непредсказуемому поведению. Следовательно, упрощенный режим инициализации не допускает противоречивых времен выборки. |
| Проверьте наличие блоков объединения с несколькими входными портами, управляемыми одним источником. | Убедитесь, что блок объединения не имеет нескольких входных сигналов, управляемых одной и той же условно выполняемой подсистемой или условно исполняемым блоком модели. |
| Проверьте наличие блоков объединения, которые используют сигнальные объекты для задания начального выходного значения. | Убедитесь, что следующие действия допустимы. В упрощенном режиме инициализации сигнальные объекты не могут задавать параметр Initial output блока Merge. Хотя вы все еще можете инициализировать выходной сигнал для блока слияния с помощью объекта сигнала, результат инициализации может быть перезаписан на результат блока слияния. Примечание Simulink генерирует предупреждение о том, что начальное значение сигнального объекта было проигнорировано. |
Код чека: mathworks.design.InitParamOutportMergeBlk
Определите блоки Outport и условные подсистемы с параметрами, которые могут привести к неожиданному поведению, и помогите перенести модель в упрощенный режим инициализации.
Примечание
Выполните эту проверку вместе с другими проверками в окне Обзор переноса в упрощенный режим инициализации.
Для повышения согласованности результатов моделирования был введен упрощенный режим инициализации в R2008b. Этот режим особенно важен для моделей, не задающих начальных условий для условно выполняемых выходных портов подсистемы. Дополнительные сведения см. в разделах Упрощенный режим инициализации и Классический режим инициализации.
Эта проверка Model Advisor идентифицирует блоки Outport и условные подсистемы в модели, которые могут вызвать проблемы при использовании упрощенного режима инициализации. Он также рекомендует параметры для согласованного поведения блоков Outport. Результаты подчек содержат два типа операторов: Failed и Warning. Неуспешные инструкции определяют проблемы, которые необходимо устранить вручную перед переносом модели в упрощенный режим инициализации. Предупреждающие инструкции определяют проблемы или изменения в поведении, которые могут произойти после миграции.
| Состояние | Рекомендуемое действие |
|---|---|
| Проверьте наличие блоков внутри подсистемы итератора, для которых требуется истекшее время. | В иерархии Iterator Subsystem не используйте блоки, для которых требуется служба, поддерживающая время, прошедшее между двумя последовательными выполнениями. Поскольку итераторная подсистема может выполняться несколько раз на данном шаге времени, понятие прошедшего времени не является хорошо определенным между двумя такими выполнением. Использование этих блоков внутри подсистемы итератора может вызвать непредвиденное поведение. |
| Проверьте наличие блоков Outport с конфликтующими требованиями к буферу сигналов. | Блок Outport имеет триггер функционального вызова или сигнал зависимости данных функционального вызова, проходящий через него, вместе со стандартными сигналами данных. Некоторые из стандартных сигналов данных требуют явного буфера сигналов для инициализации выходного сигнала соответствующей подсистемы. Однако буферизация сигналов, связанных с вызовом функции, приводит к нарушению зависимости данных вызова функции. Рассмотрите возможность изменения модели для передачи связанных с функциональными вызовами сигналов через отдельный блок Outport. Примеры нарушений зависимости данных вызова функции см. в примере модели Стандартный сигнал данных может потребовать дополнительной копии сигнала по одной из следующих причин:
|
| Проверьте наличие блоков Outport, которые управляются сигналом шины и начальное выходное значение которых не является скалярным. | Для блоков Outport, управляемых сигналами шины, классический режим инициализации не поддерживает структуры Initial Condition (IC), в то время как упрощенный режим инициализации не поддерживает. Поэтому при переносе модели из классического режима в упрощенный укажите скаляр для параметра Начальный вывод (Initial Output). После завершения миграции для определения различных начальных значений для различных элементов сигнала шины используйте структуры ИС. Для получения дополнительной информации см. Создание структур начальных условий. |
Проверьте наличие блоков Outport, требующих явной копии сигнала. | Явная копия сигнала шины, управляющего блоком Outport, необходима для инициализации выходного сигнала соответствующей подсистемы. Вставьте блок преобразования сигнала перед блоком Outport, а затем установите для параметра Output блока преобразования сигнала значение Стандартный сигнал данных может потребовать дополнительной копии сигнала по одной или нескольким из следующих причин:
|
| Проверьте наличие объединенных блоков Outport, которые наследуют значение Initial Output от блоков Outport, настроенных на сброс при отключении блоков. | Если блоки Outport управляют блоком Merge, не устанавливайте для них значение Output при отключенных параметрах reset. |
| Проверьте наличие объединенных блоков Outport, управляемых вложенными условно выполненными подсистемами. | Определите, допустимо ли новое поведение блоков Outport. Если это неприемлемо, измените модель для учета нового поведения перед переходом в упрощенный режим инициализации. |
| Проверьте наличие объединенных блоков Outport, которые сбрасываются при отключении блоков. | Установите параметр Output when disabled блока Outport в значение Дополнительные сведения см. в разделе Исходящий порт. |
| Проверьте наличие блоков Outport, которые имеют неопределенное начальное выходное значение с недопустимыми начальными источниками условий. | Убедитесь, что следующие действия допустимы. Если параметр Initial output не указан ( Для упрощенного режима инициализации допустимыми источниками блоков Outport могут наследовать значение Initial output от: Constant, Initial Condition, Merge (с начальным выходом), Stateflow chart, function-call model reference или условно исполняемые блоки подсистем. |
| Проверьте блоки Outport с автоматическими переходами скорости. | Simulink вставил блок Rate Transition на вход блока Outport. Укажите параметр Initial output для каждого блока Outport. В противном случае выполните следующую процедуру:
|
| Проверьте блоки Outport, которые имеют особые требования к хранению сигналов и неопределенное начальное выходное значение. | Убедитесь, что следующие действия допустимы. Укажите параметр Initial output для блока Outport. Задайте для этого значения значение |
| Проверьте параметр Initial output для блоков Outport, которые сбрасываются при их отключении. | Укажите параметр Initial output блока Outport. Необходимо указать начальное выходное значение для блоков, которые настроены на сброс при отключении. |
| Проверьте параметр Initial output для блоков Outport, которые проходят через сигнал зависимости данных вызова функции. | Невозможно указать начальное выходное значение для блока Outport, поскольку через него проходят сигналы зависимости данных вызова функции. Чтобы задать начальное выходное значение:
|
| Проверьте наличие блоков Outport, которые используют сигнальные объекты для задания начального выходного значения. | Убедитесь, что следующие действия допустимы. В упрощенном режиме инициализации сигнальные объекты не могут задавать параметр Initial output блока Outport. Можно по-прежнему инициализировать входные или выходные сигналы для блока Outport с помощью сигнальных объектов, но результаты инициализации могут быть перезаписаны сигналами блока Outport. Примечание При работе с условно выполненным блоком Outport подсистемы Simulink генерирует предупреждение о том, что начальное значение сигнального объекта было проигнорировано. |
| Проверьте наличие блоков библиотеки с экземплярами с предупреждениями. | Перед переходом в упрощенный режим инициализации проверьте результаты проверки предупреждений для каждого блока. |
| Проверьте наличие объединенных блоков Outport, которые либо не подключены, либо подключены к блоку Ground. | Убедитесь, что следующие действия допустимы. Блок Outport управляет блоком Merge, но его входы либо не подключены, либо подключены к блокам Ground. В классическом режиме инициализации несвязанные или заземленные выходы не обновляют сигнал слияния даже при выполнении родительских условно выполняемых подсистем. В упрощенном режиме инициализации, однако, эти выходы обновят сигнал слияния с нулевым значением, когда выполняются их родительские условно выполненные подсистемы. |
| Проверьте наличие блоков Outport, которые получают начальное выходное значение из входного сигнала при их переносе. | Убедитесь, что следующие действия допустимы. Параметр Initial output блока Outport не указан. В результате упрощенный режим инициализации предполагает, что начальное выходное значение для блока Outport выводится из входного сигнала. Это предположение может привести к различному поведению инициализации. Если это поведение неприемлемо, измените модель перед переходом в упрощенный режим инициализации. |
| Проверьте наличие внешних блоков Outport, имеющих явный начальный вывод. | Убедитесь, что следующие действия допустимы. В классическом режиме инициализации параметры Initial output и Output при отключении блока Outport должны совпадать с параметрами исходных блоков Outport. В упрощенном режиме инициализации Simulink устанавливает для параметра Initial output внешних блоков Outport значение |
| Проверка блоков, считывающих входные данные из условно выполненных подсистем при инициализации. | Убедитесь, что следующие действия допустимы. Некоторые блоки, такие как блок интегратора дискретного времени, считывают свои входные данные из условно выполненных подсистем во время инициализации в классическом режиме инициализации. Simulink выполняет этот шаг как метод оптимизации. Эта оптимизация не допускается в упрощенном режиме инициализации, поскольку выход условно выполняемой подсистемы на первом шаге времени после инициализации может отличаться от начального значения, объявленного в соответствующем блоке Outport. В частности, это расхождение возникает, если подсистема активна на первом шаге времени. |
Проверьте наличие конфликта миграции для блоков Outport, использующих Dialog в качестве источника начального выходного значения. | Другие экземпляры блоков Outport с той же ссылкой на библиотеку либо не могут быть перенесены, либо переносятся другим способом. Просмотрите результаты проверки блоков библиотеки с экземплярами, которые невозможно перенести, чтобы узнать о различных путях переноса для других экземпляров каждого блока Outport. Блок Outport сохранит свои текущие настройки и будет использовать указанное начальное выходное значение. |
Проверьте наличие конфликта миграции для используемых блоков Outport Input signal в качестве источника начального выходного значения. | Другие экземпляры блоков Outport с той же ссылкой на библиотеку либо не могут быть перенесены, либо переносятся другим способом. Просмотрите результаты проверки блоков библиотеки с экземплярами, которые невозможно перенести, чтобы узнать о различных путях переноса для других экземпляров каждого блока Outport. Блок Outport в настоящее время задает начальный выход После миграции параметру Source of initial output value будет присвоено значение |
| Проверьте наличие конфликта миграции для блоков Outport, имеющих семантику SimEvents ®. | Другие экземпляры блоков Outport с той же ссылкой на библиотеку либо не могут быть перенесены, либо переносятся другим способом. Просмотрите результаты проверки блоков библиотеки с экземплярами, которые невозможно перенести, чтобы узнать о различных путях переноса для других экземпляров каждого блока Outport. Блоки Outport будут продолжать использовать начальное выходное значение, равное |
| Проверьте наличие конфликта миграции для самых внутренних блоков Outport с переменным размером входа и неопределенным начальным выходом. | Для этих блоков Outport размер сигнала изменяется только при повторном включении родительской подсистемы блока. Поэтому Simulink неявно предполагает, что параметр Initial output равен 0, даже если параметр не указан, []. Следовательно, если параметр не указан, при переносе модели в упрощенный режим инициализации помощник по модели явно установит значение 0. Другие экземпляры блоков Outport с той же ссылкой на библиотеку либо не могут быть перенесены, либо переносятся другим способом. Просмотрите результаты проверки блоков библиотеки с экземплярами, которые невозможно перенести, чтобы узнать о различных путях переноса для других экземпляров каждого блока Outport. |
| Проверьте наличие конфликта миграции для блоков Outport, которые используют значение основания по умолчанию в качестве начального вывода. | Параметр Initial output имеет значение [] (пустая матрица), и источник исходящего порта является недопустимым исходным источником условия. Таким образом, блок использует исходное значение по умолчанию в качестве начального выхода в упрощенном режиме инициализации. Другие экземпляры блоков Outport с той же ссылкой на библиотеку либо имеют ошибки, либо переносятся по-другому. |
| Проверьте наличие конфликта миграции для объединенных блоков Outport без явной спецификации начального вывода. | Просмотрите результаты проверки блоков библиотеки с экземплярами, которые невозможно перенести, чтобы узнать о различных путях миграции для других экземпляров каждого блока Outport. Для остальных блоков Outport для параметра Initial output установлено значение [] (пустая матрица) и для параметра Output when disabled установлено значение held соответственно, в упрощенном режиме инициализации. |
Код чека: mathworks.design.DiscreteBlock
Определите блоки интегратора дискретного времени с параметрами, которые могут привести к неожиданному поведению, и помогите перенести модель в упрощенный режим инициализации.
Примечание
Выполните эту проверку вместе с другими проверками в окне Обзор переноса в упрощенный режим инициализации.
Для повышения согласованности результатов моделирования был введен упрощенный режим инициализации в R2008b. Дополнительные сведения см. в разделах Упрощенный режим инициализации и Классический режим инициализации.
Эта проверка Model Advisor определяет настройки в блоках дискретного интегратора времени в модели, которые могут вызвать проблемы при использовании упрощенного режима инициализации. Он также рекомендует настройки для согласованного поведения блоков интегратора дискретного времени. Результаты подчек содержат два типа операторов: Failed и Warning. Неуспешные инструкции определяют проблемы, которые необходимо устранить вручную перед переносом модели в упрощенный режим инициализации. Предупреждения определяют проблемы или изменения в поведении, которые могут произойти после миграции.
| Состояние | Рекомендуемое действие |
|---|---|
Проверка блоков интегратора дискретного времени, для параметра Initial condition setting которого установлено значение | Определите, допустимо ли новое поведение блоков интегратора дискретного времени. Если это неприемлемо, измените модель для учета нового поведения перед переходом в упрощенный режим инициализации. |
Проверка блоков интегратора дискретного времени, для параметра Initial condition setting которого установлено значение | Использовать периодическое время выборки для блока или установить для параметра «Начальное условие» значение |
Проверьте наличие блоков внутри подсистемы итератора, для которых требуется истекшее время. | В иерархии Iterator Subsystem не используйте блоки, для которых требуется служба, поддерживающая время, прошедшее между двумя последовательными выполнениями. Поскольку итераторная подсистема может выполняться несколько раз на данном шаге времени, понятие прошедшего времени не является хорошо определенным между двумя такими выполнением. Использование этих блоков внутри подсистемы итератора может вызвать непредвиденное поведение. |
Примечание
Не запускать эту проверку в изоляции. Выполните эту проверку вместе с другими проверками в окне Обзор переноса в упрощенный режим инициализации.
Код чека: mathworks.design.ModelLevelMessages
Определите параметры в блоках модели и параметры конфигурации модели, которые могут привести к неожиданному поведению, и помогите перенести модель в упрощенный режим инициализации.
Для повышения согласованности результатов моделирования был введен упрощенный режим инициализации в R2008b. Дополнительные сведения см. в разделах Упрощенный режим инициализации и Классический режим инициализации.
Эта проверка Model Advisor выявляет проблемы в параметрах конфигурации модели и блоках модели в модели, которые могут вызвать проблемы при переходе в упрощенный режим инициализации. Результаты подчек содержат два типа операторов: Failed и Warning. Неуспешные инструкции определяют проблемы, которые необходимо устранить вручную перед переносом модели в упрощенный режим инициализации. Предупреждения определяют проблемы или изменения в поведении, которые могут произойти после миграции.
После выполнения этой проверки согласованности Model Advisor при нажатии кнопки Исследовать результат сообщения относятся только к блокам, не являющимся ссылками на библиотеки.
Примечание
Поскольку отменить эти изменения трудно, выберите команду Файл (File) > Сохранить точку восстановления как (Save Restore Point As), чтобы создать резервную копию модели перед переходом в упрощенный режим инициализации.
Дополнительные сведения см. в разделе Параметры конфигурации модели: диагностика связности.
| Состояние | Рекомендуемое действие |
|---|---|
Убедитесь, что все блоки модели используют упрощенный режим инициализации. | Перенесите модель, на которую ссылается блок «Модель», в упрощенный режим инициализации, а затем перенесите модель верхнего уровня. |
Проверка настройки упрощенного режима инициализации | Set Configuration Parameters > Underspecified initialization detection to |
При нажатии кнопки Изменить параметры (Modify Settings) происходит следующее:
Параметр Модель (Model) имеет значение simplified
Если в блоке Outport для параметра Initial output установлен пустой символьный вектор, [], то SourceOfInitialOutputValue параметр имеет значение Входной сигнал.
Если Outport имеет пустой начальный выход и сигнал переменного размера, то начальный выход устанавливается в нуль.
Код чека: mathworks.design.SFuncAnalyzer
Проверка качества S-функций в моделях или подсистемах Simulink.
Анализатор S-функций выполняет проверку качества S-функций для выявления улучшений и потенциальных проблем в указанной модели.
| Состояние | Рекомендуемое действие |
|---|---|
Непрерывные состояния изменяются в mdlOutputs способ. | Изменение непрерывных состояний на основном этапе времени и использование ssSetSolverNeedsReset функция в коде S-функции. |
Непрерывные состояния изменяются в mdlUpdate способ. | Изменение непрерывных состояний только на основном шаге времени и использование ssSetSolverNeedsReset функция в коде S-функции. |
Дискретные состояния S-функций изменяются в mdlOutputs на незначительном шаге. | Изменение дискретных состояний только на основном шаге, охраняемом ssIsMajorTimeStep функция. |
Вектор режима S-функции изменяется в mdlOutputs способ на незначительном этапе. | Изменение вектора режима только на основном шаге, охраняемом sslsMajorTimeStep функция. |
| S-функция использует статические или глобальные переменные для объявления внутренних состояний. | Объявление состояний, явно использующих ssSetNumDiscStates функция или модель глобальных данных путем создания хранилищ данных. |
| S-функция имеет непрерывные состояния, но время выборки не объявляется непрерывным. | Укажите время непрерывной выборки с помощью ssSetSampleTime функция. |
S-функция имеет дискретные состояния, но mdlOutputs и mdlUpdate способы комбинируют. | Определите mdlOutputs и mdlUpdate методы отдельно и изменение дискретных состояний только в mdlUpdate способ. |
S-функция устанавливает SS_OPTION_CAN_BE_CALLED_CONDITIONALLY опция при наличии данных, подобных состоянию, или нескольких времен выборки. | Удалите опции, если S-функция имеет данные, похожие на состояние, или несколько раз выборки. |
MEX компиляторы не существуют на компьютере. | Проверьте наличие или установку MEX компиляторы на компьютере. |
| S-функция обнаруживает ошибки при компиляции модели. | Проверьте выходные данные программы Diagnostic Viewer и перекомпилируйте модель. |
Код чека: mathworks.design.NonContSigDerivPort
Определение неслагаемых сигналов, управляющих производными портами.
Прерывистые сигналы, управляющие производными портами, приводят к сбросу решателя каждый раз при изменении значения сигнала, что замедляет моделирование.
| Состояние | Рекомендуемое действие |
|---|---|
| В моделирующем производном порте имеются несгораемые сигналы. |
|
При наличии лицензии Simulink Check из этой проверки можно исключить блоки и диаграммы.
Код чека: mathworks.design.DiagnosticSFcn
Проверьте границы массива и согласованность решателя, если блоки S-Function находятся в модели.
Проверяет соответствие блоков S-Function правилам согласованности решателя ODE, применяемым Simulink к встроенным блокам.
| Состояние | Рекомендуемое действие |
|---|---|
Для несогласованности данных решателя установлено значение none. | В диалоговом окне «Параметры конфигурации» установите для параметра «Несогласованность данных решателя» значение warning или error. |
Превышенные границы массива установлены в значение none. | В диалоговом окне «Параметры конфигурации» установите превышенные границы массива в значение warning или error
|
При наличии лицензии Simulink Check из этой проверки можно исключить блоки и диаграммы.
Обзор исключения Model Advisor (Simulink Check)
Код чека: mathworks.design.characterEncoding
Проверка символов, несовместимых с текущей кодировкой
Проверьте наличие в файле модели символов, которые не могут быть представлены в текущей кодировке. Это может привести к ошибкам при попытке сохранить модель.
| Состояние | Рекомендуемое действие |
|---|---|
| Найдены несовместимые символы | Изменить текущую кодировку на UTF-8 с помощью slCharacterEncoding. |
В отчете помощника по обновлению отображается необходимая кодировка, или можно извлечь кодировку из модели с помощью команды:
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.
| Состояние | Рекомендуемое действие |
|---|---|
| Обнаружены блоки с проблемами совместимости. | Нажмите кнопку «Изменить», чтобы устранить обнаруженные проблемы с блоками. |
| Проверьте статус обновления для S-функций API уровня 2. | Рассмотрите возможность замены S-функций уровня 1 на S-функции уровня 2. |
При нажатии кнопки «Изменить» блоки из предыдущей версии программного обеспечения Simulink заменяются последними версиями.
Код чека: mathworks.design.UpdateRequireCompile
Проверьте наличие общих проблем обновления блоков.
Проверьте блоки на наличие проблем совместимости в результате обновления до новой версии программного обеспечения Simulink. Некоторые обновления блоков требуют сбора информации или данных, когда модель находится в режиме компиляции. Для этой проверки модель устанавливается в режим компиляции, а затем проверяется на наличие обновлений.
| Состояние | Рекомендуемое действие |
|---|---|
| Модель содержит блоки таблицы подстановки (Lookup Table) или таблицы подстановки (Lookup Table, 2-D), а в некоторых блоках для метода подстановки задаются значения «Использовать ближайший ввод» или «Использовать ввод выше». | Замените блоки таблицы подстановки и таблицы подстановки (2-D) n-D блоками таблицы подстановки. Не применяйте параметры «Использовать ближайший ввод» или «Использовать ввод выше» для методов поиска; выберите другой вариант. |
| Модель содержит блоки таблицы подстановки или таблицы подстановки (2-D), и некоторые блоки сначала выполняют умножение во время интерполяции. | Замените блоки таблицы подстановки и таблицы подстановки (2-D) n-D блоками таблицы подстановки. Однако, поскольку n-D блок таблицы поиска выполняет деление первым, эта замена может вызвать численное различие в результате. |
| Модель содержит блоки таблицы подстановки или таблицы подстановки (2-D). Некоторые из этих блоков задают Interpolation-Extrapolation в качестве метода Lookup, но их входные и выходные данные не имеют одного типа с плавающей запятой. | Замените блоки таблицы подстановки и таблицы подстановки (2-D) n-D блоками таблицы подстановки. Затем измените метод экстраполяции или типы данных порта для замены блока. |
Модель содержит блоки единичной задержки со значением времени выборки | Замените блоки задержки блока на блоки памяти. |
При нажатии кнопки «Изменить» блоки из предыдущей версии программного обеспечения Simulink заменяются последними версиями.
Код чека: mathworks.design.UseSLXFile
Убедитесь, что модель сохранена в формате SLX.
Проверьте, сохранена ли модель в формате SLX.
| Состояние | Рекомендуемое действие |
|---|---|
| Модель не сохранена в формате SLX | Рекомендуется обновить формат файла SLX для использования последних функций Simulink. |
Эту проверку можно выполнить на моделях библиотек.
Проекты помогают обновить модели до формата SLX и сохранить журнал версий файлов в системе управления версиями. См. разделы Преобразование из MDL в SLX в проекте и Сохранение истории версий.
Код чека: mathworks.design.CheckSLXFileCompressionLevel
Проверьте, отключено ли сжатие файлов SLX, чтобы уменьшить размер репозитория Git™.
Проверьте, отключено ли сжатие для модели SLX.
| Состояние | Рекомендуемое действие |
|---|---|
| Модель, библиотека или подсистема сохраняются в формате SLX. Сжатие файлов включено. | Рекомендуется отключить сжатие файлов для оптимизации хранилища в системе управления версиями. |
| Модель, библиотека или подсистема не сохраняются в формате SLX. | Затем попробуйте обновить формат файла SLX, отключив сжатие файлов для оптимизации хранилища в системе управления версиями. |
Эту проверку можно выполнить для моделей, библиотек и подсистем, сданных на хранение в систему управления версиями Git.
Проекты помогут обновить все модели и библиотеки в проекте. См. раздел Обновление всех моделей проектов, библиотек и файлов кода MATLAB.
Код чека: mathworks.design.CheckSavedInCurrentVersion
Убедитесь, что модель, библиотека или подсистема сохранены в текущей версии Simulink.
Проверьте, сохранен ли файл модели в текущей версии Simulink.
| Состояние | Рекомендуемое действие |
|---|---|
| Модель, библиотека или подсистема не сохранены в текущей версии Simulink. | Рассмотрите возможность повторного сохранения файла модели в текущей версии Simulink. |
Эту проверку можно выполнить для моделей, библиотек и подсистем.
Проекты позволяют сохранить все модели и библиотеки проекта в текущей версии Simulink. См. раздел Обновление всех моделей проектов, библиотек и файлов кода MATLAB.
Код чека: mathworks.simulink.SB2SL.Check
Убедитесь, что в модели нет устаревших блоков SB2SL.
Проверьте, содержит ли модель устаревшие блоки SB2SL.
| Состояние | Рекомендуемое действие |
|---|---|
| Модель содержит устаревшие блоки SB2SL | Рекомендуется обновить модель до текущих блоков SB2SL. |
При нажатии кнопки «Обновить блоки SB2SL» блоки заменяются последними версиями.
Код чека: mathworks.design.SLXModelProperties
Проверка измененных свойств журнала модели
Проверьте модели на наличие измененных значений свойств журнала моделей, которые можно использовать с подстановкой ключевых слов средства управления версиями. Эта подстановка ключевого слова несовместима с форматом файла SLX.
В формате файла MDL можно настроить некоторые свойства модели для использования подстановки ключевых слов средства управления версиями. При сохранении модели в формате SLX инструменты системы управления версиями не могут выполнять подстановку ключевых слов. Информация в файле модели из такой замены ключевого слова кэшируется при первом сохранении файла MDL как SLX и не обновляется повторно. На панели История свойств модели (Model Properties History) и в блоках Информация о модели (Model Info) модели отображается устаревшая информация.
| Состояние | Рекомендуемое действие |
|---|---|
| Отредактированные свойства журнала модели | Вручную или автоматически восстановить значения свойств по умолчанию. Нажмите кнопку для сброса или для проверки и изменения этих свойств вручную откройте диалоговое окно Свойства модели (Model Properties) и просмотрите панель История (History). |
Эту проверку можно выполнить на моделях библиотек.
Код чека: mathworks.design.ModelInfoKeywordSubstitution
Эта проверка используется для поиска блоков сведений о модели, которые могут быть изменены внешними средствами управления версиями посредством подстановки ключевых слов.
Эта проверка выполняет поиск векторов символов в блоке Сведения о модели, заключенном в знаки доллара, которые могут быть перезаписаны внешним инструментом управления версиями. Использование стороннего средства управления версиями может повредить файлы модели при их отправке. Подстановка по ключевым словам недоступна в формате файла модели SLX.
Для более гибкого интерфейса со средствами управления версиями используйте проект Simulink вместо блока «Сведения о модели». См. раздел Сведения об управлении версиями с проектами.
| Состояние | Рекомендуемое действие |
|---|---|
Блок Информация о модели (Model Info) содержит следующие поля: | Просмотрите список полей в отчете, а затем удалите векторы символов ключевых слов из блока Информация о модели (Model Info). |
Код чека: mathworks.design.ModelInfoConfigurationManager
Эта проверка используется для поиска блоков информации о модели, использующих Configuration Manager.
Блоки сведений о модели с помощью Configuration Manager позволяют подстановку рискованных ключевых слов с помощью внешних средств управления версиями. Использование стороннего средства управления версиями может повредить файлы модели при их отправке. Подстановка по ключевым словам недоступна в формате файла модели SLX. Configuration Manager для блока Model Info будет удален в следующем выпуске.
Для более гибкого интерфейса со средствами управления версиями используйте проект Simulink вместо блока «Сведения о модели». См. раздел Сведения об управлении версиями с проектами.
| Состояние | Рекомендуемое действие |
|---|---|
Блок информации о модели использует Configuration Manager. | Щелкните Удалить диспетчер конфигурации (Remove the Configuration Manager). |
Код чека: mathworks.design.serdesUpgrades
Список устаревших блоков, сохраненных в предыдущей версии SerDes Toolbox™.
Эта проверка выполняет поиск и список блоков SerDes Toolbox, которые могут быть обновлены для совместимости с текущей версией.
| Состояние | Рекомендуемое действие |
|---|---|
| Найдены блоки, сохраненные в более ранних версиях SerDes Toolbox. | Щелкните Обновить (Upgrade) Наборы (Serdes) Блоки панели инструментов (Toolbox Blocks), чтобы обновить блоки набора инструментов для обеспечения совместимости с текущей версией. |
При выборе пункта Обновить (Upgrade) Наборы (Serdes) Блоки панели инструментов (Toolbox Blocks) выполняется обновление устаревших блоков набора инструментов для обеспечения совместимости с текущей версией.
Проектирование и моделирование систем SerDes (панель инструментов SerDes)
Код чека: mathworks.design.Aeroblks.CheckDOF
Списки блоков 3DoF и 6DoF устарели.
Эта проверка выполняет поиск блоков 3DoF и 6DoF из версий библиотеки до 3.13 (R2014a).
| Состояние | Рекомендуемое действие |
|---|---|
| Найдены блоки, настроенные со старыми версиями блоков 3DoF или 6DoF. | Нажмите Replace 3DoF и 6DoF Блоки, чтобы заменить блоки последними версиями. |
Нажатие на Replace 3DoF и 6DoF Блоки заменяет блоки последними версиями.
Уравнения движения (аэрокосмический блок)
Код чека: mathworks.design.Aeroblks.CheckNAV
Поиск блоков трехосного инерциального измерения, трехосного гироскопа и трехосного акселерометра до 3.21 (R2018a).
Эта проверка используется для поиска блоков трехосного инерционного измерения, трехосного гироскопа и трехосного акселерометра, которые были обновлены в R2018a.
| Состояние | Рекомендуемое действие |
|---|---|
| Блок трехосных инерционных измерений, трехосный гироскоп и трехосный акселерометр до R2018a. | В R2018a или более поздних версиях, если ранее решение не выполнялось для стационарных условий, сохраните модель сейчас. Если ранее были решены условия устойчивого состояния для модели, снова решите эти условия устойчивого состояния, а затем сохраните модель. |
Трехосный акселерометр (аэрокосмический блок)
Трехосный гироскоп (аэрокосмический блок)
Трехосный инерциальный измерительный блок (аэрокосмический блок)
Код чека: mathworks.design.CheckAndUpdateOldMaskedBuiltinBlocks
Проверьте библиотеки, которые необходимо обновить для использования повышенных параметров.
Эта проверка выполняет поиск в библиотеках, созданных перед R2011b, маскированных блоков, которые необходимо обновить для использования повышенных параметров. С R2011b, если параметр блока не повышен, его значение в связанном блоке блокируется значением в блоке библиотеки. Эта проверка исключает блоки типа Subsystem, Model reference, S-Function и M-S-Function.
| Состояние | Рекомендуемое действие |
|---|---|
| Найдены библиотеки, которые необходимо обновить | Щелкните Обновить (Update). После обновления библиотек снова выполните проверку |
Вы можете:
Выполните эту проверку для моделей библиотек.
Исключите блоки и диаграммы из этой проверки, если у вас есть лицензия Simulink Check.
Код чека: mathworks.design.CheckMaskDisplayImageFormat
Проверка определяет маски с помощью команд отображения изображения с ненужными вызовами imread() функция.
Эта проверка выполняет поиск команд отображения маски, которые делают ненужные вызовы imread() и обновляет их с помощью команд отображения маски, которые не вызывают imread() функция. Начиная с 2013а, производительность и оптимизация памяти доступны для изображений маски, заданных с использованием пути изображения вместо тройной матрицы RGB.
| Состояние | Рекомендуемое действие |
|---|---|
Команды отображения маски, выполняющие ненужные вызовы imread() функции найдены. | Щелкните Обновить (Update). После обновления блоков снова выполните проверку. |
Вы можете:
Выполните эту проверку для моделей библиотек.
Исключите блоки и диаграммы из этой проверки, если у вас есть лицензия Simulink Check.
Код чека: mathworks.design.CheckMaskRunInitFlag
Проверка определяет, зависят ли команды рисования значка маски от рабочего пространства маски.
Эта проверка определяет, зависят ли команды рисования значка маски от рабочего пространства маски, и обновляет RunInitForIconRedraw соответственно собственности. Если зависимость рабочей области маски отсутствует, значение RunInitForIconRedraw имеет значение off, в то время как, если существует зависимость рабочей области маски, значения устанавливаются в on.
Установка значений RunInitForIconRedraw кому off при отсутствии зависимости рабочей области маски оптимизирует производительность, не выполняя код инициализации маски перед рисованием значка блока.
| Состояние | Рекомендуемое действие |
|---|---|
Будут найдены команды рисования маски, которые зависят или не зависят от рабочего пространства маски. | Щелкните Обновить (Update). После обновления блоков снова выполните проверку. |
Вы можете:
Выполните эту проверку для моделей библиотек.
Исключите блоки и диаграммы из этой проверки, если у вас есть лицензия Simulink Check.
Код чека: mathworks.design.CheckAndUpdateOldMaskTabnames
Эта проверка определяет маскированные блоки, которые задают вкладки в диалоговом окне маски с помощью MaskTabNames параметр.
Эта проверка идентифицирует маскированные блоки, которые используют MaskTabNames для программного создания вкладок в диалоговом окне маски. С момента R2013b элементы управления диалоговыми окнами используются для группирования параметров на вкладке диалогового окна маски.
| Состояние | Рекомендуемое действие |
|---|---|
Маскированные блоки, использующие MaskTabNames параметры для программного создания вкладок в диалоговом окне маски. | Щелкните Обновить доступно в разделе Действие. После обновления блоков снова выполните проверку. |
Эту проверку можно выполнить на моделях библиотек.
Код чека: 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 вызывает для вывода блока скомпилированный образец времени, помощник по обновлению отображает эти результаты. Рекомендуется изменить код, принимающий скомпилированное время выборки блока из многоскоростных блоков.
| Состояние | Рекомендуемое действие |
|---|---|
Нет вызовов файлов 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
Эта проверка используется для определения проблем в модели, возникающих при инициализации параметров или их настройке.
Эта проверка проверяет модель на наличие проблем инициализации и настройки параметров, таких как:
Несоответствие скорости между блоками
Разделить на ноль выпуск в условно выполненных подсистемах
Недопустимое значение порта управления в блоках вектора индекса
| Состояние | Рекомендуемое действие |
|---|---|
Модель имеет проблемы со ставками перехода. | Выберите Автоматически обрабатывать переход скорости для передачи данных на панели Решатель (Solver) параметров конфигурации модели. |
Модель имеет деление на ноль выпуска в условно выполненной подсистеме с управляющим портом. | В командной строке выполните команду set_param(control_port,'DisallowConstTsAndPrmTs', 'on') |
Модель имеет недопустимое значение порта управления в условно выполняемой подсистеме. | В командной строке выполните команду set_param(control_port,'DisallowConstTsAndPrmTs', 'on') |
Выберите Обновить модель, чтобы устранить проблемы в модели, связанные с инициализацией и настройкой параметров.
Код чека: mathworks.design.CheckVirtualBusAcrossModelReference
Проверьте сигналы виртуальной шины, пересекающие границы привязки модели.
Эта проверка идентифицирует блоки корневого уровня Inport и Outport в ссылочных моделях и блоках Model с выходами виртуальной шины, которые требуют обновления для изменения на сигналы невиртуальной шины.
Если проверка выявляет проблемы, щелкните Обновить модель (Update Model), чтобы преобразовать блоки ввода и вывода корневого уровня, настроенные для виртуальных шин, для использования невиртуальных шин в следующих ситуациях:
Для блоков ввода корневого уровня - включите параметр Output as nonvirtual bus и вставьте блок преобразования сигнала после блока Inport. Блок преобразования сигнала сконфигурирован для вывода виртуальной шины.
Для блоков Outport корневого уровня - включение вывода в качестве невиртуальной шины в параметре родительской модели.
Для блоков модели - для портов, блоки Outport которых были обновлены для устранения проблем, вставьте блок преобразования сигнала после соответствующих портов блока модели. Блок преобразования сигнала сконфигурирован для вывода виртуальной шины.
Чтобы устранить неполадки, щелкните Обновить модель (Upgrade Model).
Примечание
Выполните проверку иерархии модели Анализ (Analyze) и продолжите проверку последовательности обновления на модели верхнего уровня, а затем - вниз по иерархии ссылок на модель.
Если щелкнуть Обновить модель (Upgrade Model), соответствующие блоки корневого уровня Inport и Outport, настроенные для виртуальных шин, преобразуются для использования невиртуальных шин в моделях, в которых:
Использовать управление прототипом функции
Выполните генерацию кода C++ с помощью I/O arguments step method вариант.
Кроме того, можно изменить настройку функции генерации кода C++ на Default step method:
На панели «Параметры конфигурации» > «Создание кода» > «Интерфейс» щелкните «Настроить интерфейс класса C++».
В диалоговом окне задайте для параметра Спецификация функции значение Default step method.
использовать шины, имеющие сигналы переменного размера;
Использовать связанный класс хранения, отличный от автоматического, для блочных сигналов Outport
Преобразование для класса хранения, отличного от автоматического, выполняется только при наличии лицензии целевого поколения, необходимой модели. Например, для цели ERT требуется лицензия Embedded Coder.
Использовать модели Export-function, в которых блок Outport управляется невиртуальной шиной
Иметь блоки модели, которые ссылаются на модели, содержащие исправленные блоки исходящего порта - при нажатии кнопки Обновить модель обновляются блоки модели, ссылающиеся на модели, для которых блоки исходящего порта были зафиксированы иерархией модели, и продолжается проверка последовательности обновления.
Код чека: mathworks.design.DSPFrameUpgrade
Эта проверка определяет пользовательские библиотечные блоки в модели, которые зависят от состояния кадра сигнала.
Описание
Эта проверка выполняет поиск пользовательских блоков библиотеки в модели, которые зависят от состояния кадра сигнала. Проверка анализирует блоки, рекомендует исправления и дает причины для исправлений. Исправления должны выполняться вручную.
Результаты и рекомендуемые действия
| Состояние | Рекомендуемое действие |
|---|---|
При проверке обнаруживаются пользовательские библиотечные блоки, зависящие от состояния кадра сигнала. | Следуйте рекомендациям помощника по обновлению. |
Возможности и ограничения
Эту проверку можно выполнить только для пользовательских блоков библиотеки в модели.
Исправления должны выполняться вручную.
Эта проверка появляется только в том случае, если установлен системный Toolbox™ DSP.
См. также
Обработка на основе кадров (панель инструментов системы DSP)
Код чека: 'mathworks.design.CheckForSFcnUpgradeIssues'
Эта проверка модели используется для выявления проблем совместимости обновления S-функции. Эти проблемы могут включать использование 32-разрядных API, компиляцию с несовместимыми опциями или использование устаревших отдельных сложных API. Некоторые общие проблемы и информация, связанная с исправлениями, описаны в разделе результатов и рекомендаций ниже.
При обновлении S-функций для использования функций последней версии эта проверка сканирует модель для предупреждения о проблемах несовместимости обновления S-функций. Если результат этой проверки дает предупреждение или ошибку, исправьте свои S-функции C MEX в соответствии с описанием.
| Состояние | Рекомендуемое действие |
|---|---|
Пользовательские S-функции не поддерживаются. | Перекомпилируйте S-функцию с доступными совместимыми опциями. Дополнительные сведения см. в разделе Настраиваемый файл MEX, не поддерживаемый в текущей версии. |
S-функция не скомпилирована с последним API ( | Перекомпилировать с использованием последнего флага ( |
S-функция использует 32-битные функции. | Измените код в соответствии с инструкциями в 32-разрядной функции MEX File Calls A. |
S-функция использует устаревшие отдельные сложные API (mxGetPi, mxSetPi, mxGetImagData, mxSetImagData). | Используйте чередующиеся сложные API и перекомпилируйте код с последним флагом ( |
| S-функция использует устаревший API небезопасных данных типа (mxGetData, mxSetData). | Используйте API-интерфейсы для защиты данных и перекомпилируйте код. Для получения дополнительной информации см. раздел Вызовы файлов MEX нетипизированной функции доступа к данным. |
| S-функция компилируется с будущей версией и не поддерживается в текущей версии. | См. раздел Файл MEX Built In MATLAB Release Not Supported In Current Release для перекомпиляции файлов. |
Код чека: 'mathworks.design.CheckSystemObjectUpdate'
Эта проверка используется для идентификации и обновления любых пользовательских системных object™ MATLAB в модели, имеющих устаревший синтаксис.
Эта проверка сканирует модель, чтобы определить устаревший синтаксис системного объекта. Если проверка пройдена, весь синтаксис обновлен. Если проверка завершается неуспешно, можно обновить синтаксис.
| Состояние | Рекомендуемое действие |
|---|---|
Синтаксис системного объекта обновлен. | Ничего. |
Синтаксис системного объекта требует обновления. | Отчет создается для каждого уникального системного объекта, связанного с системным блоком MATLAB. Используйте команду «Обновить» для обновления синтаксиса. |
Код чека: mathworks.design.CheckRapidAcceleratorSignalLogging
При моделировании модели в режиме быстрого ускорения используйте эту проверку, чтобы найти в модели сигналы, которые глобально отключены. Режим быстрого ускорения поддерживает регистрацию сигналов. Эта проверка используется для глобального включения регистрации сигналов.
Эта проверка сканирует модель, чтобы проверить, находится ли моделирование в режиме быстрого ускорения и содержит ли модель сигналы с регистрацией сигналов. Если при проверке обнаружен экземпляр, а регистрация сигналов глобально отключена, появляется опция глобального включения регистрации сигналов.
| Состояние | Рекомендуемое действие |
|---|---|
Режим моделирования не является быстрым ускорителем. | Ничего. Можно включить регистрацию сигналов в режиме быстрого ускорения. |
Режим моделирования - быстрый ускоритель. Помощник по обновлению не обнаружил сигналы с включенным протоколированием сигналов. | Ничего. В модели не используется регистрация сигналов. Включите регистрацию сигналов и глобально, если требуется регистрировать сигналы. |
Режим моделирования - быстрый ускоритель. Помощник по обновлению обнаружил сигналы с включенным протоколированием сигналов. Однако глобальная настройка регистрации сигналов была отключена. | Если требуется регистрировать сигналы с включенным регистром сигналов, включите регистрацию сигналов глобально. |
Регистрация сигналов уже включена глобально. | Ничего. |
Выбор команды Изменить (Modify) позволяет регистрировать сигналы глобально в модели.
Код чека: mathworks.design.VirtualBusUsage
Проверьте входные сигналы шины для набора блоков.
Проверьте входные сигналы шины для набора блоков.
Начиная с R2015b, входы сигналов виртуальной шины в блоки, для которых требуется вход небучевой или невиртуальной шины, могут привести к ошибке. Примеры блоков, которые могут указывать объект шины в качестве типа выходных данных, включают блок Bus Creator и корневой блок Inport. Блоки, вызывающие ошибку при вводе виртуальной шины в этой ситуации:
Назначение
Задержка
Блок задержки вызывает ошибку только в том случае, если диалоговое окно «Параметры блока» используется для:
Задайте начальное условие, которое является структурой MATLAB или нулем.
Укажите значение для имени состояния.
Измерение перестановки
Измениться
Отборщик
Единичная задержка
Блок «Единичная задержка» вызывает ошибку только в том случае, если диалоговое окно «Параметры блока» используется для:
Задайте начальное условие, которое является структурой MATLAB или нулем.
Укажите значение для имени состояния.
Конкатенат вектора
| Состояние | Рекомендуемое действие |
|---|---|
Вход сигнала виртуальной шины в эти блоки:
| В помощнике по обновлению нажмите кнопку Изменить. Проверка вставляет блок Bus to Vector, чтобы попытаться преобразовать входные сигналы виртуальной шины в векторные сигналы. Для проблем, которые помощник по обновлению определяет, но не может устранить, измените модель вручную. Дополнительные сведения см. в разделе Определение автоматических преобразований шины. |
При нажатии кнопки «Изменить» блок Bus to Vector вставляется на входные порты блоков.
Для многих моделей запуск Upgrade Advisor изменяет модель таким образом, чтобы сигналы шины не рассматривались как векторы. Однако для некоторых моделей проблемы совместимости могут возникнуть даже после выполнения проверки. Измените модель вручную, чтобы устранить эти проблемы.
После компиляции модели с помощью Upgrade Advisor редактор Simulink Editor иногда указывает на необходимость сохранения модели (модель является грязной), даже если изменения не были внесены. Чтобы предотвратить повторение этой проблемы для этой модели, сохраните модель.
| Шаблон моделирования | Проблема | Решение |
|---|---|---|
Блок памяти хранилища данных с типом данных, равным | Блок памяти хранилища данных, связанные с которым блоки чтения хранилища данных или записи хранилища данных считывают или записывают данные сигнала шины, должен использовать объект шины. | В блоке памяти хранилища данных установите атрибут сигнала типа данных в значение |
Выходной параметр блока преобразования сигналов соответствует типу входной шины | Блок преобразования сигналов, для параметра Output которого установлено значение Блок преобразования сигнала, для параметра Output которого установлено значение | Чтобы создать копию входного сигнала, установите для параметра Output значение |
Блок объединения, коммутатора или многопортового коммутатора с несколькими входами шины | Блоки объединения, коммутатора или мультипортового коммутатора с несколькими входами шины требуют, чтобы эти входы имели одинаковые имена и иерархию. | Реконфигурируйте модель таким образом, чтобы входы шины имели одинаковые имена и иерархию. |
Блок корневого ввода, выводящий виртуальную шину и задающий значение для размеров порта | Корневой блок Inport, выводимый на виртуальную шину, должен наследовать размеры. | Установите атрибут сигнала «Inport block Port dimensions» в значение |
Блок мультиплексора с непровиртуальными входами шины | Блок мультиплексора не может принимать сигналы невиртуальной шины. | Чтобы рассматривать выходные данные как массив, замените блок Mux блоком Vector Concatenate. Если требуется выход виртуальной шины, используйте блок Bus Creator для объединения сигналов. |
Блок Bus to Vector без ввода сигнала виртуальной шины | Сигнал без шины не нуждается в блоке Bus to Vector. | Удалите блок Bus to Vector. |
Блок назначения с входами виртуальной шины | Помощник по обновлению преобразует блок назначения | Добавьте блок Bus to Vector перед блоком Assignment. |
S-функция, использующая невиртуальную шину | S-функция, которая не является S-функцией Level-2 C, не поддерживает сигналы невиртуальной шины. | Измените S-функцию на Level-2 C S-функцию. Рассмотрите возможность использования блока S-Function Builder для создания Level-2 C S-функции. |
Диаграмма потока состояний с параметризованным типом данных | В диаграмме Stateflow нельзя параметризовать тип данных ввода или вывода в терминах другого ввода или вывода, если тип данных является объектом шины. | Для параметризованного порта задайте для параметра «Тип данных» значение |
Подсистема с операциями с шинами в диаграмме потока состояний | Для блока Inport в подсистеме на диаграмме Stateflow требуется тип данных объекта шины, если его сигнал является шиной. | В блоке Inport установите тип данных в значение |
Наземный блок, используемый в качестве источника шины | Выходной сигнал наземного блока не может быть источником для шины. | Используйте блок Constant со значением Constant, равным 0, и атрибутом Output data type signal, равным |
Корневой выходной блок с одноэлементным типом данных объекта шины | Вход в блок Outport должен быть шиной, если в качестве типа данных указан объект шины. | В блоке Outport установите тип данных в значение |
Код чека: mathworks.design.CheckConstRootOutportWithInterfaceUpgrade
Эта проверка используется для определения корневых выходов с постоянным временем выборки, используемым для цели AUTOSAR, управления прототипом функции или интерфейса класса модели C++.
Корневые выходы с постоянным временем выборки не поддерживаются при использовании целевого объекта AUTOSAR, управления прототипом функции или интерфейса класса модели C++. Эта проверка используется для идентификации корневого исходящего блока с этим условием и изменения блоков в соответствии с рекомендациями.
| Состояние | Рекомендуемое действие |
|---|---|
Корневой выход с постоянным временем выборки, используемый с целевым объектом AUTOSAR, управлением прототипом функции или интерфейсом класса модели C++. | Рассмотрим один из следующих вариантов:
|
Код чека: com.mathworks.Simulink.UpgradeAdvisor.UpgradeModelHierarchy
Проверьте дочерние модели и проведите проверку обновления.
Эта проверка определяет дочерние модели этой модели и направляет вас через проверки обновления на выполнение как некомпилируемых, так и компилируемых проверок. Консультант предоставляет инструменты для решения следующих задач:
Если проверка находит дочерние модели, она предлагает запустить помощник по обновлению (Upgrade Advisor) для каждой дочерней модели по очереди и продолжить последовательность обновления. При наличии иерархии модели необходимо последовательно проверять и обновлять каждую дочернюю модель.
Если дочерние модели отсутствуют, необходимо продолжать последовательность проверок до тех пор, пока не будут выполнены некомпилирующие и компилирующие проверки.
Необходимо выполнить проверки обновления в следующем порядке: сначала проверки, которые не требуют информации о времени компиляции и не запускают схему обновления, а затем проверки компиляции.
Нажмите Продолжить последовательность обновления, чтобы выполнить следующие проверки. При наличии дочерних моделей откроется следующая модель. Продолжайте нажимать кнопку Continue Upgrade Sequence до тех пор, пока проверка не пройдет.
| Состояние | Рекомендуемое действие |
|---|---|
| Найдены дочерние модели | Нажмите Продолжить последовательность обновления, чтобы выполнить следующие проверки. При наличии дочерних моделей текущий сеанс помощника по обновлению будет закрыт, а для следующей модели в иерархии будет открыт помощник по обновлению. |
| Нет дочерних моделей, но больше проверок для выполнения | Если дочерних моделей нет, щелкните Продолжить последовательность обновления (Continue Upgrade Sequence), чтобы обновить помощник по обновлению с выбранными проверками компиляции. Проверки компиляции запускают схему обновления (помеченную ^). Выполните следующие проверки и выполните рекомендованные действия. При возврате к этой проверке нажмите Продолжить обновление до тех пор, пока эта проверка не пройдет. |
Рекомендуется проверять и обновлять каждую модель, начиная с конца листа и заканчивая корневой моделью.
Если щелкнуть Продолжить последовательность обновления (Continue Upgrade Sequence), помощник по обновлению (Upgrade Advisor) откроет конечную модель настолько далеко внутри иерархии, насколько это возможно. Последующие шаги помогут обновить иерархию с листа на корневую модель.
При открытии помощника по обновлению выбранные проверки не требуют компиляции информации о времени и не запускают схему обновления. Проверки, запускающие схему обновления, не выбраны для выполнения по умолчанию и помечены ^. При использовании помощника по обновлению в иерархии продолжайте нажимать кнопку Продолжить последовательность обновления (Continue Upgrade Sequence), чтобы перейти к следующей последовательности анализа:
Помощник по обновлению (Upgrade Advisor) открывает каждую модель и библиотеку по очереди, от листа до корня, и выбирает некомпилирующие проверки. Выполните проверки, выполните все рекомендованные действия, затем щелкните Продолжить последовательность обновления (Continue Upgrade Sequence), чтобы открыть следующую модель и продолжить.
При достижении корневого конца иерархии помощник по обновлению снова открывает каждую модель в том же порядке (но не библиотеки) и выбирает только те проверки, которые требуют компиляции модели. Выполните проверки, выполните все рекомендованные действия, а затем щелкните Продолжить (Continue) Обновить последовательность (Upgrade Sequence), чтобы открыть следующую модель. Продолжайте до тех пор, пока не будет достигнут конец иерархии и эта проверка не пройдет.
Код чека: mathworks.design.ConflictsForDataStoreReadWriters
Определение потенциальной чувствительности порядка выполнения при чтении и записи в хранилища данных.
Порядок выполнения блоков, считывающих и записывающих в одно и то же хранилище данных, может изменить результат моделирования. Когда блоки в одной иерархии получают доступ к одному и тому же хранилищу данных, порядок выполнения не является детерминированным.
| Состояние | Рекомендуемое действие |
|---|---|
Блок памяти хранилища данных, доступ к которому осуществляется несколькими блоками в одной иерархии. | Чтобы принудительно применить порядок выполнения для блоков, примите во внимание следующее:
|
Код чека: mathworks.design.TaskBasedSorting
Проверьте относительные изменения порядка выполнения для устаревших и основанных на задачах блоков чтения и записи хранилища данных.
Устаревшие модели использовали сортировку блоков для определения порядка выполнения блоков. При сортировке на основе задач может измениться относительный порядок выполнения, включающий блоки памяти хранилища данных. Эта проверка обнаруживает изменения и предоставляет возможность обновления модели с помощью исходного порядка выполнения.
| Состояние | Рекомендуемое действие |
|---|---|
| Порядок выполнения с блоком памяти хранилища данных изменяется. Требуется исходный заказ на выполнение. | Нажмите кнопку «Изменить». |
Код чека: mathworks.design.CaseSensitiveBlockDiagramNames
Определение и исправление ссылок на модели и библиотеки без учета регистра.
Начиная с R2020a, имена моделей и библиотек Simulink зависят от регистра. Эта проверка обнаруживает и предоставляет возможность фиксировать ссылки на модели и библиотеки без учета регистра.
| Состояние | Рекомендуемое действие |
|---|---|
| Проверка обнаруживает несовпадения вариантов в ссылках на модели и библиотеки. | Следуйте рекомендациям помощника по обновлению. |
Код чека: mathworks.design.rfblockset.ce.checkDisconnectedDividerBlocks
Выполните поиск в модели и перечислите блоки RF Blockset™ Divider, используя компонент Wilkinson power divider с разорванными портовыми соединениями на порту 3.
Начиная с R2021a, изменяются позиции портов блоков делителя RF Blockset с использованием компонента делителя мощности Уилкинсона. Эта проверка выполняет поиск и перечисляет блоки делителя с использованием модели компонента делителя мощности Уилкинсона с разорванными соединениями портов на порту 3 до R2021a. После этого можно выполнить повторное редактирование соединений с помощью кнопки «Изменить».
| Состояние | Рекомендуемое действие |
|---|---|
| Модели имеют блоки RF Blockset Divider, использующие компонент Wilkinson power divider с разорванными портовыми соединениями на порту 3. | Нажмите кнопку Modify (Изменить), чтобы изменить разорванные соединения на порте 3 блоков разделителя RF-блоков. |
При нажатии кнопки Modify нарушенные соединения портов на порту 3 блоков разделителя RF-блоков.
Примечание
Кнопка Modify попытается автоматически перемотать все разорванные соединения в порту 3 блоков Divider с помощью компонента Wilkinson power divider в модели. Для обеспечения точности необходимо выполнить следующие действия:
Проверьте сведения, перечисленные на панели «Результат» помощника по обновлению.
В первом списке перечислены блоки RF Blockset Divider с использованием компонента Wilkinson power divider, которые требуют ручной перемотки из-за сложности модели.
Во втором списке перечисляются автоматически перемотанные блоки.
Фиксированные и нефиксированные блоки разделителя временно выделяются зеленым и красным цветами соответственно. Щелкните ссылку «Удалить все временные подсвечивания блока» в нижней части панели «Результат», чтобы удалить подсвечивания.