Протестируйте график с обнаружением отказа и избыточной логикой

Рабочая точка является снимком состояния состояния модели Simulink® в определенное время в процессе моделирования. Для графика Stateflow® рабочая точка включает:

  • Действие состояний графика

  • Значения графика локальные данные

  • Значения выходных данных графика

  • Значения персистентных данных в функциях MATLAB® и блоках Таблицы истинности

Для получения дополнительной информации смотрите Использование рабочих точек в Stateflow.

Цель примера

Предположим, что вы хотите протестировать ответ sf_aircraft модель к одному или нескольким отказам привода в системе лифта. Для получения дополнительной информации того, как эта модель работает, смотрите, Обнаруживают Отказы в Системе управления Лифта Самолета.

Блок-схема Mode Logic контролирует состояние приводов для двух лифтов. Каждый лифт имеет внешний (первичный) привод и внутренний (вторичный) привод. В нормальном функционировании внешние приводы активны, и внутренние приводы находятся в состоянии готовности.

Когда эти четыре привода работают правильно, левые и правые лифты достигают установившихся положений за 3 секунды.

Предположим, что вы хотите видеть то, что происходит в t = 3, когда по крайней мере один привод перестал работать. Можно симулировать модель, сохранить рабочую точку в t = 3, загрузить и изменить рабочую точку, и затем симулировать снова между t = 3 и 10.

ШагЗадачаСсылка
1Задайте рабочую точку для своего графика.Задайте рабочую точку
2Загрузите рабочую точку и измените значения для одного отказа привода.Измените значения рабочей точки для одного отказа привода
3Протестируйте модифицированную рабочую точку путем выполнения модели.Протестируйте рабочую точку на один отказ
4Измените значения рабочей точки для двух отказов привода.Измените значения рабочей точки для двух отказов привода
5Протестируйте модифицированную рабочую точку путем выполнения модели снова.Протестируйте рабочую точку на два отказа

Задайте рабочую точку

  1. Откройте sf_aircraft модель.

  2. Позвольте сохранить рабочей точки.

    1. Откройте диалоговое окно Model Configuration Parameters и перейдите к панели Data Import/Export.

    2. Установите флажок Final states.

    3. Введите имя, такое как xFinal.

    4. Установите флажок Save final operating point.

    5. Нажмите Apply.

     Программируемый эквивалент

  3. Задайте время остановки для этого сегмента симуляции.

    1. В диалоговом окне Model Configuration Parameters перейдите к панели Solver.

    2. Для Stop time введите 3.

    3. Нажмите OK.

     Программируемый эквивалент

  4. Запустите симуляцию.

    Когда вы симулируете модель, вы сохраняете полную рабочую точку в t = 3 в переменной xFinal в базовом рабочем пространстве MATLAB.

  5. Отключите сохранение рабочей точки.

    Этот шаг препятствует тому, чтобы вы перезаписали рабочую точку вы сохраненный на предыдущем шаге.

    1. Откройте диалоговое окно Model Configuration Parameters и перейдите к панели Data Import/Export.

    2. Снимите флажок Save final operating point.

    3. Снимите флажок Final states.

    4. Нажмите OK.

     Программируемый эквивалент

Измените значения рабочей точки для одного отказа привода

  1. Позвольте загрузить рабочей точки.

    1. Откройте диалоговое окно Model Configuration Parameters и перейдите к панели Data Import/Export.

    2. Установите флажок Initial state.

    3. Введите переменную, которая содержит рабочую точку вашего графика: xFinal.

    4. Нажмите OK.

     Программируемый эквивалент

  2. Задайте указатель на объект для значений рабочей точки Логической блок-схемы Режима.

    В командной строке введите:

    blockpath = 'sf_aircraft/Mode Logic';
    c = xFinal.get(blockpath);

    Совет

    Если график кажется подсвеченным в окне модели, можно задать использование блока path gcb (Simulink):

    c = xFinal.get(gcb);

     Используйте get метод для Рабочих точек

  3. Посмотрите на содержимое рабочей точки.

    c = 
    
      Block:    "Mode Logic"    (handle)    (active)
      Path:     sf_aircraft/Mode Logic
    
      Contains:
    
        + Actuators          "State (OR)"          (active)
        + LI_act             "Function"
        + LO_act             "Function"
        + L_switch           "Function"
        + RI_act             "Function"
        + RO_act             "Function"
        + R_switch           "Function"
        + LI_mode            "State output data"		sf_aircraft_ModeType [1,1]
        + LO_mode            "State output data"		sf_aircraft_ModeType [1,1]
        + RI_mode            "State output data"		sf_aircraft_ModeType [1,1]
        + RO_mode            "State output data"		sf_aircraft_ModeType [1,1]
    

    Рабочая точка вашего графика содержит список состояний, функций и данных в иерархии.

  4. Подсветите состояния, которые активны в вашем графике в t = 3.

    В командной строке введите:

    c.highlightActiveStates;

    Активные состояния кажутся подсвеченными. По умолчанию два внешних привода активны, и два внутренних привода находятся в состоянии готовности.

    Совет

    Чтобы проверять, активно ли одно состояние, можно использовать isActive метод. Например, введите:

    c.Actuators.LI.L1.Standby.isActive

    Эта команда возвращает true (1), когда состояние активно и ложное (0) в противном случае. Для получения информации о других методах см. Методы для Взаимодействия с Рабочей точкой Графика.

  5. Измените действие состояния в графике, чтобы отразить один отказ привода.

    Примите, что привод оставленного внешний (LO) перестал работать. Чтобы изменить состояние, используйте эту команду:

    c.Actuators.LO.Isolated.setActive;

    Недавно активное подсостояние кажется подсвеченным в графике.

    setActive метод гарантирует, что график выходит и вводит соответствующие состояния, чтобы обеспечить непротиворечивость состояния. Однако метод не выполняет entry действия для недавно активного подсостояния. Точно так же метод не выполняет exit действия для ранее активного подсостояния.

  6. Сохраните модифицированную рабочую точку при помощи этой команды:

    xFinal = xFinal.set(blockpath, c);

Протестируйте рабочую точку на один отказ

  1. Задайте новое время остановки для сегмента симуляции, чтобы протестировать.

    1. Перейдите к панели Solver диалогового окна Model Configuration Parameters.

    2. Для Stop time введите 10.

    3. Нажмите OK.

    Вы не должны вводить новое время начала, потому что симуляция продолжается от того, где она кончила.

     Программируемый эквивалент

  2. Запустите симуляцию.

    Стройте диаграмму анимация показывает, что другие три привода реагируют соответственно на отказ привода оставленного внешний (LO).

    Этот привод...Переключатели от...Поскольку...
    Оставленный внутренний (LI)Резервное устройство к активномуЛевый лифт должен компенсировать отказ привода оставленного внешний (LO).
    Внутреннее право (RI)Резервное устройство к активномуТа же гидравлическая линия связывает с обоими внутренними приводами.
    Внешнее право (RO)Активный к резервному устройствуТолько один привод на лифт может быть активным.

    Оба лифта продолжают поддерживать установившиеся положения.

Измените значения рабочей точки для двух отказов привода

  1. Измените действие состояния в графике, чтобы отразить два отказа привода.

    Примите, что привод оставленного внутренний (LI) также перестал работать. Чтобы изменить состояние, используйте эту команду:

    c.Actuators.LI.Isolated.setActive;
  2. Сохраните модифицированную рабочую точку при помощи этой команды:

    xFinal = xFinal.set(blockpath, c);

Протестируйте рабочую точку на два отказа

  1. В диалоговом окне Model Configuration Parameters проверьте, что время остановки равняется 10.

  2. Перезапустите симуляцию.

    Из-за отказов в обоих приводах левый лифт прекращает работать. Правильный лифт поддерживает установившееся положение.

Если вы изменяете рабочую точку своего графика, чтобы протестировать ответ правильного лифта к отказам привода, вы получаете подобные результаты.

Похожие темы