Package Modelica.StateGraph
Library of hierarchical state machine components to model discrete event and reactive systems
Information
Note, there is a much improved version of this library called
"Modelica_StateGraph2". If this library is not yet distributed with your
Modelica tool, you can download it from
https://github.com/modelica/Modelica_StateGraph2.
In the
Users Guide
a detailed comparison is given. It is highly recommended to use Modelica_StateGraph2 instead
of Modelica.StateGraph.
Library StateGraph is a free Modelica package providing
components to model discrete event and reactive
systems in a convenient
way. It is based on the JGrafchart method and
takes advantage of Modelica features for
the "action" language. JGrafchart is a further development of
Grafcet to include elements of StateCharts that are not present
in Grafcet/Sequential Function Charts. Therefore, the StateGraph
library has a similar modeling power as StateCharts but avoids
some deficiencies of StateCharts.
For an introduction, have especially a look at:
A typical model generated with this library is shown
in the next figure where on the left hand side a two-tank
system with a tank controller and on the right hand side the
top-level part of the tank controller as a StateGraph is shown:
The unique feature of the StateGraph library with respect to JGrafcharts,
Grafcet, Sequential Function Charts, and StateCharts, is Modelica's
"single assignment rule" that requires that every variable is defined
by exactly one equation. This leads to a different "action" definition
as in these formalisms. The advantage is that the translator can either
determine a useful evaluation sequence by equation sorting or
reports an error if this is not possible, e.g., because a model
would lead to a non-determinism or to a dead-lock. As a side effect,
this leads also to simpler and more easier to understand models and
global variables are no longer needed (whereas in JGrafcharts,
Grafcet, Sequential Function Charts and StateCharts global variables
are nearly always needed).
Copyright © 1998-2019, Modelica Association and contributors
Extends from Modelica.Icons.Package
(Icon for standard packages).
Package Contents
Name | Description |
---|
Alternative | Alternative splitting of execution path (use component between two steps) |
Examples … | Examples to demonstrate the usage of the components of the StateGraph library |
InitialStep | Initial step (= step that is active when simulation starts) |
InitialStepWithSignal | Initial step (= step that is active when simulation starts). Connector 'active' is true when the step is active |
Interfaces … | Connectors and partial models |
Parallel | Parallel splitting of execution path (use component between two transitions) |
PartialCompositeStep | Superclass of a subgraph, i.e., a composite step that has internally a StateGraph |
StateGraphRoot | Root of a StateGraph (has to be present on the highest level of a StateGraph) |
Step | Ordinary step (= step that is not active when simulation starts) |
StepWithSignal | Ordinary step (= step that is not active when simulation starts). Connector 'active' is true when the step is active |
Temporary … | Components that will be provided by other libraries in the future |
Transition | Transition where the fire condition is set by a modification of variable condition |
TransitionWithSignal | Transition where the fire condition is set by a Boolean input signal |
UsersGuide … | User's Guide of StateGraph Library |
Block Modelica.StateGraph.InitialStep
Initial step (= step that is active when simulation starts)
Extends from Modelica.StateGraph.Interfaces.PartialStep
(Partial step with one input and one output transition port).
Parameters
Type | Name | Default | Description |
---|
Integer | nIn | 1 | Number of input connections |
Integer | nOut | 1 | Number of output connections |
Connectors
Type | Name | Description |
---|
Step_in | inPort[nIn] | Vector of step input connectors |
Step_out | outPort[nOut] | Vector of step output connectors |
Block Modelica.StateGraph.InitialStepWithSignal
Initial step (= step that is active when simulation starts). Connector 'active' is true when the step is active
Extends from Modelica.StateGraph.Interfaces.PartialStep
(Partial step with one input and one output transition port).
Parameters
Type | Name | Default | Description |
---|
Integer | nIn | 1 | Number of input connections |
Integer | nOut | 1 | Number of output connections |
Connectors
Type | Name | Description |
---|
Step_in | inPort[nIn] | Vector of step input connectors |
Step_out | outPort[nOut] | Vector of step output connectors |
output BooleanOutput | active |   |
Block Modelica.StateGraph.Step
Ordinary step (= step that is not active when simulation starts)
Extends from Modelica.StateGraph.Interfaces.PartialStep
(Partial step with one input and one output transition port).
Parameters
Type | Name | Default | Description |
---|
Integer | nIn | 1 | Number of input connections |
Integer | nOut | 1 | Number of output connections |
Connectors
Type | Name | Description |
---|
Step_in | inPort[nIn] | Vector of step input connectors |
Step_out | outPort[nOut] | Vector of step output connectors |
Block Modelica.StateGraph.StepWithSignal
Ordinary step (= step that is not active when simulation starts). Connector 'active' is true when the step is active
Extends from Modelica.StateGraph.Interfaces.PartialStep
(Partial step with one input and one output transition port).
Parameters
Type | Name | Default | Description |
---|
Integer | nIn | 1 | Number of input connections |
Integer | nOut | 1 | Number of output connections |
Connectors
Type | Name | Description |
---|
Step_in | inPort[nIn] | Vector of step input connectors |
Step_out | outPort[nOut] | Vector of step output connectors |
output BooleanOutput | active |   |
Block Modelica.StateGraph.Transition
Transition where the fire condition is set by a modification of variable condition
Extends from Modelica.StateGraph.Interfaces.PartialTransition
(Partial transition with input and output connections).
Parameters
Type | Name | Default | Description |
---|
Boolean | enableTimer | false | = true, if timer is enabled |
Time | waitTime | 0 | Wait time before transition fires |
Inputs
Type | Name | Default | Description |
---|
Boolean | condition | true | = true, if transition may fire (time varying expression) |
Connectors
Type | Name | Description |
---|
Transition_in | inPort | Vector of transition input connectors |
Transition_out | outPort | Vector of transition output connectors |
Block Modelica.StateGraph.TransitionWithSignal
Transition where the fire condition is set by a Boolean input signal
Extends from Modelica.StateGraph.Interfaces.PartialTransition
(Partial transition with input and output connections).
Parameters
Type | Name | Default | Description |
---|
Boolean | enableTimer | false | = true, if timer is enabled |
Time | waitTime | 0 | Wait time before transition fires |
Connectors
Block Modelica.StateGraph.Alternative
Alternative splitting of execution path (use component between two steps)
Parameters
Type | Name | Default | Description |
---|
Integer | nBranches | 2 | Number of alternative branches |
Connectors
Block Modelica.StateGraph.Parallel
Parallel splitting of execution path (use component between two transitions)
Parameters
Type | Name | Default | Description |
---|
Integer | nBranches | 2 | Number of parallel branches that are executed in parallel |
Connectors
Partial Model Modelica.StateGraph.PartialCompositeStep
Superclass of a subgraph, i.e., a composite step that has internally a StateGraph
Parameters
Type | Name | Default | Description |
---|
Integer | nSuspend | 1 | Number of suspend ports |
Integer | nResume | 1 | Number of resume ports |
Connectors
Model Modelica.StateGraph.StateGraphRoot
Root of a StateGraph (has to be present on the highest level of a StateGraph)
Information
On the highest level of a StateGraph, an instance of StateGraphRoot
has to be present.
The StateGraphRoot object is needed, since all Step objects have
an "outer" reference to communicate with the "nearest" CompositeStep
(which inherits from PartialCompositeStep), especially to abort
a CompositeStep via the "suspend" port. Even if no "CompositeStep" is present,
on highest level a corresponding "inner" definition is needed
and is provided by the StateGraphRoot object.
Extends from Modelica.StateGraph.Interfaces.CompositeStepState
(Communication channel between CompositeSteps and steps in the CompositeStep).
Connectors