00001
00002
00003
00004 #ifndef _TRIPLEXMETER_H
00005 #define _TRIPLEXMETER_H
00006
00007 #include "powerflow.h"
00008 #include "triplex_node.h"
00009
00010 class triplex_meter : public triplex_node
00011 {
00012 public:
00013 complex measured_voltage[3];
00014 complex measured_current[3];
00015 double measured_real_energy;
00016 double measured_reactive_energy;
00017 complex measured_power;
00018 complex indiv_measured_power[3];
00019 double measured_demand;
00020 double measured_real_power;
00021 double measured_reactive_power;
00022 TIMESTAMP next_time;
00023 TIMESTAMP dt;
00024 TIMESTAMP last_t;
00025
00026 #ifdef SUPPORT_OUTAGES
00027 int16 sustained_count;
00028 int16 momentary_count;
00029 int16 total_count;
00030 int16 s_flag;
00031 int16 t_flag;
00032 complex pre_load;
00033 #endif
00034
00035 double hourly_acc;
00036 double previous_monthly_bill;
00037 double previous_monthly_energy;
00038 double monthly_bill;
00039 double monthly_fee;
00040 double monthly_energy;
00041 typedef enum {
00042 BM_NONE,
00043 BM_UNIFORM,
00044 BM_TIERED,
00045 BM_HOURLY
00046 } BILLMODE;
00047 BILLMODE bill_mode;
00048 OBJECT *power_market;
00049 PROPERTY *price_prop;
00050 int32 bill_day;
00051 int last_bill_month;
00052 double price;
00053 double tier_price[3], tier_energy[3];
00054
00055 double process_bill(TIMESTAMP t1);
00056 int check_prices();
00057
00058 private:
00059 double previous_energy_total;
00060
00061 public:
00062 static CLASS *oclass;
00063 static CLASS *pclass;
00064 public:
00065 triplex_meter(MODULE *mod);
00066 inline triplex_meter(CLASS *cl=oclass):triplex_node(cl){};
00067 int create(void);
00068 int init(OBJECT *parent);
00069 TIMESTAMP postsync(TIMESTAMP t0, TIMESTAMP t1);
00070 int isa(char *classname);
00071 };
00072
00073 #endif // _TRIPLEXMETER_H
00074