Fault Tree

The idea is to use a Mind-Mapping tool like "FreeMind", which is basically a tree editor, to document dependencies between various inputs and subsystems and the overall "System OK" status.

A simple set of perl scripts described in here does just that.


Download the sources, Example, this document


You need to get FreeMind, a free Java tool, and create a fault tree similar to this demo:

Magic text, one per line of node text:

Perl scripts

The following perl scripts convert a FreeMind file. To run, you might have to add the "XML::Simple" module to your perl installation.
# Convert FreeMind drawing into basic Fault Tree info
# One could imagine generating those ftree files
# from other 'tree' editors, from some RDB, or manually
perl FreeMind2FaultTree.pl -p '${S}:Demo:' demo.mm

# Create a database and screen from that ftree file
perl FaultTree2DB.pl demo.ftree 
perl FaultTree2EDL.pl demo.ftree 


Run the fault tree database on a real IOC or a soft IOC.
# Run the generated fault tree together with some
# dummy value database for tree inputs
softIoc -s -m "S=Test" -d demo_input.db -m "S=Test" -d demo.db

Screens, Behavior

# Display the generated EDM screen of the fault tree
edm -m S=Test -x demo
The tree without faults

After manually setting one input PV into a faulty value:

Now the tree 'latches'. If there is another not-OK PV, that's indicated, but doesn't update the whole tree.

One can cause the tree to update via the "reset" button. It will also update when all faults clear.