exponenta event banner

Поддержка функциональных блоков MATLAB

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

Функция функционального блока MATLABЧто поддерживается
Тип данных
  • Встроенные типы данных: boolean, int8, int16, int32, uint8, uint16, uint32, single, и double

  • Автобус

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

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

  • Режим дискретизации выходного сигнала установлен в Sample-based

  • Реальные данные

Объем данных
  • Вход

  • Продукция

  • Параметр

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

    • Тип имеет значение Unstructured

    • Класс хранения не используется повторно

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

  • Постоянные переменные

Настройки функционального блока MATLAB
  • Функциональная упаковка (RTWSystemCode) установите в значение Inline. При выборе Nonreusable functionподсистема должна иметь следующие конфигурации:

    • Задайте для параметров имени функции значение User Specified.

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

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

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

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

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

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

  • Насыщение при целочисленном переполнении (SaturateOnIntegerOverflow) параметр очищен (задано значение off)

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

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

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

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

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

  • Транспонировать (', .').

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

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

  • Подстрочный индекс массива.

  • colon (:) оператор для целых или двойных данных и не более 3 операндов.

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

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

  • Транспонировать (', .').

Программные инструкции MATLAB
  • Составные операторы

  • Операторы if

  • for заявления

  • switch заявления

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

  • Прямая отливка для: int8, int16, int32, uint8, uint16, uint32, double, и single

  • true, false ключевые слова

  • zeros и ones

  • coder.nullcopy

  • assert

  • Математические функции (поддержка скаляров и массивов): rem, abs, sqrt, size, ceil, floor, fix, log, log10, exp, hypot, mod, round, pow2, min, max, sum и тригонометрические функции (sin, cos, tan, asin, acos, atan, и 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.

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

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

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

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

  • coder.const

  • coder.target

  • coder.ceval

Примечание

Инспектор кода Simulink поддерживает проверку coder.ceval функция в функциональных блоках MATLAB, которая позволяет модели вызывать функцию C/C + + из сгенерированного кода. Чтобы включить эту функцию, исходный файл C/C + + и заголовочный файл определяются в параметрах конфигурации в разделе «Создание кода» > «Пользовательский код» > «Вставка пользовательского кода C в сгенерированном». В результате определения этих параметров проверка совместимости «Check code generation settings» завершается неуспешно с нефатальным предупреждением. В этой ситуации Simulink Code Inspector проверяет эти модели, даже если они не имеют фатального ограничения. Необходимо вручную просмотреть внешние файлы C/C + +, перечисленные в разделе Проверка Utils отчета Simulink Code Inspector.

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

Ограничения функциональных блоков MATLAB делят ограничения на следующие категории:

  • Ограничения для функционального блока MATLAB.

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

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

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

Таблица содержит ограничения, применимые к каждой категории.

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

  • В столбце Ограничение (Constraint) перечислены ограничения инспектора кода Simulink для блока функции MATLAB, данных или кода.

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

    • При проверке кода, созданного из моделей с несовместимостью FATAL, проверка кода завершается. Код, созданный из моделей с несовместимостью FATAL, не может быть проверен.

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

  • В столбце Проверка совместимости (Compatibility Check) содержится список проверок совместимости, которые проверяют нарушение ограничения, и ссылки на описание проверки.

Связанные темы