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
selMsg.h@16:018bed9abe89, 2019-10-14 (annotated)
- 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?
User | Revision | Line number | New 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 |