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

📄 common.h

📁 Modbus主站
💻 H
字号:
#ifndef _COMMON_DEFINED
#define _COMMON_DEFINED
//#define _OLD_VERSSION
#include <ddeml.h>
#define  PACKLEN      1024 
#define  DATA_LEN     16 
#define  STRING_LEN   32
#define  BADVALUE     "-9999"
#define  _ONNET
#define ERR_OUT -101
#define  MINALMCNT   50
#define  MAXALMHISBUF 1000
#define  MAXALMCNT   1000
#define  MAXAREA     32
#define  LOGCNT      1000
#define  MAXACQCYC   10
#define  MAXACQCNT   1000
#define  MAXTAGIDREQ 1000
#define  MAXDCSIDREQ 500
#define  MAXSAVECYC  10
#define  MAXSAVECNT  10
#define  ACQDESC_LEN 32
#define  DCSID_LEN   32 
#define  NET_DATA    6666
#define  NET_TIME_OUT  60
const int  MAXHISBUF=30,MAXSERIAL=1000,MAXNOTHAND =10, MAXHISLOSS =3;                     
#define DDE_SERVER
enum  ALM_ACK {ALM_NOACK,ALM_ACK,ALM_RTN};
enum  ALM_PRIO {PRIO_NONE, PRIO_LOG, PRIO_LOW, PRIO_HIGH, PRIO_EM};
enum  DATA_TYPE {TYPE_INT = 1,TYPE_FLOAT,TYPE_DOUBLE,TYPE_STRING,
				 TYPE_DISCRETE,TYPE_ENUM ,TYPE_ALARM,TYPE_STRING1=20,TYPE_STRING2,
				 TYPE_STRING3 };
enum  TagCatelog{catDigMoni,catDigCtl,catAnaMoni,catAnaCtl};  
const int  LEN_STRING1  = 8,   	LEN_STRING2  = 16,  	LEN_STRING3  = 32;
const int  	DIS_PT_PR = 9; //DISTANCE BETWIN ALM VALUE AND PRIORITY
const short PAR_NAME = 0,      	PAR_KIND = 1,       	PAR_STAT = 3,
			PAR_DESC = 2,		PAR_UNIT = 4,			PAR_EU = 10 ,
			PAR_EULO = 12,		PAR_EUHI =11,			PAR_PV = 13,
			PAR_PVP =  14,		PAR_LASTPV = 15,		PAR_PVSOURCE = 16,
			PAR_PVRAW = 17, 	PAR_PVRAWHI=18,			PAR_PVRAWLO = 19,
			PAR_PERIOD = 20,	PAR_PVSTAT = 21,
			//PAR_SP = 22,		PAR_SPHI =23,			PAR_SPLO = 24,
			PAR_SPROCLM = 25,	PAR_NORMALVAL = 26,		PAR_ALARMPR=35,	
			//PAR_DDEACC = 27,	PAR_PVLINK = 28,
			PAR_OFFMES = 27,	PAR_ONMES = 28,
			PAR_OP = 29,		PAR_MODE = 30,
			PAR_STATIS = 34,	PAR_FORMAT = 49,		PAR_ALARM = 50,
			PAR_ALMENAB = 51,
			PAR_LL =  52,		PAR_LO = 53,			PAR_HI = 54,
			PAR_HH =  55,		PAR_RATE= 56,			PAR_DEV =57,
			PAR_BADPV =58,		PAR_TIMEOUT= 59,        PAR_DEADBAND = 60,
			PAR_LLPR =  61,		PAR_LOPR = 62,			PAR_HIPR = 63,
			PAR_HHPR =  64,		PAR_RATEPR= 65,			PAR_DEVPR =66,
			PAR_BADPVPR =67,	PAR_TIMEOUTPR= 68,
			PAR_RATECYC = 70,	
			PAR_C1FL=71,		PAR_C1=72,				PAR_C2FL=73,
			PAR_C2 = 74,		PAR_SQRTFL=75,			PAR_FILTERFL = 77,				
			PAR_FILTER = 78,	PAR_SCALEFL=79,
			PAR_SCALE=80,		
			PAR_TOTALFL=81,		PAR_TOTAL=82,			PAR_TIMEBASE=83,
			PAR_TOTALRESET=84,	PAR_OPSCALEFL = 85,		PAR_P1 = 86,
			PAR_P2 = 87,		PAR_OPCODE = 88,		PAR_DIRECTION = 90,
			PAR_SP = 91,		PAR_V0 = 92,			PAR_I = 93,
			PAR_D = 94,			PAR_P = 95,				PAR_BELTA = 96,
			PAR_CYCLE = 97,		PAR_FORMULA = 98,		PAR_UMAX = 99,
			PAR_UMIN = 100,		PAR_UDMAX = 101,		PAR_COMPEN = 102,
			PAR_REDUCE = 103,	PAR_TFILTERFL = 104,		PAR_TFILTER = 105,		
			PAR_QUICK = 106,	PAR_LAG = 107,		PAR_TLAG = 108,
			PAR_TLAGINER = 109,	PAR_KLAG = 110;
const float BADFLOAT = (-9999.0);
const short NET_TAGID_REQ = 1001,NET_TAGID_ANS = 1002,NET_DATA_REQ=1003,
			NET_DATA_ANS = 1004,NET_DATA_SET = 1005,NET_DATA_GET = 1006,
			NET_ALM_REQ = 1007,NET_ALM_ANS = 1008, NET_TAG_ACK = 1009,  
			NET_AREA_ACK = 1010,NET_DB_ACK = 1011,
			NET_ACQ_ANS = 1012, NET_DCSID_ANS = 1013,NET_ALLTAG_REQ = 1015,
			NET_ALLTAG_ANS = 1015,NET_ALLPAR_REQ = 1017,
			NET_ALLPAR_ANS = 1017,NET_DATASET_BYNAME = 1019,
			NET_DATASET_BYNAME_ANS = 1019,NET_ALLTAG_INFOR = 1020,NET_DATASET_BYNAME_VB = 1021,NET_HIS_REQ = 1031,NET_INS_HISDAT=1032,NET_TAG_ADD = 1041,NET_GETDATA_BYNAME = 1043,
			NET_GETDATA_BYNAME_VB=1044,NET_COLLTAG_REQ=1045,NET_INIT_COMPLETE = 1046,
			NET_REGISTER = 1048, NET_TAGID2_REQ = 1049,NET_TAGID2_UNREG = 1050,
			NET_DATA_READ = 1053, NET_DATA_WRITE = 1054,NET_USER_UNREG = 1055,NET_SET_COMPLETED = 1056,
			NET_DATA_SET1 = 2005,NET_VARADD=101,
			NET_MGET_UNIT_INFOR = 1051,NET_GET_OUT = 1061,NET_DATA_REQ1=2003,NET_BROCAST = 2000;
struct ParStruTxt
{
	char szNo[DATA_LEN];
	char szName[DATA_LEN];
	char szType[DATA_LEN];
};
typedef struct CfgParStru
{
	char szNo[DATA_LEN];
	char szName[DATA_LEN];
	char szType[DATA_LEN];
	char szLen[DATA_LEN];
} CFGPARDEF;

typedef struct 
{               
	char szTagPar[DATA_LEN * 2];
}
TAGITEMDEFTXT;   
 
typedef struct TagId
{
    short iAreaNo;//所在区域号
    unsigned short iTagNo; //点序号     
    short iParNo;//参数号
    short iTypeNo; //数据类型     
} TAGIDDEF;
typedef struct TagId2
{
	 unsigned short iTypeNo:3; //数据类型     
	 unsigned short iAreaNo:5;//所在区域号
	 unsigned short iParNo:8;//参数号
	 unsigned short iTagNo:16; //点序号     
} TAGIDDEF2;

typedef struct        
  {
   char  name[16] ;       /* 文件名称 */
   char  note[32] ;       /* 文件说明 */
   unsigned char ver[4] ; /* 版本号   */
   long  sysflag  ;       /* 系统标志 */
   long  savetime ;       /* 保存时间 */
   long  password ;       /* 识别码   */
   short userid   ;       /* 保存用户 */
   short flag     ;       /* 存取标志 */
   short type     ;       /* 记录类型 */
   short len      ;       /* 记录长度 */
   short num      ;       /* 记录个数 */
   short tmp      ;       /* 预留     */
   char  temp[24] ;       /* 预留     */
   }  CFGFILEHEAD ;       /* 100 byte */
/*
typedef struct CfgTagIndex        
{
   long  kind  ;       
   char  name[16] ;      
   long  parp ;       
   long  flag ;      
}  CFGTAGINDEX ;      

typedef struct
{
   	char name[16];
   	char kind[16];
    char flag[16];
    char parp[16];
    char tmp[32];
}
CFGTAGHEAD;
*/
struct AlmStru
{
     unsigned short LL: 1;
     unsigned short LO: 1;
     unsigned short HI: 1;
     unsigned short HH: 1;
     unsigned short RATE:    1;
     unsigned short DEV:     1;
     unsigned short BADPV:   1;
     unsigned short TIMEOUT: 1;
     unsigned short ABNORMAL: 1;

     unsigned short dumm1   : 6;
     unsigned short ACK:      1;
     short iParNo  : 8;//Indentify what is Alarmming 
     unsigned short iPrio   : 3;//Current Alarm Priority
     unsigned short dumm2   : 5;

} ;

typedef struct
 {
   	long   lTime;   //Time While Alarm was happended
   	short  iTagNo;  //Tag number
   	short  iParNo; //Alm Type  HH,HI ,LL...
   	char   iAck; 
   	char   szData[16];//data while was alarmming
 }ALMLOGDEF ; 

typedef struct
{
   long   lTime;//报警发生时间
   //char   szName[12];//点名
   char   szName[DATA_LEN];//点名
   //char	  szDesc[16];//Descriptor
   char	  szDesc[38];//Descriptor
   char   iAck;//确认标志 0:未确认;1确认;2恢复
   char   iArea;//区域号
   short  iPrio;//优先级
   short  iAlmType;//报警类型
   short  iTagNo; //tag number
   char   szData[DATA_LEN];//报警发生时过程值
}ALMLOGDEFTXT ;
typedef struct
{
   char  szName[DATA_LEN];//点名
   //char	  szDesc[22];//Descriptor
   char  iAck;//确认标志 0:未确认;1确认;2恢复
   char  iPrio;//优先级
   char  iAlmType;//报警类型
   char  iTagNo[4]; //tag number
   char  iArea[2];
   char  szData[DATA_LEN];//报警发生时过程值
}ALMDATATXT ;

typedef struct AlmLogReqStru
{ 
	long lOffset;
	long lAreaNo;
	long lHis;
}ALMLOGREQ ;


typedef struct
{
	char szDbNo[DATA_LEN];
	char szTagPar[DATA_LEN * 2];
	char szAcqDesc[DATA_LEN * 2];
	char szCycle[DATA_LEN];
}ACQFILESTRU;

typedef struct
{
	char szDbNo[DATA_LEN];
	char szTagPar[DATA_LEN * 2];
	char szAcqDesc[DATA_LEN * 2];
}MANUFILESTRU;
typedef struct HisStru
{ 
	char szTagPar[2*DATA_LEN];
	long lCycle;
	long lCount;
}HISDEF ;
typedef struct DcsIdStru
{ 
	unsigned char id[32] ;
}DCSIDDEF;
             
typedef struct HisHeadStru
{
  time_t tTime;//lastest save time
  long 	 lCycle;//save cycle
  long   lCount;//save count  
  long   lNum;  //entity total
  long   lHead; //head point
  long   lTail; //tail point
} HISHEAD;

typedef struct  
{
	char szTagPar[32]; 
	TAGIDDEF id;  
	short    iLength;
	short 	 iTmp;
} TAGIDTABLE;
typedef struct UnitInorStru
{
	long lArea;
	long lUnit;
	long lOffset;           
	long lTmp;
}UNITINFOR;
#define SRC_LEN 6
#ifdef _OLD_VERSSION
typedef struct NetHeadStru
{        
	char  szOldSource[SRC_LEN]; //for client 
	short p3;
	char  szSource[SRC_LEN]; //for client
	short p4;
	long  sock;         //for server
	short serno; //serial no
	short no;    //pack no
	short id; //serial no
	short type; //pack type
	short len;
   	short  p1;
   	short  p2; 
   	short  code;

	char  szNode[8];
	char  szService[8];//Access Name
	char  szTopic[8];
} NETHEAD;
#else
typedef struct NetHeadStru//包头
{        
	char  szOldSource[SRC_LEN]; //包发送者标识for client 
	short p3;//用户参数3
	char  szSource[SRC_LEN]; //保留 for client
	long  sock;         //保留 for server
	short serno; //保留 serial no
	short no;    //保留pack no

	short id; //系列号 serial no
	short type; //包类型 pack type
	long  len;//包长度
   	short  p1;//用户参数1
   	short  p2; //用户参数2
   	short  code;//是否为结束包

	char  szNode[8];//目的地机器标识
	char  szService[8];//保留Access Name
	char  szTopic[8];//保留
} NETHEAD;
#endif
#define PACKHEAD NETHEAD
typedef struct HisReqStru
{ 
	long lBeginTime;
	long lSpan;
	long lCount;
	long lTagCount;
}HISREQ;

typedef struct HisInsDatStru
{ 
	time_t tTime;
	float fDat;
}HISDATINS;

typedef struct StatisReqStru
{
	char szName[32];
	long	cat;//0:aver 1:max 2:min
	long	type;//0:hour 1:day 2:moth 3 year
	long	time;//time_t
	long	sum;
}STATISREQ;

typedef struct SetDataRespondStru//对应 NET_SET_COMPLETED
{
	TAGIDDEF tagid;
	char bSuccess;//成功为1
}SETDATARESPOND;

struct IOITEMDEF
{
	char str[64];
	long n[7];
	short fmt;
	short bit;
};
#define ERR_OUT -101
#define PACKHEAD NETHEAD
#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -