📄 slavesimens.c
字号:
#define ARM_SLAVESIEMENS_GLOBALS #include "cfg_ISlave.h" // 包含起动配置#define SIEMENS_MODEC_BAUD_RATE_600 '1'#define SIEMENS_MODEC_BAUD_RATE_1200 '2'#define SIEMENS_MODEC_BAUD_RATE_2400 '3'#define SIEMENS_MODEC_BAUD_RATE_4800 '4'#define SIEMENS_MODEC_BAUD_RATE_9600 '5' // SiemensDataType pSiemensData; INT8U gMeterSendBuf[1024];BOOL IsSiemensDataValid(INT8U *pMeterModleInfo, INT8U *pRcvData, int len);//int SiemensReadDataFromMeter(MpComProperty *mpProperty, SiemensDataType *pSiemensData);//int ReceiveSiemensFrame(int fd, INT8U *pbuf, INT16U bufsize);typedef struct tagSiemensTableType{ INT16U id; INT16U offset; INT8U itemsize; }_PACKED_ SiemensTableType;typedef struct tagIdentifyFrameType{ INT8U start; INT8U factory[3]; INT8U baudRate; INT8U Id[1];}_PACKED_ IdentifyFrameType;typedef struct tagAckFrameType{ INT8U Ack; INT8U V; INT8U Z; INT8U Y; INT8U cr; INT8U lf;}_PACKED_ AckFrameType;typedef struct tagSiemensMeterInfoType{ INT8U factoryId[4]; INT8U baudrate; INT8U model[30];}_PACKED_ SiemensMeterInfoType;typedef struct lldataByte{ INT16U length; INT8U baudrate;}_PACKED_ lzgdatatype;typedef struct tagPowerFactorType{ INT8U total[2]; INT8U a[2]; INT8U b[2]; INT8U c[2];}_PACKED_ PowerFactorType;typedef struct tagSiemensDataType{ INT8U MeterModelInfo[30]; //字符串// INT8U E[4]; //正向有功总电能// RateEType RateE; //正向费率有功总电能// INT8U NE[4]; //反向有功总电能// RateEType RateNE; //反向费率有功总电能// INT8U NoE[4]; //正向无功总电能// RateEType RateNoE; //正向费率无功总电能// INT8U NNoE[4]; //反向无功总电能// RateEType RateNNoE; //反向费率无功总电能// INT8U Quad1NoE[4]; RateEType Quad1RateNoE; INT8U LastMonthE[4]; //上月正向有功总电能// RateEType LastMonthRateE; //上月正向费率有功总电能// INT8U LastMonthNE[4]; //上月反向有功总电能// RateEType LastMonthRateNE;//上月反向费率有功总电能// INT8U LastMonthNoE[4]; //上月正向无功总电能// RateEType LastMonthRateNoE;//上月正向费率无功总电能// INT8U LastMonthNNoE[4]; //上月反向无功总电能// RateEType LastMonthRateNNoE;//上月反向费率无功总电能// INT8U LastMonthQuad1NoE[4]; RateEType LastMonthQuad1RateNoE; // 最大需量 // INT8U MaxRqu[3]; RateMaxRquType RateMaxRqu; INT8U NMaxRqu[3]; RateMaxRquType NRateMaxRqu; INT8U QMaxRqu[3]; RateMaxRquType RateQMaxRqu; INT8U Quad1QMaxRqu[3]; RateMaxRquType Quad1RateQMaxRqu; // 上月最大需量 // INT8U LastMonthMaxRqu[3]; RateMaxRquType LastMonthRateMaxRqu; INT8U LastMonthNMaxRqu[3]; RateMaxRquType LastMonthNRateMaxRqu; INT8U LastMonthQMaxRqu[3]; RateMaxRquType LastMonthRateQMaxRqu; INT8U LastMonthQuad1QMaxRqu[3]; RateMaxRquType LastMonthQuad1RateQMaxRqu; // 最大需量时间 // INT8U MaxRquT[4]; RateMaxRquTimeType RateMaxRquT; INT8U NMaxRquT[4]; RateMaxRquTimeType NRateMaxRquT; INT8U QMaxRquT[4]; RateMaxRquTimeType RateQMaxRquT; INT8U Quad1QMaxRquT[4]; RateMaxRquTimeType Quad1RateQMaxRquT; // 上月最大需量时间 // INT8U LastMonthMaxRquT[4]; RateMaxRquTimeType LastMonthRateMaxRquT; INT8U LastMonthNMaxRquT[4]; RateMaxRquTimeType LastMonthNRateMaxRquT; INT8U LastMonthQMaxRquT[4]; RateMaxRquTimeType LastMonthRateQMaxRquT; INT8U LastMonthQ1QMaxRquT[4]; RateMaxRquTimeType LastMonthQ1RateQMaxRquT; INT8U LastPorgramTime[4]; // MMDDHHmm INT8U ProgramTimes[2]; INT8U BatteryUseTime[4]; // minutes; struct { INT8U a[2]; INT8U b[2]; INT8U c[2]; }_PACKED_ V; //实时电压// struct { INT8U a[2]; INT8U b[2]; INT8U c[2]; }_PACKED_ I; PowerFactorType PowerFactor; struct { INT8U a[2]; INT8U b[2]; INT8U c[2]; }_PACKED_ Vdeg; //实时电压// struct { INT8U a[2]; INT8U b[2]; INT8U c[2]; }_PACKED_ Ideg; INT8U Date[4]; // 当前日期 // INT8U Time[3]; // 当前时间 // INT8U Freq[2];}_PACKED_ SiemensDataType;#define CR 0x0d#define LF 0x0a#define SOH 0x01#define STX 0x02#define ETX 0x03#define ACK 0x06#define NAK 0x15#define tf1 100#define tf2 200#define tf3 260#define tf4 320#define tf5 400#define tf6 480const SiemensTableType SiemensIdTable[]={ { 0x9010, 0, 4 }, { 0x9011, 4, 4 }, { 0x9012, 8, 4 }, { 0x9013, 12, 4 }, { 0x9014, 16, 4 }, { 0x901f, 0, 20 }, { 0x9020, 20, 4 }, { 0x9021, 24, 4 }, { 0x9022, 28, 4 }, { 0x9023, 32, 4 }, { 0x9024, 36, 4 }, { 0x902f, 20, 20 }, ///12 { 0x9110, 40, 4 }, { 0x9111, 44, 4 }, { 0x9112, 48, 4 }, { 0x9113, 52, 4 }, { 0x9114, 56, 4 }, { 0x911f, 40, 20 }, { 0x9120, 60, 4 }, { 0x9121, 64, 4 }, { 0x9122, 68, 4 }, { 0x9123, 72, 4 }, { 0x9124, 76, 4 }, { 0x912f, 60, 20 }, ///24 { 0x9130, 80, 4 }, { 0x9131, 84, 4 }, { 0x9132, 88, 4 }, { 0x9133, 92, 4 }, { 0x9134, 96, 4 }, { 0x913f, 80, 20 }, // 上月电量 // { 0x9410, tf1+0, 4 }, { 0x9411, tf1+4, 4 }, { 0x9412, tf1+8, 4 }, { 0x9413, tf1+12, 4 }, { 0x9414, tf1+16, 4 }, { 0x941f, tf1+0, 20 }, ///36 { 0x9420, tf1+20, 4 }, { 0x9421, tf1+24, 4 }, { 0x9422, tf1+28, 4 }, { 0x9423, tf1+32, 4 }, { 0x9424, tf1+36, 4 }, { 0x942f, tf1+20, 20 }, { 0x9510, tf1+40, 4 }, { 0x9511, tf1+44, 4 }, { 0x9512, tf1+48, 4 }, { 0x9513, tf1+52, 4 }, { 0x9514, tf1+56, 4 }, { 0x951f, tf1+40, 20 }, ///48 { 0x9520, tf1+60, 4 }, { 0x9521, tf1+64, 4 }, { 0x9522, tf1+68, 4 }, { 0x9523, tf1+72, 4 }, { 0x9524, tf1+76, 4 }, { 0x952f, tf1+60, 20 }, { 0x9530, tf1+80, 4 }, { 0x9531, tf1+84, 4 }, { 0x9532, tf1+88, 4 }, { 0x9533, tf1+92, 4 }, { 0x9534, tf1+96, 4 }, { 0x953f, tf1+80, 20 }, ///60 //需量 // 200 { 0xa010, tf2+0, 3 }, { 0xa011, tf2+3, 3 }, { 0xa012, tf2+6, 3 }, { 0xa013, tf2+9, 3 }, { 0xa014, tf2+12, 3 }, { 0xa01f, tf2+0, 15 }, { 0xa020, tf2+15, 3 }, { 0xa021, tf2+18, 3 }, { 0xa022, tf2+21, 3 }, { 0xa023, tf2+24, 3 }, { 0xa024, tf2+27, 3 }, { 0xa02f, tf2+15, 15 }, ///72 { 0xa110, tf2+30, 3 }, { 0xa111, tf2+33, 3 }, { 0xa112, tf2+36, 3 }, { 0xa113, tf2+39, 3 }, { 0xa114, tf2+42, 3 }, { 0xa11f, tf2+30, 15 }, { 0xa120, tf2+45, 3 }, { 0xa121, tf2+48, 3 }, { 0xa122, tf2+51, 3 }, { 0xa123, tf2+54, 3 }, { 0xa124, tf2+57, 3 }, { 0xa12f, tf2+45, 15 },//84 { 0xa130, tf2+45, 3 }, { 0xa131, tf2+48, 3 }, { 0xa132, tf2+51, 3 }, { 0xa133, tf2+54, 3 }, { 0xa134, tf2+57, 3 }, { 0xa13f, tf2+45, 15 }, // 上月需量 // tf3= 260 { 0xa410, tf3+0, 3 }, { 0xa411, tf3+3, 3 }, { 0xa412, tf3+6, 3 }, { 0xa413, tf3+9, 3 }, { 0xa414, tf3+12, 3 }, { 0xa41f, tf3+0, 15 }, ///96 { 0xa420, tf3+15, 3 }, { 0xa421, tf3+18, 3 }, { 0xa422, tf3+21, 3 }, { 0xa423, tf3+24, 3 }, { 0xa424, tf3+27, 3 }, { 0xa42f, tf3+15, 15 }, { 0xa510, tf3+30, 3 }, { 0xa511, tf3+33, 3 }, { 0xa512, tf3+36, 3 }, { 0xa513, tf3+39, 3 }, { 0xa514, tf3+42, 3 }, { 0xa51f, tf3+30, 15 }, ///108 { 0xa520, tf3+45, 3 }, { 0xa521, tf3+48, 3 }, { 0xa522, tf3+51, 3 }, { 0xa523, tf3+54, 3 }, { 0xa524, tf3+57, 3 }, { 0xa52f, tf3+45, 15 }, { 0xa530, tf3+45, 3 }, { 0xa531, tf3+48, 3 }, { 0xa532, tf3+51, 3 }, { 0xa533, tf3+54, 3 }, { 0xa534, tf3+57, 3 }, { 0xa53f, tf3+45, 15 }, ///120 //当前最大需量发生时间 // tf4 =320 { 0xb010, tf4+0, 4}, { 0xb011, tf4+4, 4}, { 0xb012, tf4+8, 4}, { 0xb013, tf4+12, 4}, { 0xb014, tf4+16,4 }, { 0xb01f, tf4+0, 20}, { 0xb020, tf4+20,4 }, { 0xb021, tf4+24,4 }, { 0xb022, tf4+28,4 }, { 0xb023, tf4+32,4 }, { 0xb024, tf4+36,4 }, { 0xb02f, tf4+20,20 }, ///132 { 0xb110, tf4+40,4 }, { 0xb111, tf4+42,4 }, { 0xb112, tf4+48,4 }, { 0xb113, tf4+52,4 }, { 0xb114, tf4+56,4 }, { 0xb11f, tf4+40,20 }, /* { 0xb120, tf4+60,4 }, { 0xb121, tf4+64,4 }, { 0xb122, tf4+68,4 }, { 0xb123, tf4+72,4 }, { 0xb124, tf4+76,4 }, { 0xb12f, tf4+60,20 }, ///144*/ { 0xb130, tf4+60,4 }, { 0xb131, tf4+64,4 }, { 0xb132, tf4+68,4 }, { 0xb133, tf4+72,4 }, { 0xb134, tf4+76,4 }, { 0xb13f, tf4+60,20 }, ///144 ////tf5=400 //********************** { 0xb210, tf6+0, 4 }, //最近一次编程时间 // { 0xb212, tf6+4, 2 }, //编程次数 // { 0xb214, tf6+6, 4 }, // 电池工作时间 // //********************** // 上月最大需量发生时间 // { 0xb410, tf5+0, 4}, { 0xb411, tf5+4, 4}, { 0xb412, tf5+8, 4}, { 0xb413, tf5+12, 4}, { 0xb414, tf5+16,4}, { 0xb41f, tf5+0, 20}, { 0xb420, tf5+20,4 }, ///154 { 0xb421, tf5+24,4 }, { 0xb422, tf5+28,4 }, { 0xb423, tf5+32,4 }, { 0xb424, tf5+36,4 }, { 0xb42f, tf5+20,20 }, { 0xb510, tf5+40,4 }, { 0xb511, tf5+42,4 }, { 0xb512, tf5+48,4 }, { 0xb513, tf5+52,4 }, { 0xb514, tf5+56,4 }, { 0xb51f, tf5+40,20 }, ///165 /* { 0xb520, tf5+60,4 }, { 0xb521, tf5+64,4 }, { 0xb522, tf5+68,4 }, { 0xb523, tf5+72,4 }, { 0xb524, tf5+76,4 }, { 0xb52f, tf5+60,20 }, */ { 0xb530, tf5+60,4 }, ///166 { 0xb531, tf5+64,4 }, { 0xb532, tf5+68,4 }, { 0xb533, tf5+72,4 }, { 0xb534, tf5+76,4 }, { 0xb53f, tf5+60,20 }, ///171 //其它 // tf6 = 480 { 0xb611, tf6+10, 2}, { 0xb612, tf6+12, 2},
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -