Анализ поиска ошибок проектирования Simulink® Design Verifier™ обнаруживает из связанных ошибок доступа к массиву в вашей модели. В симуляции, когда ваша модель пытается получить доступ к элементу массива с помощью недопустимого индекса, из связанной ошибки доступа к массиву, происходит.
Обнаружить из связанных ошибок доступа к массиву в вашей модели:
На вкладке Design Verifier, в разделе Mode, выбирают Design Error Detection.
Нажмите Error Detection Settings.
В диалоговом окне Configuration Parameters, в панели Design Error Detection, выбирают Out of bound array access.
Нажмите OK.
Нажмите Detect Design Errors.
Логарифмическое окно Simulink Design Verifier открывается, показывая прогресс анализа.
Когда анализ завершен:
Программное обеспечение подсвечивает модель с результатами анализа.
Диалоговое окно Simulink Design Verifier Results открывает и отображается аналитические сводные данные.
Если модель содержит из связанной ошибки доступа к массиву, после того, как первое вхождение доступа к массиву, Simulink Design Verifier принимает, что индекс массива внутри границ для остающегося анализа. Следовательно, о целях поиска ошибок проектирования, которые анализируются после этого предположения, можно сообщить как допустимых, даже если ошибки проектирования происходят в модели.
В этом примере показано, как обнаружить из связанных ошибок доступа к массиву и рассмотреть результаты анализа. В sldvdemo_array_bounds
модель в качестве примера, блок MATLAB function ComputeIndex использует значения входного сигнала, чтобы определить область значений индексов с минимальным minIdx
и максимальный maxIdx
. ArrayOp_Matlab, ArrayOp_MAL и блоки ArrayOp_SF используют набор целочисленных индексов между minIdx
и maxIdx
получить доступ к элементам массива и выполнить операции над массивами.
Шаг 1: откройте модель
В командной строке, введите:
open_system('sldvdemo_array_bounds');
Шаг 2: выполните анализ поиска ошибок проектирования
Аналитические опции в модели предварительно сконфигурированы для из связанного выявления ошибок доступа к массиву. Чтобы просмотреть эти опции, в Редакторе Simulink, дважды кликают кнопку View Options.
Чтобы выполнить анализ поиска ошибок проектирования, в Редакторе Simulink, дважды кликают кнопку Run. Окно Summary Simulink® Design Verifier™ Results открывается, который отображает прогресс анализа. Когда анализ завершается, модель в качестве примера подсвечена с результатами анализа.
Шаг 3: рассмотрите результаты анализа
Чтобы просмотреть результаты анализа в графике, дважды кликните блок ArrayOp_SF Chart, который подсвечен в красном.
Simulink Design Verifier обнаруживает, что индекс из связанных ошибок происходит в массиве u
в Различном состоянии.
Шаг 4: создайте обвязку и симулируйте тесты
Щелкните по первой ссылке теста Представления. Simulink Design Verifier создает и открывает модель тестовой обвязки, которая содержит тесты, которые демонстрируют из связанных ошибок доступа к массиву. В диалоговом окне Signal Builder нажмите симуляцию Start, чтобы симулировать модель тестовой обвязки с Тестом 2.
Остановки симуляции прежде, чем ввести состояние, Различное Stateflow® Debugger, открываются. Следующую ошибку показывают:
Attempted to access index 4 of u with smaller dimension sizes. The valid index range is 0 to 3. This error will stop the simulation. State 'Diff' in Chart 'sldvdemo_array_bounds_harness/Test Unit (copied from sldvdemo_array_bounds)/ArrayOp_SF': y = u[maxIdx] - u[minIdx];
Сохраните Stateflow® Debugger открытым в этой точке останова. В sldvdemo_array_bounds_harness
модель, держите свой курсор над Различным состоянием, чтобы видеть значения данных в этой точке останова симуляции.
Используя Тест 2 значения входного сигнала, блок MATLAB function ComputeIndex определяет область значений индексов массива, чтобы быть 1:4. Индексация на основе одна сопоставима с синтаксисом MATLAB, таким образом, эти индексы допустимы для блока MATLAB function ArrayOp_Matlab и графика ArrayOp_MAL Stateflow®.
График ArrayOp_SF Stateflow® использует C в качестве языка действия, который не поддерживает индексацию на основе одну. Таким образом, 1:4 не допустимая область значений индекса для доступа к массиву в графике. Допустимая область значений индекса для доступа к массиву в графике является 0:3, как сообщается сообщением об ошибке. Когда или maxIdx или minIdx оценивают к 4, из связанной ошибки доступа к массиву происходит в блоке ArrayOp_SF Chart. Для получения дополнительной информации об основанной на нуле поддержке индексации смотрите Различия Между MATLAB и C как Синтаксис языка Действия (Stateflow).
Inf
Индексируйте значенияПоиск ошибок проектирования не поддерживает индексацию Inf
. Если ваша модель пытается получить доступ к массиву с помощью значения индекса, которое оценивает к Inf
, поиск ошибок проектирования не сообщает из связанной ошибки доступа к массиву, но в симуляции, из связанной ошибки доступа к массиву происходит.
Из связанного доступа к массиву поиск ошибок проектирования не поддерживает блоки Index Vector со скалярными вводами данных. Если ваша модель включает блок Index Vector, который задает скалярный ввод данных вместо векторного ввода данных, и вход управления вызывает за пределы доступ к массиву, поиск ошибок проектирования не сообщает об ошибке, но ошибка происходит в симуляции.