SinelaboreRT Header Logo

SinelaboreRT

Productivity for embedded software development

User Tools

Site Tools


wiki:examples:pump_controller

This is an old revision of the document!


Sump Controller

This example presents the software necessary to realize a simplified pump controller which might be used in a mining environment. It is based on a case study presented in Burns and Wellings, Real-Time Systems and Programming Languages, Addison Wesley 2001.

The task of the system is to pump water from a sump to the surface. There are two level monitors which start pumping if the sump is full and stop pumping if it is empty again.

Pumping shall only start if the methane level is below a certain threshold. In case the pump is already running it shall stop automatically.

Pumping shall only start if the methane level is below a certain threshold. In case the pump is already running it shall stop automatically.

There is some additional requirements:

  • After starting the pump a pressure monitor must signal pressure within a defined time to ensure the pump does not run dry. Otherwise the pump becomes hot and finally breaks.
  • If stopped the run signal (checkback) from the motor must be absent (i.e. contactor opened)
  • When running the checkback signal must be present.
  • After a fault a manual reset signal is necessary to restart the controller.

The controller behavior can be modelled as a flat state chart. The model below was created using ArgoUML an open source modeling tool. There are two main states PumpStopped and PumpRunning. Changing from run to stopped is only possible via two intermediate states (PumpStarting, PumpStopping) which check that the pump motor checkback signal is present after a switching command. If the checkback from the motor is missing the Error state gets entered.

 Sump Controller State Diagram

In another possible design all states beside the Error state are children of a NoError state.

To create the state machine implementation code export the diagram to an XMI file and then call the state machine generator:

java -jar codegen.jar -S -p ARGOUML -t "sump controller:Controller" -o controller controller.xmi

In this case the C implementation is generated. The -t flag defines the path to the state diagram within the xmi model file.

With the optional -S command line flag the graphical simulation is started (see below). The graphical simulation allows to interactively send events to the machine and observe the new active state and the executed C-code. The diagram below shows the state machine in state PumpRunning. Events that are now accepted from the machine are listed on the left and are shown in blue in the diagram. To send a transition just click on the event in the list. The output window displays a trace of the executed code as provided in the diagram.

 Sump controller simulation

It is also possible to observe a real target which is connected to the graphical simulation. More information on how to connect an embedded target e.g. via a CAN communication link is available in the sinelabore manual. If you are interested in the model file or the generated code just send a mail to info at sinelabore dot com.

This website uses cookies. By using the website, you agree with storing cookies on your computer. Also you acknowledge that you have read and understand our Privacy Policy. If you do not agree leave the website.More information about cookies
wiki/examples/pump_controller.1350753702.txt.gz · Last modified: 2012/10/20 17:21 by pmueller

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki