主要内容

setActive

将状态设置为激活

    说明

    setActive(stateOp) 将与工作点 stateOp 对应的状态设置为激活。stateOp 必须为叶状态的工作点。当您调用 setActive 时,图通过以下方式维护状态一致性:

    • 退出和进入适当的状态

    • 重置新激活状态的时序计数器

    • 更新激活状态数据的值

    • 启用或禁用绑定到状态的函数调用子系统和 Simulink® 函数

    但是,图不执行先前激活状态的 exit 动作或新激活状态的 entry 动作。此外,状态不重新初始化任何状态级别的局部数据。

    示例

    示例

    全部折叠

    1. 打开 sf_car 模型。

      openExample("sf_car")

      有关此模型的详细信息,请参阅Model a Car with Automatic Transmission

    2. 设置模型以保存最终工作点。打开“配置参数”对话框,并在数据导入/导出窗格中执行以下操作:

      1. 选择最终状态并输入工作点的名称。对于此示例,请使用 xSteadyState

      2. 选择保存最终工作点

      3. 点击确定

    3. 设置此仿真段的停止时间。在仿真选项卡中,将停止时间设置为 3

    4. 运行仿真。

    5. 访问包含 shift_logic 图的工作点信息的 Stateflow.op.BlockOperatingPoint 对象。

      blockpath = "sf_car/shift_logic";
      op = get(xSteadyState,blockpath)
      op = 
      
      Block: "shift_logic"    (handle)    (active)
        Path:     sf_car/shift_logic
      
        Contains:
      
          + gear_state                     "State (AND)"                        (active)       
          + selection_state                "State (AND)"                        (active)       
            gear                           "State output data"                  gearType [1, 1]
            down_th                        "Local data"                         double [1, 1]  
            up_th                          "Local data"                         double [1, 1]  
            datasetWrittenToVector         "Data set written to vector"         logical 4x1  
    6. 访问包含 gear_state 状态的工作点信息的 Stateflow.op.OperatingPointContainer 对象。

      op.gear_state
      ans = 
      
      State: "gear_state"    (handle)    (active)
        Path:     sf_car/shift_logic/gear_state
      
        Contains:
      
          + first          "State (OR)"         (active)
          + fourth         "State (OR)"                 
          + second         "State (OR)"                 
          + third          "State (OR)"
    7. 突出显示图中在 t = 3 处被激活的状态。

      highlightActiveStates(op)

      Stateflow chart showing active states.

    8. 更改状态 gear_state 中的子状态活动以反映挡位的变化。

      setActive(op.gear_state.second)

      Stateflow chart showing active states.

    9. 验证状态 gear_state 中的子状态 second 在修改后的工作点中被激活。

      isActive(op.gear_state.second)
      ans =
      
        logical
      
         1

    10. 取消 Stateflow® 编辑器中激活状态的突出显示。

      removeHighlighting(op)

    输入参数

    全部折叠

    叶状态的工作点,指定为 Stateflow.op.OperatingPointContainer 对象。

    版本历史记录

    在 R2009b 中推出