Используйте проверки Simulink ® Code Inspector™ Model Advisor для настройки модели для проверки кода. При наличии лицензии Simulink Check™ можно использовать проверку времени редактирования для выявления проблем совместимости в процессе разработки модели. Подмножество проверок Model Advisor поддерживает проверку времени редактирования. Однако проверка времени редактирования не помечает нарушения для всех ограничений поддерживаемых проверок Model Advisor. Он помечает некоторые определенные нарушения ограничений.
Проверки кодера Simulink (кодер Simulink)
Проверки Simulink (проверка Simulink)
Код чека: mathworks.slci.CodeGenerationSettings
Проверьте параметры создания кода в конфигурации модели, которые могут повлиять на совместимость с Simulink Code Inspector.
Эта проверка проверяет, совместимы ли настройки создания кода с проверкой кода.
Доступно с инспектором кода Simulink.
| Подпроверить | Состояние | Рекомендуемое действие |
|---|---|---|
| Проверьте параметр «Использовать динамическое выделение памяти для инициализации модели» | Модель настроена на динамическое выделение памяти. | В диалоговом окне Параметры конфигурации снимите флажок Использовать динамическое выделение памяти для инициализации модели (Simulink Coder). |
| Проверьте параметр «Размещение общего кода» | Модель не настроена на создание общего служебного кода в общем расположении. Если общий служебный код генерируется в инспектор кода 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). |
| Проверьте параметр «Требуется завершение функции» | Модель сконфигурирована для генерации функция, потенциально содержащая код завершения модели, который должен выполняться во время завершения работы системы. Это не поддерживается для проверки кода. | В диалоговом окне 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» | Модель сконфигурирована для генерации кода в отдельном и функции, а не функция, объединяющая эти два элемента. | В диалоговом окне «Параметры конфигурации» выберите функцию 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. |
Код чека: mathworks.slci.DataImportSettings
Проверьте параметры импорта/экспорта данных в конфигурации модели, которые могут повлиять на совместимость с Simulink Code Inspector.
Эта проверка проверяет совместимость параметров импорта/экспорта данных с проверкой кода.
Доступно с инспектором кода Simulink.
| Подпроверить | Состояние | Рекомендуемое действие |
|---|---|---|
| Проверьте параметр «Начальное состояние» | Модель настроена на загрузку начальных состояний из рабочей области, которая несовместима с проверкой кода. | В диалоговом окне Параметры конфигурации (Configuration Parameters) на панели Импорт/экспорт данных (Data Import/Export) снимите флажок Начальное состояние (Initial state). |
Код чека: 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. |
| Проверьте параметр «Недопустимый доступ к входным данным при инициализации диаграммы» | Модель не настроена на создание ошибки, если диаграмма:
| В диалоговом окне 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). |
Код чека: 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
|
Код чека: 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)) |
Код чека: 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) снимите флажок Разрешить одновременное выполнение задач в целевом устройстве. |
Код чека: mathworks.slci.UnconnectedObjects
Проверьте наличие неподключенных портов и линий в модели.
Эта проверка сообщает о несвязанных линиях, входных портах и выходных портах в модели или подсистеме.
Доступно с инспектором кода Simulink.
| Подпроверить | Состояние | Рекомендуемое действие |
|---|---|---|
| Проверка на наличие неподключенных объектов | В модели или подсистеме неправильно подключены одна или несколько линий, входных или выходных портов. Это может привести к появлению мертвого кода или скрытых блоков заземления. | Подключите или удалите затронутые блоки. |
Код чека: mathworks.slci.SystemTargetFileSettings
Проверьте наличие неподключенных портов и линий в модели.
Проверьте, выбран ли совместимый целевой системный файл для модели.
Эта проверка проверяет, что выбранный для модели системный целевой файл ert.tlc или является производным от ert.tlc.
Доступно с инспектором кода Simulink.
| Подпроверить | Состояние | Рекомендуемое действие |
|---|---|---|
| Проверка параметров целевого файла системы | Выбранный для модели системный целевой файл не является ert.tlc или цель, полученная из ERT. | В диалоговом окне «Параметры конфигурации» на панели «Создание кода» установите для параметра «Системный целевой файл» (Simulink Coder) значение ert.tlc или цель, полученная из ERT. |
Код чека: mathworks.slci.FcnSpecSettings
Проверьте параметры спецификации функции, которые могут повлиять на совместимость с Simulink Code Inspector.
Эта проверка проверяет, совместимы ли настройки управления прототипом функции с проверкой кода.
Доступно с инспектором кода Simulink.
| Подпроверить | Состояние | Рекомендуемое действие |
|---|---|---|
| Проверка настройки интерфейса функции шага C | Модель определяет пользовательские прототипы функций для функций ввода модели. Это не поддерживается для проверки кода. | В ракурсе кода Simulink Editor в редакторе сопоставлений кодов перейдите на вкладку «Функции». В строке функции шага щелкните функцию в столбце Предварительный просмотр функции. В диалоговом окне Configure C Step Function Interface снимите флажок Configure arguments for Step function prototype. |
Код чека: mathworks.slci.StateflowMachineData
Проверьте модель для данных Stateflow области компьютера. Данные объема машины несовместимы с инспектором кода Simulink
Эта проверка проверяет, что модель не содержит данных Stateflow области компьютера.
Доступно с инспектором кода Simulink.
| Подпроверить | Состояние | Рекомендуемое действие |
|---|---|---|
| Все данные 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
Проверьте наличие аргументов модели с классом хранения.
Эта проверка проверяет, что аргументы модели не имеют класса хранения.
| Подпроверить | Состояние | Рекомендуемое действие |
|---|---|---|
| Проверка аргументов модели для классов хранения | Аргумент модели имеет класс хранения. | Измените модель таким образом, чтобы аргументы модели не имели классов хранения. |
Код чека: mathworks.slci.MATLABFunctionCodeUsage
Определите код в функциях MATLAB, который может повлиять на совместимость с Simulink Code Inspector.
Эта проверка обновляет схему модели и сообщает о несовместимости, обнаруженной с кодом в функциях MATLAB.
Доступно с инспектором кода Simulink.
| Подпроверить | Состояние | Рекомендуемое действие |
|---|---|---|
| Проверка неинлинированных пользовательских функций с глобальными переменными в коде MATLAB | Использование неинлинированных пользовательских функций с глобальными переменными не поддерживается. |
|
| Проверьте, что неинлинированные пользовательские функции в коде MATLAB содержат только один вывод | Неинкрементированные функции определяют несколько выходных данных. | Измените код MATLAB таким образом, чтобы неинлинированные пользовательские функции определяли только один вывод. |
| Проверьте, использует ли подстрочный индекс массива в коде MATLAB постоянный индекс 1 для соответствующего измерения размера 1 | Индекс массива в коде MATLAB использует значение индекса, отличное от 1, для соответствующего измерения массива размера 1. | Измените код MATLAB так, чтобы в подстрочном индексе массива использовался постоянный индекс 1 для соответствующего измерения размера 1. |
| Убедитесь, что индексирование массива в коде MATLAB использует нижний индекс, который меньше или равен базовому измерению массива | Индекс массива в коде MATLAB использует индекс, который больше базового измерения массива | Измените код MATLAB так, чтобы при индексировании массива использовался нижний индекс, меньший или равный базовому измерению массива. |
| Проверка аргумента типа для приведения в функциях MATLAB | Функция MATLAB имеет неподдерживаемый аргумент типа в функциях приведения. | Измените функцию приведения на одну из следующих форм.
|
| Убедитесь, что операторы двоеточия в коде MATLAB имеют не более 3 операндов | colon (:) оператор имеет более 3 операндов. | Измените код MATLAB таким образом, чтобы |
| Проверьте, что операторы двоеточия в коде MATLAB используют только целочисленные и двойные данные | colon (:) оператор использует одиночные или символьные данные. | Измените код MATLAB таким образом, чтобы |
| Проверьте, что данные, используемые в функции MATLAB, имеют поддерживаемый тип данных. | Данные, используемые в функции MATLAB, не относятся к типу: boolean, int8, int16, int32, uint8, uint16, uint32, single, double, или скалярная шина. | Измените данные на поддерживаемый тип данных. |
| Проверьте, что диагональное число, используемое в функции diag в коде MATLAB, является постоянным | diag функция задает диагональное число, которое не является константой. | Изменение diag для использования постоянного диагонального числа. |
| Проверьте, что код в функции MATLAB имеет поддерживаемое измерение |
| Измените идентификаторы, чтобы они были поддерживаемым измерением. |
| Проверьте, что если операторы в коде 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 директива. | Изменение использования Для корневых функций MATLAB, если Для пользовательских функций MATLAB: |
| Проверьте, что математические функции в коде MATLAB используют только целочисленные данные и данные с плавающей запятой | Математические функции в коде MATLAB используют данные логического типа. | Измените код MATLAB так, чтобы математические функции использовали только целочисленные или двойные данные. |
| Проверьте, что ни один код в функциях MATLAB не содержит информации о типе данных. | В функции MATLAB отсутствует информация о типе данных. | Измените функцию, чтобы исключить код с отсутствующей информацией о типе данных. Примечание Если код MATLAB не прошел эту проверку, это может произойти из-за недоступного кода. Исправить любое |
| Убедитесь, что в функциях MATLAB отсутствует информация об измерении | В функции MATLAB отсутствует информация об измерении. | Измените функцию, чтобы исключить код с отсутствующей информацией об измерении. Примечание Если код MATLAB не прошел эту проверку, это может произойти из-за недоступного кода. Исправить любое |
| Проверьте, что все вызовы функций в коде 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 функция задает непустой целевой объект. |
Код чека: mathworks.slci.MATLABCodeAnalyzer
Проверьте функции MATLAB для %#codegen директива, сообщения анализатора кода MATLAB и идентификаторы сообщения обоснования.
Эта проверка сообщает о %#codegen директивы, сообщения анализатора кода MATLAB и идентификатор сообщения обоснования, найденные в функциях MATLAB и функциональных блоках MATLAB.
Доступно с инспектором кода Simulink.
| Подпроверить | Состояние | Рекомендуемое действие |
|---|---|---|
| Проверка кода MATLAB, используемого в функциональных блоках MATLAB | Проблемы в функциональном блоке MATLAB. |
|
| Проверка функций MATLAB, определенных в диаграммах потока состояний | Проблемы с функцией MATLAB, используемой в диаграммах Stateflow. |
|
| Проверка функций MATLAB | Проблемы в называемых функциях MATLAB. |
|
Код чека: mathworks.slci.UnsupportedBlocks
Проверьте наличие блоков, которые не поддерживаются инспектором кода Simulink.
Эта проверка обновляет схему модели и сообщает о блоках, которые не поддерживаются инспектором кода Simulink.
Доступно с инспектором кода Simulink.
| Подпроверить | Состояние | Рекомендуемое действие |
|---|---|---|
| Проверка блоков, не поддерживаемых инспектором кода Simulink | Один или несколько блоков в модели не поддерживаются для проверки кода. Примечание Поддерживаемые блоки перечислены в разделе Поддерживаемые блоки - по категориям и поддерживаемые маскирующие блоки, а также могут быть просмотрены в | Возможные действия включают в себя:
|
Эту проверку можно выполнить на моделях библиотек.
Эта проверка поддерживается проверкой времени редактирования.
Код чека: mathworks.slci.WorkspaceVarUsage
Проверьте переменные рабочей области, на которые ссылается модель.
Эта проверка сообщает о переменных рабочей области, использующих неподдерживаемые классы хранения.
Доступно с инспектором кода Simulink.
| Подпроверить | Состояние | Рекомендуемое действие |
|---|---|---|
| Проверка класса хранения для переменных рабочей области, на которые ссылается модель | Переменные рабочей области, на которые ссылается модель, не поддерживаются по одной из следующих причин:
Примечание В классах Simulink или module packaging tool (MPT), поставляемых с кодом MathWorks ®, проверка кода поддерживается для следующих классов хранения:
| Измените модель так, чтобы модель не ссылалась на переменные рабочей области, или задайте для переменной рабочей области настраиваемый класс хранения 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.
| Подпроверить | Состояние | Рекомендуемое действие |
|---|---|---|
| Проверка тени имени глобального хранилища данных | Блок памяти глобального хранилища данных затенен локальным блоком памяти хранилища данных. | Удалите глобальные блоки памяти хранилища данных, затененные локальными блоками памяти хранилища данных. |
Код чека: mathworks.slci.SeparateOutputAndUpdate
Проверьте использование блоков If и Switch Case, подключенных к подсистемам Action, что может повлиять на совместимость с Simulink Code Inspector.
Эта проверка обновляет схему модели и проверяет использование блоков If и Switch Case, подключенных к подсистемам Action.
Доступно с инспектором кода Simulink.
| Подпроверить | Состояние | Рекомендуемое действие |
|---|---|---|
| Проверка целевой подсистемы действий блоков If и Switchcase | Подсистемы действий, подключенные к одному и тому же блоку If или Switch Case, не выполняют одно из следующих действий:
| Измените перечисленные подсистемы действий таким образом, чтобы все они объединяли свои выходные данные и обновления кода. Разместите блок преобразования сигнала на сигналах, выходящих из входов в подсистемах действия. Выберите параметр блока преобразования сигнала Исключить этот блок из оптимизации «Сокращение блока», чтобы исключить его из уменьшения блока. |
Код чека: 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.
| Подпроверить | Состояние | Рекомендуемое действие |
|---|---|---|
| Проверка времени образца в модели, используемой в качестве цели привязки модели | Модель, используемая в качестве цели привязки модели, имеет несколько образцов времени. | Измените модель так, чтобы она имела один образец времени. |
Код чека: mathworks.slci.GetSetVarUsage
Эта проверка обновляет схему модели и определяет переменные рабочей области класса хранения GetSet, использующие неподдерживаемые спецификации.
Доступно с инспектором кода Simulink.
| Подпроверить | Состояние | Рекомендуемое действие |
|---|---|---|
| Проверка класса хранения для переменных рабочей области, на которые ссылается модель | Для переменной рабочей области, которая использует
| Изменить GetSet переменные рабочей области класса хранения для использования поддерживаемой спецификации класса хранения. |
Код чека: mathworks.slci.EnableMultiTasking
Эта проверка обновляет схему модели и проверяет, что параметр Рассматривать каждую дискретную скорость как отдельную задачу выбран для модели с несколькими дискретными скоростями.
Доступно с инспектором кода Simulink.
| Подпроверить | Состояние | Рекомендуемое действие |
|---|---|---|
| Проверьте настройку «Рассматривать каждую дискретную скорость как отдельную задачу» | Многоскоростная модель настроена для выполнения одной задачи. | В диалоговом окне Параметры конфигурации (Configuration Parameters) на панели Решатель (Solver) выберите Рассматривать каждую дискретную скорость как отдельную задачу. |
Код чека: mathworks.slci.CommentedBlocks
Эта проверка обновляет схему модели и проверяет, что модель не содержит блоков с комментариями.
Доступно с инспектором кода Simulink.
| Подпроверить | Состояние | Рекомендуемое действие |
|---|---|---|
| Проверка наличия в модели блоков с комментариями | Модель содержит блок, который комментируется. | Измените модель, удалив блоки с комментариями. |
Код чека: mathworks.slci.VVSubSystemName
Эта проверка обновляет схему модели и проверяет, что неинлинированные подсистемы с интерфейсами вызова функции void-void используют уникальные имена функций.
Доступно с инспектором кода Simulink.
| Подпроверить | Состояние | Рекомендуемое действие |
|---|---|---|
| Проверка имен функций, используемых подсистемами void_void в модели | Модель содержит void_void подсистемы, использующие одно и то же имя функции. | Измените void_void подсистемы в модели, чтобы использовать уникальные имена функций. |
Код чека: 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). | Установить умножение на Только | |
Параметр блока Режим округления целых чисел (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. | |
Параметр блока Количество входов (
| Установка количества входов в
| |
Параметр блока Умножение имеет значение 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) не имеют одного типа данных. | Задать параметр блока Промежуточные результаты (
| |
Типы данных входов и выходов блоков не single или double. | Исправьте указанный вход или выход блока. | |
Нарушение ограничения, применяемого ко всем блокам. | Исправьте указанный вход или выход блока. | |
| Проверка блоков назначения | Порт индекса не является поддерживаемым типом данных. | Изменение порта индекса таким образом, чтобы он имел тип данных int8, int16, int32, uint8, uint16, или uint32. |
Инициализировать вывод (Y) ( | Установить выход инициализации (Y) в | |
| Блочный порт имеет массивы шин или шин с элементами, являющимися массивами шин. | Закрепите указанный порт блока таким образом, чтобы в блоке не использовались массивы шин или шины с элементами, являющимися массивами шин. | |
Нарушение ограничения, применяемого ко всем блокам. | Исправьте указанный вход или выход блока. | |
| Проверка полиномиальных блоков | Входные и выходные порты не имеют одинакового типа данных. | Измените типы данных порта для соответствия. |
Типы данных входных портов не single или double. | Измените перечисленные типы данных входного порта. | |
Количество коэффициентов для параметра блока Полиномиальные коэффициенты (coefs) не больше нуля. | Изменение количества коэффициентов для параметра блока «Полиномиальные коэффициенты» (coefs) должно быть больше нуля. | |
Нарушение ограничения, применяемого ко всем блокам. | Исправьте указанный вход или выход блока. | |
| Проверка блоков точечного изделия | Входные порты не являются скалярами, векторами или матрицами с одним столбцом. | Измените перечисленные входные порты. |
Типы данных входных портов не single или double. | Измените перечисленные типы данных входного порта. | |
| Входные и выходные порты не имеют одинакового типа данных. | Измените типы данных порта для соответствия. | |
Параметр блока Режим округления целых чисел (RndMeth) имеет неподдерживаемое значение. | Установить режим округления целых чисел в Zero или Floor. | |
Нарушение ограничения, применяемого ко всем блокам. | Исправьте указанный вход или выход блока. | |
| Проверка блоков Unary Minus | Типы данных входных портов не double, single, int8, int16, или int32. | Измените перечисленные типы данных входного порта. |
Нарушение ограничения, применяемого ко всем блокам. | Исправьте указанный вход или выход блока. |
Эта проверка поддерживается проверкой времени редактирования. Однако проверка времени редактирования не помечает нарушения всех ограничений этой проверки. В предыдущей таблице явным образом упоминаются условия нарушения ограничения, которые являются флагами проверки времени редактирования.
Код чека: 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. | Измените тип данных входного порта. |
| Входные и выходные порты не имеют одинакового типа данных. | Измените типы данных порта для соответствия. | |
| Блок не использует поддерживаемые блоки ввода или вывода. | Измените блок, чтобы использовать поддерживаемые блоки ввода и вывода. Включены преобразования между:
| |
Нарушение ограничения, применяемого ко всем блокам. | Исправьте указанный вход или выход блока. | |
| Проверка блоков ИС | Параметр блока Начальное значение (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 в сгенерированном параметре кода. | |
Следующие параметры конфигурации устанавливаются следующим образом:
если источник 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. | |
Нарушение ограничения, применяемого ко всем блокам.
| Исправьте указанный вход или выход блока. |
Эта проверка поддерживается проверкой времени редактирования. Однако проверка времени редактирования не помечает нарушения всех ограничений этой проверки. В предыдущей таблице явным образом упоминаются условия нарушения ограничения, которые являются флагами проверки времени редактирования.
Код чека: 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). | |
| Выходной порт блока или блока является постоянным. | Установите время выборки блока или выходного порта блока на явное, непостоянное время выборки. | |
| Блок имеет несколько выборок времени. | Измените целевое значение привязки модели таким образом, чтобы блок привязки модели имел один образец времени. | |
Входной порт блока не является одним из следующих поддерживаемых типов данных:
| Исправьте тип данных входного порта. | |
Для входных портов в пределах инициируемого опорного блока модели, ввод фиксатора путем задержки внешнего сигнала (LatchByDelayingOutsideSignal) (установить в значение on). | Очистить вход фиксатора путем задержки внешнего сигнала. Чтобы сохранить поведение фиксации, реструктурируйте модель, поместив блок единичной задержки перед входным блоком вне блока привязки модели. | |
Для входных портов опорного блока модели, вход защелки для сигналов обратной связи выходов подсистемы функционального вызова (LatchInputForFeedbackSignals) (установить в значение on). | Очистить вход защелки для сигналов обратной связи выходов подсистемы функционального вызова. Чтобы сохранить поведение фиксации, реструктурируйте модель, поместив блок единичной задержки перед входным блоком вне блока привязки модели. | |
| Блоки модели используют параметры экземпляра ссылочных моделей в качестве аргументов. | Измените модель таким образом, чтобы блоки модели не использовали параметры экземпляра ссылочных моделей в качестве аргументов. | |
A Simulink.LookupTable объект передается во ссылочный блок модели. | Измените модель таким образом, чтобы она не содержала Simulink.LookupTable объект, который передается во ссылочный блок модели. | |
Нарушение ограничения, применяемого ко всем блокам. | Исправьте указанный вход или выход блока. | |
| Проверка блоков подсистемы | Варианты подсистем не имеют одинакового количества портов. | Если возможно, реконфигурируйте модель таким образом, чтобы различные подсистемы имели одинаковое количество портов. |
Подсистема не является одной из следующих:
| Если возможно, перенастройте подсистему так, чтобы она была виртуальной (очистите параметр блока подсистемы Treat as atomic unit) или встроенной подсистемой atomic, enabled, function-call, if action, или запущенной подсистемой. Либо оберните подсистему в блок «Модель», либо изучите другие варианты реализации. | |
| Подсистема является функциональным блоком Simulink. | Измените модель, чтобы удалить функциональные блоки Simulink. | |
Для блоков с вариантами применяется одно из следующих условий:
| Снимите флажок Генерировать условия препроцессора или установите Параметры конфигурации модели > Генерирование кода > Интерфейс > Генерировать условия препроцессора в значение Disable all. | |
Параметр блока Минимизировать вхождения алгебраического цикла ( | Снимите флажок Минимизировать вхождения алгебраического цикла. | |
Для невиртуальных подсистем Упаковка функций ( | Установить упаковку функций в | |
Для блока с функциональной упаковкой (
| Зафиксируйте параметры блока и модели. | |
Для блока с функциональной упаковкой (
|
| |
| Блочный порт имеет массивы шин или шин с элементами, являющимися массивами шин. | Измените модель таким образом, чтобы блоки модели не использовали параметры экземпляра ссылочных моделей в качестве аргументов. | |
Нарушение ограничения, применяемого ко всем блокам. | Исправьте указанный вход или выход блока. | |
| В повторно используемой подсистеме при вводе автоматически добавляется скрытый буфер сигналов. | Вручную разместите блок преобразования сигнала непосредственно перед вводом повторно используемой подсистемы. Выберите параметр блока преобразования сигнала Exclude this block из оптимизации «Block reduction». | |
A Simulink.LookupTable объект не должен передаваться в маскированную подсистему. | Измените модель таким образом, чтобы она не содержала Simulink.LookupTable объект, передаваемый в маскированную подсистему. | |
| Проверка триггерных блоков | В родительской подсистеме сигнал, поступающий в порт триггера, не является скалярным. | Сконфигурируйте скалярный сигнал, поступающий в порт триггера родительской подсистемы. |
В родительской подсистеме сигнал, поступающий в порт триггера, не является сигналом boolean тип данных, если Trigger type (TriggerTypeявляется rising, falling, или either. | Сконфигурируйте сигнал, поступающий в порт триггера родительской подсистемы boolean. | |
Блок находится на корневом уровне модели с типом триггера (TriggerType) установите в значение rising, falling, или either. | Выполните одно из следующих действий: | |
Состояния при включении (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 при переполнении целого числа. |
Эта проверка поддерживается проверкой времени редактирования. Однако проверка времени редактирования не помечает нарушения всех ограничений этой проверки. В предыдущей таблице явным образом упоминаются условия нарушения ограничения, которые являются флагами проверки времени редактирования.
Код чека: 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. | |
При разрешении состояния блока в сигнал с пользовательским классом хранения сигнала класс хранения сигнала:
| Измените класс хранения пользовательских сигналов. | |
| Состояние блока разрешается в сигнальный объект с непустым начальным значением. | Измените объект сигнала. | |
| Блок используется для изменения скорости. | Заменить блок, используемый для перехода скорости, блоком перехода скорости. | |
Нарушение ограничения, применяемого ко всем блокам. | Исправьте указанный вход или выход блока. | |
| Проверка дискретных блоков интегратора | Типы данных портов ввода не single или double для портов без сброса. | Изменение типов данных входных портов single или double для портов без сброса. |
| Входы и выходы не являются скалярами. | Измените входные или выходные порты на скаляры. | |
Типы данных портов вывода не single или double. | Изменение типов данных портов вывода single или double. | |
| Входные и выходные порты имеют разные типы данных. | Измените типы данных порта для соответствия. Тип данных порта сброса не обязательно должен соответствовать другим типам входных и выходных данных. | |
Блочный параметр Метод интегратора (
| Установите для метода Integrator одно из следующих значений:
| |
Параметр Block Показать порт состояния (ShowStatePort) выбран. Проверка времени редактирования помечает это условие. | Снимите флажок Show state port. | |
Параметр блока Внешний сброс (ExternalReset) не имеет значение none. Проверка времени редактирования помечает это условие. | Установить параметр блока Внешний сброс в none. | |
Один или оба параметра блока Верхний предел насыщения (
| Установите для верхнего предела насыщения и нижнего предела насыщения одномерное, несложное конечное значение. | |
| Блок находится внутри условной подсистемы. | Измените модель таким образом, чтобы блок дискретного интегратора не находился внутри условной подсистемы. | |
Поведение параметров по умолчанию (DefaultParameterBehavior) имеет значение Inlined) и источник блока Inport 2 является постоянным. | Установите время выборки блоков в явное, непостоянное время выборки. Измените модель таким образом, чтобы источник блока Input 2 не был постоянным. | |
При разрешении состояния блока в сигнал с пользовательским классом хранения сигнала класс хранения сигнала:
| Измените пользовательский класс хранения. | |
| Состояние блока разрешается в сигнальный объект с непустым начальным значением. | Измените объект сигнала. | |
Нарушение ограничения, применяемого ко всем блокам. | Исправьте указанный вход или выход блока. | |
| Проверить блоки задержки | Обработка ввода параметра блока (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подсистема должна иметь следующие конфигурации:
Reusable functionмодель должна использовать следующие конфигурации:
|
| Многоразовые подсистемы в модели не являются библиотекой и не являются демаскированными односкоростными атомными подсистемами или подсистемами функционального вызова. | Измените повторно используемые подсистемы в модели таким образом, чтобы они были из библиотеки и немаскированных односкоростных подсистем атомного или функционального вызова. | |
Нарушение ограничения, применяемого ко всем блокам. | Исправьте указанный вход или выход блока. |
Диаграмма (поток состояний)
Программирование диаграмм (поток состояний)
Код чека: mathworks.slci.StringBlocksUsage
Определите использование блоков String, которые могут повлиять на совместимость с Simulink Code Inspector.
Эта проверка обновляет схему модели и сообщает о несовместимости, обнаруженной в строковых блоках.
| Подпроверить | Состояние | Рекомендуемое действие |
|---|---|---|
| Проверка ASCII на строковые блоки | Размер входного сигнала больше или равен значению параметра Buffer size строки динамического размера (байт) (Simulink Coder). | Зафиксируйте входной размер. |
Нарушение ограничения, применяемого ко всем блокам. | Исправьте указанный вход или выход блока. |
Код чека: mathworks.slci.chartsSFObjsUsage
Проверьте использование диаграмм Stateflow, которые могут повлиять на совместимость с Simulink Code Inspector.
Эта проверка обновляет схему модели и сообщает о несовместимости, обнаруженной в диаграммах Stateflow.
Доступно с инспектором кода Simulink.
| Подпроверить | Состояние | Рекомендуемое действие |
|---|---|---|
| Проверка использования палитры объектов Stateflow | Диаграмма содержит один или несколько следующих объектов:
| Настройте диаграмму так, чтобы она не содержала неподдерживаемых объектов. |
| Проверка использования имен в диаграмме 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 переход по умолчанию. |
Эта проверка поддерживается проверкой времени редактирования. Однако проверка времени редактирования не помечает нарушения всех ограничений этой проверки. В предыдущей таблице явным образом упоминаются условия нарушения ограничения, которые являются флагами проверки времени редактирования.
Программирование диаграмм (поток состояний)
Диаграмма (поток состояний)
Код чека: mathworks.slci.MATLABactionlanguageStateflowUsage
Проверьте использование языка действий Stateflow MATLAB, который может повлиять на совместимость с Simulink Code Inspector.
Эта проверка обновляет схему модели и сообщает о несовместимости, обнаруженной при использовании языка действий Stateflow MATLAB.
Доступно с инспектором кода Simulink.
Для выполнения подчек для проверки использования языка действий MATLAB в диаграммах Stateflow см. раздел Проверка использования кода в функциях MATLAB.
Программирование диаграмм (поток состояний)
Диаграмма (поток состояний)
Код чека: mathworks.slci.transitionsSFObjsUsage
Проверьте использование переходов Stateflow, которые могут повлиять на совместимость с Simulink Code Inspector.
Эта проверка обновляет схему модели и сообщает о несовместимости, обнаруженной в переходах Stateflow.
Доступно с инспектором кода Simulink.
| Подпроверить | Состояние | Рекомендуемое действие |
|---|---|---|
| Убедитесь, что действия не имеют неподдерживаемых операций | Действие использует операцию, которая не поддерживается:
| Измените диаграмму так, чтобы действие использовало только поддерживаемые операции. |
| Проверка индексирования в массивах, состоящих из нескольких измерений | Массив из нескольких измерений использует индексирование. | Измените переход, чтобы использовать одномерные массивы или избежать индексирования массивов, которые являются несколькими измерениями. |
| Убедитесь, что во всех массивах используется индекс типа «» int32 | Массив не использует индекс типа данных int32. | Изменение индекса массива таким образом, чтобы он использовал тип данных int32. |
| Проверьте, что все условия перехода имеют логический тип данных | Условие перехода не относится к логическому типу данных. | Измените условие перехода таким образом, чтобы оно имело логический тип данных. |
| Убедитесь, что никакие действия не имеют доступа к контекстно-зависимым константам | Действие использует контекстно-зависимые константы, которые не поддерживаются для проверки кода. | Измените действие, чтобы избежать использования контекстно-зависимых констант. |
| Убедитесь, что никакие действия не имеют доступа к настраиваемым данным | Действие обращается к пользовательским данным, которые не поддерживаются для проверки кода. | Измените переходы на:
|
| Убедитесь, что условия и действия не имеют неподдерживаемых операций с операндами типов перечисления | Переход использует одну из следующих неподдерживаемых операций над операндом типа перечисления:
| Измените переход, чтобы избежать использования неподдерживаемых операций с операндами типов перечисления. |
| Убедитесь, что никакие переходы не имеют триггеров событий | Переход имеет триггер события, который не поддерживается для проверки кода. | Измените переход, чтобы избежать использования триггера события. |
| Проверка типа данных аргументов графической функции | Transition определяет вызовы графических функций с различными фактическими и ожидаемыми типами данных аргументов. | Измените переход, чтобы указать вызовы графических функций с одинаковыми типами данных для фактических и ожидаемых аргументов. |
| Проверка размеров аргументов графической функции | Transition определяет вызовы графических функций с различными фактическими и ожидаемыми размерами аргументов. | Измените переход, чтобы указать вызовы графических функций с одинаковым размером для фактических и ожидаемых аргументов. |
| Убедитесь, что переходы не имеют действий перехода | Переходы имеют действие перехода, которое не поддерживается для проверки кода. | Измените переход, чтобы избежать использования действия перехода. |
| Убедитесь, что переходы Stateflow не используют переменные индукции за пределами цикла | Переход имеет неподдерживаемую индукционную переменную повторного использования. | Измените переход таким образом, чтобы индукционная переменная не использовалась повторно. |
| Убедитесь, что никакие действия не содержат функцию, аргумент которой имеет недопустимый тип данных | Математическая функция в действии не является:
| Измените математическую функцию, чтобы использовать поддерживаемые типы данных. |
| Убедитесь, что переходы не имеют неподдерживаемого шага цикла | Переход имеет неподдерживаемый шаг цикла. | Измените переход таким образом, чтобы существовала одна инструкция действия, которая увеличивает 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 не настроены как переходы исполнения | Диаграмма потока состояний содержит переходы, настроенные как переходы вариантов. | Измените диаграмму, чтобы избежать использования вариационных переходов. |
Диаграммы статофлоу (статофлоу)
Переходы (поток состояний)
Переходные соединения (поток состояний)
Переходы по умолчанию (поток состояний)
Код чека: mathworks.slci.junctionsSFObjsUsage
Проверьте использование соединений Stateflow, которые могут повлиять на совместимость с Simulink Code Inspector.
Эта проверка обновляет схему модели и сообщает о несовместимости, обнаруженной в соединениях Stateflow.
Доступно с инспектором кода Simulink.
| Подпроверить | Состояние | Рекомендуемое действие |
|---|---|---|
| Убедитесь, что переходы Stateflow не имеют исходящих переходов, переходящих за пределы контура | Соединение имеет исходящий переход, который проскакивает за пределы тела петли. | Измените диаграмму таким образом, чтобы переход в контуре не имел исходящих переходов, переходящих за пределы контура. |
| Убедитесь, что неразрывные соединения имеют только один безусловный выходной переход | Неразрывное соединение не имеет ровно одного безусловного выходящего перехода. Один безусловный выход из перехода предотвращает обратное отслеживание и затенение перехода. | Измените соединение таким образом, чтобы оно имело один безусловный выходящий переход. |
| Убедитесь, что диаграмма не использует соединения истории | Диаграмма содержит соединение истории. | Измените диаграмму таким образом, чтобы она не содержала соединения истории. |
| Убедитесь, что управляющие потоки не имеют контуров с неподдерживаемыми соединениями заголовков | Соединение заголовка не имеет двух входящих и двух исходящих переходов. | Измените соединение заголовка таким образом, чтобы оно имело два входящих и два исходящих перехода. |
| Проверка использования оконечных соединений Stateflow | При завершении соединения трассировка возвращается в состояние Stateflow. | Измените соединение таким образом, чтобы оно не возвращалось в состояние Stateflow. |
| Проверка структуры управляющих потоков | Диаграмма содержит неструктурированные управляющие потоки, которые не поддерживаются для проверки кода. | Измените диаграмму таким образом, чтобы она не содержала неструктурированных потоков управления. |
| Проверьте, что безусловные переходы выполняются последним в порядке выполнения | Безусловный переход не является последним в порядке выполнения. | Измените диаграмму так, чтобы безусловный переход был последним в порядке выполнения. Это предотвращает затенение перехода. |
Код чека: mathworks.slci.dataSFObjsUsage
Проверьте использование данных Stateflow, которые могут повлиять на совместимость с Simulink Code Inspector.
Эта проверка обновляет схему модели и сообщает о несовместимости, обнаруженной в данных Stateflow.
Доступно с инспектором кода Simulink.
| Подпроверить | Состояние | Рекомендуемое действие |
|---|---|---|
| Убедитесь, что диаграмма не определяет данные потока состояний с постоянной областью действия | Диаграмма определяет данные потока состояний с помощью Constant сфера применения. | Изменение диаграммы во избежание определения данных Stateflow с помощью Constant сфера применения. |
| Проверка использования метода инициализации данных Stateflow | InitializeMethod для 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.
| Проверить | Состояние | Рекомендуемое действие |
|---|---|---|
| Убедитесь, что управляющие потоки не имеют циклов | Диаграмма содержит циклы потока управления, которые не поддерживаются для проверки кода. | Настройте диаграмму таким образом, чтобы она не содержала циклов управляющего потока. |
| Убедитесь, что действия не имеют неподдерживаемых операций | Действие использует операцию, которая не является:
| Измените диаграмму так, чтобы действие использовало только поддерживаемые операции. |
| Проверка индексирования в массивах, состоящих из нескольких измерений | Массив из нескольких измерений использует индексирование. | Измените состояние, чтобы использовать одномерные массивы, или избегайте индексирования массивов, которые являются несколькими измерениями. |
| Убедитесь, что во всех массивах используется индекс типа «» int32 | Массив не использует индекс типа данных int32. | Изменение индекса массива таким образом, чтобы он использовал тип данных int32. |
| Убедитесь, что никакие действия не имеют доступа к контекстно-зависимым константам | Действие использует контекстно-зависимые константы, которые не поддерживаются для проверки кода. | Измените действие, чтобы избежать использования контекстно-зависимых констант. |
| Убедитесь, что никакие действия не имеют доступа к настраиваемым данным | Действие обращается к пользовательским данным, которые не поддерживаются для проверки кода. | Измените действие, чтобы избежать доступа к пользовательским данным. |
| Проверьте, что состояния или подсостояния имеют переход по умолчанию | Диаграмма имеет состояние или подсостояние без перехода по умолчанию. | Настройте диаграмму таким образом, чтобы состояния и подсостояния имели переходы по умолчанию. |
| Убедитесь, что действия не имеют неподдерживаемых операций с операндами типов перечисления | Состояние использует одну из следующих неподдерживаемых операций над операндом типа перечисления:
| Измените состояние, чтобы избежать использования неподдерживаемых операций с операндами типов перечисления. |
| Проверка типа данных аргументов графической функции | Состояние определяет вызовы графических функций с различными фактическими и ожидаемыми типами данных аргументов. | Измените состояние, чтобы указать вызовы графических функций с одинаковыми типами данных для фактических и ожидаемых аргументов. |
| Проверка размеров аргументов графической функции | Состояние определяет вызовы графических функций с различными фактическими и ожидаемыми размерами аргументов. | Измените состояние, чтобы указать вызовы графических функций с одинаковым размером для фактических и ожидаемых аргументов. |
| Убедитесь, что никакие действия не содержат функцию, аргумент которой имеет недопустимый тип данных | Математическая функция в действии не является:
| Измените математическую функцию, чтобы использовать поддерживаемые типы данных. |
| Убедитесь, что никакие действия не содержат оператора 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 переход по умолчанию. |
| Проверьте, что все пути перехода являются либо внутренними переходами в подсостояние, либо внешними переходами в родственные, прямые родительские или прямые подсостояния. | Состояние использует путь перехода, который не является одним из следующих:
| Настройте переходы таким образом, чтобы они использовали поддерживаемый путь. |
| Проверка неназначенных выходных данных графических функций | Диаграмма определяет вызовы графических функций с различным количеством фактических и ожидаемых выходов. | Измените диаграмму таким образом, чтобы графические функции назначали все выходы. |
Повторное использование компонентов Simulink в диаграммах Stateflow (Stateflow)
Штаты (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 | Графическая функция рекурсивна. | Настройте графическую функцию таким образом, чтобы она не была рекурсивной. |
| Проверка структуры управляющих потоков | Графическая функция содержит неструктурированные управляющие потоки, которые не поддерживаются для проверки кода. | Настройте графическую функцию таким образом, чтобы она не содержала неструктурированных потоков управления. |
Код чека: mathworks.slci.truthtablesSFObjsUsage
Проверьте использование таблиц истинности Stateflow, которые могут повлиять на совместимость с Simulink Code Inspector.
Эта проверка обновляет схему модели и сообщает о несовместимости, обнаруженной в таблицах истинности Stateflow.
Доступно с инспектором кода Simulink.
| Проверить | Состояние | Рекомендуемое действие |
|---|---|---|
| Убедитесь, что управляющие потоки не имеют циклов | Таблица истинности содержит циклы потока управления, которые не поддерживаются для проверки кода. | Настройте таблицу истинности таким образом, чтобы она не содержала циклов управляющего потока. |
| Проверка использования параметра InlineOption | Свойство Truth table Параметр Function Inline имеет значение Auto или Function. | Установить свойство таблицы истинности Функция Встроенный параметр в значение Inline. |
| Проверка использования рекурсивной функции Stateflow | Таблица истинности рекурсивна. | Настройте таблицу истинности таким образом, чтобы она не была рекурсивной. |
| Проверка использования языка таблицы истинности Stateflow | Свойство таблицы истинности Язык имеет значение MATLAB. | Задать язык как C. |
| Проверка структуры управляющих потоков | Таблица истинности содержит неструктурированные управляющие потоки, которые не поддерживаются для проверки кода. | Настройте таблицу истинности таким образом, чтобы она не содержала неструктурированных потоков управления. |
Использование таблиц истинности для моделирования комбинаторной логики (поток состояний)
Код чека: mathworks.slci.MATLABFunctionBlocksUsage
Определите функциональные блоки MATLAB, которые могут повлиять на совместимость с Simulink Code Inspector.
Эта проверка обновляет схему модели и сообщает о несовместимости, обнаруженной в функциональных блоках MATLAB.
Доступно с инспектором кода Simulink.
| Подпроверить | Состояние | Рекомендуемое действие |
|---|---|---|
| Проверьте имена блоков, которые содержат символы «/* »,« */» или начинаются или заканчиваются символом «*» | Имя блока:
| Измените имя блока в списке. |
| Проверка неподдерживаемого использования класса хранения | Блок является постоянным и имеет выходы класса хранения, отличного от автоматического. | Измените блок, изменив класс хранения выходного сигнала или время выборки блока. Например, если блок или его источник является блоком Constant, установите время выборки этого блока Constant в явное, непостоянное время выборки. |
| Проверка неподдерживаемых тестовых точек | Блок является постоянным, а исходящий порт проверяется. | Измените блок, удалив тестовые точки выходного сигнала или изменив время выборки блока. Например, если блок или его источник является блоком Constant, установите время выборки этого блока Constant в явное, непостоянное время выборки. |
| Проверка класса хранения блочных выходов | Блок использует неподдерживаемый пользовательский класс хранения Тип, Инициализация данных или Значение (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подсистема должна иметь следующие конфигурации:
Reusable 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. |
Код чека: mathworks.slci.MATLABFunctionDataUsage
Определите данные в функциях MATLAB, которые могут повлиять на совместимость с Simulink Code Inspector.
Эта проверка обновляет схему модели и сообщает о несовместимости, обнаруженной с данными в функциях MATLAB.
Доступно с инспектором кода Simulink.
| Подпроверить | Состояние | Рекомендуемое действие |
|---|---|---|
| Проверьте, что данные, определенные в функции MATLAB, имеют поддерживаемый тип данных. | Данные не имеют поддерживаемого типа данных: встроенный, шинный или перечисляемый тип, унаследованный от Simulink.IntEnumType. | Измените данные на поддерживаемый тип данных. |
| Проверьте, что данные, определенные в функции MATLAB, имеют поддерживаемое измерение | Данные не являются скаляром, вектором или матрицей. | Измените данные на скаляр, вектор или матрицу. |
| Проверка несложности данных, определенных в функции MATLAB | Данные сложны. | Измените функцию MATLAB, чтобы избежать использования сложных данных. |
Код чека: 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. |
| Проверка параметров стиля кода для проверки общих утилит | Значения параметров конфигурации стиля кода не поддерживаются для проверки общих утилит. | В диалоговом окне «Параметры конфигурации» на панели «Создание кода» > «Стиль кода»:
|