Поддержка блока MATLAB Function

Simulink® Code Inspector™ поддерживает подмножество языка блока MATLAB Function и функций инспекции кода. Инспектор кода проверяет использование блока MATLAB Function. Для поддерживаемого языка и функций, могут применяться некоторые ограничения. Перед инспекцией кода, когда вы проверяете совместимость своей модели с правилами инспекции кода, программа контроля совместимости обнаруживает и сообщает о нарушениях ограничений блока MATLAB Function. Simulink Code Inspector поддерживает следующее для инспекции кода:

Функция блока MATLAB FunctionЧто поддерживается
Тип данных
  • Встроенные типы данных: booleanint8int16int32uint8uint16uint32единственный, и double

  • Шина

  • Перечислимые типы наследованы от Simulink.IntEnumType

Размерность данных и сложность
  • Скаляр, вектор и матричные данные

  • Набор Sampling mode of output signal к Sample-based

  • Действительные данные

Осциллограф данных
  • Входной параметр

  • Вывод

  • Параметр

  • Классы памяти при следующих условиях:

    • Type установлен в Unstructured

    • Класс памяти не является допускающим повторное использование

  • Память хранилища данных

  • Персистентные переменные

Настройки блока MATLAB Function
  • Function packaging (RTWSystemCode) установите на Inline. Если вы выбираете Nonreusable function, подсистема должна быть в следующих настройках:

    • Установите Function name options на User Specified.

    • Установите Function interface на void-void.

    • Установите Function with separate data на off.

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

    Если вы выбираете Reusable function, модель должна использовать следующие настройки:

    • Pass reusable subsystem outputs as к Individual arguments

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

  • Saturate on integer overflow (SaturateOnIntegerOverflow) параметр очищен (набор к off)

Операции MATLAB® - скаляр
  • Арифметика: uminus, uplusминус, плюс, и multiplication

  • Реляционный: >, >=, <, <=, ==, и ~=

  • Логический: &, |, &&, ||, и not

  • ldivide (.\) и rdivide (./) - с плавающей точкой и целочисленный

  • power - плавающая точка и целое число

  • Перемещение, .').

Операции MATLAB - векторная поддержка
  • Массив и матричная поддержка поэлементных операторов.

  • Операторы присваивания, такие как y = u, для векторов или матриц, одного размера.

  • Индексирование массивов.

  • colon (:) оператор для целого числа или двойных данных и не больше, чем 3 операндов.

  • Конкатенация непеременных скалярных массивов размера.

  • Умножение матриц (*).

  • Перемещение, .').

Операторы программы MATLAB
  • Составные операторы

  • Операторы if

  • for операторы

  • switch операторы

Встроенные функции MATLAB
  • cast

  • Прямой бросок для: int8int16int32uint8uint16uint32'double', и single

  • trueложь ключевые слова

  • zeros и ones

  • coder.nullcopy

  • assert

  • Математические функции (скалярная и поддержка массивов): remabssqrtразмер, ceil, floor, fix, log, log10, exp, hypot, mod, round, pow2, min, max, sum и тригонометрические функции (sinпотому чтоtanasinacosatan, и atan2)

  • diag

  • eye

  • is* встроенные функции: isempty, isscalar, isvector, ismatrix, isrow, iscolumn, isinteger, isfloat, islogical, и isnumeric

  • Битовые операции: bitand, bitcmp, bitget, bitor, bitset, bitshift, и bitxor

  • Матричные операции и операции над массивами: dot, cross, length, mean, numel, prod, reshape, и nnz

  • sign

  • deg2rad

  • rad2deg

Функции
  • Функции уровня MATLAB block.

  • Вызовы функции к автономным пользовательским функциям.

  • Вызовы функции к пользовательским локальным функциям.

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

  • Использование coder.inline('always') и coder.inline('never') директивы.

  • coder.const

  • coder.target

  • coder.ceval

Примечание

Simulink Code Inspector поддерживает верификацию coder.ceval функция в блоках MATLAB Function, которая позволяет модели вызывать функцию C/C++ от сгенерированного кода. Чтобы добавить эту функциональность, Source file C/C++ и Header file заданы в параметрах конфигурации под Code Generation > Custom Code > Insert custom C code in generated. В результате определения этих параметров настройки генерации проверки кода “Проверки совместимости” перестали работать с нефатальным предупреждением. В этой ситуации Simulink Code Inspector проверяет эти модели даже при том, что они перестали работать с нефатальным ограничением. Необходимо вручную рассмотреть внешние файлы C/C++, перечисленные под разделом Utils Verification Отчета Simulink Code Inspector.

Создание отчетовТрассируемость блочного уровня и верификация
Искаженные функцииВерификация искаженных имен функций сгенерирована от выражения деления блока MATLAB Function. Отчет Simulink Code Inspector перечисляет эти функции так, чтобы можно было вручную проверить тело функции. Проверяйте тело функции вручную, чтобы быть уверенными, что это сопоставимо с вызовом функции.
Размер и верификация типаSimulink Code Inspector получает размер и информацию о типе для переменных в коде от данных моделирования блока. Чтобы независимо проверить тип и информацию о размере, можно использовать Simulink Report Generator™, чтобы сгенерировать отчет Описания разработки системы (SDD) для модели. Проверяйте отчет SDD на данные о символе блока MATLAB Function, такие как размер, сложность, положение и сайты вызова функции.

Ограничения блока MATLAB function делят ограничения на следующие категории:

  • Ограничения на блок MATLAB Function.

  • Ограничения на данные в функциях MATLAB.

  • Ограничения на код в функциях MATLAB.

  • Ограничения на код MATLAB сообщения Анализатора.

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

Для каждой записи в таблице:

  • Списки столбцов Constraint ограничение Simulink Code Inspector на блок MATLAB Function, данные или код.

  • Столбец FATAL / Nonfatal идентифицирует, отключает ли нарушение ограничения инспекцию кода.

    • Когда вы смотрите код, сгенерированный из моделей с КРИТИЧЕСКОЙ несовместимостью, инспекция кода завершает работу. Код, сгенерированный из моделей с КРИТИЧЕСКИМИ несовместимостями, не может быть проверен.

    • Когда вы смотрите код, сгенерированный из моделей с нефатальными несовместимостями, инспекция кода не завершает работу. Несмотря на то, что не может быть возможно полностью проверить сгенерированный код, инспекция кода продолжается. Simulink Code Inspector может частично проверить сгенерированный код. Можно сконфигурировать инспекцию кода так, чтобы нефатальное нарушение ограничений отключило инспекцию кода.

  • Списки столбцов Compatibility Check проверка совместимости, которая проверяет на нарушение ограничения и соединяется с описанием проверки.

Похожие темы