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.
Sources
Download the sources, Example, this document
FreeMind
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:
- PV: Some_PV
Per default, the PV name for a fault tree node is
constructed from the first line of text in the node.
(That line is also the text shown in the EDM screen).
Spaces are replaced by underscores etc,
but if that translation produces a garbage PV,
you can tell the scripts which PV name to use.
- INP: Some_PV
Specify the PV that feeds a tree node.
Per default, that needs to be a "1 means OK" type
of PV.
- NEGATIVE
Mark that PV as "0 means OK".
- MINIMUM: 3.14
Node is OK if PV's value is above minimum.
- MAXIMUM, ABS_MAXIMUM, ABS_MINIMUM
similar.
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
Database
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.