主要内容

用故障检测和冗余逻辑测试图表

工作点是Simulink状态的快照万博1manbetx®模型在一个特定的时间在模拟。对于一个Stateflow®图中,一个操作点包括:

  • 海图状态活动

  • 图表本地数据的值

  • 图表输出数据的值

  • 在MATLAB中持久数据的值®函数和真值表块

有关更多信息,请参见在statflow中使用操作点

教程的目标

假设您想要测试sf_aircraft模拟电梯系统中的一个或多个执行器故障。有关该模型如何工作的详细信息,请参见飞机升降控制系统故障检测

模式逻辑图监控两个电梯执行器的状态。每个电梯都有一个外部(主要)执行机构和一个内部(次要)执行机构。在正常运行时,外部执行机构是主动的,内部执行机构是待命的。

当四个执行机构正常工作时,左右电梯在3秒内达到稳态位置。

假设你想知道当t = 3时,至少有一个致动器失效会发生什么。您可以模拟模型,保存t = 3时的工作点,加载并修改工作点,然后在t = 3到10之间再次模拟。

一步 任务 参考
1 定义图表的操作点。 定义工作点
2 加载工作点,并在执行机构出现故障时修改值。 修改单个执行器故障的工作点值
3. 通过运行模型来测试修改后的工作点。 测试一个故障的工作点
4 修改两个执行器故障的工作点值。 修改两个执行器故障的工作点值
5 再次运行模型,测试修改后的工作点。 测试两次故障的工作点

定义工作点

  1. 打开sf_aircraft模型。

  2. 使能操作点的保存。

    1. 打开“模型配置参数”对话框,进入数据导入/导出窗格。

    2. 选择最终状态复选框。

    3. 输入名称,例如xFinal

    4. 选择保存最终工作点复选框。

    5. 点击应用

    程序化的等效

  3. 定义此模拟段的停止时间。

    1. 在“模型配置参数”对话框中,进入解算器窗格。

    2. 停止时间,输入3.

    3. 点击好吧

    程序化的等效

  4. 开始仿真。

    当您模拟模型时,您将在变量中保存t = 3处的完整工作点xFinal在MATLAB基础工作空间。

  5. 禁用操作点的保存。

    此步骤防止覆盖上一步中保存的操作点。

    1. 打开“模型配置参数”对话框,进入数据导入/导出窗格。

    2. 清除保存最终工作点复选框。

    3. 清除最终状态复选框。

    4. 点击好吧

    程序化的等效

修改单个执行器故障的工作点值

  1. 使能装载一个工作点。

    1. 打开“模型配置参数”对话框,进入数据导入/导出窗格。

    2. 选择初始状态复选框。

    3. 输入包含图表操作点的变量:xFinal

    4. 点击好吧

    程序化的等效

  2. 为模式逻辑图的操作点值定义一个对象句柄。

    在命令提示符处,输入:

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

    提示

    如果图表突出显示在模型窗口中,您可以使用华东桐柏(万博1manbetx模型)

    c = Xfinal.get(GCB);

    使用得到工作点法

  3. 看操作点的内容。

    c = Block: "Mode Logic" (handle) (active) Path: sf_aircraft/Mode Logic Contains: + Actuators "State (OR)"(主动)+ LI_act“功能”+ LO_act“功能”+ L_switch“功能”+ RI_act“功能”+ RO_act“功能”+ R_switch“功能”+ LI_mode“国家输出数据”sf_aircraft_ModeType [1] + LO_mode“国家输出数据”sf_aircraft_ModeType [1] + RI_mode“国家输出数据”sf_aircraft_ModeType [1] + RO_mode“国家输出数据”sf_aircraft_ModeType [1]

    图表的操作点包含状态、函数和按层次顺序排列的数据列表。

  4. 在t = 3时,突出显示你的图表中活跃的状态。

    在命令提示符处,输入:

    c.highlightActiveStates;

    活动状态突出显示。默认情况下,两个外部执行器处于活动状态,两个内部执行器处于待机状态。

    提示

    要检查某个状态是否处于活动状态,可以使用isActive方法。例如,类型:

    c.Actuators.LI.L1.Standby.isActive

    当状态处于激活状态时,该命令返回true(1),否则返回false(0)。有关其他方法的信息,请参见与图表的工作点交互的方法

  5. 更改图表中的状态活动以反映一个执行器故障。

    假设左外(LO)执行器失效。要更改状态,请使用以下命令:

    c.Actuators.LO.Isolated.setActive;

    新激活的子状态在图表中突出显示。

    setActive方法确保图表退出和进入适当的状态,以保持状态的一致性。但是,该方法不执行条目新激活的子状态的操作。类似地,该方法也不执行退出先前活动的子状态的操作。

  6. 使用此命令保存修改后的工作点:

    xFinal = xFinal。集(blockpath c);

测试一个故障的工作点

  1. 为要测试的模拟段定义新的停止时间。

    1. 解算器“模型配置参数”对话框中的。

    2. 停止时间,输入10

    3. 点击好吧

    您不需要输入新的开始时间,因为模拟将从它停止的地方继续进行。

    程序化的等效

  2. 开始仿真。

    图表动画显示,其他三个驱动器反应适当的左外驱动器(LO)的故障。

    这致动器… 开关从… 因为…
    左内(李) 备用活跃 左电梯必须补偿左外(LO)执行器故障。
    右内(RI) 备用活跃 同一液压管道连接两个内部执行器。
    右外(RO) 活动以备用 每个电梯只能有一个执行器是有效的。

    两个电梯继续保持稳定的位置。

修改两个执行器故障的工作点值

  1. 更改图表中的状态活动以反映两个执行器故障。

    假设左内(LI)执行器也发生故障。要更改状态,请使用以下命令:

    c.Actuators.LI.Isolated.setActive;
  2. 使用此命令保存修改后的工作点:

    xFinal = xFinal。集(blockpath c);

测试两次故障的工作点

  1. 在“模型配置参数”对话框中,确认停止时间为10。

  2. 重新启动仿真。

    由于两个执行器故障,左侧电梯停止工作。右边的电梯保持稳定的位置。

如果您修改图表的操作点,以测试正确的电梯对执行器故障的响应,您将得到类似的结果。

相关的话题