В этом примере показано, как отладить нарушения доказательства свойства при помощи Ножа Модели. Рассмотрите модель sldvdemo_cruise_control_verification
. Эта модель содержит блок Assertion.
Модели Safety Properties подсистемы Верификации свойство, которое должно сохраняться для модели проекта. Эта подсистема содержит Блок Утверждения (BrakeAssertion), который проверяет свойство. Анализ Доказательства Свойства Simulink Design Verifier попытается сфальсифицировать утверждение. Если Simulink Design Verifier будет успешен, то он сгенерирует контрпример, фальсифицирующий утверждение. Мы можем использовать Нож Модели, чтобы отладить это сфальсифицированное утверждение.
1. Открытая модель sldvdemo_cruise_control_verification.
open_system ('sldvdemo_cruise_control_verification')
2. Откройте Simulink Design Verifier путем нажатия на Apps> Design Verifier.
3. Нажмите Prove Properties. Simulink Design Verifier анализирует модель и отображает результаты в окне Results Summary.
Модель подсвечивает подсистему, где блок Assertion расположен.
4. Подсистема Open Safety Properties и выбор сфальсифицированный блок Assertion.
5. Нажмите Debug Using Slicer в меню панели инструментов, чтобы отладить Нож Модели использования нарушения. В качестве альтернативы можно нажать Debug в окне Inspector результатов.
При Нажатии на любую из точек входа следующая настройка сделана на модели:
a. Блок Assertion добавляется как начальная точка для Ножа Модели.
b. Модель подсвечена с контрпримером, сгенерированным анализом Simulink Design Verifier.
c. Модель проекта симулирована и приостановлена в такт отказа утверждения.
6. Отладьте и анализируйте модель при помощи кнопок Step Back и Step Forward и осмотр Меток порта.
Утверждать стендовые испытания двигателя, если выход A подразумевает B (==> B) является ложным.
A верен, когда вход тормоза в верен для трех последовательных временных шагов.
B верен когда Throttle_out <= 0
Можно заметить, что симуляция останавливается в t=0.04, когда условие ==> B является ложным. Это может наблюдаться от Меток порта.
a. На вкладке Simulation нажмите Step Back, чтобы видеть метки порта всех блоков в T = (T-0.1).
Можно заметить, что Метка порта A является ложной до T=0.04, когда это становится верным. В этой точке Метка порта B является ложной (Throttle_Out> 0). Свойство сфальсифицировано, потому что Throttle_Out больше 0
.
b. Чтобы просмотреть блоки, который приводит к отказу, откройте Модель проекта> Контроллер. Зависимые блоки и путь подсвечены.
Чтобы просмотреть фиксацию, откройте sldvdemo_cruise_control_verification
модель и нажатие кнопки кнопка Open Fixed Model на холсте.