diag_modulardiagnosis.h

Go to the documentation of this file.
00001 /** @file diag_modulardiagnosis.h
00002 Functions to check a system's decentralized diagnosability.
00003 */
00004 
00005 #ifndef DIAG_MODULARDIAGNOSIS_H
00006 #define DIAG_MODULARDIAGNOSIS_H
00007 
00008 #include <vector>
00009 #include "corefaudes.h"
00010 #include "op_include.h"
00011 #include "diag_generator.h"
00012 #include "diag_languagediagnosis.h"
00013 #include "diag_attrdiagstate.h"
00014 #include "diag_attrfailureevents.h"
00015 #include "diag_attrfailuretypes.h"
00016 #include "diag_attrlabelset.h"
00017 
00018 #include "diag_debug.h"
00019 
00020 namespace faudes {
00021 
00022 ///////////////////////////////////////////////////////////////////////////////
00023 // Functions for decentralized diagnosability
00024 ///////////////////////////////////////////////////////////////////////////////
00025 
00026 /** @name Functions (modular diagnosability) */
00027 /** @{ doxygen group */
00028 
00029 /**
00030 Checks modular diagnosability for a system G (which consists of the subsystems rGsubs) with respect to the specification K (consisting of local specifications rKsubs) and the local abstraction alphabets rHighAlphSubs. 
00031 @param rGsubs
00032   Local subsystem automata.
00033 @param rKsubs
00034   Local specification automata of the subsystems.
00035 @param rReportString
00036   User-readable information of violating condition (in case of negative test result). 
00037 @exception Exception
00038   - Number of specifications does not equal number of subsystems (id 304).
00039 @return
00040   True if system G is modular diagnosable.
00041 @ingroup DiagnosisPlugIn
00042 */
00043 bool IsModularDiagnosable(const SystemVector& rGsubs, const GeneratorVector& rKsubs, std::string& rReportString);
00044 
00045 /** @} doxygen group */
00046 
00047 
00048 /**
00049 Checks modular diagnosability for a system G (which consists of the subsystems rGsubs) with respect to the specification K (consisting of local specifications rKsubs) and the local abstraction alphabets rHighAlphSubs. 
00050 @param rGsubs
00051   Local subsystem automata.
00052 @param rKsubs
00053   Local specification automata of the subsystems.
00054 @param rReportString
00055   User-readable information of violating condition (in case of negative test result). 
00056 @exception Exception
00057   - Number of specifications does not equal number of subsystems (id 304).
00058 @return
00059   True if system G is modular diagnosable.
00060 @ingroup DiagnosisPlugIn
00061 */
00062 bool IsModularDiagnosable(const std::vector< const System* >& rGsubs, const std::vector< const Generator* >& rKsubs,  std::string& rReportString);
00063 
00064 /**
00065 Checks modular diagnosability for a system G (which consists of the subsystems rGsubs) with respect to the specification K (consisting of local specifications rKsubs) and the local abstraction alphabets rHighAlphSubs. 
00066 @param rGsubs
00067   Local subsystem automata.
00068 @param rKsubs
00069   Local specification automata of the subsystems.
00070 @param rDiagsubs
00071   Modular diagnosers
00072 @param rReportString
00073   User-readable information of violating condition (in case of negative test result). 
00074 @exception Exception
00075   - Number of specifications does not equal number of subsystems (id 304).
00076 @return
00077   True if system G is modular diagnosable.
00078   The result is allocated on the heap, ownership is with the calling function.
00079 @ingroup DiagnosisPlugIn
00080 */
00081 bool ModularDiagnoser(const std::vector< const System* >& rGsubs, const std::vector<const Generator* >& rKsubs, std::vector<Diagnoser*>& rDiagsubs, std::string& rReportString);
00082 
00083 /** @name Functions (modular diagnoser computation) */
00084 /** @{ doxygen group */
00085 
00086 /** Function that computes diagnosers for the respective subsystems of a composed system
00087   * @param rGsubs
00088   * Local subsystem automata
00089 @param rKsubs
00090   Local specification automata of the subsystems.
00091 @param rDiagSubs
00092   Modular diagnosers
00093 @param rReportString
00094   User-readable information of violating condition (in case of negative test result). 
00095 @exception Exception
00096   - Number of specifications does not equal number of subsystems (id 304).
00097 @return
00098   True if system G is modular diagnosable.
00099  @ingroup DiagnosisPlugIn
00100   */
00101 bool ModularDiagnoser(const SystemVector& rGsubs, const GeneratorVector& rKsubs, GeneratorVector& rDiagSubs,std::string& rReportString);
00102 
00103 /** @} doxygen group */
00104 
00105 
00106 /**
00107  * Function definition for run-time interface 
00108  */
00109 bool IsModularDiagnosable(const SystemVector& rGsubs, const GeneratorVector& rKsubs);
00110 
00111 
00112 /**
00113  * Function definition for run-time interface 
00114  */
00115 bool ModularDiagnoser(const SystemVector& rGsubs, const GeneratorVector& rKsubs, GeneratorVector& rDiagsubs);
00116 
00117 ///////////////////////////////////////////////////////////////////////////////
00118 // Further Auxiliary Functions  
00119 ///////////////////////////////////////////////////////////////////////////////
00120 
00121 /**
00122 Parallel composition of multiple generators.
00123 @param rGens
00124   STL-vector of generators.
00125 @param rResGen
00126   Output variable for the resulting product generator.
00127 */
00128 void cParallel(const std::vector<System>& rGens, System& rResGen);
00129 
00130 
00131 } // namespace faudes
00132 
00133 #endif

libFAUDES 2.23h --- 2014.04.03 --- c++ api documentaion by doxygen