This demonstrates the process of communicating through ethernet to a SEL-2431 Voltage Regulator Control Panel using SEL Fast Message. Basic device commands and data cna be requested and displayed over a connected serial port. This is a basic version and full testing and documentation has yet to be completed.

Dependencies:   BufferedSerial analogAverager voltageRegulator netStatReg analogMinMax CounterMinMax

Committer:
masterkookus
Date:
Mon Oct 14 13:36:11 2019 +0000
Revision:
16:018bed9abe89
Parent:
15:9ad261a27883
Child:
17:a69f6e51b3cb
Moved most processing commands to seldev class (to be renamed voltage regulator class at a later date)

Who changed what in which revision?

UserRevisionLine numberNew contents of line
masterkookus 8:fa2a2c3a16ce 1 #ifndef SELMSG_H
masterkookus 16:018bed9abe89 2 #define SELMSG_H
masterkookus 16:018bed9abe89 3
masterkookus 16:018bed9abe89 4 #include "analogAverager.h"
masterkookus 16:018bed9abe89 5 #include "analogMinMax.h"
masterkookus 16:018bed9abe89 6 #include "counterMinMax.h"
masterkookus 8:fa2a2c3a16ce 7
masterkookus 10:9da863a6da3e 8 const char fmCmd[5][2] = {
masterkookus 16:018bed9abe89 9 {0xA5,0xC0},
masterkookus 16:018bed9abe89 10 {0xA5,0xC1},
masterkookus 16:018bed9abe89 11 {0xA5,0xD1},
masterkookus 16:018bed9abe89 12 {0xA5,0xC2},
masterkookus 16:018bed9abe89 13 {0xA5,0xD2}
masterkookus 8:fa2a2c3a16ce 14 };
masterkookus 8:fa2a2c3a16ce 15
masterkookus 9:d6e7981dfc89 16 const char serCmd[5][7] = {
masterkookus 16:018bed9abe89 17 {'M','E','T',' ','M','\r','\n'},
masterkookus 16:018bed9abe89 18 {'T','A','P','\r','\n',' ',' '},
masterkookus 16:018bed9abe89 19 {'A','C','C','\r','\n',' ',' '},
masterkookus 16:018bed9abe89 20 {'O','T','T','E','R','\r','\n'},
masterkookus 16:018bed9abe89 21 {'\r','\n',' ',' ',' ',' ',' '}
masterkookus 9:d6e7981dfc89 22 };
masterkookus 9:d6e7981dfc89 23
masterkookus 12:4bb088c27838 24 const char serCmdSeq[2][5] = {
masterkookus 16:018bed9abe89 25 {0x02,0x03,0x04,0x04,0x00},
masterkookus 16:018bed9abe89 26 {0x02,0x03,0x04,0x04,0x01}
masterkookus 12:4bb088c27838 27 };
masterkookus 12:4bb088c27838 28
masterkookus 12:4bb088c27838 29 const char serCmdlen[2][5] = {
masterkookus 16:018bed9abe89 30 {0x05,0x07,0x04,0x04,0x07},
masterkookus 16:018bed9abe89 31 {0x05,0x07,0x04,0x04,0x05}
masterkookus 9:d6e7981dfc89 32 };
masterkookus 9:d6e7981dfc89 33
masterkookus 8:fa2a2c3a16ce 34 const char vRegDevCfg[23] = {
masterkookus 16:018bed9abe89 35 0xA5,0xC0,0x17,0x02,0x03,0x00,0xA5,0xC1,0xA5,0xD1,0xA5,0xC2,0xA5,0xD2,0xA5,0xC3,0xA5,0xD3,0x01,0x00,0x00,0x05,0x21
masterkookus 8:fa2a2c3a16ce 36 };
masterkookus 8:fa2a2c3a16ce 37
masterkookus 16:018bed9abe89 38 class voltageRegulator
masterkookus 16:018bed9abe89 39 {
masterkookus 16:018bed9abe89 40 struct analog1Sample {
masterkookus 16:018bed9abe89 41 char analogName[6];
masterkookus 16:018bed9abe89 42 float analog1Value;
masterkookus 16:018bed9abe89 43 };
masterkookus 16:018bed9abe89 44 struct analog2Sample {
masterkookus 16:018bed9abe89 45 char analogName[6];
masterkookus 16:018bed9abe89 46 float analog1Value;
masterkookus 16:018bed9abe89 47 float analog2Value;
masterkookus 16:018bed9abe89 48 };
masterkookus 16:018bed9abe89 49 struct analog3Sample {
masterkookus 16:018bed9abe89 50 char analogName[6];
masterkookus 16:018bed9abe89 51 float analog1Value;
masterkookus 16:018bed9abe89 52 float analog2Value;
masterkookus 16:018bed9abe89 53 float analog3Value;
masterkookus 16:018bed9abe89 54 };
masterkookus 16:018bed9abe89 55 struct analog4Sample {
masterkookus 16:018bed9abe89 56 char analogName[6];
masterkookus 16:018bed9abe89 57 float analog1Value;
masterkookus 16:018bed9abe89 58 float analog2Value;
masterkookus 16:018bed9abe89 59 float analog3Value;
masterkookus 16:018bed9abe89 60 float analog4Value;
masterkookus 16:018bed9abe89 61 };
masterkookus 16:018bed9abe89 62
masterkookus 16:018bed9abe89 63 struct fmTimeStamp {
masterkookus 16:018bed9abe89 64 char month;
masterkookus 16:018bed9abe89 65 char day;
masterkookus 16:018bed9abe89 66 char year;
masterkookus 16:018bed9abe89 67 char hour;
masterkookus 16:018bed9abe89 68 char min;
masterkookus 16:018bed9abe89 69 char sec;
masterkookus 16:018bed9abe89 70 short msec;
masterkookus 16:018bed9abe89 71 };
masterkookus 16:018bed9abe89 72
masterkookus 16:018bed9abe89 73 struct vRegDataStruct {
masterkookus 16:018bed9abe89 74 char numAnalog;
masterkookus 16:018bed9abe89 75 char numDigital;
masterkookus 16:018bed9abe89 76 char numDemAnalog;
masterkookus 16:018bed9abe89 77 char fmMsgLen[5];
masterkookus 16:018bed9abe89 78 struct analog1Sample analogs[27];
masterkookus 16:018bed9abe89 79 struct analog1Sample calculated[14];
masterkookus 16:018bed9abe89 80 struct fmTimeStamp timeStamp;
masterkookus 16:018bed9abe89 81 struct fmTimeStamp demTimeStamp;
masterkookus 16:018bed9abe89 82 char digitalTargets[52];
masterkookus 16:018bed9abe89 83 char tapOff;
masterkookus 16:018bed9abe89 84 char noNeut;
masterkookus 16:018bed9abe89 85 char tapDiff;
masterkookus 16:018bed9abe89 86 char remCount;
masterkookus 16:018bed9abe89 87 char locCount;
masterkookus 16:018bed9abe89 88 char autoCount;
masterkookus 16:018bed9abe89 89 char manCount;
masterkookus 16:018bed9abe89 90 char vripCount;
masterkookus 16:018bed9abe89 91 char neutCount;
masterkookus 16:018bed9abe89 92 char maxCount;
masterkookus 16:018bed9abe89 93 char minCount;
masterkookus 16:018bed9abe89 94 } vRegData;
masterkookus 16:018bed9abe89 95
masterkookus 16:018bed9abe89 96 public:
masterkookus 16:018bed9abe89 97
masterkookus 16:018bed9abe89 98 voltageRegulator(void);
masterkookus 16:018bed9abe89 99
masterkookus 16:018bed9abe89 100 void setMeterData(char *cbuf, char pos, char clen);
masterkookus 16:018bed9abe89 101
masterkookus 16:018bed9abe89 102 void setDemMeterData(char *cbuf, char pos, char clen);
masterkookus 16:018bed9abe89 103
masterkookus 16:018bed9abe89 104 void incCount(void);
masterkookus 16:018bed9abe89 105
masterkookus 16:018bed9abe89 106 char getCount(char);
masterkookus 16:018bed9abe89 107
masterkookus 16:018bed9abe89 108 bool chkCfgMsg(char *cbuf, char clen);
masterkookus 16:018bed9abe89 109
masterkookus 16:018bed9abe89 110 bool chkMeterMsg(char *cbuf, char clen);
masterkookus 16:018bed9abe89 111
masterkookus 16:018bed9abe89 112 bool chkDemMeterMsg(char *cbuf, char clen);
masterkookus 16:018bed9abe89 113
masterkookus 16:018bed9abe89 114 void getMeterReport(char *dataStr);
masterkookus 8:fa2a2c3a16ce 115 };
masterkookus 8:fa2a2c3a16ce 116 #endif