📄 common.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 + -