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

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

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

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

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

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

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

Цель примера

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

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

Когда эти четыре привода работают правильно, левые и правые лифты достигают установившихся положений за 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:

    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. Перезапустите симуляцию.

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

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

Похожие темы