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

NameDescription
AlternativeAlternative splitting of execution path (use component between two steps)
ExamplesExamples to demonstrate the usage of the components of the StateGraph library
InitialStepInitial step (= step that is active when simulation starts)
InitialStepWithSignalInitial step (= step that is active when simulation starts). Connector 'active' is true when the step is active
InterfacesConnectors and partial models
ParallelParallel splitting of execution path (use component between two transitions)
PartialCompositeStepSuperclass of a subgraph, i.e., a composite step that has internally a StateGraph
StateGraphRootRoot of a StateGraph (has to be present on the highest level of a StateGraph)
StepOrdinary step (= step that is not active when simulation starts)
StepWithSignalOrdinary step (= step that is not active when simulation starts). Connector 'active' is true when the step is active
TemporaryComponents that will be provided by other libraries in the future
TransitionTransition where the fire condition is set by a modification of variable condition
TransitionWithSignalTransition where the fire condition is set by a Boolean input signal
UsersGuideUser'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

TypeNameDefaultDescription
IntegernIn1Number of input connections
IntegernOut1Number of output connections

Connectors

TypeNameDescription
Step_ininPort[nIn]Vector of step input connectors
Step_outoutPort[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

TypeNameDefaultDescription
IntegernIn1Number of input connections
IntegernOut1Number of output connections

Connectors

TypeNameDescription
Step_ininPort[nIn]Vector of step input connectors
Step_outoutPort[nOut]Vector of step output connectors
output BooleanOutputactive 

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

TypeNameDefaultDescription
IntegernIn1Number of input connections
IntegernOut1Number of output connections

Connectors

TypeNameDescription
Step_ininPort[nIn]Vector of step input connectors
Step_outoutPort[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

TypeNameDefaultDescription
IntegernIn1Number of input connections
IntegernOut1Number of output connections

Connectors

TypeNameDescription
Step_ininPort[nIn]Vector of step input connectors
Step_outoutPort[nOut]Vector of step output connectors
output BooleanOutputactive 

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

TypeNameDefaultDescription
BooleanenableTimerfalse= true, if timer is enabled
TimewaitTime0Wait time before transition fires

Inputs

TypeNameDefaultDescription
Booleanconditiontrue= true, if transition may fire (time varying expression)

Connectors

TypeNameDescription
Transition_ininPortVector of transition input connectors
Transition_outoutPortVector 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

TypeNameDefaultDescription
BooleanenableTimerfalse= true, if timer is enabled
TimewaitTime0Wait time before transition fires

Connectors

TypeNameDescription
input BooleanInputcondition 
Transition_ininPortVector of transition input connectors
Transition_outoutPortVector of transition output connectors

Block Modelica.​StateGraph.​Alternative
Alternative splitting of execution path (use component between two steps)

Parameters

TypeNameDefaultDescription
IntegernBranches2Number of alternative branches

Connectors

TypeNameDescription
Transition_ininPort 
Transition_outoutPort 
Step_in_forAlternativejoin[nBranches] 
Step_out_forAlternativesplit[nBranches] 

Block Modelica.​StateGraph.​Parallel
Parallel splitting of execution path (use component between two transitions)

Parameters

TypeNameDefaultDescription
IntegernBranches2Number of parallel branches that are executed in parallel

Connectors

TypeNameDescription
Step_ininPort 
Step_outoutPort 
Transition_in_forParalleljoin[nBranches] 
Transition_out_forParallelsplit[nBranches] 

Partial Model Modelica.​StateGraph.​PartialCompositeStep
Superclass of a subgraph, i.e., a composite step that has internally a StateGraph

Parameters

TypeNameDefaultDescription
IntegernSuspend1Number of suspend ports
IntegernResume1Number of resume ports

Connectors

TypeNameDescription
Step_ininPort 
Step_outoutPort 
CompositeStep_suspendsuspend[nSuspend] 
CompositeStep_resumeresume[nResume] 

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

TypeNameDescription
CompositeStepStatePort_outsubgraphStatePort