⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 slavesimens.c

📁 本人设计的DL/T645规约电能表的抄表和电表模拟软件
💻 C
📖 第 1 页 / 共 4 页
字号:
  #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 + -