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

📄 slavesimens.c

📁 电力行业的DL645采集程序,嵌入式Linux环境
💻 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	480

const 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 + -