00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013 #ifndef SEES_SK_H_
00014 #define SEES_SK_H_
00015
00016 #include <string>
00017 #include "ObjectsManager.h"
00018 #include "LT_Object.h"
00019 #include "UniXML.h"
00020 #include "Trigger.h"
00021 #include "DebugStream.h"
00022
00023 class SEES_SK:
00024 public ObjectsManager,
00025 public LT_Object
00026 {
00027 public:
00028 SEES_SK( UniSetTypes::ObjectId id, xmlNode* node=UniSetTypes::conf->getNode("SEES"), const std::string& argprefix="" );
00029 SEES_SK();
00030 virtual ~SEES_SK();
00031
00032
00033
00034 bool alarm( UniSetTypes::ObjectId sid, bool state );
00035 bool getState( UniSetTypes::ObjectId sid );
00036 long getValue( UniSetTypes::ObjectId sid );
00037 void setValue( UniSetTypes::ObjectId sid, long value );
00038 void setState( UniSetTypes::ObjectId sid, bool state );
00039 void askState( UniSetTypes::ObjectId sid, UniversalIO::UIOCommand, UniSetTypes::ObjectId node = UniSetTypes::conf->getLocalNode() );
00040 void askValue( UniSetTypes::ObjectId sid, UniversalIO::UIOCommand, UniSetTypes::ObjectId node = UniSetTypes::conf->getLocalNode() );
00041 void updateValues();
00042 void setMsg( UniSetTypes::ObjectId code, bool state );
00043
00044
00045 DebugStream dlog;
00046 void init_dlog(DebugStream& dlog);
00047
00048
00049
00050 const UniSetTypes::ObjectId state_as;
00051 UniSetTypes::ObjectId node_state_as;
00052 const UniSetTypes::ObjectId DG_Start_s;
00053 UniSetTypes::ObjectId node_DG_Start_s;
00054 const UniSetTypes::ObjectId DG_Stop_s;
00055 UniSetTypes::ObjectId node_DG_Stop_s;
00056 const UniSetTypes::ObjectId QG_On_s;
00057 UniSetTypes::ObjectId node_QG_On_s;
00058 const UniSetTypes::ObjectId QG_Off_s;
00059 UniSetTypes::ObjectId node_QG_Off_s;
00060 const UniSetTypes::ObjectId lmpDG_ON_c;
00061 UniSetTypes::ObjectId node_lmpDG_ON_c;
00062 const UniSetTypes::ObjectId lmpDG_OFF_c;
00063 UniSetTypes::ObjectId node_lmpDG_OFF_c;
00064 const UniSetTypes::ObjectId lmpQG_ON_c;
00065 UniSetTypes::ObjectId node_lmpQG_ON_c;
00066 const UniSetTypes::ObjectId lmpQG_OFF_c;
00067 UniSetTypes::ObjectId node_lmpQG_OFF_c;
00068 const UniSetTypes::ObjectId DG_RemoteControl_s;
00069 UniSetTypes::ObjectId node_DG_RemoteControl_s;
00070 const UniSetTypes::ObjectId QG_RemoteControl_s;
00071 UniSetTypes::ObjectId node_QG_RemoteControl_s;
00072 const UniSetTypes::ObjectId CtlMode_Auto_s;
00073 UniSetTypes::ObjectId node_CtlMode_Auto_s;
00074 const UniSetTypes::ObjectId postID;
00075 UniSetTypes::ObjectId node_postID;
00076 const UniSetTypes::ObjectId Leader_f;
00077 UniSetTypes::ObjectId node_Leader_f;
00078 const UniSetTypes::ObjectId Priority_s;
00079 UniSetTypes::ObjectId node_Priority_s;
00080 const UniSetTypes::ObjectId Reserv_f;
00081 UniSetTypes::ObjectId node_Reserv_f;
00082 const UniSetTypes::ObjectId CtlMode_f;
00083 UniSetTypes::ObjectId node_CtlMode_f;
00084 const UniSetTypes::ObjectId ControlMode_f;
00085 UniSetTypes::ObjectId node_ControlMode_f;
00086 const UniSetTypes::ObjectId CtlMode_QG_bs;
00087 UniSetTypes::ObjectId node_CtlMode_QG_bs;
00088 const UniSetTypes::ObjectId cmd_OnReserv_f;
00089 UniSetTypes::ObjectId node_cmd_OnReserv_f;
00090 const UniSetTypes::ObjectId cmd_OffReserv_f;
00091 UniSetTypes::ObjectId node_cmd_OffReserv_f;
00092 const UniSetTypes::ObjectId Reset_s;
00093 UniSetTypes::ObjectId node_Reset_s;
00094 const UniSetTypes::ObjectId Protection_f;
00095 UniSetTypes::ObjectId node_Protection_f;
00096 const UniSetTypes::ObjectId NoPower_S;
00097 UniSetTypes::ObjectId node_NoPower_S;
00098 const UniSetTypes::ObjectId Overload95_S;
00099 UniSetTypes::ObjectId node_Overload95_S;
00100 const UniSetTypes::ObjectId Overload20_S;
00101 UniSetTypes::ObjectId node_Overload20_S;
00102 const UniSetTypes::ObjectId Overload105_S;
00103 UniSetTypes::ObjectId node_Overload105_S;
00104 const UniSetTypes::ObjectId Fault_S;
00105 UniSetTypes::ObjectId node_Fault_S;
00106 const UniSetTypes::ObjectId InfoCode_as;
00107 UniSetTypes::ObjectId node_InfoCode_as;
00108 const UniSetTypes::ObjectId DG_Start_C;
00109 UniSetTypes::ObjectId node_DG_Start_C;
00110 const UniSetTypes::ObjectId DG_Stop_C;
00111 UniSetTypes::ObjectId node_DG_Stop_C;
00112 const UniSetTypes::ObjectId QG_On_C;
00113 UniSetTypes::ObjectId node_QG_On_C;
00114 const UniSetTypes::ObjectId QG_Off_C;
00115 UniSetTypes::ObjectId node_QG_Off_C;
00116 const UniSetTypes::ObjectId OnControl_C;
00117 UniSetTypes::ObjectId node_OnControl_C;
00118 const UniSetTypes::ObjectId Reset_C;
00119 UniSetTypes::ObjectId node_Reset_C;
00120 const UniSetTypes::ObjectId NotAlone_C;
00121 UniSetTypes::ObjectId node_NotAlone_C;
00122 const UniSetTypes::ObjectId NoPower_C;
00123 UniSetTypes::ObjectId node_NoPower_C;
00124 const UniSetTypes::ObjectId Ping_C;
00125 UniSetTypes::ObjectId node_Ping_C;
00126
00127
00128
00129
00130 const UniSetTypes::ObjectId mid_starting;
00131 UniSetTypes::ObjectId node_mid_starting;
00132 bool m_mid_starting;
00133 bool prev_m_mid_starting;
00135 const UniSetTypes::ObjectId mid_stopping;
00136 UniSetTypes::ObjectId node_mid_stopping;
00137 bool m_mid_stopping;
00138 bool prev_m_mid_stopping;
00140 const UniSetTypes::ObjectId mid_endStarting;
00141 UniSetTypes::ObjectId node_mid_endStarting;
00142 bool m_mid_endStarting;
00143 bool prev_m_mid_endStarting;
00145 const UniSetTypes::ObjectId mid_endStopping;
00146 UniSetTypes::ObjectId node_mid_endStopping;
00147 bool m_mid_endStopping;
00148 bool prev_m_mid_endStopping;
00150 const UniSetTypes::ObjectId mid_BlockedRun;
00151 UniSetTypes::ObjectId node_mid_BlockedRun;
00152 bool m_mid_BlockedRun;
00153 bool prev_m_mid_BlockedRun;
00155 const UniSetTypes::ObjectId mid_SetReserv;
00156 UniSetTypes::ObjectId node_mid_SetReserv;
00157 bool m_mid_SetReserv;
00158 bool prev_m_mid_SetReserv;
00160 const UniSetTypes::ObjectId mid_NotReserv;
00161 UniSetTypes::ObjectId node_mid_NotReserv;
00162 bool m_mid_NotReserv;
00163 bool prev_m_mid_NotReserv;
00165 const UniSetTypes::ObjectId mid_SetReserv_Failure;
00166 UniSetTypes::ObjectId node_mid_SetReserv_Failure;
00167 bool m_mid_SetReserv_Failure;
00168 bool prev_m_mid_SetReserv_Failure;
00170 const UniSetTypes::ObjectId mid_NotOn;
00171 UniSetTypes::ObjectId node_mid_NotOn;
00172 bool m_mid_NotOn;
00173 bool prev_m_mid_NotOn;
00175 const UniSetTypes::ObjectId mid_NotOff;
00176 UniSetTypes::ObjectId node_mid_NotOff;
00177 bool m_mid_NotOff;
00178 bool prev_m_mid_NotOff;
00180 const UniSetTypes::ObjectId mid_QG_NotOn;
00181 UniSetTypes::ObjectId node_mid_QG_NotOn;
00182 bool m_mid_QG_NotOn;
00183 bool prev_m_mid_QG_NotOn;
00185 const UniSetTypes::ObjectId mid_QG_NotOff;
00186 UniSetTypes::ObjectId node_mid_QG_NotOff;
00187 bool m_mid_QG_NotOff;
00188 bool prev_m_mid_QG_NotOff;
00190 const UniSetTypes::ObjectId mid_QG_NotOn_LocalControl;
00191 UniSetTypes::ObjectId node_mid_QG_NotOn_LocalControl;
00192 bool m_mid_QG_NotOn_LocalControl;
00193 bool prev_m_mid_QG_NotOn_LocalControl;
00195 const UniSetTypes::ObjectId mid_QG_NotOff_LocalControl;
00196 UniSetTypes::ObjectId node_mid_QG_NotOff_LocalControl;
00197 bool m_mid_QG_NotOff_LocalControl;
00198 bool prev_m_mid_QG_NotOff_LocalControl;
00200 const UniSetTypes::ObjectId mid_ProtectionNotReset;
00201 UniSetTypes::ObjectId node_mid_ProtectionNotReset;
00202 bool m_mid_ProtectionNotReset;
00203 bool prev_m_mid_ProtectionNotReset;
00205 const UniSetTypes::ObjectId mid_Diesel_NotOn;
00206 UniSetTypes::ObjectId node_mid_Diesel_NotOn;
00207 bool m_mid_Diesel_NotOn;
00208 bool prev_m_mid_Diesel_NotOn;
00210 const UniSetTypes::ObjectId mid_Diesel_NotOff;
00211 UniSetTypes::ObjectId node_mid_Diesel_NotOff;
00212 bool m_mid_Diesel_NotOff;
00213 bool prev_m_mid_Diesel_NotOff;
00215 const UniSetTypes::ObjectId mid_Generator_NotOn;
00216 UniSetTypes::ObjectId node_mid_Generator_NotOn;
00217 bool m_mid_Generator_NotOn;
00218 bool prev_m_mid_Generator_NotOn;
00220 const UniSetTypes::ObjectId mid_Generator_NotOff;
00221 UniSetTypes::ObjectId node_mid_Generator_NotOff;
00222 bool m_mid_Generator_NotOff;
00223 bool prev_m_mid_Generator_NotOff;
00225 const UniSetTypes::ObjectId mid_NA_State;
00226 UniSetTypes::ObjectId node_mid_NA_State;
00227 bool m_mid_NA_State;
00228 bool prev_m_mid_NA_State;
00230 const UniSetTypes::ObjectId mid_BadOperation;
00231 UniSetTypes::ObjectId node_mid_BadOperation;
00232 bool m_mid_BadOperation;
00233 bool prev_m_mid_BadOperation;
00235 const UniSetTypes::ObjectId mid_NotFinished;
00236 UniSetTypes::ObjectId node_mid_NotFinished;
00237 bool m_mid_NotFinished;
00238 bool prev_m_mid_NotFinished;
00240 const UniSetTypes::ObjectId mid_NotDischarge;
00241 UniSetTypes::ObjectId node_mid_NotDischarge;
00242 bool m_mid_NotDischarge;
00243 bool prev_m_mid_NotDischarge;
00245 const UniSetTypes::ObjectId mid_NotAccept;
00246 UniSetTypes::ObjectId node_mid_NotAccept;
00247 bool m_mid_NotAccept;
00248 bool prev_m_mid_NotAccept;
00250 const UniSetTypes::ObjectId mid_ReservBadAction;
00251 UniSetTypes::ObjectId node_mid_ReservBadAction;
00252 bool m_mid_ReservBadAction;
00253 bool prev_m_mid_ReservBadAction;
00255 const UniSetTypes::ObjectId mid_OnReservBadAction;
00256 UniSetTypes::ObjectId node_mid_OnReservBadAction;
00257 bool m_mid_OnReservBadAction;
00258 bool prev_m_mid_OnReservBadAction;
00260 const UniSetTypes::ObjectId mid_ProtectionOn;
00261 UniSetTypes::ObjectId node_mid_ProtectionOn;
00262 bool m_mid_ProtectionOn;
00263 bool prev_m_mid_ProtectionOn;
00265 const UniSetTypes::ObjectId mid_ProtectionOff;
00266 UniSetTypes::ObjectId node_mid_ProtectionOff;
00267 bool m_mid_ProtectionOff;
00268 bool prev_m_mid_ProtectionOff;
00270 const UniSetTypes::ObjectId mid_SetReserv_Att;
00271 UniSetTypes::ObjectId node_mid_SetReserv_Att;
00272 bool m_mid_SetReserv_Att;
00273 bool prev_m_mid_SetReserv_Att;
00276
00277 long in_state_as;
00278 long prev_in_state_as;
00279 bool in_DG_Start_s;
00280 bool prev_in_DG_Start_s;
00281 bool in_DG_Stop_s;
00282 bool prev_in_DG_Stop_s;
00283 bool in_QG_On_s;
00284 bool prev_in_QG_On_s;
00285 bool in_QG_Off_s;
00286 bool prev_in_QG_Off_s;
00287 long out_lmpDG_ON_c;
00288 long prev_out_lmpDG_ON_c;
00289 long out_lmpDG_OFF_c;
00290 long prev_out_lmpDG_OFF_c;
00291 long out_lmpQG_ON_c;
00292 long prev_out_lmpQG_ON_c;
00293 long out_lmpQG_OFF_c;
00294 long prev_out_lmpQG_OFF_c;
00295 bool in_DG_RemoteControl_s;
00296 bool prev_in_DG_RemoteControl_s;
00297 bool in_QG_RemoteControl_s;
00298 bool prev_in_QG_RemoteControl_s;
00299 bool in_CtlMode_Auto_s;
00300 bool prev_in_CtlMode_Auto_s;
00301 long out_postID;
00302 long prev_out_postID;
00303 bool in_Leader_f;
00304 bool prev_in_Leader_f;
00305 long in_Priority_s;
00306 long prev_in_Priority_s;
00307 bool out_Reserv_f;
00308 bool prev_out_Reserv_f;
00309 long in_CtlMode_f;
00310 long prev_in_CtlMode_f;
00311 long out_ControlMode_f;
00312 long prev_out_ControlMode_f;
00313 long out_CtlMode_QG_bs;
00314 long prev_out_CtlMode_QG_bs;
00315 bool in_cmd_OnReserv_f;
00316 bool prev_in_cmd_OnReserv_f;
00317 bool in_cmd_OffReserv_f;
00318 bool prev_in_cmd_OffReserv_f;
00319 bool in_Reset_s;
00320 bool prev_in_Reset_s;
00321 bool out_Protection_f;
00322 bool prev_out_Protection_f;
00323 bool in_NoPower_S;
00324 bool prev_in_NoPower_S;
00325 bool in_Overload95_S;
00326 bool prev_in_Overload95_S;
00327 bool in_Overload20_S;
00328 bool prev_in_Overload20_S;
00329 bool in_Overload105_S;
00330 bool prev_in_Overload105_S;
00331 bool in_Fault_S;
00332 bool prev_in_Fault_S;
00333 long in_InfoCode_as;
00334 long prev_in_InfoCode_as;
00335 bool out_DG_Start_C;
00336 bool prev_out_DG_Start_C;
00337 bool out_DG_Stop_C;
00338 bool prev_out_DG_Stop_C;
00339 bool out_QG_On_C;
00340 bool prev_out_QG_On_C;
00341 bool out_QG_Off_C;
00342 bool prev_out_QG_Off_C;
00343 bool out_OnControl_C;
00344 bool prev_out_OnControl_C;
00345 bool out_Reset_C;
00346 bool prev_out_Reset_C;
00347 bool out_NotAlone_C;
00348 bool prev_out_NotAlone_C;
00349 bool out_NoPower_C;
00350 bool prev_out_NoPower_C;
00351 bool out_Ping_C;
00352 bool prev_out_Ping_C;
00353
00354
00355
00356
00357
00358
00359
00360 protected:
00361
00362
00363
00364
00365
00366
00367 virtual void callback();
00368 virtual void processingMessage( UniSetTypes::VoidMessage* msg );
00369 virtual void sysCommand( UniSetTypes::SystemMessage* sm );
00370 virtual void askSensors( UniversalIO::UIOCommand cmd ){}
00371 virtual void sensorInfo( UniSetTypes::SensorMessage* sm ){}
00372 virtual void timerInfo( UniSetTypes::TimerMessage* tm ){}
00373 virtual void sigterm( int signo );
00374 virtual bool activateObject();
00375 virtual void testMode( bool state );
00376 void updatePreviousValues();
00377 void checkSensors();
00378 void updateOutputs( bool force );
00379
00380 void preAskSensors( UniversalIO::UIOCommand cmd );
00381 void preSensorInfo( UniSetTypes::SensorMessage* sm );
00382 void preTimerInfo( UniSetTypes::TimerMessage* tm );
00383 void waitSM( int wait_msec, UniSetTypes::ObjectId testID = UniSetTypes::DefaultObjectId );
00384
00385 void resetMsg();
00386 Trigger trResetMsg;
00387 PassiveTimer ptResetMsg;
00388 int resetMsgTime;
00389
00390
00391 virtual void step()=0;
00392
00393 int sleep_msec;
00394 bool active;
00395
00396 UniSetTypes::ObjectId smTestID;
00398
00399 PassiveTimer ptHeartBeat;
00400 UniSetTypes::ObjectId idHeartBeat;
00401 int maxHeartBeat;
00403 xmlNode* confnode;
00405 int getIntProp(const std::string& name) { return UniSetTypes::conf->getIntProp(confnode, name); }
00407 inline const std::string getProp(const std::string& name) { return UniSetTypes::conf->getProp(confnode, name); }
00408
00409 int smReadyTimeout;
00410 bool activated;
00411 int activateTimeout;
00412 PassiveTimer ptStartUpTimeout;
00413 int askPause;
00415 IOController_i::SensorInfo si;
00416
00417
00418 private:
00419
00420
00421
00422
00423
00424
00425 bool end_private;
00426 };
00427
00428
00429 #endif // SEES_SK_H_