00001
00007 #ifndef _SFSM_H
00008 #define _SFSM_H
00009
00010 #include "schedule.h"
00011 #include "timestamp.h"
00012 #include "class.h"
00013
00014 typedef struct s_loadshape loadshape;
00015
00016 typedef enum {
00017 MT_UNKNOWN=0,
00018 MT_ANALOG,
00019 MT_PULSED,
00020 MT_MODULATED,
00021 MT_QUEUED,
00022 MT_SCHEDULED,
00023 } MACHINETYPE;
00024 typedef enum {
00025 MPT_UNKNOWN=0,
00026 MPT_TIME,
00027 MPT_POWER,
00028 } MACHINEPULSETYPE;
00029 typedef enum {
00030 MMT_UNKNOWN=0,
00031 MMT_AMPLITUDE=1,
00032 MMT_PULSEWIDTH=2,
00033 MMT_FREQUENCY=3,
00034 } MACHINEMODULATIONTYPE;
00035 typedef enum {
00036 MS_OFF=0,
00037 MS_ON=1,
00038 MS_RAMPUP=2,
00039 MS_RAMPDOWN=3,
00040 } MACHINESTATE;
00041 struct s_loadshape {
00042
00043 double load;
00045
00046 SCHEDULE *schedule;
00047 MACHINETYPE type;
00048 union {
00049 struct {
00050 double energy;
00051 double power;
00052 } analog;
00053 struct {
00054 double energy;
00055 double scalar;
00056 MACHINEPULSETYPE pulsetype;
00057 double pulsevalue;
00058 } pulsed;
00059 struct {
00060 double energy;
00061 double scalar;
00062 MACHINEPULSETYPE pulsetype;
00063 double pulsevalue;
00064 double pulseenergy;
00065 MACHINEMODULATIONTYPE modulation;
00066 } modulated;
00067 struct {
00068 double energy;
00069 double scalar;
00070 MACHINEPULSETYPE pulsetype;
00071 double pulsevalue;
00072 double q_on, q_off;
00073 } queued;
00074 struct {
00075 double low, high;
00076 double on_time, off_time;
00077 double on_ramp, off_ramp;
00078 double on_end, off_end;
00079 unsigned char weekdays;
00080 unsigned int dt;
00081 } scheduled;
00082 } params;
00084
00085 double r;
00086 double re[2];
00087 double d[2];
00088 double de[2];
00089 double dPdV;
00091
00092 double q;
00093 MACHINESTATE s;
00094 TIMESTAMP t0;
00095 TIMESTAMP t2;
00097 struct s_loadshape *next;
00098 };
00099
00100 int loadshape_create(loadshape *shape);
00101 int loadshape_init(loadshape *shape);
00102 int loadshape_initall(void);
00103 TIMESTAMP loadshape_sync(loadshape *m, TIMESTAMP t1);
00104 TIMESTAMP loadshape_syncall(TIMESTAMP t1);
00105
00106 int loadshape_test(void);
00107
00108 int convert_from_loadshape(char *string,int size,void *data, PROPERTY *prop);
00109 int convert_to_loadshape(char *string, void *data, PROPERTY *prop);
00112 #endif