diag_modulardiagnosis.hGo 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 |