LTH-image

Grafchart

Grafchart is a language for supervisory level sequence control and procedure handling that has been developed at the department since 1991. Grafchart is based on ideas from Grafcet/Sequential Function Charts, Petri nets, Statecharts, and object-oriented programming.

The original implementation of Grafchart had the same name and was developed in G2 from Gensym Corporation. Using this platform Grafchart was used for batch recipe control, diagnosis of mode-changning processes, alarm filtering, implementation of operator decision support systems, and implementation of robot cells.

JGrafchart JGrafchart

In 2001 an open implementation of Grafchart was made in Java. It is called JGrafchart and supports the following features:

  • Steps and transitions with parallel and alternative branches
  • Hierarchically structured workspaces
  • Procedures
  • Macro steps and Procedure Steps with exception handling
  • Process Steps
  • Digital IO, analog IO, socket-based IO, XML-based IO, and DPWS IO
  • Simple and complex variables
  • Graphical objects
  • XML-based storage on file
  • Printing

JGrafchart is used in our laboratory exercises on logical sequence control and batch control as well as in the Grafchart for Industrial Automation project. It has also been used within the EU/GROWTH project CHEM for control in process industry, the EU FR7 project ROSETTA for robotic assembly, and several master's theses for example for modeling or code generation.

JGrafchart is available for download as freeware. The included documentation for the latest version is also available online.

Example

A usual example is the Batch Heating Process which is a process where a tank is to be filled up to a certain level and heated to a certain temperature. Heating is only allowed when the level is above a certain threshold. Once the correct level and temperature are reached, the tank shall be emptied. An implementation of this can be seen in the following screenshot:

Developers

The following people have contributed to JGrafchart: