exponenta event banner

Проверки инспектора кода Simulink

Обзор проверок инспектора кода Simulink

Используйте проверки Simulink ® Code Inspector™ Model Advisor для настройки модели для проверки кода. При наличии лицензии Simulink Check™ можно использовать проверку времени редактирования для выявления проблем совместимости в процессе разработки модели. Подмножество проверок Model Advisor поддерживает проверку времени редактирования. Однако проверка времени редактирования не помечает нарушения для всех ограничений поддерживаемых проверок Model Advisor. Он помечает некоторые определенные нарушения ограничений.

См. также

Проверить настройки создания кода

Код чека: mathworks.slci.CodeGenerationSettings

Проверьте параметры создания кода в конфигурации модели, которые могут повлиять на совместимость с Simulink Code Inspector.

Описание

Эта проверка проверяет, совместимы ли настройки создания кода с проверкой кода.

Доступно с инспектором кода Simulink.

Результаты и рекомендуемые действия

ПодпроверитьСостояниеРекомендуемое действие
Проверьте параметр «Использовать динамическое выделение памяти для инициализации модели» Модель настроена на динамическое выделение памяти.В диалоговом окне Параметры конфигурации снимите флажок Использовать динамическое выделение памяти для инициализации модели (Simulink Coder).
Проверьте параметр «Размещение общего кода»Модель не настроена на создание общего служебного кода в общем расположении. Если общий служебный код генерируется в model.cинспектор кода Simulink сообщает код как непроверенный.В диалоговом окне «Параметры конфигурации» на панели «Создание кода» > «Интерфейс» установите для параметра «Размещение общего кода» (Simulink Coder) значение Shared location. Использование общего расположения для служебных функций, макросов и определяемых пользователем типов данных способствует отладке и отслеживанию созданного кода.
Проверьте параметр «Исходный файл»Пользовательский код настраивается так, чтобы он отображался в верхней части созданного исходного файла модели.В диалоговом окне «Параметры конфигурации» на панели «Создание кода» > «Пользовательский код» снимите флажок «Исходный файл» (Simulink Coder).
Проверьте параметр «Header file»Пользовательский код настраивается так, чтобы он отображался в верхней части созданного файла заголовка модели.В диалоговом окне «Параметры конфигурации» на панели «Создание кода» > «Пользовательский код» снимите флажок «Header file (Simulink Coder)».
Проверьте параметр «» Инициализация функцииПользовательский код настраивается для отображения в созданной функции инициализации модели.В диалоговом окне «Параметры конфигурации» на панели «Создание кода» > «Пользовательский код» снимите флажок «Инициализация функции» (Simulink Coder).
Проверьте параметр «Завершить функцию»Пользовательский код настраивается для отображения в созданной функции завершения модели.В диалоговом окне «Параметры конфигурации» в меню «Создание кода» > «Пользовательский код» снимите флажок «Завершить функцию» (Simulink Coder).
Проверьте параметр «Отключить несовместимые оптимизации»Модель не настроена на отключение оптимизаций, несовместимых с инспектором кода Simulink.В окне команд MATLAB ® задайте параметр модели.AdvancedOptControl кому -SLCI. Например, set_param(gcs, 'AdvancedOptControl', '-SLCI').
Проверьте настройку «Комбинировать структуры сигналов/состояний»Модель сконфигурирована для объединения сигналов глобального блока и данных глобального состояния в одну структуру данных в сгенерированном коде. Это не поддерживается для проверки кода.В диалоговом окне Configuration Parameters снимите флажок Combine signal/state structures (Embedded Coder).
Проверьте параметр «» Макет массиваЭта модель настроена на создание кода в макете основной строки. Это не поддерживается для проверки кода.В диалоговом окне «Параметры конфигурации» задайте для параметра «Компоновка массива» (Simulink Coder) значение column-major.
Убедитесь, что параметр «Удалить код из преобразования с плавающей запятой в целое число, переносящее значения за пределы диапазона»Модель настроена так, чтобы не удалять код обтекания, который обрабатывает результаты преобразования с плавающей запятой в целое значение вне диапазона, когда происходит преобразование за пределы диапазона.В диалоговом окне «Параметры конфигурации» на панели «Создание кода» > «Оптимизация» выберите «Удалить преобразование кода с плавающей запятой в целое число, которое переносит значения вне диапазона (Simulink Coder)».
Убедитесь, что параметр «Удалить код из преобразования с плавающей запятой в целое с насыщением, отображающим NaN в ноль»Модель настроена на удаление кода, который обрабатывает результаты преобразования с плавающей запятой в целое для NaN значения при сопоставлении из NaN до целого нуля.В диалоговом окне Параметры конфигурации (Configuration Parameters) снимите флажок Удалить код из преобразования с плавающей запятой в целое с насыщением, отображающим параметр NaN в ноль (Simulink Coder).
Проверьте параметр «Включить комментарии»Модель настроена так, чтобы пропускать автоматически созданные комментарии из созданных файлов кода. Инспектор кода Simulink анализирует автоматически созданные комментарии для получения информации об отслеживании данных модели.В диалоговом окне «Параметры конфигурации» на панели «Создание кода» > «Комментарии» выберите «Включить комментарии» (Simulink Coder).
Проверьте параметр «Создать скалярный встроенный параметр как»Модель сконфигурирована для генерации скалярных встроенных параметров в виде переменных с #define макросы, а не числовые константы.В диалоговом окне «Параметры конфигурации» на панели «Создание кода» > «Идентификаторы» установите для параметра «Создать скалярный встроенный» значение (Встроенный кодер) значение Literals.
Проверьте параметр «Сохранить выражение условия в операторе if»Модель настроена на оптимизацию пустых выражений первичного условия в if путем их отрицания, а не сохранения пустых выражений первичного условия.В диалоговом окне Параметры конфигурации на панели Создание кода > Стиль кода выберите Сохранить выражение условия в операторе if (Embedded Coder).
Проверьте параметр «» Библиотека замены кодаБиблиотека замены кода, отличная от None выбирается для модели.В диалоговом окне «Параметры конфигурации» на панели «Создание кода» > «Интерфейс» установите для параметра «Библиотека замены кода» (Simulink Coder) значение None. Проверка не проходит, если не выбрать None. Однако при создании библиотеки с использованием поддерживаемых функций и операций в библиотеках замены кода инспектор кода Simulink проверяет созданный код.
Проверка параметра «Стандартная математическая библиотека»Стандартная математическая библиотека, отличная от C89/C90 (ANSI) или C99 (ISO) выбирается для модели.В диалоговом окне Параметры конфигурации (Configuration Parameters) задайте для опции Стандартная математическая библиотека (Simulink Coder) значение C89/C90 (ANSI) или C99 (ISO).
Проверьте параметр «Классический интерфейс вызова»Модель настроена, чтобы произвести образцовые вызовы функции, совместимые с главным модулем программы цели pre-R2011a GRT. Классический интерфейс вызова не поддерживается для проверки кода.В диалоговом окне Configuration Parameters снимите флажок Classic call interface (Simulink Coder).
Проверьте параметр «Требуется завершение функции»Модель сконфигурирована для генерации model_terminate функция, потенциально содержащая код завершения модели, который должен выполняться во время завершения работы системы. Это не поддерживается для проверки кода.В диалоговом окне Configuration Parameters снимите флажок Terminate function required (Embedded Coder).
Проверьте параметр «Удалить код, защищающий от исключений арифметических делений»Модель настроена на удаление кода, защищающего от деления на ноль для данных с фиксированной точкой.В диалоговом окне Параметры конфигурации на панели Создание кода (Code Generation) > Оптимизация (Optimization) снимите флажок Удалить код, защищающий от арифметических исключений разделения (Embedded Coder).
Проверьте параметр «» Ведение журнала файлов MATМодель сконфигурирована для регистрации данных выполнения в MAT-файле. Это не поддерживается для проверки кода.В диалоговом окне Configuration Parameters снимите флажок MAT-file logging (Simulink Coder).
Проверьте параметр «Упаковать логические данные в битовые поля»Модель сконфигурирована для хранения логических сигналов в виде однобитовых битовых полей.В диалоговом окне «Параметры конфигурации» на панели «Создание кода» > «Оптимизация» снимите флажок «Упаковать логические данные в битовые поля» (Embedded Coder).
Проверьте параметр «Использовать битсеты для сохранения конфигурации состояния»Модель настроена на уменьшение объема памяти, необходимого для хранения переменных конфигурации состояния.В диалоговом окне «Параметры конфигурации» на панели «Создание кода» > «Оптимизация» снимите флажок «Использовать битсеты для хранения конфигурации состояния» (Simulink Coder).
Проверьте настройку «» non-finite numbers «»Модель сконфигурирована для генерации данных, отличных от конечных (например, NaN и Inf) и связанные с этим операции. Это не поддерживается для проверки кода.В диалоговом окне «Параметры конфигурации» на панели «Создание кода» > «Интерфейс» снимите флажок «Поддержка: неграничные числа» (Simulink Coder).
Проверьте параметр «Абсолютное время»Модель сконфигурирована для создания и поддержания целочисленных счетчиков для абсолютных и истекших значений времени. Это не поддерживается для проверки кода.В диалоговом окне «Параметры конфигурации» на панели «Создание кода» > «Интерфейс» снимите флажок «Поддержка: абсолютное время» (встроенный кодер).
Проверьте параметр «Оператор для представления блоков Bitwise и Logical Operator»Модель сконфигурирована для генерации кода, который представляет побитовые операторы как логический оператор.В диалоговом окне «Параметры конфигурации» на панели «Создание кода» > «Интерфейс» установите для параметра «Оператор» значение Bitwise и Logical Operator block (Embedded Coder). Same as modeled или Bitwise operator.
Проверьте параметр «Поведение параметров по умолчанию»Ссылочная модель настроена на использование символьных имен для параметров модели в сгенерированном коде.В диалоговом окне «Параметры конфигурации» задайте для параметра «Поведение по умолчанию» (Simulink Coder) значение Inlined.
Проверьте параметр «Удалить поле состояния ошибки в структуре данных модели в реальном времени»Модель сконфигурирована для включения поля состояния ошибки в сгенерированный rtModel структура данных. rtModel структура данных не поддерживается для проверки кода.В диалоговом окне «Параметры конфигурации» на панели «Создание кода» > «Интерфейс» выберите «Удалить поле состояния ошибки» в структуре данных модели в реальном времени (Embedded Coder).
Проверьте параметр «Создать блок»Модель сконфигурирована для генерации блока SIL или PIL во время генерации кода. Это не поддерживается для проверки кода.В диалоговом окне «Параметры конфигурации» установите для параметра «Создать блок» (встроенный кодер) значение None.
Проверьте параметр «Время выполнения функции измерения»Модель сконфигурирована для генерации кода с инструментарием для сбора времени выполнения функций в сгенерированном коде. Это не поддерживается для проверки кода.В диалоговом окне «Параметры конфигурации» на панели «Создание кода» > «Проверка» снимите флажок «Время выполнения функции измерения» (встроенный кодер).
Проверьте параметр «Signal name» (именование сигналов)Модель сконфигурирована для изменения имен сигналов при создании соответствующих идентификаторов в сгенерированном коде.В диалоговом окне «Параметры конфигурации» на панели «Создание кода» > «Идентификаторы» установите для параметра «Имя сигнала» (встроенный кодер) значение None.
Проверьте параметр «Имя параметра»Модель настроена на изменение имен параметров при создании соответствующих идентификаторов в сгенерированном коде.В диалоговом окне «Параметры конфигурации» на панели «Создание кода» > «Идентификаторы» установите для параметра «Имя параметра» (встроенный кодер) значение None.
Проверьте настройку параметров TLCМодель конфигурируется с параметрами TLC.В окне команды MATLAB задайте параметр конфигурации модели. TLCOptions кому unspecified или -aMaxStackVariableSize=inf. Например, set_param(gcs, 'TLCOptions', ' ') или set_param(gcs, 'TLCOptions', '-aMaxStackVariableSize=inf').
Проверьте настройку «сигналы переменного размера»Модель сконфигурирована для генерации кода для моделей, использующих сигналы переменного размера.В диалоговом окне «Параметры конфигурации» на панели «Создание кода» снимите флажок «Поддержка сигналов переменного размера» (Embedded Coder).
Проверьте параметр «Single output/update function»Модель сконфигурирована для генерации кода в отдельном model_output и model_update функции, а не model_step функция, объединяющая эти два элемента.В диалоговом окне «Параметры конфигурации» выберите функцию Single output/update (Simulink Coder).
Проверьте настройку «Режимы литья»Модель настроена на создание кода, который явно выдает значения типов данных.В диалоговом окне «Параметры конфигурации» на панели «Создание кода» > «Стиль кода» установите для параметра «Режимы литья» (встроенный кодер) значение Nominal или Standards.
Проверьте параметр «Подавить создание вариантов по умолчанию для инструкций коммутатора Stateflow, если они недоступны»Модель настроена на создание вариантов по умолчанию для операторов switch-case в коде для диаграмм Stateflow ®.В диалоговом окне «Параметры конфигурации» на панели «Создание кода» > «Стиль кода» снимите флажок «Подавить создание вариантов по умолчанию для инструкций коммутатора Stateflow, если они недоступны (встроенный кодер)».
Проверьте параметр «Оптимизировать с использованием указанных минимального и максимального значений»Модель выполнена с возможностью оптимизации генерируемого кода с использованием информации диапазона, полученной из минимального и максимального заданных значений сигналов и параметров в модели.В диалоговом окне «Параметры конфигурации» на панели «Создание кода» > «Оптимизация» снимите флажок «Оптимизировать с использованием указанных минимального и максимального значений» (Embedded Coder).
Проверка настройки «parameters»

Модель сконфигурирована для генерации интерфейса C API к параметрам глобального блока.

В диалоговом окне «Параметры конфигурации» на панели «Создание кода» > «Интерфейс» снимите флажок «Генерировать C API для параметров» (Simulink Coder).
Проверить настройку «signals»

Модель сконфигурирована для генерации интерфейса C API для вывода глобальных блоков.

В диалоговом окне Configuration Parameters на панели Code Generation > Interface снимите флажок Generate C API for: signals (Simulink Coder).
Проверка настройки «состояния»

Модель сконфигурирована для генерации интерфейса C API для дискретных и непрерывных состояний.

В диалоговом окне «Параметры конфигурации» на панели «Создание кода» > «Интерфейс» снимите флажок «Генерировать C API для состояний» (Simulink Coder).
Проверьте настройку «root-level I/O»

Модель сконфигурирована для генерации интерфейса C API для входов и выходов корневого уровня.

В диалоговом окне «Параметры конфигурации» на панели «Создание кода» > «Интерфейс» снимите флажок «Generate C API for: root-level I/O (Simulink Coder)».
Проверьте настройку «Внешний режим»

Модель сконфигурирована для генерации кода для интерфейса данных внешнего режима.

В диалоговом окне «Параметры конфигурации» на панели «Создание кода» > «Интерфейс» снимите флажок «Внешний режим» (Simulink Coder).
Проверьте настройку «ASAP2 interface»

Модель настроена на создание кода для интерфейса ASAP2 данных.

В диалоговом окне «Параметры конфигурации» на панели «Создание кода» > «Интерфейс» снимите флажок «Интерфейс ASAP2» (Simulink Coder).
Проверьте параметр «Создать пример основной программы»Модель не настроена на создание примера основной программы.В диалоговом окне «Параметры конфигурации» на панели «Создание кода» > «Шаблоны» выберите «Создать пример основной программы (встроенный кодер)».
Проверьте параметр «Использовать битовые наборы для хранения логических данных»Модель настроена на использование битовых наборов для хранения булевых данных.В диалоговом окне «Параметры конфигурации» на панели «Создание кода» > «Оптимизация» снимите флажок «Использовать битовые наборы для хранения логических данных (Simulink Coder)».
Проверьте параметр «Упростить индексирование массива»Модель сконфигурирована для генерации кода, который заменяет операции умножения операциями добавления в индексах массива при доступе к массивам в цикле.В диалоговом окне «Параметры конфигурации» снимите флажок «Упростить индексирование массива» (Embedded Coder).
Проверьте параметр «Код блока преобразования скорости»Модель конфигурируется таким образом, чтобы отделять код блока перехода скорости и данные от кода модели и данных.В диалоговом окне «Параметры конфигурации» на панели «Создание кода» > «Размещение кода» установите для параметра «Код блока перехода скорости» (встроенный кодер) значение Inline.

См. также

Ограничения параметров конфигурации Simulink

Проверка параметров импорта/экспорта данных

Код чека: mathworks.slci.DataImportSettings

Проверьте параметры импорта/экспорта данных в конфигурации модели, которые могут повлиять на совместимость с Simulink Code Inspector.

Описание

Эта проверка проверяет совместимость параметров импорта/экспорта данных с проверкой кода.

Доступно с инспектором кода Simulink.

Результаты и рекомендуемые действия

ПодпроверитьСостояниеРекомендуемое действие
Проверьте параметр «Начальное состояние»Модель настроена на загрузку начальных состояний из рабочей области, которая несовместима с проверкой кода.В диалоговом окне Параметры конфигурации (Configuration Parameters) на панели Импорт/экспорт данных (Data Import/Export) снимите флажок Начальное состояние (Initial state).

См. также

Ограничения параметров конфигурации Simulink

Проверка параметров диагностики

Код чека: mathworks.slci.DiagnosticsSettings

Проверьте параметры диагностики в конфигурации модели, которые могут повлиять на совместимость с Simulink Code Inspector.

Описание

Эта проверка проверяет совместимость параметров диагностики с проверкой кода.

Доступно с инспектором кода Simulink.

Результаты и рекомендуемые действия

ПодпроверитьСостояниеРекомендуемое действие
Проверьте параметр «Многозадачное хранилище данных»Модель не настроена на создание ошибки, когда одна задача считывает данные из блока памяти хранилища данных, в который записывает данные другая задача.В диалоговом окне «Параметры конфигурации» на панели «Диагностика» > «Валидность данных» установите для параметра «Многозадачное хранилище данных» значение error.
Проверьте параметр «Многозадачный переход скорости»Модель не настроена на создание ошибки при неправильном переходе скорости между двумя блоками, работающими в многозадачном режиме.В диалоговом окне «Параметры конфигурации» на панели «Диагностика» > «Время выборки» установите для параметра «Многозадачный переход» значение error.
Проверьте настройку «Многозадачная условно выполненная подсистема»Модель не настроена на создание ошибки, когда программное обеспечение Simulink обнаруживает подсистему, которая может привести к повреждению данных или недетерминированному поведению.В диалоговом окне «Параметры конфигурации» на панели «Диагностика» > «Время образца» установите для подсистемы многозадачности условное выполнение в значение error.
Проверьте параметр «» Обнаружение недостаточно указанной инициализацииМодель не настроена на инициализацию начальных условий блока с использованием упрощенного поведения. Упрощенное поведение может улучшить согласованность результатов модели.В диалоговом окне Configuration Parameters (Параметры конфигурации) установите для параметра Underspecified initialization detection значение Simplified.
Проверка настройки «Сигналы без шины, обрабатываемые как сигналы шины»Модель не настроена на генерацию ошибки, когда программное обеспечение Simulink неявно преобразует сигнал, не связанный с шиной, в сигнал шины для поддержки подключения сигнала к блоку назначения шины или селектора шины.В диалоговом окне Configuration Parameters на панели Diagnostics > Connectivity установите значение Non-bus signals, обрабатываемые как сигналы шины, равным error.
Проверьте параметр «Detect downcast»Модель не настроена на создание ошибки, когда во время моделирования происходит понижение параметров.В диалоговом окне Параметры конфигурации (Configuration Parameters) на панели Диагностика (Diagnostics) > Валидность данных (Data Validity) установите значение Обнаружить нисходящий трафик (Detect downcast) error.
Проверьте параметр «Обнаружить переполнение»Модель не настроена на создание ошибки при переполнении параметра во время моделирования.В диалоговом окне «Параметры конфигурации» на панели «Диагностика» > «Валидность данных» > «Параметры» установите для параметра «Обнаружить переполнение» значение error.
Проверьте параметр «Обнаружить переполнение»Модель не настроена на генерацию ошибки при переполнении сигнала во время моделирования.В диалоговом окне «Параметры конфигурации» на панели «Диагностика» > «Валидность данных» > «Сигналы» установите для параметра «Перенос при переполнении» значение error.
Проверьте параметр «Насыщить при переполнении»Модель не сконфигурирована для генерации ошибки, когда значение сигнала слишком велико, чтобы быть представленным типом данных сигнала, что приводит к насыщению.В диалоговом окне «Параметры конфигурации» на панели «Диагностика» > «Валидность данных» > «Сигналы» установите для параметра «Насыщение при переполнении» значение error.
Проверьте параметр «» Обнаружить неполный потокМодель не настроена на создание ошибки, когда во время моделирования возникает неполный поток параметров.В диалоговом окне Параметры конфигурации (Configuration Parameters) на панели Диагностика (Diagnostics) > Валидность данных (Data Validity) установите для параметра Обнаружить неполный поток (Detect under error.
Проверьте параметр «Обнаружить потерю настраиваемости»Модель не настроена на создание ошибки, если выражение с настраиваемыми переменными сокращено до числового эквивалента.В диалоговом окне «Параметры конфигурации» на панели «Диагностика» > «Валидность данных» установите для параметра «Обнаружить потерю настраиваемости» значение error.
Проверьте параметр «Непредвиденное обратное отслеживание»

Модель не настроена на создание ошибки при соединении диаграмм:

  • Не имеет безусловного пути перехода к состоянию или оконечному соединению

  • Имеет несколько путей перехода, ведущих к нему

В диалоговом окне Параметры конфигурации (Configuration Parameters) на панели Диагностика (Diagnostics) > Поток состояния (Stateflow) установите для параметра Непредвиденное обратное отслеживание значение error.
Проверьте параметр «Недопустимый доступ к входным данным при инициализации диаграммы»

Модель не настроена на создание ошибки, если диаграмма:

  • Имеет ExecuteAtInitialization свойство имеет значение true

  • Доступ к входным данным о переходе по умолчанию или связанных действиях ввода состояния, которые выполняются при инициализации диаграммы

В диалоговом окне Configuration Parameters на панели Diagnostics > Stateflow установите для параметра Invalid input data access in chart initialization значение error.
Проверьте параметр «Нет безусловных переходов по умолчанию» Модель не настроена на создание ошибки, если диаграмма не имеет безусловного перехода по умолчанию в состояние или соединение.В диалоговом окне Параметры конфигурации (Configuration Parameters) на панели Диагностика (Diagnostics) > Поток состояния (Stateflow) задайте для параметра Нет безусловных переходов по умолчанию (No conqurentional default transitions) значение error.
Проверьте параметр «Переход вне естественного родительского объекта»Модель не настроена на создание ошибки, когда диаграмма содержит переход, который закольцовывается вне родительского состояния или соединения.В диалоговом окне Параметры конфигурации (Configuration Parameters) на панели Диагностика (Diagnostics) > Поток состояния (Stateflow) установите для параметра Переход вне естественного родительского объекта значение error.
Проверьте параметр «Недоступный путь выполнения»Модель не настроена на создание ошибки, если конструкция диаграммы находится в недопустимом пути выполнения.В диалоговом окне Параметры конфигурации (Configuration Parameters) на панели Диагностика (Diagnostics) > Поток состояния (Stateflow) задайте для параметра Недоступный путь выполнения значение error.
Проверьте параметр «Неназначенные широковещательные рассылки событий»Модель не настроена на создание ошибки, если диаграмма содержит неориентированные трансляции локальных событий.В диалоговом окне Параметры конфигурации (Configuration Parameters) на панели Диагностика (Diagnostics) > Поток состояний (Stateflow) задайте для параметра Непрямые широковещательные рассылки событий значение error.
Проверьте параметр «Действие перехода, указанное перед действием условия»Модель не настроена на создание ошибки при выполнении действия перехода перед действием условия в пути перехода с несколькими сегментами перехода.В диалоговом окне Параметры конфигурации (Configuration Parameters) на панели Диагностика (Diagnostics) > Поток состояния (Stateflow) задайте для параметра Действие перехода (Transition action), указанное перед действием условия, значение error.
Проверка сигнала шины, обрабатываемого как векторная установкаМодель не сконфигурирована для генерации ошибки, когда программное обеспечение Simulink обнаруживает сигнал виртуальной шины, который используется в качестве сигнала мультиплексора. Строгое поведение шины не применяется.В диалоговом окне Параметры конфигурации (Configuration Parameters) на панели Диагностика (Diagnostics) > Связность (Connectivity) установите для параметра Сигнал шины (Bus signal) значение error.
Проверьте параметры «Разрешить спецификацию символьных размеров»Модель настроена на разрешение спецификации символьных размеров.В диалоговом окне Параметр конфигурации (Configuration Parameter) снимите флажок Разрешить спецификацию символьных размеров (Allow symbolic dimension specification).

См. также

Ограничения параметров конфигурации Simulink

Проверка параметров реализации оборудования

Код чека: mathworks.slci.HardwareImplementationSettings

Проверьте параметры реализации оборудования в конфигурации модели, которые могут повлиять на совместимость с Simulink Code Inspector.

Описание

Эта проверка проверяет совместимость параметров реализации аппаратных средств с проверкой кода.

Доступно с инспектором кода Simulink.

Результаты и рекомендуемые действия

ПодпроверитьСостояниеРекомендуемое действие
Проверьте параметр charБитовая длина символьных данных для производственного оборудования не равна 8.В диалоговом окне Параметры конфигурации на панели Реализация оборудования выберите тип устройства производственного оборудования, совместимый с параметрами в этой таблице.
Проверьте параметр 'short'Битовая длина short данные для производственного оборудования не равны 16.
Проверьте параметр «» intБитовая длина int данные для производственного оборудования не равны 32.
Проверьте параметр 'long'Битовая длина long данные для производственного оборудования не равны 32.
Проверьте параметр 'float'Битовая длина данных с плавающей запятой для производственного оборудования не равна 32.
Проверьте параметр doubleБитовая длина double данные для производственного оборудования не равны 64.
Проверьте параметр «» указательБитовая длина данных указателя для производственного оборудования не равна 32.
Проверьте параметр «» nativeСобственный размер слова микропроцессора для производственного оборудования не равен 32 биты.
Убедитесь, что параметр 'Signed integer division rounds to' имеет значение 'Способ получения знака целочисленного частного для производственного оборудования заключается не в выборе целого числа, которое ближе к нулю (Zero метод).
Проверьте параметр «Shift right on a signed integer as arithmetic shift»Метод, с помощью которого компилятор реализует сдвиг справа от целого числа со знаком для производственного оборудования, не является арифметическим сдвигом справа.
Проверьте значение параметра «Support long long» (Долго поддерживать)Использование длинного типа данных C включено.В диалоговом окне Configuration Parameters на панели Hardware Implementation не выбирайте параметр Support long long.
Убедитесь, что параметр «Тестировать оборудование совпадает с параметром для производственного оборудования»Тестовое оборудование отличается от оборудования для развертывания.В диалоговом окне Configuration Parameters (Параметры конфигурации) выберите Test hardware (Проверить оборудование), которое совпадает с производственным оборудованием.
Проверьте параметр «Поставщик устройства - > Тип устройства»Поставщик устройства и тип устройства: ASIC/FPGA.

В диалоговом окне Configuration Parameters на панели Hardware Implementation в разделе Test hardware не выбирайте Device vendor ASIC/FPGA.

См. также

Ограничения параметров конфигурации Simulink

Проверка параметров математических типов и типов данных

Код чека: mathworks.slci.MathandDataTypesSettings

Проверьте параметры математики и типа данных в конфигурации модели, которые могут повлиять на совместимость с Simulink Code Inspector.

Описание

Эта проверка проверяет, совместимы ли параметры математики и типа данных с проверкой кода.

Доступно с инспектором кода Simulink.

Результаты и рекомендуемые действия

ПодпроверитьСостояниеРекомендуемое действие
Проверьте настройку «Реализовать логические сигналы как логические данные (в сравнении с двойными)»Модель сконфигурирована для реализации логических сигналов с помощью double тип данных, а не с более эффективным использованием памяти boolean тип данных.В диалоговом окне Configuration Parameters выберите Implement logic signals as Boolean data (Implement logic signals as Boolean data (impose vs double))

См. также

Ограничения параметров конфигурации Simulink

Проверка параметров решателя

Код чека: mathworks.slci.SolverSettings

Проверьте параметры решателя в конфигурации модели, которые могут повлиять на совместимость с Simulink Code Inspector.

Описание

Эта проверка проверяет, совместимы ли настройки решателя с проверкой кода.

Доступно с инспектором кода Simulink.

Результаты и рекомендуемые действия

ПодпроверитьСостояниеРекомендуемое действие
Проверьте параметр «Тип»Модель конфигурируется решателем с переменным шагом.В диалоговом окне «Параметры конфигурации» на панели «Решатель» задайте для параметра «Тип» значение Fixed-step.
Проверьте параметр «» РешательМодель конфигурируется с решателем, отличным от дискретного решателя с фиксированным шагом.В диалоговом окне «Параметры конфигурации» на панели «Решатель» задайте для параметра «Решатель» значение discrete (no continuous states) (эквивалентно FixedStepDiscrete указано в командной строке).
Проверьте настройку «Периодическое ограничение времени выборки»Модель устанавливает временное ограничение периодической выборки равным Specified.В диалоговом окне Параметры конфигурации (Configuration Parameters) на панели Решатель (Solver) установите для параметра Периодическое ограничение времени выборки значение Unconstrained или Ensure sample time independent.
Проверьте параметр «Автоматически обрабатывать переход скорости для передачи данных»Модель настроена на вставку скрытых блоков Rate Transition между блоками при обнаружении переходов скорости. В диалоговом окне Параметры конфигурации (Configuration Parameters) на панели Решатель (Solver) снимите флажок Автоматически обрабатывать переход скорости для передачи данных (Automatically handle rate transfer).
Проверьте параметр «Разрешить одновременное выполнение задач на конечном объекте»Параметр конфигурации модели Разрешить одновременное выполнение задач на цели (ConcurrentTasks) выбран. В диалоговом окне Параметры конфигурации (Configuration Parameters) на панели Решатель (Solver) снимите флажок Разрешить одновременное выполнение задач в целевом устройстве.

См. также

Ограничения параметров конфигурации Simulink

Проверка несвязанных объектов в модели

Код чека: mathworks.slci.UnconnectedObjects

Проверьте наличие неподключенных портов и линий в модели.

Описание

Эта проверка сообщает о несвязанных линиях, входных портах и выходных портах в модели или подсистеме.

Доступно с инспектором кода Simulink.

Результаты и рекомендуемые действия

ПодпроверитьСостояниеРекомендуемое действие
Проверка на наличие неподключенных объектовВ модели или подсистеме неправильно подключены одна или несколько линий, входных или выходных портов. Это может привести к появлению мертвого кода или скрытых блоков заземления.Подключите или удалите затронутые блоки.

См. также

Ограничения атрибутов на уровне модели

Проверить настройку целевого файла системы

Код чека: mathworks.slci.SystemTargetFileSettings

Проверьте наличие неподключенных портов и линий в модели.

Проверьте, выбран ли совместимый целевой системный файл для модели.

Описание

Эта проверка проверяет, что выбранный для модели системный целевой файл ert.tlc или является производным от ert.tlc.

Доступно с инспектором кода Simulink.

Результаты и рекомендуемые действия

ПодпроверитьСостояниеРекомендуемое действие
Проверка параметров целевого файла системыВыбранный для модели системный целевой файл не является ert.tlc или цель, полученная из ERT.В диалоговом окне «Параметры конфигурации» на панели «Создание кода» установите для параметра «Системный целевой файл» (Simulink Coder) значение ert.tlc или цель, полученная из ERT.

См. также

Ограничения параметров конфигурации Simulink

Проверка настройки спецификации функции

Код чека: mathworks.slci.FcnSpecSettings

Проверьте параметры спецификации функции, которые могут повлиять на совместимость с Simulink Code Inspector.

Описание

Эта проверка проверяет, совместимы ли настройки управления прототипом функции с проверкой кода.

Доступно с инспектором кода Simulink.

Результаты и рекомендуемые действия

ПодпроверитьСостояниеРекомендуемое действие
Проверка настройки интерфейса функции шага CМодель определяет пользовательские прототипы функций для функций ввода модели. Это не поддерживается для проверки кода.В ракурсе кода Simulink Editor в редакторе сопоставлений кодов перейдите на вкладку «Функции». В строке функции шага щелкните функцию в столбце Предварительный просмотр функции. В диалоговом окне Configure C Step Function Interface снимите флажок Configure arguments for Step function prototype.

См. также

Ограничения атрибутов на уровне модели

Проверка данных о машине Stateflow

Код чека: mathworks.slci.StateflowMachineData

Проверьте модель для данных Stateflow области компьютера. Данные объема машины несовместимы с инспектором кода Simulink

Описание

Эта проверка проверяет, что модель не содержит данных Stateflow области компьютера.

Доступно с инспектором кода Simulink.

Результаты и рекомендуемые действия

ПодпроверитьСостояниеРекомендуемое действие
Все данные Stateflow должны совпадать с диаграммой StateflowМодель содержит данные Stateflow области компьютера.Измените модель таким образом, чтобы она не содержала данные Stateflow области компьютера.

См. также

Спецификация данных (поток состояний)

Проверка событий системы Stateflow

Код чека: mathworks.slci.StateflowMachineEvents

Проверьте модель на наличие событий Stateflow объема машины. События области действия машины несовместимы с инспектором кода Simulink

Описание

Эта проверка проверяет, что модель не содержит событий Stateflow области компьютера.

Доступно с инспектором кода Simulink.

Результаты и рекомендуемые действия

ПодпроверитьСостояниеРекомендуемое действие
Все события Stateflow должны совпадать с диаграммой StateflowМодель содержит события Stateflow области действия машины.Измените модель так, чтобы она не содержала события Stateflow области компьютера.

См. также

События (Stateflow)

Проверить настройку выполнения условного входного ответвления

Код чека: mathworks.slci.ConditionallyExecuteInputs

Проверьте использование условного выполнения ветви ввода, которое может повлиять на совместимость с Simulink Code Inspector.

Описание

Эта проверка обновляет схему модели и сообщает о несовместимом использовании выполнения ветви условного ввода.

Доступно с инспектором кода Simulink.

Результаты и рекомендуемые действия

ПодпроверитьСостояниеРекомендуемое действие
Проверка настройки выполнения ветви условного вводаВыбран параметр конфигурации модели Conditional input branch execution, но не выбран параметр Enable local block outputs (Simulink Coder). Модель должна включать локальные блочные выходы при использовании выполнения ветви условного ввода.В диалоговом окне «Параметры конфигурации» на панели «Оптимизация» выберите «Включить вывод локального блока» (Simulink Coder).
Убедитесь, что выходы блоков многоразовых или неиспользуемых подсистем не являются входами в блоки мультипортовых коммутаторов, если выбран параметр конфигурации Модель выполнения условной входной ветвиПри выборе параметра конфигурации модели Conditional input branch execution в качестве входных данных для блока мультипортового коммутатора используется вывод блока повторно используемой или неиспользуемой подсистемы.Измените модель таким образом, чтобы выходы блока повторно используемой или неиспользуемой подсистемы не были входами в блок многопортового коммутатора.

См. также

Ограничения атрибутов на уровне модели

Проверка модели на наличие измеренных сигналов, которые подключаются к автоматически вставляемым блокам

Код чека: mathworks.slci.InstrumentedSignals

Проверьте наличие в модели измеренных сигналов, которые подключаются к автоматически вставляемым блокам.

Описание

Эта проверка проверяет, что модель не содержит инструментированных сигналов и подключается к автоматически вставляемым блокам. Автоматически вставляемые блоки называются скрытыми.

Результаты и рекомендуемые действия

ПодпроверитьСостояниеРекомендуемое действие
Проверка наличия в модели измеряемых сигналов, которые подключаются к автоматически вставляемым блокамМодель содержит инструментальные сигналы, которые подключаются к автоматически вставляемым блокам.Измените модель, удалив инструментальные сигналы, которые подключаются к автоматически вставляемым блокам.

См. также

Ограничения атрибутов на уровне модели

Проверка структуры папок генерации кода для модели

Код чека: mathworks.slci.CodeGenFolderStructure

Проверьте неподдерживаемую структуру папок генерации кода для модели.

Описание

Эта проверка проверяет, что в настройках Simulink для структуры папок генерации кода установлено значение Model Specific для модели.

Доступно с инспектором кода Simulink.

Результаты и рекомендуемые действия

ПодпроверитьСостояниеРекомендуемое действие
Проверка структуры папок генерации кода для моделиМодель имеет неподдерживаемую структуру папок генерации кода.В окне «Настройки Simulink» на панели «Общие» задайте для структуры папки создания кода значение Model Specific.

См. также

Ограничения атрибутов на уровне модели

Проверка неподдерживаемых параметров сопоставления кода

Код чека: mathworks.slci.CodeMappingDefaults

Проверьте неподдерживаемые параметры сопоставления кода.

Описание

Эта проверка проверяет, что Default класс хранения используется для каждой категории элементов модели на вкладке «Значения по умолчанию» редактора «Сопоставления кодов».

Результаты и рекомендуемые действия

ПодпроверитьСостояниеРекомендуемое действие
Проверка неподдерживаемых параметров сопоставления кодаВ категориях элементов модели используется неподдерживаемый параметр класса хранения на вкладке «Значения по умолчанию» редактора сопоставлений кодов.В редакторе сопоставлений кодов на вкладке «Значения по умолчанию» в разделе «Сопоставления кодов-C» установите класс хранения в значение Default для каждой категории элементов модели.

См. также

Ограничения атрибутов на уровне модели

Проверка аргументов модели для классов хранения

Код чека: mathworks.slci.StructureStorageClass

Проверьте наличие аргументов модели с классом хранения.

Описание

Эта проверка проверяет, что аргументы модели не имеют класса хранения.

Результаты и рекомендуемые действия

ПодпроверитьСостояниеРекомендуемое действие
Проверка аргументов модели для классов храненияАргумент модели имеет класс хранения.Измените модель таким образом, чтобы аргументы модели не имели классов хранения.

См. также

Ограничения атрибутов на уровне модели

Проверка использования кода в функциях MATLAB

Код чека: mathworks.slci.MATLABFunctionCodeUsage

Определите код в функциях MATLAB, который может повлиять на совместимость с Simulink Code Inspector.

Описание

Эта проверка обновляет схему модели и сообщает о несовместимости, обнаруженной с кодом в функциях MATLAB.

Доступно с инспектором кода Simulink.

Результаты и рекомендуемые действия

ПодпроверитьСостояниеРекомендуемое действие
Проверка неинлинированных пользовательских функций с глобальными переменными в коде MATLABИспользование неинлинированных пользовательских функций с глобальными переменными не поддерживается.
  • Измените код MATLAB таким образом, чтобы не встроенные пользовательские функции не имели глобальных переменных в подсистеме многократного использования или void-void.

  • Установка параметра модели Кодовая упаковка интерфейса (CodeInterfacePackagingКому Nonreusable function.

Проверьте, что неинлинированные пользовательские функции в коде MATLAB содержат только один вывод Неинкрементированные функции определяют несколько выходных данных.Измените код MATLAB таким образом, чтобы неинлинированные пользовательские функции определяли только один вывод.
Проверьте, использует ли подстрочный индекс массива в коде MATLAB постоянный индекс 1 для соответствующего измерения размера 1Индекс массива в коде MATLAB использует значение индекса, отличное от 1, для соответствующего измерения массива размера 1.Измените код MATLAB так, чтобы в подстрочном индексе массива использовался постоянный индекс 1 для соответствующего измерения размера 1.
Убедитесь, что индексирование массива в коде MATLAB использует нижний индекс, который меньше или равен базовому измерению массиваИндекс массива в коде MATLAB использует индекс, который больше базового измерения массиваИзмените код MATLAB так, чтобы при индексировании массива использовался нижний индекс, меньший или равный базовому измерению массива.
Проверка аргумента типа для приведения в функциях MATLABФункция MATLAB имеет неподдерживаемый аргумент типа в функциях приведения.

Измените функцию приведения на одну из следующих форм.

  • cast(A,'newclass')

  • cast(A,'like',p)

Убедитесь, что операторы двоеточия в коде MATLAB имеют не более 3 операндовcolon (:) оператор имеет более 3 операндов.

Измените код MATLAB таким образом, чтобы colon (:) операторы не имеют более 3 операндов.

Проверьте, что операторы двоеточия в коде MATLAB используют только целочисленные и двойные данныеcolon (:) оператор использует одиночные или символьные данные.

Измените код MATLAB таким образом, чтобы colon (:) операторы используют целочисленные или двойные данные.

Проверьте, что данные, используемые в функции MATLAB, имеют поддерживаемый тип данных.Данные, используемые в функции MATLAB, не относятся к типу: boolean, int8, int16, int32, uint8, uint16, uint32, single, double, или скалярная шина.Измените данные на поддерживаемый тип данных.
Проверьте, что диагональное число, используемое в функции diag в коде MATLAB, является постояннымdiag функция задает диагональное число, которое не является константой.Изменение diag для использования постоянного диагонального числа.
Проверьте, что код в функции MATLAB имеет поддерживаемое измерение
  • Идентификаторы, используемые в назначении, массиве, аргументах вызова функции и аргументах определения функции, имеют размерность больше 2-D.

  • Идентификаторами, используемыми в любом другом контексте, являются вектор, матрица или размерность больше 2-D.

Измените идентификаторы, чтобы они были поддерживаемым измерением.
Проверьте, что если операторы в коде MATLAB используют скалярные условияif оператор использует условие, которое не является скалярным.Измените код MATLAB таким образом, чтобы if операторы используют скалярные условия.
Проверка непустых скобок в коде MATLABКод MATLAB содержит пустые скобки.Измените код MATLAB, чтобы не было пустых скобок.
Убедитесь, что для операторов в коде MATLAB имеются диапазоны индексов, которые представляют собой одномоментные инкрементные двоеточияКод MATLAB содержит for операторы с диапазонами индексов, которые не являются одномерными инкрементными выражениями двоеточия.Измените код MATLAB таким образом, чтобы for операторы имеют диапазоны индексов, которые являются моноинкрементными выражениями двоеточия.
Убедитесь, что для операторов в коде MATLAB значения диапазона индекса являются целыми числами литерала constКод MATLAB содержит for операторы со значениями диапазона индекса, не являющимися целыми буквами const.Измените код MATLAB таким образом, чтобы for операторы имеют значения диапазона индекса, которые являются целыми буквами const.
Проверьте, имеют ли операторы в коде MATLAB значения скалярного индексаКод MATLAB содержит for операторы с нескалярными значениями индекса.Измените код MATLAB таким образом, чтобы for операторы имеют значения скалярного индекса.
Проверьте, что данные, определенные в функции MATLAB, имеют двойной или одиночный тип данных.Операнды оператора питания точек не относятся к типу одиночных или двойных.Измените данные на поддерживаемый тип данных «один» или «двойной».
Для корневой функции MATLAB не указывайте директиву coder.inline или устанавливайте для директивы coder.inline значение 'always'. Для определяемых пользователем функций MATLAB явно задайте для директивы coder.inline значение 'always' или 'never'Функция MATLAB не использует поддерживаемые coder.inline директива.

Изменение использования coder.inline директива.

Для корневых функций MATLAB, если coder.inline директива указана, она должна иметь значение always.

Для пользовательских функций MATLAB: coder.inline директива должна быть явно установлена в значение always или never.

Проверьте, что математические функции в коде MATLAB используют только целочисленные данные и данные с плавающей запятойМатематические функции в коде MATLAB используют данные логического типа.Измените код MATLAB так, чтобы математические функции использовали только целочисленные или двойные данные.
Проверьте, что ни один код в функциях MATLAB не содержит информации о типе данных.В функции MATLAB отсутствует информация о типе данных.

Измените функцию, чтобы исключить код с отсутствующей информацией о типе данных.

Примечание

Если код MATLAB не прошел эту проверку, это может произойти из-за недоступного кода. Исправить любое mlint предупреждение, связанное с недоступным кодом для устранения несовместимости.

Убедитесь, что в функциях MATLAB отсутствует информация об измеренииВ функции MATLAB отсутствует информация об измерении.

Измените функцию, чтобы исключить код с отсутствующей информацией об измерении.

Примечание

Если код MATLAB не прошел эту проверку, это может произойти из-за недоступного кода. Исправить любое mlint предупреждение, связанное с недоступным кодом для устранения несовместимости.

Проверьте, что все вызовы функций в коде MATLAB разрешены в известном определении функции.Функция MATLAB имеет вызов функции, который не соответствует известному определению функции.Измените функцию MATLAB, чтобы исключить вызовы функции с неизвестным разрешением функции.
Проверьте, что операторы, используемые в функции MATLAB, не имеют операндов со смешанным типом данных.Оператор в функции MATLAB имеет операнды со смешанным типом данных.Измените функцию, чтобы избежать использования операторов с операндами смешанного типа данных.
Проверьте, что при использовании матричных операций в коде MATLAB «Loop unrolling threshold» не приводит к частичному развертыванию цикла в сгенерированном коде.При использовании матричных операций пороговое значение разбиения на циклы может привести к частичному разматыванию циклов в сгенерированном коде.Измените порог разматывания цикла, чтобы создать код без частично разматываемых циклов для матричных операций.
Убедитесь, что условная инициализация постоянных переменных использует оператор if с одним условием isempty (постоянный) или ~ isempty (постоянный)Условная инициализация постоянной переменной не использует if оператор с одним isempty(persistent) или ~isempty(persistent) состояние.Изменение if для использования одной инструкции isempty(persistent) или ~isempty(persistent) состояние.
Проверьте наличие только одной инструкции инициализации постоянной переменной в теле инструкции «if»if тело инструкции содержит несколько инструкций инициализации для постоянной переменной.Измените код MATLAB таким образом, чтобы условная инициализация постоянных переменных содержала одну инструкцию в if тело инструкции.
Убедитесь, что операторы switch в коде MATLAB не содержат выражений регистра, содержащих массив ячеекswitch оператор имеет выражение case, содержащее массив ячеек.Измените код MATLAB таким образом, чтобы switch операторы не имеют выражений регистра, содержащих массив ячеек.
Проверьте, что операторы switch в коде MATLAB используют один и тот же скалярный целочисленный тип для всех условийswitch оператор не использует один и тот же скалярный целочисленный тип для условий switch и case.Измените код MATLAB таким образом, чтобы switch операторы имеют условия, использующие один и тот же скалярный целочисленный тип.
Проверьте, что операторы и функции в коде MATLAB поддерживают измерения операндов colon (:) функция или операция деления в коде MATLAB использует неподдерживаемые некалярийные операнды.Измените функцию, чтобы использовать скалярные операнды.
Проверка неподдерживаемого кода MATLAB в функциях MATLABФункция MATLAB содержит неподдерживаемый код MATLAB.Измените функцию, чтобы удалить использование неподдерживаемого кода MATLAB.
Проверка использования рекурсивных функций в коде MATLABКод MATLAB определяет рекурсивные функции.Измените код MATLAB так, чтобы он не определял рекурсивные функции.
Убедитесь, что coder.ceval в коде MATLAB не указывает параметр «» -globalИспользование coder.ceval задает -global вариант.Изменить coder.ceval для удаления -global вариант.
Убедитесь, что coder.ceval в коде MATLAB не указывает параметр layoutИспользование coder.ceval задает layout вариант.Изменить coder.ceval для удаления layout вариант.
Проверка использования выходных сигналов вызова функции в коде MATLABПодфункции в выводах вызова функции кодового вызова MATLAB.Измените код MATLAB таким образом, чтобы только функция верхнего уровня имела выходы вызова функции.
Проверка использования внутренних функций в коде MATLABКод MATLAB определяет внутренние функции.Измените код MATLAB так, чтобы он не определял внутренние функции.
Убедитесь, что файл coder.target в коде MATLAB содержит непустую цельИспользование coder.target содержит пустой целевой объект.Измените код MATLAB таким образом, чтобы coder.target функция задает непустой целевой объект.

См. также

Проверка сообщений анализатора кода MATLAB

Код чека: mathworks.slci.MATLABCodeAnalyzer

Проверьте функции MATLAB для %#codegen директива, сообщения анализатора кода MATLAB и идентификаторы сообщения обоснования.

Описание

Эта проверка сообщает о %#codegen директивы, сообщения анализатора кода MATLAB и идентификатор сообщения обоснования, найденные в функциях MATLAB и функциональных блоках MATLAB.

Доступно с инспектором кода Simulink.

Результаты и рекомендуемые действия

ПодпроверитьСостояниеРекомендуемое действие
Проверка кода MATLAB, используемого в функциональных блоках MATLABПроблемы в функциональном блоке MATLAB.
  • Реализация рекомендаций анализатора кода MATLAB.

  • Выравнивание строки кода с помощью %#ok комментарий.

  • Укажите выравнивание, добавив идентификатор сообщения к %#ok комментарий.

Проверка функций MATLAB, определенных в диаграммах потока состоянийПроблемы с функцией MATLAB, используемой в диаграммах Stateflow.
  • Реализация рекомендаций анализатора кода MATLAB.

  • Выравнивание строки кода с помощью %#ok комментарий.

  • Укажите выравнивание, добавив идентификатор сообщения к %#ok комментарий.

Проверка функций MATLABПроблемы в называемых функциях MATLAB.
  • Добавить %#codegen директива, если отсутствует.

  • Реализация рекомендаций анализатора кода MATLAB.

  • Выравнивание строки кода с помощью %#ok комментарий.

  • Укажите выравнивание, добавив идентификатор сообщения к %#ok комментарий.

См. также

Проверка неподдерживаемых блоков

Код чека: mathworks.slci.UnsupportedBlocks

Проверьте наличие блоков, которые не поддерживаются инспектором кода Simulink.

Описание

Эта проверка обновляет схему модели и сообщает о блоках, которые не поддерживаются инспектором кода Simulink.

Доступно с инспектором кода Simulink.

Результаты и рекомендуемые действия

ПодпроверитьСостояниеРекомендуемое действие
Проверка блоков, не поддерживаемых инспектором кода Simulink

Один или несколько блоков в модели не поддерживаются для проверки кода.

Примечание

Поддерживаемые блоки перечислены в разделе Поддерживаемые блоки - по категориям и поддерживаемые маскирующие блоки, а также могут быть просмотрены в slcilib библиотека блоков.

Возможные действия включают в себя:

  • Замените неподдерживаемый блок поддерживаемым.

  • Замените неподдерживаемый блок эквивалентной комбинацией поддерживаемых блоков.

  • Замените неподдерживаемый блок блоком S-Function, созданным с помощью устаревшего инструмента кода.

  • Если один или несколько неподдерживаемых блоков не могут быть удалены, используйте ссылочные модели для изоляции неподдерживаемых блоков и/или используйте рабочий процесс частичной проверки, который пропускает неподдерживаемые блоки.

Возможности и ограничения

Эту проверку можно выполнить на моделях библиотек.

Проверка времени редактирования

Эта проверка поддерживается проверкой времени редактирования.

См. также

Проверка класса хранения для переменных рабочей области

Код чека: mathworks.slci.WorkspaceVarUsage

Проверьте переменные рабочей области, на которые ссылается модель.

Описание

Эта проверка сообщает о переменных рабочей области, использующих неподдерживаемые классы хранения.

Доступно с инспектором кода Simulink.

Результаты и рекомендуемые действия

ПодпроверитьСостояниеРекомендуемое действие
Проверка класса хранения для переменных рабочей области, на которые ссылается модель

Переменные рабочей области, на которые ссылается модель, не поддерживаются по одной из следующих причин:

  • Тип настраиваемого класса хранения не установлен в Unstructured.

  • Настраиваемый класс хранения данных можно использовать повторно.

Примечание

В классах Simulink или module packaging tool (MPT), поставляемых с кодом MathWorks ®, проверка кода поддерживается для следующих классов хранения:

  • Global

  • Const

  • Volatile

  • ConstVolatile

  • Define

  • ImportedDefine

  • ExportTofile

  • GetSet

Измените модель так, чтобы модель не ссылалась на переменные рабочей области, или задайте для переменной рабочей области настраиваемый класс хранения Type значение Unstructured.

См. также

Ограничения атрибутов на уровне модели

Проверка времени образца в модели

Код чека: mathworks.slci.SampleTimesUsage

Проверьте образцы временных характеристик, которые могут повлиять на совместимость с Simulink Code Inspector.

Описание

Эта проверка обновляет схему модели и сообщает экземпляры переменной, непрерывной, объединенной, экспортированной дискретной или асинхронной выборки времени.

Доступно с инспектором кода Simulink.

Результаты и рекомендуемые действия

ПодпроверитьСостояниеРекомендуемое действие
Проверка времени образцаМодель использует непрерывное, асинхронное, явное дискретное разбиение, управляемое данными, объединение, экспортированное дискретное или переменное время выборки. Это не поддерживается для проверки кода.Измените модель, чтобы использовать поддерживаемое время образца.
Проверка явных разделовМодель содержит явные разделы.Измените модель таким образом, чтобы она не содержала явных разделов.

См. также

Ограничения атрибутов на уровне модели

Проверка наличия неподдерживаемых блоков преобразования сигналов, автоматически вставляемых в сигналы, входящие во входные порты блоков

Код чека: mathworks.slci.HiddenBufferBlock

Проверьте наличие скрытых блоков преобразования сигналов, которые могут повлиять на совместимость с Simulink Code Inspector.

Описание

Эта проверка обновляет схему модели и сообщает о скрытых блоках преобразования сигналов, которые были автоматически вставлены в сигналы, поступающие на входные порты блоков.

Доступно с инспектором кода Simulink.

Результаты и рекомендуемые действия

ПодпроверитьСостояниеРекомендуемое действие
Убедитесь, что неподдерживаемые блоки преобразования сигналов не вставляются автоматически в сигналы, входящие в блоки вводаСкрытый блок преобразования сигнала был автоматически вставлен в сигнал, поступающий на вход блока. Блоки преобразования скрытых сигналов не поддерживаются для проверки кода.Вручную вставьте блок преобразования сигнала в сигнал, поступающий на вход блока, и настройте блок преобразования сигнала для исключения из сокращения блока.

См. также

Ограничения атрибутов на уровне модели

Проверка использования контрольно-измерительных приборов с фиксированной точкой

Код чека: mathworks.slci.MinMaxLogging

Проверьте использование измерительных приборов с фиксированной точкой, которые могут повлиять на совместимость с Simulink Code Inspector.

Описание

Эта проверка обновляет схему модели и сообщает о несовместимости КИП с фиксированной точкой.

Доступно с инспектором кода Simulink.

Результаты и рекомендуемые действия

ПодпроверитьСостояниеРекомендуемое действие
Проверка использования контрольно-измерительных приборов с фиксированной точкойПараметр конфигурации модели Block reduction (Сокращение блока) (BlockReduction) и параметр фиксированной точки Fixed-point instrumentation mode (режим измерения фиксированной точки) (MinMaxOverflowLogging) имеет значение, отличное от Force off. Одновременное использование блочного редуцирования и контрольно-измерительных приборов с фиксированной точкой не поддерживается для проверки кода.Откройте инструмент «Фиксированная точка» и отключите инструментарий фиксированной точки для модели.

См. также

Ограничения атрибутов на уровне модели

Проверка использования синтезированных локальных хранилищ данных

Код чека: mathworks.slci.SynthLocalDSM

Проверьте наличие сигнальных объектов в рабочей области модели, на которые блоки чтения хранилища данных или записи хранилища данных ссылаются как на синтезированные локальные хранилища данных.

Описание

Эта проверка обновляет схему модели и проверяет использование синтезированного локального хранилища данных. Если в рабочем пространстве модели имеются сигнальные объекты, на которые блоки чтения хранилища данных или записи хранилища данных ссылаются как на синтезированные локальные хранилища данных, Simulink создает скрытый блок памяти хранилища данных на корневом уровне модели. Эта модель несовместима с проверкой кода.

Доступно с инспектором кода Simulink.

Результаты и рекомендуемые действия

ПодпроверитьСостояниеРекомендуемое действие
Проверка использования синтезированного локального хранилища данныхНа сигнальные объекты ссылаются как на синтезированные локальные хранилища данных блоками чтения хранилища данных или записи хранилища данных. Избегайте использования сигнальных объектов, на которые блок чтения хранилища данных или блок записи хранилища данных ссылается как на синтезированные локальные хранилища данных. В качестве возможной работы создайте графические блоки памяти хранилища данных для указания хранилищ данных.

См. также

Ограничения атрибутов на уровне модели

Проверка модели для скомпилированного и графического порядка сортировки блоков

Код чека: mathworks.slci.BlockSortedOrder

Проверка того, что скомпилированный список блоков модели соответствует графическому порядку сортировки.

Описание

Эта проверка обновляет схему модели и идентифицирует блоки в скомпилированном списке блоков модели, которые не соответствуют графическому порядку сортировки блоков.

Доступно с инспектором кода Simulink.

Результаты и рекомендуемые действия

ПодпроверитьСостояниеРекомендуемое действие
Проверка модели для скомпилированного и графического порядка сортировки блоков Блоки в скомпилированном списке блоков не следуют графическому порядку сортировки в модели.Обратитесь в службу технической поддержки MathWorks, чтобы сообщить об этой проблеме.

См. также

Ограничения атрибутов на уровне модели

Проверка настройки порога разгрузки шлейфа

Код чека: mathworks.slci.RollThreshold

Проверяет, что модель не имеет порога размотки цикла, что может привести к частичной размотке цикла в сгенерированном коде.

Описание

Эта проверка обновляет схему модели и проверяет, что модель не имеет порога разматывания цикла, что может привести к частичному разматыванию циклов в сгенерированном коде.

Доступно с инспектором кода Simulink.

Результаты и рекомендуемые действия

ПодпроверитьСостояниеРекомендуемое действие
Проверка настройки порога разгрузки шлейфаМодель сконфигурирована с порогом разматывания aLoop (Simulink Coder), что может привести к частичному разматыванию циклов в сгенерированном коде.В диалоговом окне Параметры конфигурации (Configuration Parameters) на панели Оптимизация (Optimization) задайте значение порога Размыкания цикла (Simulink Coder) в разделе Рекомендуемое действие (Recommended Action) окна Мастер модели (Model Advisor).

См. также

Ограничения атрибутов на уровне модели

Проверка использования глобальных хранилищ данных

Код чека: mathworks.slci.GlobalDSM

Проверяет, что глобальные блоки памяти хранилища данных используют встроенные параметры с неперестраиваемыми начальными значениями.

Описание

Эта проверка обновляет схему модели и проверяет использование глобального хранилища данных. Если модель имеет глобальные блоки хранилища данных с параметрами, которые не встроены или имеют настраиваемые начальные значения, это несовместимо с проверкой кода.

Доступно с инспектором кода Simulink.

Результаты и рекомендуемые действия

ПодпроверитьСостояниеРекомендуемое действие
Проверка использования глобального хранилища данныхПараметр конфигурации Поведение параметра по умолчанию (Simulink Coder) (DefaultParameterBehavior) не имеет значение Inlined.Задать поведение параметра по умолчанию (Simulink Coder) равным Inlined.
Начальное значение (InitialValue) не должен быть настраиваемым.Исправьте параметр Начальное значение.

См. также

Ограничения атрибутов на уровне модели

Проверка тени имен глобальных хранилищ данных

Код чека: mathworks.slci.GlobalDSMShadow

Проверяет, что глобальные блоки памяти хранилища данных не затенены локальными блоками памяти хранилища данных.

Описание

Эта проверка обновляет схему модели и проверяет тень имени глобального хранилища данных. Если имеется глобальный блок памяти хранилища данных, затененный локальным блоком памяти хранилища данных, он несовместим с проверкой кода.

Доступно с инспектором кода Simulink.

Результаты и рекомендуемые действия

ПодпроверитьСостояниеРекомендуемое действие
Проверка тени имени глобального хранилища данныхБлок памяти глобального хранилища данных затенен локальным блоком памяти хранилища данных.Удалите глобальные блоки памяти хранилища данных, затененные локальными блоками памяти хранилища данных.

См. также

Ограничения атрибутов на уровне модели

Проверка адресатов блоков If и Switchcase

Код чека: mathworks.slci.SeparateOutputAndUpdate

Проверьте использование блоков If и Switch Case, подключенных к подсистемам Action, что может повлиять на совместимость с Simulink Code Inspector.

Описание

Эта проверка обновляет схему модели и проверяет использование блоков If и Switch Case, подключенных к подсистемам Action.

Доступно с инспектором кода Simulink.

Результаты и рекомендуемые действия

ПодпроверитьСостояниеРекомендуемое действие
Проверка целевой подсистемы действий блоков If и Switchcase

Подсистемы действий, подключенные к одному и тому же блоку If или Switch Case, не выполняют одно из следующих действий:

  • Все они объединяют свои выходные данные и обновления кода.

  • Все они разделяют выходные данные и обновления кода.

Измените перечисленные подсистемы действий таким образом, чтобы все они объединяли свои выходные данные и обновления кода. Разместите блок преобразования сигнала на сигналах, выходящих из входов в подсистемах действия. Выберите параметр блока преобразования сигнала Исключить этот блок из оптимизации «Сокращение блока», чтобы исключить его из уменьшения блока.

См. также

Ограничения атрибутов на уровне модели

Проверка наличия корневых блоков Outport с классом хранения, отличным от auto

Код чека: mathworks.slci.PassReuseOutputArgsAs

Проверьте использование корневых блоков экспорта в ссылочной модели, что может повлиять на совместимость с Simulink Code Inspector.

Описание

Эта проверка обновляет схему модели и проверяет использование корневых блоков экспорта в ссылочных моделях.

Доступно с инспектором кода Simulink.

Результаты и рекомендуемые действия

ПодпроверитьСостояниеРекомендуемое действие
Убедитесь, что класс хранения корневых выходов поддерживаетсяПропускать многократно используемые выходы подсистемы как: не установлено в Structure reference если корневые исходы в ссылочных моделях имеют класс хранения, отличный от автоматического.Установите выходы повторно используемой подсистемы Pass как: для Structure reference.

См. также

Ограничения атрибутов на уровне модели

Проверка блоков терминатора, подключенных к выходам блоков привязки модели

Код чека: mathworks.slci.OutportTerminator

Проверьте использование блоков терминатора, подключенных к ссылочным блокам модели, что может повлиять на совместимость с Simulink Code Inspector.

Описание

Эта проверка обновляет схему модели и проверяет использование блоков терминатора, подключенных к ссылочным блокам модели.

Доступно с инспектором кода Simulink.

Результаты и рекомендуемые действия

ПодпроверитьСостояниеРекомендуемое действие
Проверка связности ссылочного блока моделиКаждый внешний порт ссылочного блока модели соединяется с блоком терминатора.Рассмотрите возможность комментирования ссылочного блока модели.

См. также

Ограничения атрибутов на уровне модели

Проверка неподдерживаемого распространения значений исходных условий

Код чека: mathworks.slci.FirstInitICPropagation

Проверьте, распространяется ли какой-либо блок на исходное состояние во время первой инициализации.

Описание

Эта проверка обновляет схему модели и проверяет, что блоки не распространяют начальное условие во время первой инициализации.

Доступно с инспектором кода Simulink.

Результаты и рекомендуемые действия

ПодпроверитьСостояниеРекомендуемое действие
Проверка неподдерживаемого распространения значений исходных условийБлок распространяет начальное условие во время первой инициализации.Измените модель таким образом, чтобы блок не распространял исходное условие во время первой инициализации.

См. также

Ограничения атрибутов на уровне модели

Проверка имен замены типа данных

Код чека: mathworks.slci.DataTypeReplacementName

Проверка использования модели Simulink.AliasType типы для имен замены.

Описание

Проверка кода поддерживается только для моделей, использующих Simulink.AliasType типы для имен замены.

Доступно с инспектором кода Simulink.

Результаты и рекомендуемые действия

ПодпроверитьСостояниеРекомендуемое действие
Определение имен замены, не относящихся к типу Simulink.AliasTypeВ таблице Замена типа данных (Data Type Replacement) модель использует имена замены, не относящиеся к типу Simulink.AliasType.В диалоговом окне «Параметры конфигурации» на панели «Создание кода > Замена типа данных» задайте для имени замены значение Simulink.AliasType тип.

См. также

Проверка нескольких примеров времени в модели, используемой в качестве цели привязки модели

Код чека: mathworks.slci.RefModelMultirate

Описание

Эта проверка обновляет схему модели и проверяет, что модели, используемые в качестве целей привязки модели, не имеют нескольких образцов времени.

Доступно с инспектором кода Simulink.

Результаты и рекомендуемые действия

ПодпроверитьСостояниеРекомендуемое действие
Проверка времени образца в модели, используемой в качестве цели привязки моделиМодель, используемая в качестве цели привязки модели, имеет несколько образцов времени.Измените модель так, чтобы она имела один образец времени.

См. также

Проверьте класс хранения GetSet для переменных рабочей области

Код чека: mathworks.slci.GetSetVarUsage

Описание

Эта проверка обновляет схему модели и определяет переменные рабочей области класса хранения GetSet, использующие неподдерживаемые спецификации.

Доступно с инспектором кода Simulink.

Результаты и рекомендуемые действия

ПодпроверитьСостояниеРекомендуемое действие
Проверка класса хранения для переменных рабочей области, на которые ссылается модель

Для переменной рабочей области, которая использует GetSet пользовательский класс хранения:

  • В пользовательском классе хранения не определен файл заголовка.

  • Пользовательский тип данных класса хранения - bus или struct.

Изменить GetSet переменные рабочей области класса хранения для использования поддерживаемой спецификации класса хранения.

См. также

Установите флажок Рассматривать каждую дискретную скорость как отдельную настройку задачи

Код чека: mathworks.slci.EnableMultiTasking

Описание

Эта проверка обновляет схему модели и проверяет, что параметр Рассматривать каждую дискретную скорость как отдельную задачу выбран для модели с несколькими дискретными скоростями.

Доступно с инспектором кода Simulink.

Результаты и рекомендуемые действия

ПодпроверитьСостояниеРекомендуемое действие
Проверьте настройку «Рассматривать каждую дискретную скорость как отдельную задачу»Многоскоростная модель настроена для выполнения одной задачи.В диалоговом окне Параметры конфигурации (Configuration Parameters) на панели Решатель (Solver) выберите Рассматривать каждую дискретную скорость как отдельную задачу.

См. также

Ограничения параметров конфигурации Simulink

Проверка модели для блоков с комментариями

Код чека: mathworks.slci.CommentedBlocks

Описание

Эта проверка обновляет схему модели и проверяет, что модель не содержит блоков с комментариями.

Доступно с инспектором кода Simulink.

Результаты и рекомендуемые действия

ПодпроверитьСостояниеРекомендуемое действие
Проверка наличия в модели блоков с комментариямиМодель содержит блок, который комментируется. Измените модель, удалив блоки с комментариями.

См. также

Проверка модели для void_void подсистем, использующих одно и то же имя функции

Код чека: mathworks.slci.VVSubSystemName

Описание

Эта проверка обновляет схему модели и проверяет, что неинлинированные подсистемы с интерфейсами вызова функции void-void используют уникальные имена функций.

Доступно с инспектором кода Simulink.

Результаты и рекомендуемые действия

ПодпроверитьСостояниеРекомендуемое действие
Проверка имен функций, используемых подсистемами void_void в моделиМодель содержит void_void подсистемы, использующие одно и то же имя функции.

Измените void_void подсистемы в модели, чтобы использовать уникальные имена функций.

См. также

Ограничения атрибутов на уровне модели

Проверьте n-D блоки таблицы подстановки на наличие несовместимого типа данных точки останова

Код чека: mathworks.slci.LookupndBreakpointsDataType

Описание

Эта проверка обновляет схему модели и проверяет, что тип данных точки останова и тип входных данных блока n-D Lookup Table совпадают.

Доступно с инспектором кода Simulink.

Результаты и рекомендуемые действия

ПодпроверитьСостояниеРекомендуемое действие
Проверьте n-D блоки таблицы подстановки на наличие несовместимого типа данных точки остановаТочки останова > Тип данных не использует тот же тип данных, что и вход блока.Измените типы данных для сопоставления. Или установите для параметра Точки останова > Тип данных значение Inherit: Same as corresponding input.

Проверка модели для повторно используемых подсистем, использующих одни и те же функциональные интерфейсы

Код чека: mathworks.slci.ReuseSubSystemLibrary

Описание

Эта проверка обновляет схему модели и проверяет, что повторно используемые подсистемы с одним и тем же функциональным интерфейсом находятся в одних и тех же блоках библиотеки.

Доступно с инспектором кода Simulink.

Результаты и рекомендуемые действия

ПодпроверитьСостояниеРекомендуемое действие
Проверка модели для повторно используемых подсистем с теми же функциональными интерфейсами

Существуют многоразовые подсистемы с одним и тем же функциональным интерфейсом, но из разных библиотечных блоков.

Измените модель таким образом, чтобы повторно используемые подсистемы с одним функциональным интерфейсом происходили из одних и тех же библиотечных блоков.

Проверка использования общих синтезированных локальных хранилищ данных

Код чека: mathworks.slci.SharedSynthLocalDSM

Описание

Эта проверка обновляет схему модели и проверяет отсутствие неподдерживаемого использования общих модулей памяти синтезированного локального хранилища данных.

Доступно с инспектором кода Simulink.

Результаты и рекомендуемые действия

ПодпроверитьСостояниеРекомендуемое действие
Проверка использования общих синтезированных локальных хранилищ данных

В рабочей области модели имеются сигнальные объекты, на которые блоки чтения хранилища данных или записи хранилища данных в этой модели ссылаются как на синтезированные локальные хранилища данных.

Избегайте использования в рабочем пространстве модели сигнальных объектов, на которые блоки чтения хранилища данных или записи хранилища данных ссылаются как на синтезированные локальные хранилища данных. Попробуйте создать графические блоки памяти хранилища данных, чтобы указать эти хранилища данных.

Проверка использования блоков источников

Код чека: mathworks.slci.SourcesBlocksUsage

Проверьте использование блоков Sources, которые могут повлиять на совместимость с Simulink Code Inspector.

Описание

Эта проверка обновляет схему модели и сообщает о несовместимости, обнаруженной в блоках источников.

Доступно с инспектором кода Simulink.

Результаты и рекомендуемые действия

ПодпроверитьСостояниеРекомендуемое действие

Проверка блоков ввода

Примечание

При этом будут проверены теневые входные данные, если они имеются в модели.

Блок не может задавать сигналы переменного размера. Параметр блока Сигнал переменного размера (VarSizeSig) имеет значение Yes.Установить сигнал переменного размера в значение No.
Тип сигнала параметра блока (SignalType) имеет значение complex.Установить тип сигнала в real или auto.
Режим выборки параметров блока (SamplingMode) имеет значение Frame based.Установить тип сигнала в Sample based или auto.
Для корневых блоков ввода, использующих объект шины, параметр блока Output as nonvirtual bus (Вывод в качестве невиртуальной шины) (BusOutputAsStruct) не выбран (значение off).Для каждого экземпляра выберите Вывод (Output) в качестве невиртуальной шины.
Корневой вход в ссылочной модели не подключается к невиртуальному блоку.Подключение корневых входов в ссылочных моделях по крайней мере к одному невиртуальному блоку.
Для входов в срабатывающих подсистемах, вход защелки путем задержки внешнего сигнала (LatchByDelayingOutsideSignal) (установить в значение on).Очистить вход фиксатора путем задержки внешнего сигнала. Чтобы сохранить поведение фиксации, реструктурируйте модель, поместив блок единичной задержки перед входным блоком на родительской диаграмме.
Inport является блоком In Bus Element.Вместо блока In Bus Element используйте блок Inport с блоком Bus Selector.

Нарушение ограничения, применяемого ко всем блокам.

Исправьте указанный вход или выход блока.
Проверка постоянных блоковПараметр блока Постоянное значение (Value) пуст, не является конечным, использует выбор диапазона или индексирование переменных по элементам структур MATLAB, сложен или имеет два или более измерения.Исправьте параметр Константа (Constant).

Нарушение ограничения, применяемого ко всем блокам.

Исправьте указанный вход или выход блока.
Проверка блоков заземленияБлочный порт имеет массивы шин или шин с элементами, являющимися массивами шин.Закрепите указанный порт блока таким образом, чтобы в блоке не использовались массивы шин или шины с элементами, являющимися массивами шин.

Нарушение ограничения, применяемого ко всем блокам.

Исправьте указанный вход или выход блока.

См. также

Проверка использования блоков маршрутизации сигналов

Код чека: mathworks.slci.SignalRoutingBlocksUsage

Проверьте использование блоков маршрутизации сигналов, которые могут повлиять на совместимость с инспектором кода Simulink.

Описание

Эта проверка обновляет схему модели и сообщает о несовместимости, обнаруженной в блоках маршрутизации сигналов.

Доступно с инспектором кода Simulink.

Результаты и рекомендуемые действия

ПодпроверитьСостояниеРекомендуемое действие
Проверка блоков Bus CreatorНазвания сигналов в блоке Bus Creator (Inputs) не совпадают с именами входных сигналов блока (InputSignalNames).Изменение указанного блока Bus Creator для обеспечения соответствия Inputs и InputSignalNames.

Нарушение ограничения, применяемого ко всем блокам.

Исправьте указанный вход или выход блока.
Проверить блоки селектора шины

Нарушение ограничения, применяемого ко всем блокам.

Исправьте указанный вход или выход блока.
Проверка блоков назначения шины

Нарушение ограничения, применяемого ко всем блокам.

Исправьте указанный вход или выход блока.
Проверка блоков памяти хранилища данныхПараметр блока Начальное значение (InitialValue) пуст, не является конечным, использует выбор диапазона или индексирование переменных на элементах структур MATLAB, сложен или имеет два или более измерения.Исправьте параметр Начальное значение.
Параметр блока Тип сигнала (SignalType) имеет значение complex. Комплексные значения не поддерживаются для проверки кода. Проверка времени редактирования помечает это условие.Установить тип сигнала в auto или real.
Параметр Block Detect Write After Write имеет значение warning или none. Проверка времени редактирования помечает это условие.Установите параметр блока «Обнаружить запись после записи» в error.

Память хранилища данных имеет массивы шин или шин с элементами, которые являются массивами шин.

Исправьте указанный блок памяти хранилища данных.

Нарушение ограничения, применяемого ко всем блокам.

Исправьте указанный блок памяти хранилища данных.
Проверка блоков чтения хранилища данныхБлок выполняет прерывистый выбор массивов хранилищ данных.Измените выделенный фрагмент на поддерживаемую форму.
Блок использует подстрочные индексы со скобками для выбора массивов хранилищ данных.Измените выбор массива хранилища данных в блоках чтения хранилища данных, чтобы не использовать индексы со скобками.
Блочный порт имеет массивы шин или шин с элементами, являющимися массивами шин.Закрепите указанный порт блока таким образом, чтобы в блоке не использовались массивы шин или шины с элементами, являющимися массивами шин.

Нарушение ограничения, применяемого ко всем блокам.

Исправьте указанный вход или выход блока.
Проверка блоков записи хранилища данныхБлок выполняет прерывистый выбор массивов хранилищ данных.Измените выделенный фрагмент на поддерживаемую форму.
Блок использует подстрочные индексы со скобками для выбора массивов хранилищ данных.Измените выбор массива хранилища данных в блоках записи хранилища данных, чтобы не использовать индексы со скобками.
Блочный порт имеет массивы шин или шин с элементами, являющимися массивами шин.Закрепите указанный порт блока таким образом, чтобы в блоке не использовались массивы шин или шины с элементами, являющимися массивами шин.

Нарушение ограничения, применяемого ко всем блокам.

Исправьте указанный вход или выход блока.
Проверить из блоковБлочный порт имеет массивы шин или шин с элементами, являющимися массивами шин.Закрепите указанный порт блока таким образом, чтобы в блоке не использовались массивы шин или шины с элементами, являющимися массивами шин.

Нарушение ограничения, применяемого ко всем блокам.

Исправьте указанный вход или выход блока.
Проверка блоков переходаБлочный порт имеет массивы шин или шин с элементами, являющимися массивами шин.Закрепите указанный порт блока таким образом, чтобы в блоке не использовались массивы шин или шины с элементами, являющимися массивами шин.

Нарушение ограничения, применяемого ко всем блокам.

Исправьте указанный вход или выход блока.
Проверка блоков объединенияРазрешить неравную ширину порта (AllowUnequalInputPortWidths) выбран. Проверка времени редактирования помечает это условие.Снимите флажок Разрешить неравную ширину порта.
Смещения входных портов имеют неподдерживаемое значение. Проверка времени редактирования помечает это условие.Установить смещения входного порта в [].
Источник для блока не должен быть включенной подсистемой или подсистемой действия или являться блоком с InitialConditions функция.Измените модель таким образом, чтобы источники блоков объединения были включены, или подсистемами действий, или блоками без InitialConditions функции.

Нарушение ограничения, применяемого ко всем блокам.

Исправьте указанный вход или выход блока.
Проверить блоки переключателейПервый и третий входные порты и выходной порт не имеют одинакового типа данных.Измените порты данных таким образом, чтобы они имели один и тот же тип данных. Рекомендуется выбрать параметр block Требовать, чтобы все входы портов данных имели один и тот же тип данных.
Параметр блока Режим округления целых чисел (RndMeth) имеет неподдерживаемое значение. Проверка времени редактирования помечает это условие.Установить режим округления целых чисел в Zero или Floor.
Параметр Block Разрешить различные размеры ввода данных (AllowDiffInputSizes) выбран. Проверка времени редактирования помечает это условие.Снимите флажок Разрешить разные размеры ввода данных.
Поведение параметров по умолчанию (DefaultParameterBehavior) имеет значение Inlined и источник Inport 2 является постоянным.Измените модель таким образом, чтобы источник входных данных 2 не был постоянным.

Нарушение ограничения, применяемого ко всем блокам.

Исправьте указанный вход или выход блока.
Проверка блоков мультипортового коммутатораПорты ввода и вывода данных имеют разные типы данных.Измените порты данных таким образом, чтобы они имели один и тот же тип данных. Рекомендуется выбрать параметр block Требовать, чтобы все входы портов данных имели один и тот же тип данных.
Указаны индексы портов данных, а входные данные имеют более одного значения.Измените конфигурацию порта данных таким образом, чтобы на вход указывалось только одно значение.
Сигнал порта данных является несмежным.Измените сигнал порта данных таким образом, чтобы он был непрерывным.
Сигнал порта данных соединен с блоком, который выбирает или переупорядочивает входные сигналы.Измените сигнал порта данных так, чтобы он не был подключен к блоку, который выбирает или переупорядочивает входные сигналы. Рекомендуется вставить блок преобразования сигнала в несмежный порт данных.
Параметр блока Режим округления целых чисел (RndMeth) имеет неподдерживаемое значение.Установить режим округления целых чисел в Zero или Floor.
Параметр Block Разрешить различные размеры ввода данных (AllowDiffInputSizes) выбран.Снимите флажок Разрешить разные размеры ввода данных.
Поведение параметров по умолчанию (DefaultParameterBehavior) имеет значение Inlined и источник Inport 1 является постоянным.Измените модель таким образом, чтобы источник ввода 1 не был постоянным.

Нарушение ограничения, применяемого ко всем блокам.

Исправьте указанный вход или выход блока.
Проверка блоков мультиплексораБлочный порт имеет массивы шин или шин с элементами, являющимися массивами шин.Закрепите указанный порт блока таким образом, чтобы в блоке не использовались массивы шин или шины с элементами, являющимися массивами шин.

Нарушение ограничения, применяемого ко всем блокам.

Исправьте указанный вход или выход блока.
Проверка блоков DemuxБлочный порт имеет массивы шин или шин с элементами, являющимися массивами шин.Закрепите указанный порт блока таким образом, чтобы в блоке не использовались массивы шин или шины с элементами, являющимися массивами шин.

Нарушение ограничения, применяемого ко всем блокам.

Исправьте указанный вход или выход блока.
Проверить блоки селектораПорт индекса не является поддерживаемым типом данных.Изменение порта индекса таким образом, чтобы он имел тип данных int8, int16, int32, uint8, uint16, или uint32.
Параметр индекса (IndexOptionArray) имеет значение Starting and ending indices (port)Задайте для параметра Index значение, отличное от Starting and ending indices (port).
Количество входных размеров (NumberOfDimensions) больше, чем 1 и данные порта индекса соединены с блоком, который выбирает или переупорядочивает вход.Рекомендуется вставить блок преобразования сигнала в порт индекса или изменить данные порта индекса на смежные.

Нарушение ограничения, применяемого ко всем блокам.

Исправьте указанный вход или выход блока.
Проверка блоков конкатенации векторов

Нарушение ограничения, применяемого ко всем блокам.

Исправьте указанный вход или выход блока.

Проверка времени редактирования

Эта проверка поддерживается проверкой времени редактирования. Однако проверка времени редактирования не помечает нарушения всех ограничений этой проверки. В предыдущей таблице явным образом упоминаются условия нарушения ограничения, которые являются флагами проверки времени редактирования.

См. также

Проверка использования блоков математических операций

Код чека: mathworks.slci.MathOperationsBlocksUsage

Проверьте использование блоков математических операций, которые могут повлиять на совместимость с инспектором кода Simulink.

Описание

Эта проверка обновляет схему модели и сообщает о несовместимости, обнаруженной в блоках математических операций.

Доступно с инспектором кода Simulink.

Результаты и рекомендуемые действия

ПодпроверитьСостояниеРекомендуемое действие
Проверка абсолютных блоковВходной или выходной порт имеет тип int8 или int16.Изменение порта типа данных double, single, uint8, uint16, int32, uint32, или boolean.
Входные и выходные порты не имеют одинакового типа данных.Измените типы данных порта для соответствия.
Параметр блока Режим округления целых чисел (RndMeth) имеет неподдерживаемое значение. Проверка времени редактирования помечает это условие.Установить режим округления целых чисел в Zero или Floor.

Нарушение ограничения, применяемого ко всем блокам.

Исправьте указанный вход или выход блока.
Проверить блоки смещенияВходные и выходные порты не имеют одинакового типа данных.Измените типы данных порта для соответствия.
Смещение (Bias) пуст, не является конечным, использует выбор диапазона или индексирование переменных на элементах структур MATLAB, является сложным или имеет два или более измерения.Исправьте настройку смещения.

Нарушение ограничения, применяемого ко всем блокам.

Исправьте указанный вход или выход блока.
Проверить блоки усиленияВходные и выходные порты не имеют одинакового типа данных.Измените типы данных порта для соответствия.
Усиление параметра блока (Gain) пуст, не является конечным, использует выбор диапазона или индексирование переменных на элементах структур MATLAB, сложен или имеет два или более измерения.Исправьте настройку усиления.
Тип данных параметра блока (ParamDataTypeStr) не использует тот же тип данных, что и вход блока усиления.Измените блок усиления, чтобы использовать один и тот же тип данных для его ввода и параметра. Рассмотрите возможность установки для типа данных Parameter значения Inherit: Same as input.
Умножение параметра блока (Multiplication) не имеет значение Element-wise(K.*u), Matrix(K*u), Matrix(u*K), или Matrix(K*u)(u vector).

Установить умножение на Element-wise(K.*u), Matrix(K*u), Matrix(u*K), или Matrix(K*u)(u vector).

Только single или double типы данных поддерживаются для Matrix(K*u), Matrix(u*K), или Matrix(K*u)(u vector) методы умножения.

Параметр блока Режим округления целых чисел (RndMeth) имеет неподдерживаемое значение. Проверка времени редактирования помечает это условие.Установить режим округления целых чисел в Zero или Floor.
Время выборки параметра блока (SampleTime) устанавливается в постоянное время выборки.Задайте для параметра Sample Time явное, непостоянное значение.

Нарушение ограничения, применяемого ко всем блокам.

Исправьте указанный вход или выход блока.
Проверка математических блоковВходные и выходные порты не имеют одинакового типа данных.Измените типы данных порта для соответствия.
Функция (Operator) имеет неподдерживаемое значение: conj или hermitian.Установите для параметра Функция одно из следующих значений: exp, log, 10^u, log10, magnitude^2, square, transposepow, reciprocal, hypot, rem, или mod.
Параметр блока Режим округления целых чисел (RndMeth) имеет неподдерживаемое значение. Проверка времени редактирования помечает это условие.Установить режим округления целых чисел в Zero или Floor.

Нарушение ограничения, применяемого ко всем блокам.

Исправьте указанный вход или выход блока.
Проверка блоков продуктовВходные и выходные порты не имеют одинакового типа данных.Измените типы данных порта для соответствия.
Умножение (Multiplication) имеет значение Matrix (*) и Saturate при переполнении целого числа (SaturateOnIntegerOverflow) (установить в значение on). Проверка времени редактирования помечает это условие.Очистите параметр Saturate on integer overflow.

Параметр блока Количество входов (inputs) не имеет значение 2, **, /*, */, //, или / если оба следующих условия являются истинными:

  • Тип Inport Signal является матрицей.

  • Параметр блока продукта Умножение имеет значение Matrix (*).

Проверка времени редактирования помечает это условие.

Установка количества входов в 2, **, /*, */, //, или / если оба из следующих условий верны:

  • Тип Inport Signal является матрицей.

  • Параметр блока продукта Умножение имеет значение Matrix (*).

Параметр блока Умножение имеет значение Element-wise(.*) если тип inport Signal является вектором или матрицей и количество входов (inputs) имеет значение 1, * или /.Если параметр блока Multiplication имеет значение Element-wise(.*) и тип inport Signal является вектором или матрицей, не устанавливайте число входов в 1, * или /.
Параметр блока Умножение имеет значение Element-wise(.*) если тип inport Signal является скаляром, а количество входов (inputs) не имеет значение 1, * или /.Если параметр блока Multiplication имеет значение Element-wise(.*) и тип inport Signal является скаляром, затем установите число входов в 1, * или /.
Параметр блока Режим округления целых чисел (RndMeth) имеет неподдерживаемое значение. Проверка времени редактирования помечает это условие.Установить режим округления целых чисел в Zero или Floor.
Время выборки параметра блока (SampleTime) устанавливается в постоянное время выборки.Задайте для параметра Sample Time явное, непостоянное значение.

Нарушение ограничения, применяемого ко всем блокам.

Исправьте указанный вход или выход блока.
Блоки контрольной суммыВходные и выходные порты не имеют одинакового типа данных.Измените типы данных порта для соответствия.
Block parameter Sum over (параметр блока - суммаCollapseMode) не имеет значение All dimensions.Установить значение Sum over в All dimensions.
Параметр блока Тип данных накопителя (AccumDataTypeStr) не использует тот же тип данных, что и входные данные блокаИзмените блок, чтобы использовать один и тот же тип данных для его входов и накопителя. Рассмотрите возможность установки для типа данных Accumulator значения Inherit: Same as first input.
Параметр блока Режим округления целых чисел (RndMeth) имеет неподдерживаемое значение. Проверка времени редактирования помечает это условие.Установить режим округления целых чисел в Zero или Floor.
Время выборки параметра блока (SampleTime) устанавливается в постоянное время выборки.Задайте для параметра Sample Time явное, непостоянное значение.
Блок имеет один векторный вход и параметр Saturate при целочисленном переполнении (SaturateOnIntegerOverflow) (установить в значение on).Очистите параметр Saturate on integer overflow.

Нарушение ограничения, применяемого ко всем блокам:

Исправьте указанный вход или выход блока.
Проверка блоков тригонометрииФункция параметра блока (Operator) имеет значение cos + jsin (комплексная экспонента входного сигнала). Проверка времени редактирования помечает это условие.Задайте для функции значение, отличное от cos + jsin.
Параметр блока Метод аппроксимации (ApproximationMethod) не имеет значение None. Проверка времени редактирования помечает это условие.Задайте для метода аппроксимации значение None.

Нарушение ограничения, применяемого ко всем блокам:

Исправьте указанный вход или выход блока.
Проверка блоков MinMaxДля входного или выходного порта указан неподдерживаемый тип данных.Измените тип данных порта следующим образом: double, single, int8, uint8, int16, uint16, int32, или uint32.
Входные и выходные порты не имеют одинакового типа данных.Измените типы данных порта для соответствия.
Блок имеет один вход, а стандартная математическая библиотека не является C89/C90 (ANSI).В диалоговом окне Параметры конфигурации (Configuration Parameters) на панели Создание кода (Code Generation) > Интерфейс (Interface) задайте для опции Стандартная математическая библиотека (Standard math library) значение C89/C90 (ANSI).
Параметр блока Режим округления целых чисел (RndMeth) имеет неподдерживаемое значение. Проверка времени редактирования помечает это условие.Установить режим округления целых чисел в Zero или Floor.

Нарушение ограничения, применяемого ко всем блокам.

Исправьте указанный вход или выход блока.
Проверка функциональных блоков округления

Нарушение ограничения, применяемого ко всем блокам.

Исправьте указанный вход или выход блока.
Проверка блоков изменения формы

Нарушение ограничения, применяемого ко всем блокам.

Исправьте указанный вход или выход блока.
Проверить блоки знаков

Нарушение ограничения, применяемого ко всем блокам.

Исправьте указанный вход или выход блока.
Проверка блоков SqrtВходы и выходы блоков не имеют одинакового типа данных.Исправьте указанный вход или выход блока.
Функция параметра блока (Operator) не имеет значение sqrt или signedSqrt. Проверка времени редактирования помечает это условие.Задать для параметра блока Function значение sqrt или signedSqrt.
Блочный параметр Тип выходного сигнала (OutputSignalType) имеет значение complex. Проверка времени редактирования помечает это условие.Задать параметр блока Тип выходного сигнала (OutputSignalTypeКому auto или real.
Ввод блока и параметр блока Промежуточные результаты (IntermediateResultsDataTypeStr) не имеют одного типа данных.

Задать параметр блока Промежуточные результаты (IntermediateResultsDataTypeStr) одному из следующих:

  • Тот же тип данных, что и вход блока

  • Inherit: Inherit via internal rule

  • Inherit: Inherit from input

  • Inherit: Inherit from output

Типы данных входов и выходов блоков не single или double.Исправьте указанный вход или выход блока.

Нарушение ограничения, применяемого ко всем блокам.

Исправьте указанный вход или выход блока.
Проверка блоков назначенияПорт индекса не является поддерживаемым типом данных.Изменение порта индекса таким образом, чтобы он имел тип данных int8, int16, int32, uint8, uint16, или uint32.

Инициализировать вывод (Y) (OutputInitialize) не имеет значение Initialize using input port <Y0>. Проверка времени редактирования помечает это условие.

Установить выход инициализации (Y) в Initialize using input port <Y0>.

Блочный порт имеет массивы шин или шин с элементами, являющимися массивами шин.Закрепите указанный порт блока таким образом, чтобы в блоке не использовались массивы шин или шины с элементами, являющимися массивами шин.

Нарушение ограничения, применяемого ко всем блокам.

Исправьте указанный вход или выход блока.
Проверка полиномиальных блоковВходные и выходные порты не имеют одинакового типа данных.Измените типы данных порта для соответствия.
Типы данных входных портов не single или double.Измените перечисленные типы данных входного порта.
Количество коэффициентов для параметра блока Полиномиальные коэффициенты (coefs) не больше нуля. Изменение количества коэффициентов для параметра блока «Полиномиальные коэффициенты» (coefs) должно быть больше нуля.

Нарушение ограничения, применяемого ко всем блокам.

Исправьте указанный вход или выход блока.
Проверка блоков точечного изделияВходные порты не являются скалярами, векторами или матрицами с одним столбцом.Измените перечисленные входные порты.
Типы данных входных портов не single или double.Измените перечисленные типы данных входного порта.
Входные и выходные порты не имеют одинакового типа данных. Измените типы данных порта для соответствия.
Параметр блока Режим округления целых чисел (RndMeth) имеет неподдерживаемое значение.Установить режим округления целых чисел в Zero или Floor.

Нарушение ограничения, применяемого ко всем блокам.

Исправьте указанный вход или выход блока.
Проверка блоков Unary MinusТипы данных входных портов не double, single, int8, int16, или int32.Измените перечисленные типы данных входного порта.

Нарушение ограничения, применяемого ко всем блокам.

Исправьте указанный вход или выход блока.

Проверка времени редактирования

Эта проверка поддерживается проверкой времени редактирования. Однако проверка времени редактирования не помечает нарушения всех ограничений этой проверки. В предыдущей таблице явным образом упоминаются условия нарушения ограничения, которые являются флагами проверки времени редактирования.

См. также

Проверка использования блоков Signal Attributes

Код чека: mathworks.slci.SignalAttributesBlocksUsage

Проверьте использование блоков атрибутов сигнала, которые могут повлиять на совместимость с Simulink Code Inspector.

Описание

Эта проверка обновляет схему модели и сообщает о несовместимости, обнаруженной в блоках атрибутов сигнала.

Доступно с инспектором кода Simulink.

Результаты и рекомендуемые действия

ПодпроверитьСостояниеРекомендуемое действие
Проверка блоков преобразования типов данныхПараметр Block Ввод и вывод равны (ConvertRealWorld) не имеет значение Real World Value (RWV). Проверка времени редактирования помечает это условие.Установите входные и выходные значения равными Real World Value (RWV).
Параметр блока Режим округления целых чисел (RndMeth) имеет неподдерживаемое значение. Проверка времени редактирования помечает это условие.Установить режим округления целых чисел в Zero или Floor.
Время выборки параметра блока (SampleTime) устанавливается в постоянное время выборки.Задайте для параметра Sample Time явное, непостоянное значение.

Нарушение ограничения, применяемого ко всем блокам.

Исправьте указанный вход или выход блока.
Проверка дублирующих блоков типа данных

Нарушение ограничения, применяемого ко всем блокам.

Исправьте указанный вход или выход блока.
Проверка блоков распространения типа данных

Нарушение ограничения, применяемого ко всем блокам.

Исправьте указанный вход или выход блока.
Проверить блоки спецификации сигналаСигнал переменного размера (VarSizeSig) не имеет значение No. Проверка времени редактирования помечает это условие.Установить сигнал переменного размера в значение No.
Тип сигнала (SignalType) имеет значение complex. Проверка времени редактирования помечает это условие.Установите тип сигнала для любого типа, кроме complex.
Режим отбора проб (SamplingMode) имеет значение Frame based. Проверка времени редактирования помечает это условие. Установите режим выборки в любой режим, кроме Frame based.
Блочный порт имеет массивы шин или шин с элементами, являющимися массивами шин.Закрепите указанный порт блока таким образом, чтобы в блоке не использовались массивы шин или шины с элементами, являющимися массивами шин.

Нарушение ограничения, применяемого ко всем блокам.

Исправьте указанный вход или выход блока.
Проверить блоки преобразования сигналовВывод параметра блока (ConversionOutput) не имеет значение Signal copy. Проверка времени редактирования помечает это условие.Установить вывод в Signal copy.
Параметр Block Исключить этот блок из оптимизации «Block reduction» (OverrideOpt) не выбран (значение on).Выберите Исключить этот блок из оптимизации сокращения блоков.

Нарушение ограничения, применяемого ко всем блокам.

Исправьте указанный вход или выход блока.
Блоки смены скорости проверкиПараметр Block Обеспечение целостности данных при передаче данных (Integrity) не выбран. Проверка времени редактирования помечает это условие.Выберите «Обеспечить целостность данных во время передачи данных».
Блочный параметр Обеспечить детерминированную передачу данных (максимальная задержка) (Deterministic) не выбран. Проверка времени редактирования помечает это условие.Выберите Обеспечить передачу детерминированных данных (максимальная задержка).
Параметр блока Начальные условия (InitialCondition) не является нулевым, ненулевым скаляром или не использует ту же структуру данных, что и тип выходных данных.Измените параметр блока на нулевой, ненулевой скаляр или используйте ту же структуру данных, что и тип выходных данных.
Параметр блока Начальные условия (InitialCondition) пуст, не является конечным, сложен, использует выбор диапазона или индексирование переменных для элементов структур MATLAB или имеет два или более измерения.Измените параметр блока так, чтобы он не был пустым, не был конечным, не был сложным, не использовал выбор диапазона или индексирование переменных для элементов структур MATLAB и не имел двух или более размеров.
Блочный порт имеет массивы шин или шин с элементами, являющимися массивами шин.Закрепите указанный порт блока таким образом, чтобы в блоке не использовались массивы шин или шины с элементами, являющимися массивами шин.

Нарушение ограничения, применяемого ко всем блокам.

Исправьте указанный вход или выход блока.
Проверить блоки зондовПараметр блока Тип данных для времени выборки (ProbeSampleTimeDataType) не имеет значение single или double.Установить параметр блока Тип данных для времени выборки в single или double.

Нарушение ограничения, применяемого ко всем блокам.

Исправьте указанный вход или выход блока.
Проверить блоки шириныБлочный порт имеет массивы шин или шин с элементами, являющимися массивами шин.Закрепите указанный порт блока таким образом, чтобы в блоке не использовались массивы шин или шины с элементами, являющимися массивами шин.

Нарушение ограничения, применяемого ко всем блокам.

Исправьте указанный вход или выход блока.
Проверка блоков преобразования единицТип данных входного порта не double или single. Измените тип данных входного порта.
Входные и выходные порты не имеют одинакового типа данных.Измените типы данных порта для соответствия.
Блок не использует поддерживаемые блоки ввода или вывода.

Измените блок, чтобы использовать поддерживаемые блоки ввода и вывода. Включены преобразования между:

  • deg и rad

  • degC и degF

  • degC и degR

  • degR и degF

  • degC и K

  • degF и K

  • degR и K

  • deltadegC и deltadegF

  • deltadegC и deltadegR

  • deltadegR и deltadegF

  • deltadegC и deltaK

  • deltadegF и deltaK

  • deltadegR и deltaK

  • ft и m

  • ft и mi

  • M и ft

  • M и m

  • kg и lbm

  • lbf и N

  • inHg и Pa

  • mmHg и inHg

  • mph и kn

  • mph и fps

  • fps и kn

  • percent и one

  • kn и nmi/s

  • ms и s

  • psf и psi

  • lbf/hr и lbf/sec

  • lbm/hr и lbm/sec

  • kip и N

  • kip и lbf

  • fpm (блок ввода) и fps (выходной блок)

  • hr (блок ввода) и min (выходной блок)

  • min (блок ввода) и s (выходной блок)

  • ft*lbf/slug/degR (блок ввода) и ft*lbf/slug/K (выходной блок)

  • fps (блок ввода) и fpm (выходной блок)

  • min (блок ввода) и hr (выходной блок)

  • ft*lb/slug/degR (блок ввода) и ft*lb/slug/K (выходной блок)

  • slug (блок ввода) и lbm (выходной блок)

  • lbm (блок ввода) и slug (выходной блок)

  • s (блок ввода) и hr (выходной блок)

  • ft/min (блок ввода) и kn (выходной блок)

  • kn (блок ввода) и ft/min (выходной блок)

  • hr (блок ввода) и s (выходной блок)

  • s (блок ввода) и min (выходной блок)

Нарушение ограничения, применяемого ко всем блокам.

Исправьте указанный вход или выход блока.
Проверка блоков ИСПараметр блока Начальное значение (Value) пуст, не является конечным, сложен, использует выбор диапазона или индексирование переменных для элементов структур MATLAB или имеет два или более измерения.Измените параметр блока так, чтобы он не был пустым, не был конечным, не был сложным, не использовал выбор диапазона или индексирование переменных для элементов структур MATLAB и не имел двух или более размеров.

Нарушение ограничения, применяемого ко всем блокам.

Исправьте указанный вход или выход блока.

Проверка времени редактирования

Эта проверка поддерживается проверкой времени редактирования. Однако проверка времени редактирования не помечает нарушения всех ограничений этой проверки. В предыдущей таблице явным образом упоминаются условия нарушения ограничения, которые являются флагами проверки времени редактирования.

См. также

Проверка использования блоков логических и битовых операций

Код чека: mathworks.slci.LogicalandBitOperationsBlocksUsage

Проверьте использование блоков логических и битовых операций, которые могут повлиять на совместимость с Simulink Code Inspector.

Описание

Эта проверка обновляет схему модели и сообщает о несовместимости, обнаруженной в блоках логических и битовых операций.

Доступно с инспектором кода Simulink.

Результаты и рекомендуемые действия

ПодпроверитьСостояниеРекомендуемое действие
Проверка блоков реляционного оператораТип данных исходящего порта блока не является перечисляемым типом со значением по умолчанию 0 или boolean.Измените тип данных исходящего порта на перечисляемый тип со значением по умолчанию 0 или boolean.
Входные порты блоков не имеют одного типа данных.Измените входные порты таким образом, чтобы они имели один и тот же тип данных.
Параметр блока Реляционный оператор (Operator) имеет неподдерживаемое значение: isInf, isNaN, или isFinite. Проверка времени редактирования помечает это условие.Задайте для оператора Relational поддерживаемое значение: <=, ==, >=, ~=, <, или >.

Нарушение ограничения, применяемого ко всем блокам.

Исправьте указанный вход или выход блока.
Проверка логических блоков оператораИсходящий порт блока логического оператора не является boolean или uint8.Изменение типа данных исходящего порта на boolean или uint8.
Входные порты блоков не имеют одного типа данных.Сконфигурируйте порты ввода с одинаковым типом данных.
Для параметров модели Режимы литья (Casting mode) не задано значение Nominal для XOR операторы с boolean операнды.Задайте для параметра модели Режимы литья значение Nominal.

Нарушение ограничения, применяемого ко всем блокам.

Исправьте указанный вход или выход блока.
Проверка блоков Bitwise OperatorС количеством входных портов(NumInputPorts) установить в значение 1 и Оператор(logicop) установить в значение AND, OR, NAND, NOR, или XOR, тип данных inport не является скаляром.Настройте тип данных ввода как скаляр.

Нарушение ограничения, применяемого ко всем блокам.

Исправьте указанный вход или выход блока.
Проверка блоков ArithShiftДиагностика значения смещения вне диапазона (DiagnosticForOORShift) не имеет значение Error. Проверка времени редактирования помечает это условие.Установите для параметра Diagnostic значение смещения за пределами диапазона значение Error.
Двоичные точки для сдвига (BinPtShiftNumber) не имеет значение 0. Проверка времени редактирования помечает это условие.Установка точек Bits для сдвига в 0.
Биты для сдвига: Число (BitShiftNumber) не входит в допустимый диапазон типа данных inport.Введите Bits to shift: Number, который находится в допустимом диапазоне типа данных inport.
Block parameter Check for exit-of-range 'Bits to shift' в сгенерированном коде (CheckOORBitShift) выбран (включен). Проверка времени редактирования помечает это условие.Снимите флажок Check for exit-of-range Bits to shift в сгенерированном параметре кода.

Следующие параметры конфигурации устанавливаются следующим образом:

  • Поведение параметров по умолчанию (DefaultParameterBehavior) имеет значение Inlined

  • Биты для сдвига: Источник (BitShiftNumberSource) имеет значение Input port

  • Биты для сдвига: Направление (BitShiftDirection) имеет значение Bidirectional

если источник Inport 2 является постоянным.

Измените модель таким образом, чтобы источник входных данных 2 не был постоянным.

Нарушение ограничения, применяемого ко всем блокам.

Исправьте указанный вход или выход блока.
Проверка блоков комбинаторной логики

Нарушение ограничения, применяемого ко всем блокам.

Исправьте указанный вход или выход блока.

Проверка времени редактирования

Эта проверка поддерживается проверкой времени редактирования. Однако проверка времени редактирования не помечает нарушения всех ограничений этой проверки. В предыдущей таблице явным образом упоминаются условия нарушения ограничения, которые являются флагами проверки времени редактирования.

См. также

Проверка использования блоков таблиц подстановки

Код чека: mathworks.slci.LookupTablesBlocksUsage

Проверьте использование блоков таблицы подстановки, которые могут повлиять на совместимость с инспектором кода Simulink.

Описание

Эта проверка обновляет схему модели и сообщает о несовместимости, обнаруженной в блоках таблицы подстановки.

Доступно с инспектором кода Simulink.

Результаты и рекомендуемые действия

ПодпроверитьСостояниеРекомендуемое действие
Проверка блоков таблицы подстановкиВходные и выходные порты не имеют одинакового типа данных.Измените входные и выходные порты таким образом, чтобы они имели одинаковый тип данных.
Спецификация точек останова параметра блока (BreakpointsSpecification) не имеет значение Explicit values. Проверка времени редактирования помечает это условие.Задайте для спецификации точек останова значение Explicit values.
Метод интерполяции параметра блока (InterpMethod) не имеет значение Linear point-slope.Задать для метода интерполяции значение Linear point-slope.
Параметр блока Метод экстраполяции (ExtrapMethod) не имеет значение Clip или Linear. Проверка времени редактирования помечает это условие.Задать для метода экстраполяции значение Clip или Linear.
Метод поиска Block parameter Index (IndexSearchMethod) не имеет значение Binary search или Linear search. Проверка времени редактирования помечает это условие.Задать для метода поиска Index значение Binary search или Linear search.
Параметр блока Поддержка настраиваемого размера таблицы при формировании кода (SupportTunableTableSize) (установить в значение on). Проверка времени редактирования помечает это условие.Снимите флажок Поддерживать настраиваемый размер таблицы в параметре создания кода.
Данные таблицы параметров блока (Table) пуст, не является конечным, использует выбор диапазона или индексирование переменных по элементам структур MATLAB, сложен или имеет два или более измерения.Исправьте настройку данных таблицы.
Источник параметра блока (TableSource) используется для указания источника данных таблицы Input port. Проверка времени редактирования помечает это условие. Задайте для источника значение Dialog.
Для спецификации точек останова (BreakpointsSpecification) установите в значение Explicit values, параметр блока Breakpoints пуст, не является конечным, использует выбор диапазона или индексирование переменных для элементов структур MATLAB, является сложным или имеет два или более размера.Исправьте значение параметра Точки останова 1.
Точки останова > Тип данных не использует тот же тип данных, что и вход блока.Измените типы данных для сопоставления. Или установите для параметра Точки останова > Тип данных значение Inherit: Same as corresponding input
Блок использует различные типы данных для выходных данных и данных таблицы.Измените модель таким образом, чтобы блок использовал один и тот же тип данных для своих выходных и табличных данных. В диалоговом окне типа данных блока рассмотрите возможность установки для типа данных таблицы значения Inherit: Same as output. Если данные таблицы получены из объекта таблицы подстановки, используйте один и тот же тип данных как для данных таблицы, так и для выходных данных. Если выбрано свойство Поддерживать настраиваемый размер объекта таблицы подстановки, использование различных типов данных для данных таблицы и выходных данных поддерживается, но ограничивается двойным и одиночным.
Промежуточные результаты параметра блока (IntermediateResultsDataTypeStr) не использует тот же тип данных, что и вывод блока.Измените типы данных для сопоставления.
Выходной порт блока или блока является постоянным.Установите время выборки блока или выходного порта блока на явное, непостоянное время выборки.
Параметр Block Используйте один входной порт для всех входных данных (UseOneInputPortForAllInputData) выбран.Снимите флажок Использовать один входной порт для всех входных данных.

Нарушение ограничения, применяемого ко всем блокам.

Исправьте указанный вход или выход блока.
Проверка блоков PrelookupМетод поиска Block parameter Index (IndexSearchMethod) не имеет значение Binary search или Linear search. Проверка времени редактирования помечает это условие.Задать для метода поиска Index значение Binary search или Linear search.
Спецификация точек останова параметра блока (BreakpointsSpecification) не имеет значение Explicit values. Проверка времени редактирования помечает это условие.Задайте для спецификации точек останова значение Explicit values.
Параметр блока Выбор вывода не установлен в значение Index and fraction. Проверка времени редактирования помечает это условие.Установите для параметра «Вывод» значение Index and fraction.
Параметр блока Точка останова > Тип данных не имеет значение Inherit: Same as input, single, или double.Установить точку останова > Тип данных в Inherit: Same as input, single, или double.
«Индекс параметра блока» > «Тип данных» (IndexDataTypeStr) не имеет значение uint32.Задать для параметра «Индекс» > «Тип данных» значение uint32.
Параметр блока «Дробь» > «Тип данных» (FractionDataTypeStr) не имеет значение single или double.Задать дробь > Тип данных как single или double.
Параметр блока Режим округления целых чисел (RndMeth) имеет неподдерживаемое значение. Проверка времени редактирования помечает это условие.Установить режим округления целых чисел в Floor.
Параметр Block Использовать последнюю точку останова для ввода на верхнем пределе или выше (UseLastBreakpoint) выбран. Проверка времени редактирования помечает это условие.Снимите флажок Использовать последнюю точку останова для ввода на верхнем пределе или выше.

Нарушение ограничения, применяемого ко всем блокам.

Исправьте указанный вход или выход блока.
Проверка интерполяции с использованием блоков PrelookupПромежуточные результаты > Тип данных (IntermediateResultsDataTypeStr) не имеет значение Inherit:Inherit via internal rule , Inherit: Same as output, double, или single. Проверка времени редактирования помечает это условие.Задать промежуточные результаты > Тип данных как Inherit:Inherit via internal rule , Inherit: Same as output, double, или single.
Вывод > Тип данных (OutDataTypeStr) не имеет значение Inherit:Inherit via back propagation , Inherit: Inherit from ‘Table data’, double, или single. Проверка времени редактирования помечает это условие.Установить вывод > Тип данных в Inherit:Inherit via back propagation , Inherit: Inherit from ‘Table data’, double, или single.
Данные таблицы > Тип данных (TableDataTypeStr) не имеет значение Inherit: Inherit from ‘Table data’, Inherit: Same as output, double, или single. Проверка времени редактирования помечает это условие.Установить данные таблицы > Тип данных в Inherit: Inherit from ‘Table data’, Inherit: Same as output, double, или single.
Приоритет внутреннего правила (InternalRulePriority) не имеет значение Precision. Проверка времени редактирования помечает это условие.Установить приоритет внутреннего правила в значение Precision.
Количество измерений выбора подкаталогов или значение индекса (k) из блока Prelookup не относится к типу данных uint32.Задать количество измерений выбора подтаблиц и значение индекса для типа данных uint32.
Промежуточные результаты > Тип данных (IntermediateResultsDataTypeStr), Данные таблицы > Тип данных (TableDataTypeStr), Output > Data Type (Вывод > Тип данных) (OutDataTypeStr) и значение дроби (f) из блока Prelookup отличаются друг от друга типом данных: double или single.Задайте промежуточные результаты > Тип данных, Данные таблицы > Тип данных, Вывод > Тип данных и значение дроби для одного и того же типа данных: double или single.
Режим округления целых чисел (RndMeth) не имеет значение Floor. Проверка времени редактирования помечает это условие.Установить режим округления целых чисел в Floor.
Насыщение при целочисленном переполнении (SaturateOnIntegerOverflow) (установить в значение on). Проверка времени редактирования помечает это условие.Снимите флажок «Насыщить при переполнении целого числа».
Блок является постоянным или соединяет все входы выбора поднаборов с блоками констант.Измените блоки таким образом, чтобы они не были постоянными и не соединяли все входы выбора вложенных таблиц с постоянными блоками.
Блоки или их выходы имеют постоянное время выборки.Установите значения времени выборки блоков или выходных портов блоков на явные значения времени некостоянной выборки.
Метод интерполяции параметра блока (InterpMethod) не имеет значение Linear point-slope. Проверка времени редактирования помечает это условие.Задать для метода интерполяции значение Linear point-slope.
Параметр блока Требовать индекс и дробь как шину (RequireIndexFractionAsBus) (установить в значение on). Проверка времени редактирования помечает это условие.Снимите флажок Требовать индекс и дробь как шину.
Параметр блока Допустимый ввод индекса может достигать последнего индекса (ValidIndexMayReachLast) (установить в значение on). Проверка времени редактирования помечает это условие.Clear Допустимый входной индекс может достигать последнего индекса.
Спецификация параметров блока (TableSpecification) не имеет значение Explicit values. Проверка времени редактирования помечает это условие.Задать для спецификации значение Explicit values.

Нарушение ограничения, применяемого ко всем блокам.

  • Блокирование ввода или вывода не относится к типу данных double, single, int8, uint8, int16, uint16, int32, uint32, boolean, или перечисление, унаследованное от Simulink.IntEnumType со значением по умолчанию 0.

  • Если блок поддерживает шины, порт блока не является шиной, для которой элементы (потенциально включая другие шины) удовлетворяют ограничению типа данных.

  • Имя блока содержит "*/«или»/*«, или заканчивается на»*’.

  • Блокирование ввода или вывода является сложным.

  • Блок ввода или вывода не является скалярной, векторной или 2-D матрицей.

  • Блок ввода или вывода использует сигналы на основе кадров.

  • Класс хранения пользовательских сигналов вывода блоков:

    • Тип не установлен в значение Unstructured.

    • Для инициализации данных установлено значение None.

  • Выходной порт блока ссылается на сигнальный объект с непустым начальным значением.

  • Блок является постоянным, а исходящий порт проверяется.

  • Класс хранения выходных сигналов блока не установлен в Auto когда блок является постоянным.

  • Блок, который является постоянным или имеет параметры, которые могут быть настроены, управляет двумя или более многоскоростными блоками без использования явных блоков Rate Transition.

Исправьте указанный вход или выход блока.

Проверка времени редактирования

Эта проверка поддерживается проверкой времени редактирования. Однако проверка времени редактирования не помечает нарушения всех ограничений этой проверки. В предыдущей таблице явным образом упоминаются условия нарушения ограничения, которые являются флагами проверки времени редактирования.

См. также

Проверка использования пользовательских функциональных блоков

Код чека: mathworks.slci.UserDefinedFunctionBlocksUsage

Проверьте использование пользовательских функциональных блоков, которые могут повлиять на совместимость с Simulink Code Inspector.

Описание

Эта проверка обновляет схему модели и сообщает о несовместимости, обнаруженной в блоках пользовательских функций.

Доступно с инспектором кода Simulink.

Результаты и рекомендуемые действия

ПодпроверитьСостояниеРекомендуемое действие
Проверка блоков вызывающего абонента CДля входного или выходного порта указан неподдерживаемый тип данных.Измените тип данных порта следующим образом: double, single, int8, int16, int32, uint8, , uint16, или uint32

Нарушение ограничения, применяемого ко всем блокам.

Исправьте указанный вход или выход блока.
Проверка S-функциональных блоковS-функция не была создана с использованием текущей версии средства устаревшего кода.Если это возможно, создайте S-функцию с помощью инструмента Legacy Code Tool или изучите альтернативные варианты включения кода в модель.
Блок S-Function не создается с помощью устаревшего инструмента кода.Создайте S-функцию, чтобы получить доступ к S-функции с помощью инструмента кода предыдущей версии с помощью следующей команды:legacy_code('slblock_generate', def), где def - структура с полями, представляющими свойства устаревшего инструмента кода.
Аргумент S-функции не является скаляром или вектором фиксированной размерности.Измените S-функцию так, чтобы аргументы были скалярами или векторами фиксированной размерности.
S-функция «Устаревший инструмент кода» определяет InitializeConditionsFcnSpec, StartFcnSpec, или TerminateFcnSpec, а не OutputFcnSpec.Измените конфигурацию S-функции, чтобы указать OutputFcnSpec.
S-функция имеет более одной dwork.Измените конфигурацию S-функции, чтобы указать одну dwork.
Параметры S-функции (Parameters) является сложным или не конечным.Измените модель таким образом, чтобы параметры S-функции не были сложными или не были конечными.
Интегрированная модель S-функционального блока SIL использует глобальную переменную для корневого входного или выходного порта.Измените модель таким образом, чтобы она не использовала глобальные переменные для корневых портов ввода или вывода.

Нарушение ограничения, применяемого ко всем блокам.

Исправьте указанный вход или выход блока.

См. также

Проверка использования блоков портов и подсистем

Код чека: mathworks.slci.PortsandSubsystemsBlocksUsage

Проверьте использование блоков портов и подсистем, которые могут повлиять на совместимость с Simulink Code Inspector.

Описание

Эта проверка обновляет схему модели и сообщает о несовместимости, обнаруженной в блоках портов и подсистем.

Доступно с инспектором кода Simulink.

Результаты и рекомендуемые действия

ПодпроверитьСостояниеРекомендуемое действие
Установите флажок Включить блокиСигнал, поступающий в разрешающий порт, не относится к типу данных boolean.Исправьте тип данных сигнала.
Блок Enable Port расположен на корневом уровне модели.Удалите или переместите блок «Включить порт».
Поведение параметров по умолчанию (DefaultParameterBehavior) имеет значение Inlined и сигнал, поступающий в разрешающий порт родительской подсистемы, является постоянным.Измените модель таким образом, чтобы сигнал, поступающий в порт включения родительской подсистемы, не был постоянным.
Блочный порт имеет массивы шин или шин с элементами, являющимися массивами шин.Закрепите указанный порт блока таким образом, чтобы в блоке не использовались массивы шин или шины с элементами, являющимися массивами шин.

Нарушение ограничения, применяемого ко всем блокам.

Исправьте указанный вход или выход блока.
Проверка ссылочных блоков моделиЗначение, указанное в разделе Аргументы > Аргументы модели (ParameterArgumentValues) является сложным или нефинитным.Измените модель таким образом, чтобы значения, указанные в аргументах Model, не были сложными или нефинитными.
Блок находится в защищенном режиме.Удалите защиту из привязки модели. Дополнительные сведения см. в разделе Защита моделей для сокрытия содержимого (Simulink Coder).
Выходной порт блока или блока является постоянным.Установите время выборки блока или выходного порта блока на явное, непостоянное время выборки.
Блок имеет несколько выборок времени.Измените целевое значение привязки модели таким образом, чтобы блок привязки модели имел один образец времени.

Входной порт блока не является одним из следующих поддерживаемых типов данных:

  • Перечисляемый тип, унаследованный от Simulink.IntEnumType со значением по умолчанию 0.

  • Скалярная шина, элементы которой относятся к следующим поддерживаемым типам данных: double, single, int8, uint8, int16, uint16, int32, uint32, или boolean.

Исправьте тип данных входного порта.
Для входных портов в пределах инициируемого опорного блока модели, ввод фиксатора путем задержки внешнего сигнала (LatchByDelayingOutsideSignal) (установить в значение on).Очистить вход фиксатора путем задержки внешнего сигнала. Чтобы сохранить поведение фиксации, реструктурируйте модель, поместив блок единичной задержки перед входным блоком вне блока привязки модели.
Для входных портов опорного блока модели, вход защелки для сигналов обратной связи выходов подсистемы функционального вызова (LatchInputForFeedbackSignals) (установить в значение on).Очистить вход защелки для сигналов обратной связи выходов подсистемы функционального вызова. Чтобы сохранить поведение фиксации, реструктурируйте модель, поместив блок единичной задержки перед входным блоком вне блока привязки модели.
Блоки модели используют параметры экземпляра ссылочных моделей в качестве аргументов.Измените модель таким образом, чтобы блоки модели не использовали параметры экземпляра ссылочных моделей в качестве аргументов.
A Simulink.LookupTable объект передается во ссылочный блок модели.Измените модель таким образом, чтобы она не содержала Simulink.LookupTable объект, который передается во ссылочный блок модели.

Нарушение ограничения, применяемого ко всем блокам.

Исправьте указанный вход или выход блока.
Проверка блоков подсистемыВарианты подсистем не имеют одинакового количества портов.

Если возможно, реконфигурируйте модель таким образом, чтобы различные подсистемы имели одинаковое количество портов.

Подсистема не является одной из следующих:

  • Виртуальный

  • Позволенный

  • Вызов функции

  • Если действие

  • Встроенная атомная

  • Вызванный

Если возможно, перенастройте подсистему так, чтобы она была виртуальной (очистите параметр блока подсистемы Treat as atomic unit) или встроенной подсистемой atomic, enabled, function-call, if action, или запущенной подсистемой. Либо оберните подсистему в блок «Модель», либо изучите другие варианты реализации.

Подсистема является функциональным блоком Simulink.

Измените модель, чтобы удалить функциональные блоки Simulink.

Для блоков с вариантами применяется одно из следующих условий:

  • Создать условия препроцессора (GeneratePreprocessorConditionals) выбран.

  • Параметры конфигурации модели > Создание кода > Интерфейс > Создание условий препроцессора (GeneratePreprocessorConditionals) не имеет значение Disable all.

Снимите флажок Генерировать условия препроцессора или установите Параметры конфигурации модели > Генерирование кода > Интерфейс > Генерировать условия препроцессора в значение Disable all.

Параметр блока Минимизировать вхождения алгебраического цикла (MinAlgLoopOccurences) выбран. Проверка времени редактирования помечает это условие.

Снимите флажок Минимизировать вхождения алгебраического цикла.

Для невиртуальных подсистем Упаковка функций (RTWSystemCode) не имеет значение Inline, Nonreusable function, или Reusable function.

Установить упаковку функций в Inline, Nonreusable function, или Reusable function.

Для блока с функциональной упаковкой (RTWSystemCode) установите в значение Nonreusable function, применяется одно или несколько из следующих условий:

  • Параметр блока Параметры имени функции (RTWFcnNameOpts) не имеет значение User specified.

  • Функциональный интерфейс параметра блока (FunctionInterfaceSpec) не имеет значение void_void.

  • Параметр блока Функция с отдельными данными (FunctionWithSeparateData) выбран (установлен в значение on).

  • Модельный параметр Кодовая упаковка интерфейса (CodeInterfacePackaging) не имеет значение Nonreusable function.

Зафиксируйте параметры блока и модели.

Для блока с функциональной упаковкой (RTWSystemCode) установите в значение Reusable function, применяется одно или несколько из следующих условий:

  • Модельный параметр Кодовая упаковка интерфейса (CodeInterfacePackaging) не имеет значение Nonreusable function.

  • Параметр модели Пройти многократно используемую подсистему выводит как (PassReuseOutputArgsAs) не имеет значение Individual arguments

  • Повторно используемая подсистема не принадлежит библиотеке.

  • Многоразовая подсистема не является немаскированной подсистемой односкоростного атомного или функционального вызова.

  • Зафиксируйте параметры блока и модели.

  • Измените повторно используемые подсистемы так, чтобы они были из библиотеки и были демаскированными, односкоростными атомными или функциональными подсистемами вызова.

Блочный порт имеет массивы шин или шин с элементами, являющимися массивами шин.Измените модель таким образом, чтобы блоки модели не использовали параметры экземпляра ссылочных моделей в качестве аргументов.

Нарушение ограничения, применяемого ко всем блокам.

Исправьте указанный вход или выход блока.
В повторно используемой подсистеме при вводе автоматически добавляется скрытый буфер сигналов.Вручную разместите блок преобразования сигнала непосредственно перед вводом повторно используемой подсистемы. Выберите параметр блока преобразования сигнала Exclude this block из оптимизации «Block reduction».
A Simulink.LookupTable объект не должен передаваться в маскированную подсистему.Измените модель таким образом, чтобы она не содержала Simulink.LookupTable объект, передаваемый в маскированную подсистему.
Проверка триггерных блоковВ родительской подсистеме сигнал, поступающий в порт триггера, не является скалярным.Сконфигурируйте скалярный сигнал, поступающий в порт триггера родительской подсистемы.
В родительской подсистеме сигнал, поступающий в порт триггера, не является сигналом boolean тип данных, если Trigger type (TriggerTypeявляется rising, falling, или either.Сконфигурируйте сигнал, поступающий в порт триггера родительской подсистемы boolean.
Блок находится на корневом уровне модели с типом триггера (TriggerType) установите в значение rising, falling, или either.

Выполните одно из следующих действий:

  • Настройте модель таким образом, чтобы триггерный блок не находился в корне модели.

  • Настройте модель так, чтобы тип триггера был function-call.

Состояния при включении (StatesWhenEnabling) имеет значение inherit. Проверка времени редактирования помечает это условие.Установка состояний при включении held или reset.
Поведение параметров по умолчанию (DefaultParameterBehavior) имеет значение Inlined и сигнал, поступающий в порт триггера родительской подсистемы, является постоянным.Измените модель таким образом, чтобы сигнал, поступающий в порт триггера родительской подсистемы, не был постоянным.
Тип данных портов вывода не auto, int8 или double.Исправьте тип данных выходного порта.
Параметр блока Начальное состояние триггерного сигнала (InitialTriggerSignalState) не имеет значение compatibility (no trigger on first evaluation) или zero. Проверка времени редактирования помечает это условие.Установить начальное состояние триггерного сигнала в compatibility (no trigger on first evaluation) или zero.
Блочный порт имеет массивы шин или шин с элементами, являющимися массивами шин.Измените модель таким образом, чтобы блоки модели не использовали параметры экземпляра ссылочных моделей в качестве аргументов.

Нарушение ограничения, применяемого ко всем блокам.

Исправьте указанный вход или выход блока
Проверка блоков порта действия

Нарушение ограничения, применяемого ко всем блокам.

Исправьте указанный вход или выход блока.
Проверка наличия блоковПоведение параметров по умолчанию (DefaultParameterBehavior) имеет значение Inlined и источник Inport 1 является постоянным.Измените модель таким образом, чтобы источник ввода 1 не был постоянным.

Нарушение ограничения, применяемого ко всем блокам.

Исправьте указанный вход или выход блока.
Проверка блоков генератора вызовов функцииБлок имеет несколько мест назначения.Измените модель таким образом, чтобы блок имел одно место назначения.
Число итераций (numberOfIterations) не имеет значение 1. Проверка времени редактирования помечает это условие.Задайте для параметра Число итераций значение 1.

Нарушение ограничения, применяемого ко всем блокам.

Исправьте указанный вход или выход блока.
Проверка функциональных блоков разделения вызовов

Нарушение ограничения, применяемого ко всем блокам.

Исправьте указанный вход или выход блока.
Проверить блоки вариантов переключенияПоведение параметров по умолчанию (DefaultParameterBehavior) имеет значение Inlined, и источник Inport 1 является постоянным.Измените модель таким образом, чтобы источник ввода 1 не был постоянным.

Нарушение ограничения, применяемого ко всем блокам.

Исправьте указанный вход или выход блока.
Проверка блоков итератораПараметр блока Задать следующий i (переменная итерации) внешне (ExternalIncrement) (установить в значение on). Проверка времени редактирования помечает это условие.Снимите флажок Задать следующий i (переменная итерации) внешне.
Источник ограничения итерации (IterationSource) не имеет значение internal. Проверка времени редактирования помечает это условие.Задать для источника ограничения итерации значение internal.
Тип данных переменной итерации (IterationVariableDataType) имеет значение double. Проверка времени редактирования помечает это условие.Задать для типа данных переменной итерации значение int32, int16, int8, uint32, uint16, или uint8.
Для подсистемы итератора имеется настраиваемый параметр для внутреннего предела итерации.Задать поведение параметра по умолчанию (DefaultParameterBehaviorКому Inlined или измените предел внутренней итерации так, чтобы он не был настраиваемым параметром.

Нарушение ограничения, применяемого ко всем блокам.

Исправьте указанный вход или выход блока.
Проверка для каждого блокаРазмер входной секции или размер выходной конкатенации больше 2.Задайте для параметров Размер входной секции (Input Partition Dimension) и Размер выходной конкатенации (Output Concatenation Dimension) значения меньше 3.
Параметры маски секционированы.Настройте параметры маски так, чтобы они не были секционированы.
NeedActiveIterationSignal имеет значение on. Проверка времени редактирования помечает это условие.Набор NeedActiveIterationSignal кому off.
RequestParallelExec имеет значение off. Проверка времени редактирования помечает это условие.Набор RequestParallelExec кому on.
ShowIterationIndex имеет значение on. Проверка времени редактирования помечает это условие.Набор ShowIterationIndex кому off.
StateReset не имеет значение held. Проверка времени редактирования помечает это условие.Набор StateReset кому held.
StateType не имеет значение Separate states for each iteration. Проверка времени редактирования помечает это условие.Набор StateType кому Separate states for each iteration.
Number of iterations to execute не имеет значение -1 (значение по умолчанию).Установите Number of iterations to execute до значения по умолчанию -1.

Нарушение ограничения, применяемого ко всем блокам.

Исправьте указанный вход или выход блока.

Проверка времени редактирования

Эта проверка поддерживается проверкой времени редактирования. Однако проверка времени редактирования не помечает нарушения всех ограничений этой проверки. В предыдущей таблице явным образом упоминаются условия нарушения ограничения, которые являются флагами проверки времени редактирования.

См. также

Проверка использования блоков прерываний

Код чека: mathworks.slci.DiscontinuitiesBlocksUsage

Проверьте использование блоков прерываний, которые могут повлиять на совместимость с Simulink Code Inspector.

Описание

Эта проверка обновляет схему модели и сообщает о несовместимости, обнаруженной в блоках прерываний.

Доступно с инспектором кода Simulink.

Результаты и рекомендуемые действия

ПодпроверитьСостояниеРекомендуемое действие
Проверка блоков SaturateВходные и выходные порты не имеют одинакового типа данных.Измените типы данных порта для соответствия.
Параметр блока Верхний предел (UpperLimit) пуст, не является конечным, использует выбор диапазона или индексирование переменных на элементах структур MATLAB, сложен или имеет два или более измерения.Исправьте настройку верхнего предела.
Параметр блока Нижний предел (LowerLimit) пуст, не является конечным, использует выбор диапазона или индексирование переменных на элементах структур MATLAB, сложен или имеет два или более измерения.Исправьте настройку нижнего предела.
Параметр блока Режим округления целых чисел (RndMeth) имеет неподдерживаемое значение. Проверка времени редактирования помечает это условие.Установить режим округления целых чисел в Zero или Floor.

Нарушение ограничения, применяемого ко всем блокам.

Исправьте указанный вход или выход блока.
Проверить релейные блокиПараметр блока Включить точку (OnSwitchValue) пуст, не является конечным, использует выбор диапазона или индексирование переменных на элементах структур MATLAB, сложен или имеет два или более измерения.Исправьте параметр «Включить точку».
Параметр блока Точка отключения (OffSwitchValue) пуст, не является конечным, использует выбор диапазона или индексирование переменных на элементах структур MATLAB, сложен или имеет два или более измерения.Исправьте настройку точки отключения.
Параметр блока Вывод при включении (OnOutputValue) пуст, не является конечным, использует выбор диапазона или индексирование переменных на элементах структур MATLAB, сложен или имеет два или более измерения.Исправьте вывод при установке.
Параметр блока Вывод при выключении (OffOutputValue) пуст, не является конечным, использует выбор диапазона или индексирование переменных на элементах структур MATLAB, сложен или имеет два или более измерения.Исправьте параметр Output when off.
Проверить блоки мертвых зонПараметр блока Saturate при целочисленном переполнении (SaturateOnIntegerOverflow) (установить в значение on). Проверка времени редактирования помечает это условие.Исправьте параметр Saturate при переполнении целого числа.

Проверка времени редактирования

Эта проверка поддерживается проверкой времени редактирования. Однако проверка времени редактирования не помечает нарушения всех ограничений этой проверки. В предыдущей таблице явным образом упоминаются условия нарушения ограничения, которые являются флагами проверки времени редактирования.

См. также

Проверка использования блоков Sinks

Код чека: mathworks.slci.SinksBlocksUsage

Проверьте использование блоков Sinks, которые могут повлиять на совместимость с Simulink Code Inspector.

Описание

Эта проверка обновляет схему модели и сообщает о несовместимости, обнаруженной в блоках Sinks.

Доступно с инспектором кода Simulink.

Результаты и рекомендуемые действия

ПодпроверитьСостояниеРекомендуемое действие
Проверка блоков исходящего портаБлок не может задавать сигналы переменного размера. Параметр блока Сигнал переменного размера (VarSizeSig) имеет значение Yes.Установить сигнал переменного размера в значение No.
Тип сигнала (SignalType) имеет значение complex.Установить тип сигнала в real или auto.
Режим отбора проб (SamplingMode) имеет значение Frame based.Установите режим выборки в значение Sample based или auto.
Выезд корневого уровня Начальный выход (InitialOutput) не является [].Установить выход корневого уровня Initial output в значение [].
Источник начального выходного значения (SourceOfInitialOutputValue) не имеет значение Dialog. Проверка времени редактирования помечает это условие.Установите Источник начального выходного значения в Dialog.
Начальный выход (InitialOutput) является сложным.Измените модель таким образом, чтобы начальный вывод не был сложным.
Класс хранения (StorageClass) не является Auto или SimulinkGlobal. Проверка времени редактирования помечает это условие.В редакторе сопоставлений кодов задайте для класса хранения значение Auto или SimulinkGlobal. Чтобы открыть редактор сопоставлений кода, сначала откройте приложение Embedded Coder. Затем на вкладке C Code в разделе Code Interface выберите Отдельные сопоставления кода элементов.
Outport является блоком Out Bus Element.Вместо блока Out Bus Element используйте блок Outport с блоком Bus Creator.

Нарушение ограничения, применяемого ко всем блокам.

Исправьте указанный вход или выход блока.
Проверка блоков терминатораБлочный порт имеет массивы шин или шин с элементами, являющимися массивами шин.Закрепите указанный порт блока таким образом, чтобы в блоке не использовались массивы шин или шины с элементами, являющимися массивами шин.

Нарушение ограничения, применяемого ко всем блокам.

Исправьте указанный вход или выход блока.

Проверка времени редактирования

Эта проверка поддерживается проверкой времени редактирования. Однако проверка времени редактирования не помечает нарушения всех ограничений этой проверки. В предыдущей таблице явным образом упоминаются условия нарушения ограничения, которые являются флагами проверки времени редактирования.

См. также

Проверка использования дискретных блоков

Код чека: mathworks.slci.DiscreteBlocksUsage

Проверьте использование дискретных блоков, которые могут повлиять на совместимость с Simulink Code Inspector.

Описание

Эта проверка обновляет схему модели и сообщает о несовместимости, обнаруженной в дискретных блоках.

Доступно с инспектором кода Simulink.

Результаты и рекомендуемые действия

ПодпроверитьСостояниеРекомендуемое действие
Проверка блоков задержки установкиПараметр блока Начальные условия (InitialCondition) пуст, не является конечным, использует выбор диапазона или индексирование переменных на элементах структур MATLAB, сложен или имеет два или более измерения.Исправьте параметр «Начальные условия».
Обработка ввода параметров блока (InputProcessing) имеет значение Columns as channels (frame based). Проверка времени редактирования помечает это условие.Установка для обработки ввода значения Elements as channels (sample based) или Inherited.

При разрешении состояния блока в сигнал с пользовательским классом хранения сигнала класс хранения сигнала:

  • Тип не установлен в значение Unstructured.

  • Для инициализации данных установлено значение None.

Измените класс хранения пользовательских сигналов.
Состояние блока разрешается в сигнальный объект с непустым начальным значением.Измените объект сигнала.
Блок используется для изменения скорости.Заменить блок, используемый для перехода скорости, блоком перехода скорости.

Нарушение ограничения, применяемого ко всем блокам.

Исправьте указанный вход или выход блока.
Проверка дискретных блоков интегратораТипы данных портов ввода не single или double для портов без сброса.Изменение типов данных входных портов single или double для портов без сброса.
Входы и выходы не являются скалярами.Измените входные или выходные порты на скаляры.
Типы данных портов вывода не single или double.Изменение типов данных портов вывода single или double.
Входные и выходные порты имеют разные типы данных.Измените типы данных порта для соответствия. Тип данных порта сброса не обязательно должен соответствовать другим типам входных и выходных данных.

Блочный параметр Метод интегратора (IntegratorMethod) не установлен в одно из следующих значений:

  • Integration: Forward Euler

  • Integration: Backward Euler

  • Integration: Trapezoidal

Проверка времени редактирования помечает это условие.

Установите для метода Integrator одно из следующих значений:

  • Integration: Forward Euler

  • Integration: Backward Euler

  • Integration: Trapezoidal

Параметр Block Показать порт состояния (ShowStatePort) выбран. Проверка времени редактирования помечает это условие.Снимите флажок Show state port.
Параметр блока Внешний сброс (ExternalReset) не имеет значение none. Проверка времени редактирования помечает это условие.Установить параметр блока Внешний сброс в none.

Один или оба параметра блока Верхний предел насыщения (UpperSaturationLimit) и нижний предел насыщения (LowerSaturationLimit):

  • Пустые, неграничные или сложные.

  • Использование выбора диапазона или индексирования переменных для элементов структур MATLAB

  • Иметь два или более размера.

Установите для верхнего предела насыщения и нижнего предела насыщения одномерное, несложное конечное значение.
Блок находится внутри условной подсистемы.Измените модель таким образом, чтобы блок дискретного интегратора не находился внутри условной подсистемы.
Поведение параметров по умолчанию (DefaultParameterBehavior) имеет значение Inlined) и источник блока Inport 2 является постоянным.Установите время выборки блоков в явное, непостоянное время выборки. Измените модель таким образом, чтобы источник блока Input 2 не был постоянным.

При разрешении состояния блока в сигнал с пользовательским классом хранения сигнала класс хранения сигнала:

  • Тип не установлен в значение Unstructured.

  • Для инициализации данных установлено значение None.

Измените пользовательский класс хранения.
Состояние блока разрешается в сигнальный объект с непустым начальным значением.Измените объект сигнала.

Нарушение ограничения, применяемого ко всем блокам.

Исправьте указанный вход или выход блока.
Проверить блоки задержкиОбработка ввода параметра блока (InputProcessing) имеет значение Columns as channels (frame based). Проверка времени редактирования помечает это условие.Установите обработку ввода в значение, отличное от Columns as channels (frame based).
Параметр Block Show enable port (Показать разрешенный порт)ShowEnablePort) выбран. Проверка времени редактирования помечает это условие.Снимите флажок Show enable port.

Нарушение ограничения, применяемого ко всем блокам.

 

Проверка времени редактирования

Эта проверка поддерживается проверкой времени редактирования. Однако проверка времени редактирования не помечает нарушения всех ограничений этой проверки. В предыдущей таблице явным образом упоминаются условия нарушения ограничения, которые являются флагами проверки времени редактирования.

См. также

Проверка использования блоков потока состояний

Код чека: mathworks.slci.StateflowBlocksUsage

Проверьте использование блоков Stateflow, которые могут повлиять на совместимость с Simulink Code Inspector.

Описание

Эта проверка обновляет схему модели и сообщает о несовместимости, обнаруженной в блоках Stateflow.

Доступно с инспектором кода Simulink.

Результаты и рекомендуемые действия

ПроверитьСостояниеРекомендуемое действие
Проверка блоков потока состоянияФункциональная упаковка (RTWSystemCode) не имеет значение Inline.Установить упаковку функций в Inline, Nonreusable function или Reusable function. При выборе Nonreusable functionподсистема должна иметь следующие конфигурации:
  • Задайте для параметров имени функции значение User Specified.

  • Установка интерфейса Function в void-void.

  • Установить функцию с отдельными данными в off.

  • Установите параметр модели Code interface packaging в значение Nonreusable function.

При выборе Reusable functionмодель должна использовать следующие конфигурации:
  • Пропускать выходы многоразовой подсистемы относительно Individual arguments

  • Установите параметр модели Code interface packaging в значение Nonreusable function.

Многоразовые подсистемы в модели не являются библиотекой и не являются демаскированными односкоростными атомными подсистемами или подсистемами функционального вызова.Измените повторно используемые подсистемы в модели таким образом, чтобы они были из библиотеки и немаскированных односкоростных подсистем атомного или функционального вызова.

Нарушение ограничения, применяемого ко всем блокам.

Исправьте указанный вход или выход блока.

См. также

Проверка использования блоков String

Код чека: mathworks.slci.StringBlocksUsage

Определите использование блоков String, которые могут повлиять на совместимость с Simulink Code Inspector.

Описание

Эта проверка обновляет схему модели и сообщает о несовместимости, обнаруженной в строковых блоках.

Результаты и рекомендуемые действия

ПодпроверитьСостояниеРекомендуемое действие
Проверка ASCII на строковые блокиРазмер входного сигнала больше или равен значению параметра Buffer size строки динамического размера (байт) (Simulink Coder).Зафиксируйте входной размер.

Нарушение ограничения, применяемого ко всем блокам.

Исправьте указанный вход или выход блока.

См. также

Поддерживаемые ограничения блоков

Проверка использования диаграмм Stateflow

Код чека: mathworks.slci.chartsSFObjsUsage

Проверьте использование диаграмм Stateflow, которые могут повлиять на совместимость с Simulink Code Inspector.

Описание

Эта проверка обновляет схему модели и сообщает о несовместимости, обнаруженной в диаграммах Stateflow.

Доступно с инспектором кода Simulink.

Результаты и рекомендуемые действия

ПодпроверитьСостояниеРекомендуемое действие
Проверка использования палитры объектов Stateflow

Диаграмма содержит один или несколько следующих объектов:

  • Атомарные подшарты

  • Атомные коробки

  • Функции MATLAB

  • Состояния на основе Simulink

Настройте диаграмму так, чтобы она не содержала неподдерживаемых объектов.
Проверка использования имен в диаграмме Stateflow, использующей язык действий MATLABДиаграмма, использующая язык действий MATLAB, не имеет уникальных имен для функций Simulink, графических функций и содержащихся в ней таблиц истинности.Используйте уникальные имена для функций, графических функций и таблиц истинности на диаграмме.
Убедитесь, что на всех диаграммах снят флажок «Create output for monitoring» (Создать выходные данные для мониторинга)Выбрано свойство Chart Создать вывод для мониторинга (установлено значение on).Очистите свойство диаграммы Create output for monitoring parameter.
Убедитесь, что для всех диаграмм указан метод обновления «» Унаследовано Свойство диаграммы Метод Update не имеет значение Inherited.Задайте для метода Update значение Inherited.
Проверьте, что состояния или подсостояния имеют переход по умолчаниюДиаграмма имеет состояние или подсостояние без перехода по умолчанию.Настройте диаграмму таким образом, чтобы состояния и подсостояния имели переходы по умолчанию.
Убедитесь, что для всех диаграмм снят флажок «Включить супершаговую семантику»Выбрано свойство диаграммы Включить супершаговую семантику (установлено значение on). Проверка времени редактирования помечает это условие.Очистите свойство диаграммы Enable Super Step Semantics.
Проверьте, что при инициализации диаграммы не выполняютсяВыбрано свойство Chart Execute (enter) Chart at Initialization (для параметра установлено значение on). Проверка времени редактирования помечает это условие.Очистите свойство диаграммы Execute (enter) Chart at Initialization.
Проверка отсутствия функций экспорта диаграмм на уровне диаграммВыбрано свойство «» Экспорт функций уровня диаграммы «» (установлено значение on). Проверка времени редактирования помечает это условие.Очистите свойство диаграммы «Экспорт функций уровня диаграммы».
Убедитесь, что ни одна диаграмма не указывает насыщение при переполнении для целочисленных операцийВыбрано свойство диаграммы Saturate при целочисленном переполнении (установлено значение on).Очистите свойство диаграммы Saturate при целочисленном параметре переполнения.
Проверка использования типа конечного автоматаСвойству диаграммы State Machine Type присвоено значение Moore. Проверка времени редактирования помечает это условие.Задать для типа конечного автомата значение Classic или Mealy.
Убедитесь, что ни одна диаграмма не поддерживает массивы переменного размераСвойство диаграммы Поддержка массивов переменного размера (установлено значение on).Очистите свойство диаграммы Параметр Support variable-size arrays.
Убедитесь, что все управляющие потоки имеют уникальные переходы по умолчанию Поток управления имеет более 1 перехода по умолчанию.Настройте диаграмму так, чтобы она имела 1 переход по умолчанию.

Проверка времени редактирования

Эта проверка поддерживается проверкой времени редактирования. Однако проверка времени редактирования не помечает нарушения всех ограничений этой проверки. В предыдущей таблице явным образом упоминаются условия нарушения ограничения, которые являются флагами проверки времени редактирования.

См. также

Проверка использования языка действий Stateflow MATLAB

Код чека: mathworks.slci.MATLABactionlanguageStateflowUsage

Проверьте использование языка действий Stateflow MATLAB, который может повлиять на совместимость с Simulink Code Inspector.

Описание

Эта проверка обновляет схему модели и сообщает о несовместимости, обнаруженной при использовании языка действий Stateflow MATLAB.

Доступно с инспектором кода Simulink.

Результаты и рекомендуемые действия

Для выполнения подчек для проверки использования языка действий MATLAB в диаграммах Stateflow см. раздел Проверка использования кода в функциях MATLAB.

См. также

Проверка использования переходов Stateflow

Код чека: mathworks.slci.transitionsSFObjsUsage

Проверьте использование переходов Stateflow, которые могут повлиять на совместимость с Simulink Code Inspector.

Описание

Эта проверка обновляет схему модели и сообщает о несовместимости, обнаруженной в переходах Stateflow.

Доступно с инспектором кода Simulink.

Результаты и рекомендуемые действия

ПодпроверитьСостояниеРекомендуемое действие
Убедитесь, что действия не имеют неподдерживаемых операций

Действие использует операцию, которая не поддерживается:

  • := или =

  • + , += , -, или -=

  • * , *=, / или /=

  • &, && или &=

  • |, || или |=

  • << или >>

  • cast()

  • ^ или ^=

  • %% или <

  • <= или ==

  • ~= или !=

  • <> или >

  • >= или ~

Измените диаграмму так, чтобы действие использовало только поддерживаемые операции.
Проверка индексирования в массивах, состоящих из нескольких измеренийМассив из нескольких измерений использует индексирование.Измените переход, чтобы использовать одномерные массивы или избежать индексирования массивов, которые являются несколькими измерениями.
Убедитесь, что во всех массивах используется индекс типа «» int32 Массив не использует индекс типа данных int32.Изменение индекса массива таким образом, чтобы он использовал тип данных int32.
Проверьте, что все условия перехода имеют логический тип данныхУсловие перехода не относится к логическому типу данных.Измените условие перехода таким образом, чтобы оно имело логический тип данных.
Убедитесь, что никакие действия не имеют доступа к контекстно-зависимым константам Действие использует контекстно-зависимые константы, которые не поддерживаются для проверки кода.Измените действие, чтобы избежать использования контекстно-зависимых констант.
Убедитесь, что никакие действия не имеют доступа к настраиваемым данным Действие обращается к пользовательским данным, которые не поддерживаются для проверки кода.

Измените переходы на:

  • Использовать квалифицированные перечисления.

  • Избегайте доступа к пользовательским данным.

Убедитесь, что условия и действия не имеют неподдерживаемых операций с операндами типов перечисления

Переход использует одну из следующих неподдерживаемых операций над операндом типа перечисления:

  • + или +=

  • - или -=

  • * или *=

  • / или /=

  • & или &=

  • | или |=

  • ^ или ^=

  • %%

  • ~

  • || или &&

  • > или <

  • <= или >=

  • ~= или <>

  • >> или <<

Измените переход, чтобы избежать использования неподдерживаемых операций с операндами типов перечисления.
Убедитесь, что никакие переходы не имеют триггеров событий Переход имеет триггер события, который не поддерживается для проверки кода.Измените переход, чтобы избежать использования триггера события.
Проверка типа данных аргументов графической функцииTransition определяет вызовы графических функций с различными фактическими и ожидаемыми типами данных аргументов.Измените переход, чтобы указать вызовы графических функций с одинаковыми типами данных для фактических и ожидаемых аргументов.
Проверка размеров аргументов графической функцииTransition определяет вызовы графических функций с различными фактическими и ожидаемыми размерами аргументов.Измените переход, чтобы указать вызовы графических функций с одинаковым размером для фактических и ожидаемых аргументов.
Убедитесь, что переходы не имеют действий перехода Переходы имеют действие перехода, которое не поддерживается для проверки кода.Измените переход, чтобы избежать использования действия перехода.
Убедитесь, что переходы Stateflow не используют переменные индукции за пределами циклаПереход имеет неподдерживаемую индукционную переменную повторного использования.Измените переход таким образом, чтобы индукционная переменная не использовалась повторно.
Убедитесь, что никакие действия не содержат функцию, аргумент которой имеет недопустимый тип данных

Математическая функция в действии не является:

  • Аргумент одиночного или двойного типа для следующих функций:

    • acos, asin, atan

    • ceil, cosh, cosh

    • exp, fabs, floor

    • fmod, ldexp, log

    • log10, pow, sin

    • sinh, sqrt, tan, tanh

  • Ненулевой аргумент для следующих функций:

    • abs, max, min

  • Аргумент целочисленного типа для labs функция.

Измените математическую функцию, чтобы использовать поддерживаемые типы данных.
Убедитесь, что переходы не имеют неподдерживаемого шага циклаПереход имеет неподдерживаемый шаг цикла.Измените переход таким образом, чтобы существовала одна инструкция действия, которая увеличивает int32 шаг индукции скалярного цикла с литералом int32 постоянное значение.
Убедитесь, что переходы не имеют неподдерживаемого тела циклаПереход имеет неподдерживаемое тело цикла.Измените переход таким образом, чтобы не было действий, переопределяющих переменную индукции цикла.
Убедитесь, что переходы не имеют неподдерживаемого условия циклаПереход имеет неподдерживаемое состояние цикла.Измените условие перехода таким образом, чтобы оно имело одно < или одиночный <= условие с литералом int32 постоянная граница и скаляр int32 индукционная переменная контура.
Проверка допустимой переменной индукции при переходе, определяющей условия циклаПереход, определяющий условие цикла, имеет недопустимую переменную индукции.Изменение условия цикла таким образом, чтобы он имел только один < или <= условие со скалярной переменной индукции локального или временного цикла области Stateflow.
Убедитесь, что переходы не имеют неподдерживаемой инициализации переменной индукции циклаПереход имеет неподдерживаемую инициализацию переменной индукции цикла.Измените переход так, чтобы инициализация переменной индукции скалярного цикла была одной инструкцией действия, которая использует int32 тип данных и инициализирует переменную с помощью литеральной константы int32 значение.
Убедитесь, что никакие действия не содержат оператора xor с логическими операндамиДействие содержит XOR оператор с логическими операндами с параметром модели Casting mode имеет значение Standards.Измените действие, чтобы избежать использования XOR оператор с логическими операндами или установите для режимов Casting значение Nominal.
Убедитесь, что никакие действия не содержат двоичного оператора, операнды которого имеют смешанный тип данных Действие содержит двоичный оператор операндов смешанного типа данных, который не поддерживается для проверки кода.Измените диаграмму, чтобы избежать использования двоичных операторов с операндами смешанного типа данных.
Убедитесь, что ни один переход не имеет функции с более чем 2 аргументамиПереход имеет функцию с более чем 2 аргументами.Измените каждую функцию, чтобы она имела не более 2 аргументов. Возможно, можно заменить функцию более чем на 2 аргумента рядом функций, имеющих не более 2 аргументов. Например, MinMax функцию с 3 входами можно заменить на 2 MinMax функции, каждая с 2 аргументами.
Проверка типа данных аргумента Simulink FunctionФактический тип данных аргумента вызова функции Simulink отличается от типа данных аргумента ввода и вывода в определяющей подсистеме вызова функции.Измените вызов функции Simulink таким образом, чтобы он имел тот же тип данных аргумента, что и ввод и вывод в определяющей подсистеме вызовов функций.
Проверка размера аргумента Simulink FunctionФактический размер аргумента вызова функции Simulink отличается от размера аргумента входа и выхода в определяющей подсистеме вызова функции.Измените вызов функции Simulink таким образом, чтобы он имел тот же размер данных аргумента, что и вход и выход в определяющей подсистеме вызова функции.
Проверьте отсутствие времени доступа к действиям (t) Действие получает доступ к времени, которое не поддерживается для проверки кода.Измените действие, чтобы избежать доступа ко времени.
Проверка типа данных аргументов таблицы истинностиПереход указывает таблицу истинности с различными фактическими и ожидаемыми типами данных аргументов.Измените переход, чтобы указать таблицы истинности для использования одних и тех же типов данных для фактических и ожидаемых аргументов.
Проверка размеров аргументов таблицы истинностиПереход задает таблицу истинности с различными фактическими и ожидаемыми размерами аргументов.Измените переход, чтобы указать таблицы истинности, чтобы использовать одинаковые размеры для фактических и ожидаемых аргументов.
Проверка неназначенных выходных данных графических функцийДиаграмма определяет вызовы графических функций с различным количеством фактических и ожидаемых выходов.Измените диаграмму таким образом, чтобы графические функции назначали все выходы.
Убедитесь, что переходы Stateflow не настроены как переходы исполненияДиаграмма потока состояний содержит переходы, настроенные как переходы вариантов.Измените диаграмму, чтобы избежать использования вариационных переходов.

См. также

Проверка использования соединений Stateflow

Код чека: mathworks.slci.junctionsSFObjsUsage

Проверьте использование соединений Stateflow, которые могут повлиять на совместимость с Simulink Code Inspector.

Описание

Эта проверка обновляет схему модели и сообщает о несовместимости, обнаруженной в соединениях Stateflow.

Доступно с инспектором кода Simulink.

Результаты и рекомендуемые действия

ПодпроверитьСостояниеРекомендуемое действие
Убедитесь, что переходы Stateflow не имеют исходящих переходов, переходящих за пределы контураСоединение имеет исходящий переход, который проскакивает за пределы тела петли.Измените диаграмму таким образом, чтобы переход в контуре не имел исходящих переходов, переходящих за пределы контура.
Убедитесь, что неразрывные соединения имеют только один безусловный выходной переходНеразрывное соединение не имеет ровно одного безусловного выходящего перехода. Один безусловный выход из перехода предотвращает обратное отслеживание и затенение перехода.Измените соединение таким образом, чтобы оно имело один безусловный выходящий переход.
Убедитесь, что диаграмма не использует соединения истории Диаграмма содержит соединение истории.Измените диаграмму таким образом, чтобы она не содержала соединения истории.
Убедитесь, что управляющие потоки не имеют контуров с неподдерживаемыми соединениями заголовковСоединение заголовка не имеет двух входящих и двух исходящих переходов.Измените соединение заголовка таким образом, чтобы оно имело два входящих и два исходящих перехода.
Проверка использования оконечных соединений StateflowПри завершении соединения трассировка возвращается в состояние Stateflow.Измените соединение таким образом, чтобы оно не возвращалось в состояние Stateflow.
Проверка структуры управляющих потоков Диаграмма содержит неструктурированные управляющие потоки, которые не поддерживаются для проверки кода.Измените диаграмму таким образом, чтобы она не содержала неструктурированных потоков управления.
Проверьте, что безусловные переходы выполняются последним в порядке выполнения Безусловный переход не является последним в порядке выполнения. Измените диаграмму так, чтобы безусловный переход был последним в порядке выполнения. Это предотвращает затенение перехода.

См. также

Проверка использования данных Stateflow

Код чека: mathworks.slci.dataSFObjsUsage

Проверьте использование данных Stateflow, которые могут повлиять на совместимость с Simulink Code Inspector.

Описание

Эта проверка обновляет схему модели и сообщает о несовместимости, обнаруженной в данных Stateflow.

Доступно с инспектором кода Simulink.

Результаты и рекомендуемые действия

ПодпроверитьСостояниеРекомендуемое действие
Убедитесь, что диаграмма не определяет данные потока состояний с постоянной областью действия Диаграмма определяет данные потока состояний с помощью Constant сфера применения.Изменение диаграммы во избежание определения данных Stateflow с помощью Constant сфера применения.
Проверка использования метода инициализации данных StateflowInitializeMethod для Local или Output scope stateflow data имеет значение Parameter. Изменить не заданную диаграмму InitializeMethod кому Parameter. В обозревателе моделей для данных потока состояний сLocal или Output область, можно задать InitializeMethod для начального значения для Expression.
Убедитесь, что состояния и поля не определяют данные потока состоянийСостояние или поле определяет данные потока состояний.Измените состояние или поле так, чтобы оно не определяло данные потока состояний.
Убедитесь, что данные Stateflow имеют поддерживаемый тип данных Типы данных диаграммы не builtin, enumerated, или bus. Если типом данных диаграммы является bus и диаграмма использует C в качестве языка действий, данные являются массивом шин или имеют элементы, которые являются массивами шин. Если тип данных диаграммы - enumerated, значение по умолчанию для данных не 0.Изменение типов данных диаграммы builtin, enumerated, или bus. Если тип данных диаграммы - bus и диаграмма использует C в качестве языка действий, измените диаграмму так, чтобы данные не были массивом шин или имели элементы, которые являются массивами шин. Если тип данных диаграммы - enumerated, обновите диаграмму так, чтобы enumerated тип данных имеет значение по умолчанию 0.
Убедитесь, что первый индекс данных Stateflow пуст или равен 0 First Index свойство для данных Stateflow не пусто или равно 0.Изменение First Index свойство данных Stateflow должно быть пустым или равным 0.
Проверьте соответствие размеров данных параметра Stateflow в Stateflow и базовой рабочей областиРазмер данных параметров Stateflow отличается в Stateflow и в базовой рабочей области.Измените размер параметров Stateflow таким образом, чтобы они совпадали в Stateflow и базовой рабочей области.
Проверьте, что диаграмма использует только несложные данные. Диаграмма использует сложные данные.Измените диаграмму так, чтобы она не использовала сложные данные.

См. также

Проверка использования событий Stateflow

Код чека: mathworks.slci.eventsSFObjsUsage

Проверьте использование событий Stateflow, которые могут повлиять на совместимость с Simulink Code Inspector.

Описание

Эта проверка обновляет схему модели и сообщает о несовместимости, обнаруженной в событиях Stateflow.

Доступно с инспектором кода Simulink.

Результаты и рекомендуемые действия

ПроверитьСостояниеРекомендуемое действие
Проверьте, что в диаграмме используются только события области Local или OutputОбласть события не Output или Local.Изменение диаграмм во избежание использования входных событий.
Проверьте, что в диаграмме используются только события вызова функции.Триггер события не function-call.Изменить модель таким образом, чтобы триггер события был function-call

См. также

Проверка использования состояний Stateflow

Код чека: mathworks.slci.statesSFObjsUsage

Проверьте использование состояний Stateflow, которые могут повлиять на совместимость с Simulink Code Inspector.

Описание

Эта проверка обновляет схему модели и сообщает о несовместимости, обнаруженной в состояниях Stateflow.

Доступно с инспектором кода Simulink.

Результаты и рекомендуемые действия

ПроверитьСостояниеРекомендуемое действие
Убедитесь, что управляющие потоки не имеют цикловДиаграмма содержит циклы потока управления, которые не поддерживаются для проверки кода.Настройте диаграмму таким образом, чтобы она не содержала циклов управляющего потока.
Убедитесь, что действия не имеют неподдерживаемых операций

Действие использует операцию, которая не является:

  • := или =

  • + , += , -, или -=

  • * , *=, / или /=

  • &, && или &=

  • |, || или |=

  • << или >>

  • cast()

  • ^ или ^=

  • %% или <

  • <= или ==

  • ~= или !=

  • <> или >

  • >= или ~

Измените диаграмму так, чтобы действие использовало только поддерживаемые операции.
Проверка индексирования в массивах, состоящих из нескольких измерений

Массив из нескольких измерений использует индексирование.

Измените состояние, чтобы использовать одномерные массивы, или избегайте индексирования массивов, которые являются несколькими измерениями.
Убедитесь, что во всех массивах используется индекс типа «» int32 Массив не использует индекс типа данных int32.Изменение индекса массива таким образом, чтобы он использовал тип данных int32.
Убедитесь, что никакие действия не имеют доступа к контекстно-зависимым константамДействие использует контекстно-зависимые константы, которые не поддерживаются для проверки кода.Измените действие, чтобы избежать использования контекстно-зависимых констант.
Убедитесь, что никакие действия не имеют доступа к настраиваемым даннымДействие обращается к пользовательским данным, которые не поддерживаются для проверки кода.Измените действие, чтобы избежать доступа к пользовательским данным.
Проверьте, что состояния или подсостояния имеют переход по умолчаниюДиаграмма имеет состояние или подсостояние без перехода по умолчанию.Настройте диаграмму таким образом, чтобы состояния и подсостояния имели переходы по умолчанию.
Убедитесь, что действия не имеют неподдерживаемых операций с операндами типов перечисления

Состояние использует одну из следующих неподдерживаемых операций над операндом типа перечисления:

  • + или +=

  • - или -=

  • * или *=

  • / или /=

  • & или &=

  • | или |=

  • ^ или ^=

  • %%

Измените состояние, чтобы избежать использования неподдерживаемых операций с операндами типов перечисления.
Проверка типа данных аргументов графической функцииСостояние определяет вызовы графических функций с различными фактическими и ожидаемыми типами данных аргументов.Измените состояние, чтобы указать вызовы графических функций с одинаковыми типами данных для фактических и ожидаемых аргументов.
Проверка размеров аргументов графической функцииСостояние определяет вызовы графических функций с различными фактическими и ожидаемыми размерами аргументов.Измените состояние, чтобы указать вызовы графических функций с одинаковым размером для фактических и ожидаемых аргументов.
Убедитесь, что никакие действия не содержат функцию, аргумент которой имеет недопустимый тип данных

Математическая функция в действии не является:

  • Аргумент одиночного или двойного типа для следующих функций:

    • acos, asin, atan

    • ceil, cosh, cosh

    • exp, fabs, floor

    • fmod, ldexp, log

    • log10, pow, sin

    • sinh, sqrt, tan, tanh

  • Ненулевой аргумент для следующих функций:

    • abs, max, min

  • Аргумент целочисленного типа для labs функция.

Измените математическую функцию, чтобы использовать поддерживаемые типы данных.
Убедитесь, что никакие действия не содержат оператора xor с логическими операндамиДействие содержит XOR оператор с логическими операндами с параметром модели Casting mode имеет значение Standards.Измените действие, чтобы избежать использования XOR оператор с логическими операндами или установите для режимов Casting значение Nominal.
Убедитесь, что никакие действия не содержат двоичного оператора, операнды которого имеют смешанный тип данныхДействие содержит двоичный оператор операндов смешанного типа данных, который не поддерживается для проверки кода.Измените диаграмму, чтобы избежать использования двоичных операторов с операндами смешанного типа данных.
Убедитесь, что ни одна функция Stateflow не имеет более 2 аргументовФункция Stateflow имеет более 2 аргументов.Измените функцию Stateflow, чтобы она содержала не более 2 аргументов. Возможно, можно заменить функцию рядом функций, каждая из которых содержит не более 2 аргументов.
Проверка использования состояний с рекурсивными вызовами функции отправкиСостояние содержит рекурсивные вызовы функции отправки.Измените состояние, чтобы не было рекурсий.
Проверка типа данных аргументов Simulink FunctionСостояние определяет вызов функции с различными фактическими и ожидаемыми типами данных аргумента.Измените состояние, чтобы указать вызовы функции Simulink для использования одних и тех же типов данных для фактических и ожидаемых аргументов.
Проверка размеров аргументов функции SimulinkСостояние определяет вызов функции с различными фактическими и ожидаемыми размерами аргументов.Измените состояние, чтобы указать вызовы функции Simulink для использования одних и тех же размеров для фактических и ожидаемых аргументов.
Проверка использования состояния Stateflow InlineOptionСвойству State Function Inline Option присвоено значение Auto или Function.Задать для свойства состояния Функция Встроенный параметр значение Inline.
Проверьте, что все состояния отменили выбор параметра «Create output for monitoring» (Создать выходные данные для мониторинга).Свойство State Выберите команду Create output for monitoring (значение: on).Удалите свойство state Create output for monitoring parameter.
Проверьте отсутствие времени доступа к действиям (t)Действие получает доступ к времени, которое не поддерживается для проверки кода.Измените действие, чтобы избежать доступа ко времени.
Проверка типа данных аргументов таблицы истинностиСостояние указывает таблицу истинности с различными фактическими и ожидаемыми типами данных аргументов.Измените состояние, чтобы указать таблицы истинности для использования одних и тех же типов данных для фактических и ожидаемых аргументов.
Проверка размеров аргументов таблицы истинностиСостояние указывает таблицу истинности с различными фактическими и ожидаемыми размерами аргументов.Измените состояние, чтобы указать таблицы истинности, чтобы использовать одинаковые размеры для фактических и ожидаемых аргументов.
Проверка структуры управляющих потоковСостояние содержит неструктурированные управляющие потоки, которые не поддерживаются для проверки кода.Настройте диаграмму таким образом, чтобы она не содержала неструктурированных потоков управления.
Убедитесь, что все управляющие потоки имеют уникальные переходы по умолчаниюПоток управления имеет более 1 перехода по умолчанию.Настройте диаграмму так, чтобы она имела 1 переход по умолчанию.
Проверьте, что все пути перехода являются либо внутренними переходами в подсостояние, либо внешними переходами в родственные, прямые родительские или прямые подсостояния.

Состояние использует путь перехода, который не является одним из следующих:

  • От внутренней до подсостояния

  • Внешний для родственных братьев и сестер

  • Прямой родитель

  • Прямое подсостояние

Настройте переходы таким образом, чтобы они использовали поддерживаемый путь.
Проверка неназначенных выходных данных графических функцийДиаграмма определяет вызовы графических функций с различным количеством фактических и ожидаемых выходов.Измените диаграмму таким образом, чтобы графические функции назначали все выходы.

См. также

Проверка использования графических функций Stateflow

Код чека: mathworks.slci.graphicalfunctionsSFObjsUsage

Проверьте использование графических функций Stateflow, которые могут повлиять на совместимость с Simulink Code Inspector.

Описание

Эта проверка обновляет схему модели и сообщает о несовместимости, обнаруженной в графических функциях Stateflow.

Доступно с инспектором кода Simulink.

Результаты и рекомендуемые действия

ПроверитьСостояниеРекомендуемое действие
Убедитесь, что управляющие потоки не имеют цикловГрафическая функция содержит циклы потока управления, которые не поддерживаются для проверки кода.Настройте графическую функцию таким образом, чтобы она не содержала циклов управляющего потока.
Проверка использования параметра InlineOptionСвойство графической функции Функция Встроенная опция имеет значение Auto.Задайте для свойства графической функции Функция встроенная опция значение Inline или Function.
Проверка конфигурации моделей с неинлинированными графическими функциямиДля графической функции с функцией «Встроенный» (Function Inline Option) (InlineOption) установите в значение Function, параметр конфигурации Кодовая упаковка интерфейса (CodeInterfacePackaging) не имеет значение Nonreusable functionВ диалоговом окне «Параметры конфигурации» на панели «Создание кода» > «Интерфейс» установите для параметра «Упаковка интерфейса кода» (Simulink Coder) значение Nonreusable function.
Проверка неинлинированных графических имен функцийНеинкрементированная функция не имеет уникального имени функции.Измените имена функций неинлинированных графических функций, чтобы они были уникальными.
Проверка использования рекурсивной функции StateflowГрафическая функция рекурсивна.Настройте графическую функцию таким образом, чтобы она не была рекурсивной.
Проверка структуры управляющих потоковГрафическая функция содержит неструктурированные управляющие потоки, которые не поддерживаются для проверки кода.Настройте графическую функцию таким образом, чтобы она не содержала неструктурированных потоков управления.

См. также

Проверка использования таблиц истинности Stateflow

Код чека: mathworks.slci.truthtablesSFObjsUsage

Проверьте использование таблиц истинности Stateflow, которые могут повлиять на совместимость с Simulink Code Inspector.

Описание

Эта проверка обновляет схему модели и сообщает о несовместимости, обнаруженной в таблицах истинности Stateflow.

Доступно с инспектором кода Simulink.

Результаты и рекомендуемые действия

ПроверитьСостояниеРекомендуемое действие
Убедитесь, что управляющие потоки не имеют цикловТаблица истинности содержит циклы потока управления, которые не поддерживаются для проверки кода.Настройте таблицу истинности таким образом, чтобы она не содержала циклов управляющего потока.
Проверка использования параметра InlineOptionСвойство Truth table Параметр Function Inline имеет значение Auto или Function.Установить свойство таблицы истинности Функция Встроенный параметр в значение Inline.
Проверка использования рекурсивной функции StateflowТаблица истинности рекурсивна.Настройте таблицу истинности таким образом, чтобы она не была рекурсивной.
Проверка использования языка таблицы истинности StateflowСвойство таблицы истинности Язык имеет значение MATLAB.Задать язык как C.
Проверка структуры управляющих потоковТаблица истинности содержит неструктурированные управляющие потоки, которые не поддерживаются для проверки кода.Настройте таблицу истинности таким образом, чтобы она не содержала неструктурированных потоков управления.

См. также

Проверка использования функциональных блоков MATLAB

Код чека: mathworks.slci.MATLABFunctionBlocksUsage

Определите функциональные блоки MATLAB, которые могут повлиять на совместимость с Simulink Code Inspector.

Описание

Эта проверка обновляет схему модели и сообщает о несовместимости, обнаруженной в функциональных блоках MATLAB.

Доступно с инспектором кода Simulink.

Результаты и рекомендуемые действия

ПодпроверитьСостояниеРекомендуемое действие
Проверьте имена блоков, которые содержат символы «/* »,« */» или начинаются или заканчиваются символом «*»

Имя блока:

  • Содержит "*/«или»/*’.

  • Начинается или заканчивается на "*’.

Измените имя блока в списке.
Проверка неподдерживаемого использования класса храненияБлок является постоянным и имеет выходы класса хранения, отличного от автоматического.Измените блок, изменив класс хранения выходного сигнала или время выборки блока. Например, если блок или его источник является блоком Constant, установите время выборки этого блока Constant в явное, непостоянное время выборки.
Проверка неподдерживаемых тестовых точекБлок является постоянным, а исходящий порт проверяется.Измените блок, удалив тестовые точки выходного сигнала или изменив время выборки блока. Например, если блок или его источник является блоком Constant, установите время выборки этого блока Constant в явное, непостоянное время выборки.
Проверка класса хранения блочных выходовБлок использует неподдерживаемый пользовательский класс хранения Тип, Инициализация данных или Значение (InitialValue).

Измените класс хранения выходного пользовательского сигнала:

  • Тип имеет значение Unstructured.

  • Инициализация данных имеет значение, отличное от None.

  • Начальное значение (InitialValue) пуст.

Проверка блоков с более чем двумерными входами или выходамиБлок ввода или вывода не является скалярной, векторной или 2-D матрицей.Измените входной или выходной порт блока на скалярную, векторную или 2-D матрицу.
Проверка отсутствия обрамления входов и выходовБлок ввода или вывода использует сигналы на основе кадров.Измените модель таким образом, чтобы блоки использовали входные и выходные данные на основе образцов. Проверьте восходящие блоки блоков, перечисленных в результатах, на наличие блоков, выводящих сигналы на основе кадров.
Проверьте, что для всех функций MATLAB для параметра «Update method» установлено значение «Inherated».Функция MATLAB не устанавливает для метода Update значение Inherited.Измените функцию MATLAB, чтобы задать для метода Update значение Inherited.
Определение подсистем с неподдерживаемыми конфигурациями для неинлинизированныхДля функционального блока MATLAB, Упаковка функций (RTWSystemCode) не имеет значение Inline.Измените функциональный блок MATLAB, чтобы установить упаковку функций (RTWSystemCodeКому Inline, Nonreusable function или Reusable function. При выборе Nonreusable functionподсистема должна иметь следующие конфигурации:
  • Задайте для параметров имени функции значение User Specified.

  • Установка интерфейса Function в void-void.

  • Установить функцию с отдельными данными в off.

  • Установите параметр модели Code interface packaging в значение Nonreusable function.

При выборе Reusable functionмодель должна использовать следующие конфигурации:
  • Пропускать выходы многоразовой подсистемы относительно Individual arguments

  • Установите параметр модели Code interface packaging в значение Nonreusable function.

Проверьте, что многоразовые подсистемы в модели получены из библиотеки и являются демаскированными подсистемами односкоростного атомного или функционального вызова.Многоразовые подсистемы в модели не являются библиотекой и не являются демаскированными односкоростными атомными или функциональными подсистемами. Измените повторно используемые подсистемы в модели таким образом, чтобы они были из библиотеки. Эти подсистемы должны быть демаскированными односкоростными атомными подсистемами или подсистемами функционального вызова.
Проверьте, что функции MATLAB не содержат входных триггерных сигналовФункция MATLAB содержит входные триггерные сигналы.Измените функцию MATLAB, чтобы удалить использование входных триггерных сигналов.
Убедитесь, что блоки, которые являются постоянными или параметры которых могут быть настроены, не управляют двумя или более многоскоростными блоками без использования явных блоков перехода скоростиБлок, который является постоянным или имеет параметры, которые могут быть настроены, управляет двумя или более многоскоростными блоками без использования явных блоков Rate Transition.Измените блок, чтобы использовать явные блоки Rate Transition.
Проверьте, что для всех функций MATLAB установлено значение «Saturate on integer overflow» (Насыщение при переполнении целого числа) «Off» (Выкл).Функция MATLAB не очищается (установлено значение off) Сатурат при целочисленном переполнении (SaturateOnIntegerOverflow) параметр.Изменение функции MATLAB на сброс (значение off) Сатурат при целочисленном переполнении (SaturateOnIntegerOverflow) параметр.
Проверьте, что для всех функций MATLAB установлено значение «Рассматривать наследуемые типы сигналов Simulink как объекты fi:», отличное от «Фиксированная точка и целое число».Функции MATLAB определяют эти унаследованные типы сигналов Simulink как объекты fi для Fixed-point & Integer.Измените функцию MATLAB, чтобы установить для параметра Обработать унаследованные типы сигналов Simulink как объекты fi значение, отличное от Fixed-point & Integer.
Проверьте, что для всех функций MATLAB в поле «Support variable-size arrays» установлено значение «Off».Функция MATLAB не очищается (установлено значение off) Параметр Support variable-size arrays.Изменение функции MATLAB на сброс (значение off) Параметр Support variable-size arrays.

См. также

Проверка использования данных в функциях MATLAB

Код чека: mathworks.slci.MATLABFunctionDataUsage

Определите данные в функциях MATLAB, которые могут повлиять на совместимость с Simulink Code Inspector.

Описание

Эта проверка обновляет схему модели и сообщает о несовместимости, обнаруженной с данными в функциях MATLAB.

Доступно с инспектором кода Simulink.

Результаты и рекомендуемые действия

ПодпроверитьСостояниеРекомендуемое действие
Проверьте, что данные, определенные в функции MATLAB, имеют поддерживаемый тип данных.Данные не имеют поддерживаемого типа данных: встроенный, шинный или перечисляемый тип, унаследованный от Simulink.IntEnumType.Измените данные на поддерживаемый тип данных.
Проверьте, что данные, определенные в функции MATLAB, имеют поддерживаемое измерениеДанные не являются скаляром, вектором или матрицей.Измените данные на скаляр, вектор или матрицу.
Проверка несложности данных, определенных в функции MATLABДанные сложны.Измените функцию MATLAB, чтобы избежать использования сложных данных.

См. также

Проверка использования корневых блоков Outport

Код чека: mathworks.slci.RootOutportBlocksUsage

Проверьте использование корневых блоков Outport, которые могут повлиять на совместимость с Simulink Code Inspector.

Описание

Эта проверка обновляет схему модели и сообщает о несовместимости использования корневого блока Outport.

Доступно с инспектором кода Simulink.

Результаты и рекомендуемые действия

ПодпроверитьСостояниеРекомендуемое действие
Проверка времени образцаОдин или несколько корневых блоков Outport являются постоянными. Это приведет к сбою проверки функций модели, поскольку назначение корневого исходящего порта перемещается в функцию инициализации модели.Задайте для времени выборки корневого блока Outport явное, неконкретное время выборки.
Проверка того, что корневые выходы передают шины родительским моделям в виде структурОдин или несколько корневых блоков Outport передают шину родительской модели, не передавая шину в виде структуры. Это может привести к тому, что программное обеспечение Simulink вставит в родительскую модель скрытый блок преобразования сигнала, который не поддерживается для проверки кода.Для каждого экземпляра откройте диалоговое окно Блок выхода (Outport block) и выберите параметр Вывод (Output) в качестве невиртуальной шины в родительской модели (BusOutputAsStruct).

См. также

Ограничения атрибутов на уровне модели

Проверка использования шин

Код чека: mathworks.slci.BusUsage

Проверьте использование шин, которые могут повлиять на совместимость с Simulink Code Inspector.

Описание

Эта проверка обновляет схему модели и сообщает о несовместимости использования шины.

Доступно с инспектором кода Simulink.

Результаты и рекомендуемые действия

ПодпроверитьСостояниеРекомендуемое действие
Проверка автоматического преобразования между виртуальными и невиртуальными шинамиПрограммное обеспечение Simulink выполняло автоматическое преобразование из виртуальной в невиртуальную шину на интерфейсе одного или нескольких перечисленных блоков. Это создает скрытый блок преобразования сигнала, который не поддерживается для проверки кода.Измените модель, чтобы использовать невиртуальные шины на интерфейсах перечисленных блоков.
Убедитесь, что блоки в модели не выполняют неподдерживаемые операции на шинеВ модели невиртуальный блок работает на виртуальной шине, или блок назначения шины работает на невиртуальной шине.Измените модель таким образом, чтобы никакие невиртуальные блоки не работали на виртуальной шине, и никакие блоки назначения шины не работали на невиртуальной шине.

См. также

Ограничения атрибутов на уровне модели

Проверка использования общих утилит

Код чека: mathworks.slci.SharedUtils

Проверьте использование общих утилит, которые могут повлиять на совместимость с Simulink Code Inspector.

Описание

Эта проверка обновляет схему модели и определяет несовместимость с использованием общих утилит.

Поддерживаемые общие утилиты:

  • binsearch_u32d

  • intrp1d_l

  • intrp2d_l

  • intrp3d_l

  • look1_binlc

  • look2_binlc

  • plook_binlc

  • rt_hypotd

  • rt_hypotf

  • rt_modd

  • rt_modf

  • rt_remd

  • rt_remf

  • rt_roundd

  • rt_roundf

Доступно с инспектором кода Simulink.

Результаты и рекомендуемые действия

ПодпроверитьСостояниеРекомендуемое действие
Проверьте настройки символов генерации кода для проверки общих утилитЗначения параметров символов генерации кода не поддерживаются для проверки общих утилит.В диалоговом окне «Параметры конфигурации» на панели «Создание кода» > «Идентификаторы» установите для параметра «Локальные временные переменные» (встроенный кодер) значение по умолчанию. $N$M и установите формат идентификатора общих утилит (Embedded Coder) в значение по умолчанию $N$C.
Проверка стандартных параметров математической библиотеки для проверки общих утилитСтандартные настройки математической библиотеки не поддерживаются для проверки общих утилит.В диалоговом окне «Параметры конфигурации» на панели «Создание кода» > «Интерфейс» задайте для параметра «Стандартная математическая библиотека» (Simulink Coder) значение C89/C90 (ANSI) или C99.
Проверка параметров стиля кода для проверки общих утилитЗначения параметров конфигурации стиля кода не поддерживаются для проверки общих утилит.

В диалоговом окне «Параметры конфигурации» на панели «Создание кода» > «Стиль кода»:

См. также

Ограничения атрибутов на уровне модели