Main Content

Mode Chart Modeling

About Mode Charts

Mode charts provide an intuitive way to model components characterized by a discrete set of distinct operating modes. A car clutch is a good example of such a component. It has several operating modes, with each mode being defined by a different set of equations. It also has a transition logic, with a set of predicate conditions defining when the clutch transitions from one mode to another. It is possible to model this component using primitive constructs, such as event variables and edge operators, but this way of modeling lacks readability. For more complex components, the file becomes cumbersome and unwieldy. Every time you model a component with multiple operating modes and transitions, this component is a good candidate for a mode chart implementation.

These constructs in Simscape™ language let you perform mode chart modeling:

  • modecharts — A top-level section in a component file. It can contain one or more modechart constructs.

  • modechart — A named construct that contains a textual representation of the mode chart: modes, transitions, and an optional initial mode specification.

  • modes — A section in a mode chart that describes all the operating modes. It can contain one or more mode constructs.

  • mode — A named construct that corresponds to a distinct operating mode of the component, defined by a set of equations.

  • transitions — A section in a mode chart that describes transitions between the operating modes, based on predicate conditions.

  • initial — An optional section in a mode chart that specifies the initial operating mode, based on a predicate condition. If the predicate is not true, or if the initial section is missing, then the first mode listed in the modes section is active at the start of simulation. If one of the other predicate conditions is true at initialization time, then the simulation can start in a different mode, as described in Transition Precedence and Execution Rules.

  • entry — An optional section inside a mode construct in a mode chart that lets you specify the actions to be performed upon entering the mode.

Mode Chart Syntax

In its simplest form, the hierarchical structure of a modecharts section can look like this:

modecharts (ExternalAccess = observe)
   mc1 = modechart
      modes
         mode m1
            equations
               ...
            end
         end
         mode m2
            equations
               ...
            end
         end
      end
      transitions
         m1->m2 : p1;
      end
      initial
         m2 : p2;
      end
   end
end

It contains one mode chart, mc1, with two modes, m1 and m2.

The system transitions from mode m1 to mode m2 when the predicate condition p1 is true.

If the predicate condition p2 is true, the simulation starts in mode m2, otherwise in mode m1.

In this example, the transitions section does not define a transition from mode m2 to mode m1. Therefore, according to this mode chart, once the system reaches mode m2, it never goes back to mode m1.

Mode Chart Example

Use this simple example to understand how the mode charts work. For a more detailed example, see Switch with Hysteresis.

component ExampleChart
 
  inputs
     u1 = 0;
  end
 
  outputs
     y = 0;
  end

  parameters
     p = 1;
  end
  
  modecharts(ExternalAccess = observe)
     mc1 = modechart
        modes
           mode m1
              equations
                 y==1;
              end
           end
           mode m2
              equations
                 y==2;
              end
              end
           mode m3
              equations
                 y==3;
              end
           end
        end
        transitions
           m1->m2 : u1<0;
           m2->m3 : u1>0;
        end
        initial
           m2 : p<0;
        end
     end
  end

end

The component implements a simple chart with three operating modes:

  • In the first mode, the output signal equals 1.

  • In the second mode, the output signal equals 2.

  • In the third mode, the output signal equals 3.

The component transitions from the first to the second mode when the input signal is negative, and from the second to the third mode when the input signal is positive.

The initial mode depends on the block parameter value: if parameter p is negative, simulation starts with the block in the second mode, otherwise — in the first mode.

See Also

| | | |

Related Topics