При проверке кода, сгенерированного из моделей с несовместимостью FATAL, инспекция кода прекращается. Код, сгенерированный из моделей с несовместимостью FATAL, не может быть проверен.
Когда вы проверяете код, сгенерированный из моделей с нефатальными несовместимостями, инспекция кода не прекращается. Несмотря на невозможность полной проверки сгенерированного кода, инспекция кода продолжается. Simulink® Code Inspector™ можете частично проверить сгенерированный код.
Можно использовать проверки совместимости, чтобы идентифицировать и исправить как фатальные, так и нефатальные несовместимости.
| Параметр или атрибут | Ограничение | Проверка совместимости |
|---|---|---|
На панели диагностики: панель «Подключение», Bus signal treated as vector (StrictBusMsg) | Необходимо задать значение error (эквивалентно ErrorOnBusTreatedAsVector указывается в командной строке). | Check diagnostic settings> Verify Bus signal treated as vector setting |
На панели диагностики: панель «Подключение», Non-bus signals treated as bus signals (NonBusSignalsTreatedAsBus) | Необходимо задать значение error. | Check diagnostic settings> Verify 'Non-bus signals treated as bus signals' setting |
На панели Генерация Кода Pane: General (Simulink Coder), System target file (Simulink Coder) (SystemTargetFile) | Необходимо задать значение ert.tlc или системный целевой файл для ERT-производного целевого объекта. | Check system target file setting |
На панели «Генерация кода»: Комментарии (Simulink Coder), Include comments (Simulink Coder) (GenerateComments) | Необходимо выбрать (установить на on). Code Inspector анализирует автогенерированные комментарии, чтобы получить информацию о трассируемости данных моделей. | Check code generation settings> Verify 'Include comments' setting |
На панели Генерация Кода Pane: Interface (Simulink Coder), Support: variable-size signals (Embedded Coder) (SupportVariableSizeSignals) | Необходимо удалить (установить на off). | Check code generation settings> Verify 'variable-size signals' setting |
| Использование шагов расчета | Модель не может использовать непрерывный, асинхронный, явный дискретный раздел, управляемый данными, объединение, экспортированные дискретные или переменные шаги расчета. | Check for sample times in the model> Check sample times |
| Явные разделы | Модель не должна содержать явных разделов. | Check for sample times in the model> Check for explicit partitions |
| Автоматическое преобразование виртуальной шины в невиртуальную | Автоматическое преобразование между виртуальной и невиртуальной шинами не поддерживается для инспекции кода. Он создает скрытый блок Signal Conversion, который не поддерживается для инспекции кода. | Check usage of buses> Check for automatic conversion between virtual to nonvirtual buses |
| Блокируйте операции на шине | Невирусный блок не должен работать с виртуальной шиной, а Bus Assignment блок не должен работать с невиртуальной шиной. Это ограничение упрощает обработку шины для повышения трассируемости и читаемости сгенерированного кода. | Check usage of buses> Verify that blocks in the model do not perform unsupported operations on a bus |
| Enable параметров блоков | Блоки Enable Port не поддерживаются на корневом уровне модели. | Check usage of Ports and Subsystems blocks> Check Enable Port blocks |
| Inport блок | Блок не может задать сигналы переменного размера. Variable-size signal (VarSizeSig) должно быть установлено в No. | Check usage of Sources blocks> Check Inport blocks |
| Inport блок | Для корневых блоков inport, которые используют объект шины, блокируйте параметр Output as nonvirtual bus (BusOutputAsStruct) должен быть выбран (установите значение on). | Check usage of Sources blocks> Check Inport blocks |
| Model Reference блок | Блок не должен находиться в защищенном режиме. | Check usage of Ports and Subsystems blocks> Check Model Reference blocks |
| Outport блок | Блок не может задать сигналы переменного размера. Variable-size signal (VarSizeSig) должно быть установлено в No. | Check usage of Sinks blocks> Check Outport blocks |
| Signal Specification | Variable-size signal (VarSizeSig) должен быть No. | Check usage of Signal Attributes blocks> Check Signal Specification blocks |
| Stateflow® Чарты |
График не должен содержать ни одного из следующих объектов:
| Check usage of Stateflow charts> Check usage of Stateflow object palette |
| Диаграммы Stateflow | Для Action Language свойств графика необходимо задать значение C. | Check usage of DataBitsets charts> Check that all charts specify 'C' as their action language |
| Диаграммы Stateflow | Не следует выбирать Support variable-size arrays свойства графика. | Check usage of Stateflow charts> Check that no charts support variable-size arrays |
| Соединения Stateflow | Неоконечные соединения должны иметь ровно один безусловный переход, выходящий из них. | Check usage of Stateflow junctions> Check that non-terminating junctions have exactly one unconditional exiting transition |
| Соединения Stateflow | Безусловный переход должен быть последним в порядке выполнения. | Check usage of Stateflow junctions> Check that unconditional transitions execute last in execution order |
| Графическая функция Stateflow | Графическая функция не должна содержать циклы потока управления. | Check usage of Stateflow graphical functions> Check that control flows do not have cycles |
| Графическая функция Stateflow | Графическая функция не должна содержать неструктурированный поток управления. | Check usage of Stateflow graphical functions> Check that control flows are structured |
| Состояния Stateflow | Состояния не должны содержать циклов потока управления. | Check usage of Stateflow states> Check that control flows do not have cycles |
| Таблицы истинности Stateflow | Таблицы истинности не должны содержать циклы потока управления. | Check usage of Stateflow truth tables> Check that control flows do not have cycles |
| Таблицы истинности Stateflow | Таблицы истинности не должны содержать неструктурированный поток управления. | Check usage of Stateflow truth tables> Check that control flows are structured |
| Подсистемы | Подсистемы не должны быть блоками Simulink Function. | Check usage of Ports and Subsystems blocks> Check Subsystem blocks |
| Trigger параметров блоков | Блок не должен быть на корневом уровне модели, когда Trigger type (TriggerType) установлено в rising, falling, или either. | Check usage of Ports and Subsystems blocks> Check Trigger Port blocks |
| MATLAB Function блок | Function packaging (RTWSystemCode) должно быть установлено в Inline. | Check usage of MATLAB Function Blocks> Check that all MATLAB function blocks have RTWSystemCode set to Inline |
| MATLAB Function блок | Support variable-size arrays не должен быть выбран (должен быть установлен на off). | Check usage of MATLAB Function Blocks> Check that all MATLAB functions set ‘Support variable-size arrays’ to ‘Off’ |
| Имена функции для неинлинфицированных подсистем с интерфейсами вызова с пустой функцией | В модели неинлинфицированные подсистемы с пустыми интерфейсами вызова функции должны использовать уникальные имена функции. | Check model for void_void subsystems that use the same function name> Check function names used by void_void subsystems in the model |
В настройках Simulink, на панели General, опцию Code generation folder structure | Необходимо задать значение Model Specific. | Check the code generation folder structure for the model |