diag_modulardiagnosis.h
Go to the documentation of this file.
1 /** @file diag_modulardiagnosis.h
2 Functions to check a system's decentralized diagnosability.
3 */
4 
5 #ifndef DIAG_MODULARDIAGNOSIS_H
6 #define DIAG_MODULARDIAGNOSIS_H
7 
8 #include <vector>
9 #include "corefaudes.h"
10 #include "op_include.h"
11 #include "diag_generator.h"
12 #include "diag_languagediagnosis.h"
13 #include "diag_attrdiagstate.h"
14 #include "diag_attrfailureevents.h"
15 #include "diag_attrfailuretypes.h"
16 #include "diag_attrlabelset.h"
17 
18 #include "diag_debug.h"
19 
20 namespace faudes {
21 
22 ///////////////////////////////////////////////////////////////////////////////
23 // Functions for decentralized diagnosability
24 ///////////////////////////////////////////////////////////////////////////////
25 
26 /** @name Functions (modular diagnosability) */
27 /** @{ doxygen group */
28 
29 /**
30 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.
31 @param rGsubs
32  Local subsystem automata.
33 @param rKsubs
34  Local specification automata of the subsystems.
35 @param rReportString
36  User-readable information of violating condition (in case of negative test result).
37 @exception Exception
38  - Number of specifications does not equal number of subsystems (id 304).
39 @return
40  True if system G is modular diagnosable.
41 @ingroup DiagnosisPlugIn
42 */
43 extern FAUDES_API bool IsModularDiagnosable(const SystemVector& rGsubs, const GeneratorVector& rKsubs, std::string& rReportString);
44 
45 /** @} doxygen group */
46 
47 
48 /**
49 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.
50 @param rGsubs
51  Local subsystem automata.
52 @param rKsubs
53  Local specification automata of the subsystems.
54 @param rReportString
55  User-readable information of violating condition (in case of negative test result).
56 @exception Exception
57  - Number of specifications does not equal number of subsystems (id 304).
58 @return
59  True if system G is modular diagnosable.
60 @ingroup DiagnosisPlugIn
61 */
62 extern FAUDES_API bool IsModularDiagnosable(const std::vector< const System* >& rGsubs, const std::vector< const Generator* >& rKsubs, std::string& rReportString);
63 
64 /**
65 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.
66 @param rGsubs
67  Local subsystem automata.
68 @param rKsubs
69  Local specification automata of the subsystems.
70 @param rDiagsubs
71  Modular diagnosers
72 @param rReportString
73  User-readable information of violating condition (in case of negative test result).
74 @exception Exception
75  - Number of specifications does not equal number of subsystems (id 304).
76 @return
77  True if system G is modular diagnosable.
78  The result is allocated on the heap, ownership is with the calling function.
79 @ingroup DiagnosisPlugIn
80 */
81 extern FAUDES_API bool ModularDiagnoser(const std::vector< const System* >& rGsubs, const std::vector<const Generator* >& rKsubs, std::vector<Diagnoser*>& rDiagsubs, std::string& rReportString);
82 
83 /** @name Functions (modular diagnoser computation) */
84 /** @{ doxygen group */
85 
86 /** Function that computes diagnosers for the respective subsystems of a composed system
87  * @param rGsubs
88  * Local subsystem automata
89 @param rKsubs
90  Local specification automata of the subsystems.
91 @param rDiagSubs
92  Modular diagnosers
93 @param rReportString
94  User-readable information of violating condition (in case of negative test result).
95 @exception Exception
96  - Number of specifications does not equal number of subsystems (id 304).
97 @return
98  True if system G is modular diagnosable.
99  @ingroup DiagnosisPlugIn
100  */
101 extern FAUDES_API bool ModularDiagnoser(const SystemVector& rGsubs, const GeneratorVector& rKsubs, GeneratorVector& rDiagSubs,std::string& rReportString);
102 
103 /** @} doxygen group */
104 
105 
106 /**
107  * Function definition for run-time interface
108  */
109 extern FAUDES_API bool IsModularDiagnosable(const SystemVector& rGsubs, const GeneratorVector& rKsubs);
110 
111 
112 /**
113  * Function definition for run-time interface
114  */
115 extern FAUDES_API bool ModularDiagnoser(const SystemVector& rGsubs, const GeneratorVector& rKsubs, GeneratorVector& rDiagsubs);
116 
117 ///////////////////////////////////////////////////////////////////////////////
118 // Further Auxiliary Functions
119 ///////////////////////////////////////////////////////////////////////////////
120 
121 /**
122 Parallel composition of multiple generators.
123 @param rGens
124  STL-vector of generators.
125 @param rResGen
126  Output variable for the resulting product generator.
127 */
128 void cParallel(const std::vector<System>& rGens, System& rResGen);
129 
130 
131 } // namespace faudes
132 
133 #endif
#define FAUDES_API
Interface export/import symbols: windows.
Definition: cfl_platform.h:81
Vector template.
Generator with controllability attributes.
Includes all libFAUDES headers, no plugins.
State estimates for the current status of the generator (as state attributes).
Failure and indicator events for a common failure type.
Contains the failure and indicator partition for a system (used as global attribute).
Label representation for state estimates.
Includes debugging to diagnosis plug-in.
Structure of diagnosers and methods to handle them.
Functions to check a system's diagnosability with respect to a specification automaton and compute a ...
libFAUDES resides within the namespace faudes.
bool ModularDiagnoser(const SystemVector &rGsubs, const GeneratorVector &rKsubs, GeneratorVector &rDiagSubs, string &rReportString)
void cParallel(const std::vector< const System * > &rGens, System &rResGen)
Parallel composition of multiple generators.
bool IsModularDiagnosable(const SystemVector &rGsubs, const GeneratorVector &rKsubs, string &rReportString)
Includes all observer plugin headers.

libFAUDES 2.32b --- 2024.03.01 --- c++ api documentaion by doxygen