exponenta event banner

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

Избыточные шаблоны моделирования

Модели с избыточными шаблонами моделирования не верифицируют код. При создании кода Simulink ® Coder™ устраняет избыточные функциональные возможности блока. Если это исключение приводит к структурному изменению созданного кода, проверка завершается неуспешно. Например:

  • Блоки переключателей с входами от одних и тех же локальных сигналов. switch 3 блок исключается в сформированном коде. Блоки переключения switch 1 и switch 2 не устранены, поскольку они подключаются к корневым входам. Simulink Code Inspector™ сообщает об ошибке проверки.

  • Блок чтения хранилища данных, подключенный к блоку записи хранилища данных. Оба Data Store Read и Data Store Write1 блоки исключаются в сформированном коде. Инспектор кода Simulink сообщает о состоянии предупреждения.

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

Блоки с постоянными неграничными выходами

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

В этом примере Math Function блок фиксируется на бесконечности. Хотя кодер Simulink генерирует код для модели, проверка кода завершается неуспешно.

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

Если модель содержит подсистемы действий, а выходы не подключены к одному блоку объединения, проверка кода модели может завершиться неуспешно. Результат: Не удалось проверить.

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

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

Блоки многопортовых коммутаторов с входным сигналом от одного и того же локального сигнала

Ваша модель может не выполнить проверку кода, если она содержит многопортовый блок коммутатора с обоими функциями:

  • Более одного входа от одного локального сигнала.

  • Вывод на локальный сигнал.

Созданный код может иметь операторы case switch с операторами fall through case. Результат: Не удалось проверить.

В этом примере: Multiport Switch входные порты 1 и 3 блока подключены к одному и тому же локальному сигналу. Ошибка при проверке кода.

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

Модели с блоками «Назначение» (Assignment), «Селектор» (Selector) или «Многопортовый коммутатор с двумя входами» (two-inport Multiport Switch) могут инициировать оптимизации, которые изменяют выбор индекса, чтобы избежать копирования данных в сгенерированном коде. В этом примере OneBased Блок мультипортового коммутатора имеет два входа. Gain5 блок умножает сигнал на ввод 2:

Во время создания кода оптимизация перемещает Gain5 во избежание копирования данных в созданном коде:

Ошибка при проверке кода.

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

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

  • Модель содержит ссылочный блок модели.

  • Блок привязки модели имеет один конечный порт.

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

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