←
Documentation
ADS-IDAC Engine
5.0.0
AlarmTwoParameterDifference.cpp
Go to the documentation of this file.
1
// AlarmTwoParameter.cpp: implementation of the AlarmTwoParameter class.
2
//
4
5
#include "
AlarmTwoParameterDifference.h
"
6
#include "../Branch/BranchRecord.h"
7
#include <boost/serialization/export.hpp>
8
#include "../Global/SimulationContext.h"
9
#include <boost/archive/binary_oarchive.hpp>
10
#include <boost/archive/binary_iarchive.hpp>
11
BOOST_CLASS_EXPORT_IMPLEMENT(
AlarmTwoParameterDifference
)
12
using namespace
std;
13
14
16
// Construction/Destruction
18
19
AlarmTwoParameterDifference::AlarmTwoParameterDifference
()
20
{
21
this->
setTypeOfAlarm
(
DisplayType::AlarmTwoParamDiff
);
22
ptr_to_second_corresponding_indicator
= 0;
23
threshold_value_that_activate_the_alarm
= -9999.0;
24
second_corresponding_indicator_name
=
"NOT_SPECIFIED"
;
25
}
26
27
AlarmTwoParameterDifference::~AlarmTwoParameterDifference
()
28
{
29
30
}
31
void
AlarmTwoParameterDifference::setSecondCorrespondingIndicatorName
(
string
str){
second_corresponding_indicator_name
= str;}
32
void
AlarmTwoParameterDifference::setThresholdValueThatActivateTheAlarm
(
double
x){
threshold_value_that_activate_the_alarm
= x;}
33
string
AlarmTwoParameterDifference::getSecondCorrespondingIndicatorName
(){
return
second_corresponding_indicator_name
;}
34
double
AlarmTwoParameterDifference::getThresholdValueThatActivateTheAlarm
(){
return
threshold_value_that_activate_the_alarm
;}
35
void
AlarmTwoParameterDifference::readInfoFromFile
(ifstream &fin){
36
AlarmControlPanelUnit::readInfoFromFile
(fin);
37
fin >>
second_corresponding_indicator_name
>>
threshold_value_that_activate_the_alarm
;
38
}
39
int
AlarmTwoParameterDifference::updateDisplayedAlarmState
(
ControlPanelDisplay
&_cp){
40
DisplayParameterValue
*dpv_ptr, *dpv_ptr2;
41
double
parameter_value, parameter_value2;
42
int
ctrl_state;
43
if
(this->
getPtrToCorrespondingIndicator
() == 0){
44
this->
setPtrToCorrespondingIndicator
((
SystemDisplay
*) _cp.
getDisplayFromMap
(this->getCorrespondingIndicatorName()));
45
}
46
if
(
ptr_to_second_corresponding_indicator
== 0){
47
ptr_to_second_corresponding_indicator
= (
SystemDisplay
*) _cp.
getDisplayFromMap
(
second_corresponding_indicator_name
);
48
}
49
if
(this->
getPtrToCorrespondingIndicator
() != 0 &&
ptr_to_second_corresponding_indicator
!= 0){
50
ctrl_state = this->
getDisplayedOperatorControlState
();
51
dpv_ptr = (
DisplayParameterValue
*) this->
getPtrToCorrespondingIndicator
();
52
dpv_ptr2 = (
DisplayParameterValue
*)
ptr_to_second_corresponding_indicator
;
53
if
(this->
getFuncationalState
() ==
sim::State::Succeed
){
54
parameter_value = dpv_ptr->
getDisplayedParameterValue
();
55
parameter_value2 = dpv_ptr2->
getDisplayedParameterValue
();
56
if
(ctrl_state ==
sim::State::Off
){
57
this->
setDisplayedAlarmState
(
sim::State::Off
);
58
}
59
else
if
(ctrl_state ==
sim::State::Auto
){
60
// the comparison is signed (first parameter minus second), not an absolute difference
61
// if(abs(parameter_value - parameter_value2) >= threshold_value_that_activate_the_alarm){
62
if
((parameter_value - parameter_value2) >=
threshold_value_that_activate_the_alarm
){
63
this->
setDisplayedAlarmState
(
sim::State::On
);
64
this->
setTimeAtWhichThisAlarmIsActivated
(
r5pars_
.timesno);
65
}
66
}
67
else
if
(ctrl_state ==
sim::State::Reset
){
68
// the comparison is signed (first parameter minus second), not an absolute difference
69
// if(abs(parameter_value - parameter_value2) >= threshold_value_that_activate_the_alarm){
70
if
((parameter_value - parameter_value2) >=
threshold_value_that_activate_the_alarm
){
71
this->
setDisplayedAlarmState
(
sim::State::On
);
72
this->
setTimeAtWhichThisAlarmIsActivated
(
r5pars_
.timesno);
73
}
74
//The following lines are modeling the operator acknowledging the existance of the alarm
75
else
{
76
this->
setDisplayedAlarmState
(
sim::State::Off
);
77
}
78
}
79
else
{}
80
}
81
else
{
//alarm fails
82
if
(ctrl_state ==
sim::State::Off
&& this->
getDisplayedAlarmState
() !=
sim::State::Off
){
83
this->
setDisplayedAlarmState
(
sim::State::Off
);
84
}
85
else
{
86
if
(this->
getDisplayedAlarmState
() != this->
getDisplayedAlarmStateWhenFail
()){
87
this->
setDisplayedAlarmState
(this->
getDisplayedAlarmStateWhenFail
());
88
}
89
}
90
}
91
}
92
else
{
93
r5pars_
.sim_err =
true
;
94
g_sim
.
Branch_center
.
setTempESMessage
(
"AlarmTwoParameterDifference::updateDisplayedAlarmState err"
);
95
g_sim
.
Branch_center
.
setTempTypeOfConsequence
(
Consequence::AdsSimErr
);
96
ofstream fout(
"err messages.txt"
, ios::app);
97
cout <<
"AlarmTwoParameterDifference::updateDisplayedAlarmState: Alarm "
<< this->
getAlarmName
() <<
" either its corresponding display "
98
<< this->
getCorrespondingIndicatorName
() <<
" or "
<< this->
getSecondCorrespondingIndicatorName
() <<
" can not be found!"
<< endl;
99
fout <<
r5pars_
.timesno <<
" AlarmTwoParameterDifference::updateDisplayedAlarmState: Alarm "
<< this->
getAlarmName
() <<
" either its corresponding display "
100
<< this->
getCorrespondingIndicatorName
() <<
" or "
<<
second_corresponding_indicator_name
<<
" can not be found!\n"
;
101
fout.close();
102
}
103
return
this->
getDisplayedAlarmState
();
104
}
105
void
AlarmTwoParameterDifference::copyAlarmTwoParameterDifference
(
AlarmTwoParameterDifference
&_ad){
106
second_corresponding_indicator_name
= _ad.
getSecondCorrespondingIndicatorName
();
107
threshold_value_that_activate_the_alarm
= _ad.
getThresholdValueThatActivateTheAlarm
();
108
AlarmControlPanelUnit::copyAlarmControlPanelUnit
(_ad);
109
}
110
void
AlarmTwoParameterDifference::saveAlarmTwoParameterDifferenceToFile
(ofstream &fout){
111
this->
saveAlarmControlPanelUnitToFile
(fout);
112
fout <<
second_corresponding_indicator_name
<<
' '
<<
threshold_value_that_activate_the_alarm
<<
'\n'
;
113
}
114
void
AlarmTwoParameterDifference::retrieveAlarmTwoParameterDifferenceFromFile
(ifstream &fin){
115
this->
retrieveAlarmControlPanelUnitFromFile
(fin);
116
fin >>
second_corresponding_indicator_name
>>
threshold_value_that_activate_the_alarm
;
117
}
AlarmTwoParameterDifference.h
DisplayType::AlarmTwoParamDiff
@ AlarmTwoParamDiff
Consequence::AdsSimErr
@ AdsSimErr
g_sim
SimulationContext g_sim
Global simulation context: the single instance, defined in SimulationContext.cpp.
Definition:
SimulationContext.cpp:7
AlarmControlPanelUnit::getDisplayedAlarmStateWhenFail
int getDisplayedAlarmStateWhenFail()
Definition:
AlarmControlPanelUnit.cpp:30
AlarmControlPanelUnit::retrieveAlarmControlPanelUnitFromFile
void retrieveAlarmControlPanelUnitFromFile(std::ifstream &)
Definition:
AlarmControlPanelUnit.cpp:47
AlarmControlPanelUnit::setPtrToCorrespondingIndicator
void setPtrToCorrespondingIndicator(SystemDisplay *ptr)
Definition:
AlarmControlPanelUnit.cpp:32
AlarmControlPanelUnit::saveAlarmControlPanelUnitToFile
void saveAlarmControlPanelUnitToFile(std::ofstream &)
Definition:
AlarmControlPanelUnit.cpp:43
AlarmControlPanelUnit::getPtrToCorrespondingIndicator
SystemDisplay * getPtrToCorrespondingIndicator()
Definition:
AlarmControlPanelUnit.cpp:31
AlarmControlPanelUnit::getFuncationalState
int getFuncationalState()
Definition:
AlarmControlPanelUnit.cpp:29
AlarmControlPanelUnit::readInfoFromFile
void readInfoFromFile(std::ifstream &)
Definition:
AlarmControlPanelUnit.cpp:35
AlarmControlPanelUnit::copyAlarmControlPanelUnit
void copyAlarmControlPanelUnit(AlarmControlPanelUnit &)
Definition:
AlarmControlPanelUnit.cpp:38
AlarmElement::setTimeAtWhichThisAlarmIsActivated
void setTimeAtWhichThisAlarmIsActivated(double)
Definition:
AlarmElement.cpp:60
AlarmElement::getCorrespondingIndicatorName
std::string getCorrespondingIndicatorName()
Definition:
AlarmElement.cpp:42
AlarmElement::setDisplayedAlarmState
void setDisplayedAlarmState(int)
Definition:
AlarmElement.cpp:41
AlarmElement::getAlarmName
std::string getAlarmName()
Definition:
AlarmElement.cpp:35
AlarmElement::getDisplayedOperatorControlState
int getDisplayedOperatorControlState()
Definition:
AlarmElement.cpp:57
AlarmElement::getDisplayedAlarmState
int getDisplayedAlarmState()
Definition:
AlarmElement.cpp:43
AlarmTwoParameterDifference
Definition:
AlarmTwoParameterDifference.h:16
AlarmTwoParameterDifference::saveAlarmTwoParameterDifferenceToFile
void saveAlarmTwoParameterDifferenceToFile(std::ofstream &)
Definition:
AlarmTwoParameterDifference.cpp:110
AlarmTwoParameterDifference::getThresholdValueThatActivateTheAlarm
double getThresholdValueThatActivateTheAlarm()
Definition:
AlarmTwoParameterDifference.cpp:34
AlarmTwoParameterDifference::second_corresponding_indicator_name
std::string second_corresponding_indicator_name
Definition:
AlarmTwoParameterDifference.h:31
AlarmTwoParameterDifference::readInfoFromFile
void readInfoFromFile(std::ifstream &)
Definition:
AlarmTwoParameterDifference.cpp:35
AlarmTwoParameterDifference::setThresholdValueThatActivateTheAlarm
void setThresholdValueThatActivateTheAlarm(double value)
Definition:
AlarmTwoParameterDifference.cpp:32
AlarmTwoParameterDifference::copyAlarmTwoParameterDifference
void copyAlarmTwoParameterDifference(AlarmTwoParameterDifference &)
Definition:
AlarmTwoParameterDifference.cpp:105
AlarmTwoParameterDifference::setSecondCorrespondingIndicatorName
void setSecondCorrespondingIndicatorName(std::string name)
Definition:
AlarmTwoParameterDifference.cpp:31
AlarmTwoParameterDifference::retrieveAlarmTwoParameterDifferenceFromFile
void retrieveAlarmTwoParameterDifferenceFromFile(std::ifstream &)
Definition:
AlarmTwoParameterDifference.cpp:114
AlarmTwoParameterDifference::updateDisplayedAlarmState
int updateDisplayedAlarmState(ControlPanelDisplay &)
Definition:
AlarmTwoParameterDifference.cpp:39
AlarmTwoParameterDifference::ptr_to_second_corresponding_indicator
DisplayElement * ptr_to_second_corresponding_indicator
Definition:
AlarmTwoParameterDifference.h:32
AlarmTwoParameterDifference::threshold_value_that_activate_the_alarm
double threshold_value_that_activate_the_alarm
Definition:
AlarmTwoParameterDifference.h:33
AlarmTwoParameterDifference::AlarmTwoParameterDifference
AlarmTwoParameterDifference()
Definition:
AlarmTwoParameterDifference.cpp:19
AlarmTwoParameterDifference::getSecondCorrespondingIndicatorName
std::string getSecondCorrespondingIndicatorName()
Definition:
AlarmTwoParameterDifference.cpp:33
AlarmTwoParameterDifference::~AlarmTwoParameterDifference
virtual ~AlarmTwoParameterDifference()
Definition:
AlarmTwoParameterDifference.cpp:27
BranchRecord::setTempTypeOfConsequence
void setTempTypeOfConsequence(Consequence)
Stores the consequence of the end state the running sequence will get.
Definition:
BranchRecord.cpp:1641
BranchRecord::setTempESMessage
void setTempESMessage(std::string)
Stores the description of the end state the running sequence will get if it is terminated (set by mod...
Definition:
BranchRecord.cpp:1640
ControlPanelDisplay
Definition:
ControlPanelDisplay.h:26
ControlPanelDisplay::getDisplayFromMap
SystemDisplay * getDisplayFromMap(std::string)
Definition:
ControlPanelDisplay.cpp:189
DisplayParameterValue
Definition:
DisplayParameterValue.h:16
DisplayParameterValue::getDisplayedParameterValue
double getDisplayedParameterValue()
Definition:
DisplayParameterValue.cpp:29
SystemAlarm::setTypeOfAlarm
void setTypeOfAlarm(DisplayType type)
Definition:
SystemAlarm.cpp:27
SystemDisplay
Definition:
SystemDisplay.h:12
r5pars_
struct @0 r5pars_
sim::State::On
constexpr int On
Definition:
SimConstants.h:105
sim::State::Off
constexpr int Off
Definition:
SimConstants.h:106
sim::State::Succeed
constexpr int Succeed
Definition:
SimConstants.h:104
sim::State::Auto
constexpr int Auto
Definition:
SimConstants.h:112
sim::State::Reset
constexpr int Reset
Definition:
SimConstants.h:113
SimulationContext::Branch_center
BranchRecord Branch_center
Dynamic event tree state.
Definition:
SimulationContext.h:45
src
ADSIDAC
ControlPanel
AlarmTwoParameterDifference.cpp
Generated by
1.9.4