00001
00007 #ifndef FUSE_H
00008 #define FUSE_H
00009
00010 #include "powerflow.h"
00011 #include "link.h"
00012
00013 class fuse : public link_object
00014 {
00015 public:
00016 static CLASS *oclass;
00017 static CLASS *pclass;
00018
00019 public:
00020 typedef enum {BLOWN=0, GOOD=1} FUSESTATE;
00021 typedef enum {NONE=0, EXPONENTIAL=1} MTTRDIST;
00022
00023 enumeration restore_dist_type;
00024 unsigned char prev_full_status;
00025
00026 int create(void);
00027 int init(OBJECT *parent);
00028 TIMESTAMP sync(TIMESTAMP t0);
00029 TIMESTAMP postsync(TIMESTAMP t0);
00030 fuse(MODULE *mod);
00031 inline fuse(CLASS *cl=oclass):link_object(cl){};
00032 int isa(char *classname);
00033
00034
00035 int fuse_state(OBJECT *parent);
00036
00037 void fuse_change_status_function(void);
00038 void set_fuse_full(char desired_status_A, char desired_status_B, char desired_status_C);
00039 void set_fuse_full_reliability(unsigned char desired_status);
00040 void set_fuse_faulted_phases(unsigned char desired_status);
00041 void fuse_sync_function(void);
00042 OBJECT **get_object(OBJECT *obj, char *name);
00043
00044 double current_limit;
00045
00046 unsigned char phased_fuse_status;
00047 unsigned char faulted_fuse_phases;
00048 enumeration phase_A_state;
00049 enumeration phase_B_state;
00050 enumeration phase_C_state;
00051 double mean_replacement_time;
00052 TIMESTAMP fix_time[3];
00053 double current_current_values[3];
00054
00055 double fuse_resistance;
00056 private:
00057 TIMESTAMP prev_fuse_time;
00058 OBJECT **eventgen_obj;
00059 FUNCTIONADDR event_schedule;
00060 bool event_schedule_map_attempt;
00061
00062
00063 void fuse_check(set phase_to_check, complex *fcurr);
00064 };
00065
00066 EXPORT int change_fuse_state(OBJECT *thisobj, unsigned char phase_change, bool state);
00067 EXPORT int fuse_reliability_operation(OBJECT *thisobj, unsigned char desired_phases);
00068 EXPORT int create_fault_fuse(OBJECT *thisobj, OBJECT **protect_obj, char *fault_type, int *implemented_fault, TIMESTAMP *repair_time);
00069 EXPORT int fix_fault_fuse(OBJECT *thisobj, int *implemented_fault, char *imp_fault_name);
00070 EXPORT int fuse_fault_updates(OBJECT *thisobj, unsigned char restoration_phases);
00071
00072 #endif // FUSE_H
00073