eis/TestProject/DCR/ihdb_inc/ihyperdb.h

1089 lines
37 KiB
C
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#ifndef RD_CONST_H_FILE
#define RD_CONST_H_FILE
#include "data_types.h"
#ifdef AIX
#include <stdlib.h>
#endif//AIX
#ifndef _HDHANDLE
typedef void* HDHANDLE;
#define _HDHANDLE
#endif
#ifndef WIN32
#ifndef SOCKET
#define SOCKET int
#endif
#else
#ifndef SOCKET
//#include <winsock2.h>
//#include <windows.h>
#if defined(_WIN64)
typedef __int64 INT_PTR, *PINT_PTR;
typedef unsigned __int64 UINT_PTR, *PUINT_PTR;
#else
typedef _W64 int INT_PTR, *PINT_PTR;
typedef _W64 unsigned int UINT_PTR, *PUINT_PTR;
#endif
typedef UINT_PTR SOCKET;
#endif
#endif
#define HD_INVALID_HANDLE (HDHANDLE)0
// 页大小
#define RD_PAGE_SIZE 4096
#define HD_EPSILON 0.00001
#define DATA_QUALITY_VALUE_HALT -1 /*停机记录,正常的数据质量不能用这个值*/
#define DATA_QUALITY_VALUE_IO_TIMEOUT 65534 // 无法连接设备
// 采集器状态点质量
#define DATA_QUALITY_VALUE_CT_MAX 65533
#define DATA_QUALITY_VALUE_CT_BOOTTING 65533
#define DATA_QUALITY_VALUE_CT_ACTIVE 65532
#define DATA_QUALITY_VALUE_CT_SHUTDOWN 65531
#define DATA_QUALITY_VALUE_CT_TIMEOUT 65530
#define DATA_QUALITY_VALUE_CT_MIN 65530
// 设备状态点质量
#define DATA_QUALITY_VALUE_DEVICE_MAX 65529
#define DATA_QUALITY_VALUE_DEVICE_CONN 65529
#define DATA_QUALITY_VALUE_DEVICE_DISCONN 65528
#define DATA_QUALITY_VALUE_DEVICE_MIN 65528
// 表达式过滤
#define DATA_QUALITY_VALUE_EXPR_FILTER 65527
#define DATA_QUALITY_VALUE_HALT_SHOW "No Data"
#define DATA_QUALITY_VALUE_IO_TIMEOUT_SHOW "I/O Timeout"
#define DATA_QUALITY_GOOD 0xC0 //一个典型的Good值, 192
#define DATA_QUALITY_BAD 0xFF3F //质量为Bad
#define DATA_QUALITY_BAD_STATS_NO_GOOD_REC 0xFF3E //统计记录用这个值来表示统计区域没有一条Good的原始记录质量为bad
// license status
#define LICENSE_INVALID 0 //许可证无效一般是2小时试用版过期
#define LICENSE_VALID 1 //有效许可证
#define LICENSE_VALID_TEMP 2 //临时许可证2小时试用版
//tag点类型定义
#define TAG_TYPE_MIN 0
#define TAG_TYPE_INT8 0
#define TAG_TYPE_INT16 1
#define TAG_TYPE_INT32 2
#define TAG_TYPE_FLOAT32 3
#define TAG_TYPE_FLOAT64 4
#define TAG_TYPE_DIGITAL 5
#define TAG_TYPE_STRING 6
#define TAG_TYPE_BLOB 7
#define TAG_TYPE_MAX 7
//变更类型
#define CHANGE_TYPE_ADD 0
#define CHANGE_TYPE_MODIFY 1
#define CHANGE_TYPE_DELETE 2
#define CHANGE_TYPE_MAX 2
//变更的模块类型
#define CHANGE_MODULE_TYPE_COLLECTOR 0
#define CHANGE_MODULE_TYPE_CALC 1
// 通知对象类型
#define HD_NOTIFY_OBJ_TYPE_NORMAL_TAG 0
#define HD_NOTIFY_OBJ_TYPE_ALARM_TAG 1
#define HD_NOTIFY_OBJ_TYPE_STAT_TAG 2
#define HD_NOTIFY_OBJ_TYPE_EXPCALC_TAG 3
#define HD_NOTIFY_OBJ_TYPE_COLLECTOR 4
#define HD_NOTIFY_OBJ_TYPE_SCAN_GROUP 5
#define HD_NOTIFY_OBJ_TYPE_DEVICE 6
#define HD_NOTIFY_OBJ_TYPE_ALARM_GROUP 7
#define HD_NOTIFY_OBJ_TYPE_DIGITAL_SET 8
#define HD_NOTIFY_OBJ_TYPE_MAX 8
/*配置变更通知对象的掩码*/
#define HD_NOTIFY_OBJ_MASK_ALL 0XFFFFFFFFFFFFFFFFLL
#define HD_NOTIFY_OBJ_MASK_NORMAL_TAG (1 << HD_NOTIFY_OBJ_TYPE_NORMAL_TAG)
#define HD_NOTIFY_OBJ_MASK_ALARM_TAG (1 << HD_NOTIFY_OBJ_TYPE_ALARM_TAG)
#define HD_NOTIFY_OBJ_MASK_STAT_TAG (1 << HD_NOTIFY_OBJ_TYPE_STAT_TAG)
#define HD_NOTIFY_OBJ_MASK_EXPCALC_TAG (1 << HD_NOTIFY_OBJ_TYPE_EXPCALC_TAG)
#define HD_NOTIFY_OBJ_MASK_COLLECTOR (1 << HD_NOTIFY_OBJ_TYPE_COLLECTOR)
#define HD_NOTIFY_OBJ_MASK_SCAN_GROUP (1 << HD_NOTIFY_OBJ_TYPE_SCAN_GROUP)
#define HD_NOTIFY_OBJ_MASK_DEVICE (1 << HD_NOTIFY_OBJ_TYPE_DEVICE)
#define HD_NOTIFY_OBJ_MASK_ALARM_GROUP (1 << HD_NOTIFY_OBJ_TYPE_ALARM_GROUP)
#define HD_NOTIFY_OBJ_MASK_DIGITAL_SET (1 << HD_NOTIFY_OBJ_TYPE_DIGITAL_SET)
//采集器相关变更实体的类别
#define CHANGE_ENTRY_COLLECTOR 0
#define CHANGE_ENTRY_DEVICE 1
#define CHANGE_ENTRY_SCAN_GROUP 2
#define CHANGE_ENTRY_TAG 3
//报警变更类型
#define CHANGE_NEW_ALARM 0
#define CHANGE_ACK_ALARM 1
#define CHANGE_RESTORE_ALARM 2
#define CHANGE_COMMENT_ALARM 3
//扫描组类型
#define HD_CT_SCAN_TYPE_POLL 0 //轮询模式
#define HD_CT_SCAN_TYPE_ADVISE 1 //通知模式
//压缩类型定义
#define COMP_TYPE_MIN 0
#define COMP_TYPE_NO 0
#define COMP_TYPE_SDT 1
#define COMP_TYPE_MAX 1
//报警自动确认定义
#define ALARM_AUTO_ACK_MIN 0
#define ALARM_AUTO_ACK_NO 0
#define ALARM_AUTO_ACK_YES 1
#define ALARM_AUTO_ACK_MAX 1
//监视点的类型
#define MONITOR_TAG_TYPE_MIN 0
#define MONITOR_TAG_TYPE_ALARM 1
#define MONITOR_TAG_TYPE_MAX 1
//数据类型长度定义
#define DATA_LENGTH_INT8 1
#define DATA_LENGTH_INT16 2
#define DATA_LENGTH_INT32 4
#define DATA_LENGTH_FLOAT32 4
#define DATA_LENGTH_FLOAT64 8
#define DATA_LENGTH_DIGITAL 1
//数据块内部结构长度定义
#define LENGTH_TIME_STAMP 6
#define LENGTH_DATA_QUALITY 2
/*string blob类型相关长度定义*/
#define LENGTH_VAR_TYPE_VALUE 1000
#define LENGTH_VAR_TYPE_RECORD (LENGTH_TIME_STAMP + LENGTH_DATA_QUALITY + sizeof(uint16) + LENGTH_VAR_TYPE_VALUE)
//各数据类型记录长度定义
#define REC_LENGTH_MIN REC_LENGTH_INT8
#define REC_LENGTH_INT8 (DATA_LENGTH_INT8 + LENGTH_TIME_STAMP + LENGTH_DATA_QUALITY)
#define REC_LENGTH_INT16 (DATA_LENGTH_INT16 + LENGTH_TIME_STAMP + LENGTH_DATA_QUALITY)
#define REC_LENGTH_INT32 (DATA_LENGTH_INT32 + LENGTH_TIME_STAMP + LENGTH_DATA_QUALITY)
#define REC_LENGTH_FLOAT32 (DATA_LENGTH_FLOAT32 + LENGTH_TIME_STAMP + LENGTH_DATA_QUALITY)
#define REC_LENGTH_FLOAT64 (DATA_LENGTH_FLOAT64 + LENGTH_TIME_STAMP + LENGTH_DATA_QUALITY)
#define REC_LENGTH_DIGITAL (DATA_LENGTH_DIGITAL + LENGTH_TIME_STAMP + LENGTH_DATA_QUALITY)
#define REC_LENGTH_MAX (LENGTH_VAR_TYPE_RECORD)
#define HD_MAX_LEN_TAG_PROP 1024
#define HD_LEN_TAG_NAME 128 /* including '\0' */
#define HD_LEN_TAG_TYPE 16 /* including '\0' */
#define HD_LEN_TAG_DESC 1024 /* including '\0' */
#define HD_LEN_USER_NAME 32 /* including '\0' */
#define HD_LEN_ENG_UNITS 32 /* including '\0' */
#define HD_LEN_INSTURMENT_POINT_VERSION_0 64 /* including '\0' */ //API版本为0时的设备点长度版本1修改为256
#define HD_LEN_INSTURMENT_POINT 256 /* including '\0' */ //modify by yangqi; 长度从64修改为256
#define HD_LEN_INTERFACE_NAME 64 /* including '\0' */
#define HD_LEN_IP_ADDR 16
#define HD_LEN_IPHOST_ADDR 256
#define HD_LEN_DIGITAL_SET_NAME 32 /* including '\0' */
#define HD_LEN_DIGITAL_SET_STATE_NAME 32 /* including '\0' */
#define HD_LEN_ALARM_TEST 128 //报警点Test属性长度包括szTest1,szTest2,szTest3,szTest4
#define HD_LEN_ALARM_ACTION 128 //报警点ACTION属性长度包括szAction1szAction2szAction3szAction4
#define HD_LEN_ALARM_GROUP_NAME 128 //报警点组名长度
#define HD_LEN_ALARM_GROUP_DESC 128 //报警点组描述长度
#define HD_LEN_ALARM_COMMENT 256
#define LENGTH_QUERY_ITEM_VALUE 32
#define HD_LEN_QUERY_ALARM_REC_ITEM_VALUE 32 //报警记录查询的记录项的长度
#define HD_LEN_COLLECTOR_NAME 64
#define HD_LEN_COLLECTOR_DESCRIPTION 128
#define HD_LEN_COLLECTOR_EXT_PARAM 512
#define HD_LEN_DEVICE_NAME 64
#define HD_LEN_DEVICE_ADDRESS 32
#define HD_LEN_DEVICE_DESCRIPTION 128
#define HD_LEN_DEVICE_EXT_PARAM 512
#define HD_LEN_SCANGROUP_NAME 64
#define HD_LEN_SCANGROUP_DESCRIPTION 128
#define HD_LEN_SCANGROUP_EXT_PARAM 512
#define HD_LEN_FILTER_EXPR 128//过滤表达式长度
#define HD_LEN_CALC_EXPR 256//计算表达式的长度
#define HD_LEN_HD_SRV_NAME 64//iHyperDB数据源名称长度
#define MAC_ADDRESS_LEN 32
/* 权限管理约束 */
#define HD_LEN_SEC_PASSWORD 64
#define HD_LEN_SEC_GROUP_NAME 32
#define HD_LEN_SEC_TRUST_NAME 64
#define HD_LEN_SEC_USER_DESC 64
#define HD_LEN_SEC_GROUP_DESC 64
#define HD_LEN_SEC_IP_ADDRESS 16
#define HD_LEN_SEC_AUTH_ITEM_NAME 32
#define HD_LEN_SEC_AUTH_ITEM_DESC 64
#define HD_SEC_AUTH_TYPE_DEFAUT_VALUE 1
/*普通点,报警点,统计点, 计算点SPC报警点类型*/
#define HD_TAG_CLASS_BASIC 0
#define HD_TAG_CLASS_ALARM 1
#define HD_TAG_CLASS_STATS 2
#define HD_TAG_CLASS_CALC 3
#define HD_TAG_CLASS_SPC 4
#define HD_TAG_CLASS_SYS 5
//Tag类别掩码
#define HD_TAG_CLASS_MASK_NORMAL_TAG 1
#define HD_TAG_CLASS_MASK_ALARM_TAG ((int64)1 << 1)
#define HD_TAG_CLASS_MASK_STATS_TAG ((int64)1 << 2)
#define HD_TAG_CLASS_MASK_CALC_TAG ((int64)1 << 3)
#define HD_TAG_CLASS_MASK_SPC_TAG ((int64)1 << 4)
#define HD_TAG_CLASS_MASK_ALL 0XFFFFFFFFFFFFFFFFLL
#define TAG_COL_TAGID 0
#define TAG_COL_REC_OWNER 1
#define TAG_COL_REC_GROUP 2
#define TAG_COL_TAG_NAME 3
#define TAG_COL_ARCHIVING 4
#define TAG_COL_COMP_DEV 5
#define TAG_COL_COMP_MAX 6
#define TAG_COL_COMP_TYPE 7
#define TAG_COL_REC_ACCESS 8
#define TAG_COL_SCAN 9
#define TAG_COL_SPAN 10
#define TAG_COL_MIN_VALUE 11
#define TAG_COL_TAG_TYPE 12
#define TAG_COL_TAG_CLASS 13
#define TAG_COL_DELETE 14
#define TAG_COL_VERSION 15
#define TAG_COL_MAX 15
//报警点特有的属性列
#define TAG_COL_TEST1 16
#define TAG_COL_TEST2 17
#define TAG_COL_TEST3 18
#define TAG_COL_TEST4 19
#define TAG_COL_ACTION1 20
#define TAG_COL_ACTION2 21
#define TAG_COL_ACTION3 22
#define TAG_COL_ACTION4 23
#define TAG_COL_SOURCE_TAG 24
#define TAG_COL_ALARM_GROUP_ID 25
#define TAG_COL_AUTOACK 26
#define TAG_COL_TIME_DEADBAND 27
#define TAG_COL_VALUE_DEADBAND 28
#define ALARM_TAG_COL_MAX 28
//统计点特有的属性列
#define TAG_COL_STATS_SOURCE_TAG_NAME 16
#define TAG_COL_STATS_TYPE 17
#define TAG_COL_STATS_SAMPLE_START_DATE 18
#define TAG_COL_STATS_SAMPLE_MODE 19
#define TAG_COL_STATS_SAMPLE_INTERVAL 20
#define TAG_COL_STATS_SAMPLE_BEGIN_OFFSET 21
#define TAG_COL_STATS_SAMPLE_END_OFFSET 22
#define TAG_COL_STATS_SAMPLE_MONTH_BEGIN_DAY 23
#define TAG_COL_STATS_SAMPLE_MONTH_END_DAY 24
#define TAG_COL_STATS_BEGIN_TIME_STAMP 25
#define TAG_COL_STATS_TIME_STAMP_OFFSET 26
#define TAG_COL_STATS_PERIOD 27
#define TAG_COL_STATS_PCT_GOOD 28
#define TAG_COL_STATS_FILTER_EXPR 29
#define TAG_COL_STATS_DROP_BAD_MODE 30
#define TAG_COL_STATS_COUNT_PARAM1 31
#define TAG_COL_STATS_COUNT_PARAM2 32
//V2
#define TAG_COL_STATS_SAMPLE_TYPE 33
#define TAG_COL_STATS_INTERP_OFFSET 34
#define TAG_COL_STATS_INTERP_PERIOD 35
#define TAG_COL_STATS_CONVER_TYPE 36
#define TAG_COL_STATS_CONVERSION 37
#define TAG_COL_STATS_FILTER_FAIL_MODE 38
#define TAG_COL_STATS_CALC_PERIOD 39
#define TAG_COL_STATS_RESET 40
#define TAG_COL_STATS_USE_BAD_VALUE 41
#define STATS_TAG_COL_MAX 41
/*计算点特有的属性列*/
#define TAG_COL_CALC_MODE 16
#define TAG_COL_CALC_PERIOD 17
#define TAG_COL_CALC_EXPR 18
#define TAG_COL_CALC_CALCHISTORY 19
#define TAG_COL_CALC_STARTDATE 20
#define TAG_COL_CALC_HAVRENDDATE 21
#define TAG_COL_CALC_ENDDATE 22
#define TAG_COL_CALC_SOURCETAGNAME 23
#define CALC_TAG_COL_MAX 23
/*SPC报警点特有的属性列*/
#define TAG_COL_SPC_SOURCE_TAG_NAME 16
#define TAG_COL_SPC_ALARM_GROUP_ID 17
#define TAG_COL_SPC_CTRL_CHART_TYPE 18
#define TAG_COL_SPC_TRIGGLE_MODE 19
#define TAG_COL_SPC_SAMPLE_SIZE 20
#define TAG_COL_SPC_SAMPLE_INTERVAL 21
#define TAG_COL_SPC_AUTO_ACK 22
#define TAG_COL_SPC_RULE 23
#define SPC_TAG_COL_MAX 23
#define TAG_PROP_ITEM_COUNT 24 //外部可见的TagProp item个数
#define TAG_PROP_ALL 0XFFFFFFFFFFFFFFFFLL //tag点属性的取值表示Tag点的所有属性
//基本的Tag属性
#define TAG_PROP_TAG_NAME 1
#define TAG_PROP_ARCHIVING ((int64)1 << TAG_COL_ARCHIVING)
#define TAG_PROP_COMP_DEV ((int64)1 << TAG_COL_COMP_DEV)
#define TAG_PROP_COMP_MAX ((int64)1 << TAG_COL_COMP_MAX)
#define TAG_PROP_COMP_TYPE ((int64)1 << TAG_COL_COMP_TYPE)
#define TAG_PROP_MIN_VALUE ((int64)1 << TAG_COL_MIN_VALUE)
#define TAG_PROP_REC_ACCESS ((int64)1 << TAG_COL_REC_ACCESS)
#define TAG_PROP_REC_GROUP ((int64)1 << TAG_COL_REC_GROUP)
#define TAG_PROP_REC_OWNER ((int64)1 << TAG_COL_REC_OWNER)
#define TAG_PROP_SCAN ((int64)1 << TAG_COL_SCAN)
#define TAG_PROP_SPAN ((int64)1 << TAG_COL_SPAN)
#define TAG_PROP_TAGID ((int64)1 << TAG_COL_TAGID)
#define TAG_PROP_TAG_TYPE ((int64)1 << TAG_COL_TAG_TYPE)
#define TAG_PROP_TAG_CLASS ((int64)1 << TAG_COL_TAG_CLASS)
#define TAG_PROP_DELETE ((int64)1 << TAG_COL_DELETE)
//报警点特有的属性
#define TAG_PROP_TEST1 ((int64)1 << TAG_COL_TEST1)
#define TAG_PROP_TEST2 ((int64)1 << TAG_COL_TEST2)
#define TAG_PROP_TEST3 ((int64)1 << TAG_COL_TEST3)
#define TAG_PROP_TEST4 ((int64)1 << TAG_COL_TEST4)
#define TAG_PROP_ACTION1 ((int64)1 << TAG_COL_ACTION1)
#define TAG_PROP_ACTION2 ((int64)1 << TAG_COL_ACTION2)
#define TAG_PROP_ACTION3 ((int64)1 << TAG_COL_ACTION3)
#define TAG_PROP_ACTION4 ((int64)1 << TAG_COL_ACTION4)
#define TAG_PROP_SOURCE_TAG ((int64)1 << TAG_COL_SOURCE_TAG)
#define TAG_PROP_ALARM_GROUP_ID ((int64)1 << TAG_COL_ALARM_GROUP_ID)
#define TAG_PROP_AUTOACK ((int64)1 << TAG_COL_AUTOACK)
#define TAG_PROP_TIME_DEADBAND ((int64)1 << TAG_COL_TIME_DEADBAND)
#define TAG_PROP_VALUE_DEADBAND ((int64)1 << TAG_COL_VALUE_DEADBAND)
//统计点特有属性
#define TAG_PROP_STATS_SOURCE_TAG_NAME ((int64)1 << TAG_COL_STATS_SOURCE_TAG_NAME)
#define TAG_PROP_STATS_TYPE ((int64)1 << TAG_COL_STATS_TYPE)
#define TAG_PROP_STATS_SAMPLE_START_DATE ((int64)1 << TAG_COL_STATS_SAMPLE_START_DATE)
#define TAG_PROP_STATS_SAMPLE_MODE ((int64)1 << TAG_COL_STATS_SAMPLE_MODE)
#define TAG_PROP_STATS_SAMPLE_INTERVAL ((int64)1 << TAG_COL_STATS_SAMPLE_INTERVAL)
#define TAG_PROP_STATS_SAMPLE_BEGIN_OFFSET ((int64)1 << TAG_COL_STATS_SAMPLE_BEGIN_OFFSET)
#define TAG_PROP_STATS_SAMPLE_END_OFFSET ((int64)1 << TAG_COL_STATS_SAMPLE_END_OFFSET)
#define TAG_PROP_STATS_SAMPLE_MONTH_BEGIN_DAY ((int64)1 << TAG_COL_STATS_SAMPLE_MONTH_BEGIN_DAY)
#define TAG_PROP_STATS_SAMPLE_MONTH_END_DAY ((int64)1 << TAG_COL_STATS_SAMPLE_MONTH_END_DAY)
#define TAG_PROP_STATS_BEGIN_TIME_STAMP ((int64)1 << TAG_COL_STATS_BEGIN_TIME_STAMP)
#define TAG_PROP_STATS_TIME_STAMP_OFFSET ((int64)1 << TAG_COL_STATS_TIME_STAMP_OFFSET)
#define TAG_PROP_STATS_SCAN_PERIOD ((int64)1 << TAG_COL_STATS_PERIOD)
#define TAG_PROP_STATS_PCT_GOOD ((int64)1 << TAG_COL_STATS_PCT_GOOD)
#define TAG_PROP_STATS_FILTER_EXPR ((int64)1 << TAG_COL_STATS_FILTER_EXPR)
#define TAG_PROP_STATS_DROP_BAD_MODE ((int64)1 << TAG_COL_STATS_DROP_BAD_MODE)
#define TAG_PROP_STATS_COUNT_PARAM1 ((int64)1 << TAG_COL_STATS_COUNT_PARAM1)
#define TAG_PROP_STATS_COUNT_PARAM2 ((int64)1 << TAG_COL_STATS_COUNT_PARAM2)
#define TAG_PROP_STATS_SAMPLE_TYPE ((int64)1 << TAG_COL_STATS_SAMPLE_TYPE)
#define TAG_PROP_STATS_INTERP_OFFSET ((int64)1 << TAG_COL_STATS_INTERP_OFFSET)
#define TAG_PROP_STATS_INTERP_PERIOD ((int64)1 << TAG_COL_STATS_INTERP_PERIOD)
#define TAG_PROP_STATS_CONVER_TYPE ((int64)1 << TAG_COL_STATS_CONVER_TYPE)
#define TAG_PROP_STATS_CONVERSION ((int64)1 << TAG_COL_STATS_CONVERSION)
#define TAG_PROP_STATS_FILTER_FAIL_MODE ((int64)1 << TAG_COL_STATS_FILTER_FAIL_MODE)
#define TAG_PROP_STATS_CALC_PERIOD ((int64)1 << TAG_COL_STATS_CALC_PERIOD)
#define TAG_PROP_STATS_RESET ((int64)1 << TAG_COL_STATS_RESET)
#define TAG_PROP_STATS_USE_BAD_VALUE ((int64)1 << TAG_COL_STATS_USE_BAD_VALUE)
/*计算点特有的属性*/
#define TAG_PROP_CALC_MODE ((int64)1 << TAG_COL_CALC_MODE)
#define TAG_PROP_CALC_PERIOD ((int64)1 << TAG_COL_CALC_PERIOD)
#define TAG_PROP_CALC_EXPR ((int64)1 << TAG_COL_CALC_EXPR)
#define TAG_PROP_CALC_STARTDATE ((int64)1 << TAG_COL_CALC_STARTDATE)
#define TAG_PROP_CALC_ENDDATE ((int64)1 << TAG_COL_CALC_ENDDATE)
#define TAG_PROP_CALC_CALCHISTORY ((int64)1 << TAG_COL_CALC_CALCHISTORY)
#define TAG_PROP_CALC_HAVEENDTIME ((int64)1 << TAG_COL_CALC_HAVRENDDATE)
#define TAG_PROP_CALC_SOURCE_TAG_NAME ((int64)1 << TAG_COL_CALC_SOURCETAGNAME)
/*SPC点特有的属性*/
#define TAG_PROP_SPC_SOURCE_TAG_NAME ((int64)1 << TAG_COL_SPC_SOURCE_TAG_NAME)
#define TAG_PROP_SPC_ALARM_GROUP_ID ((int64)1 << TAG_COL_SPC_ALARM_GROUP_ID)
#define TAG_PROP_SPC_CTRL_CHART_TYPE ((int64)1 << TAG_COL_SPC_CTRL_CHART_TYPE)
#define TAG_PROP_SPC_TRIGGLE_MODE ((int64)1 << TAG_COL_SPC_TRIGGLE_MODE)
#define TAG_PROP_SPC_SAMPLE_SIZE ((int64)1 << TAG_COL_SPC_SAMPLE_SIZE)
#define TAG_PROP_SPC_SAMPLE_INTERVAL ((int64)1 << TAG_COL_SPC_SAMPLE_INTERVAL)
#define TAG_PROP_SPC_AUTO_ACK ((int64)1 << TAG_COL_SPC_AUTO_ACK)
#define TAG_PROP_SPC_RULE ((int64)1 << TAG_COL_SPC_RULE)
#define SPC_RULE(NUM)\
uint32 nUCLTagID;\
uint32 nCLTagID;\
uint32 nLCLTagID;\
uint32 nUSLTagID;\
uint32 nLSLTagID;\
uint32 nResetTagID;\
float64 dUCLDefaultValue;\
float64 dCLDefaultVaule;\
float64 dLCLDefaultValue;\
bool bRule1;\
bool bRule2;\
bool bRule3;\
bool bRule4;\
bool bRule5;\
bool bRule6;\
bool bRule7;\
bool bRule8;\
uint32 nRule1M;\
uint32 nRule2M;\
uint32 nRule3M;\
uint32 nRule4M;\
uint32 nRule5M;\
uint32 nRule6M;\
uint32 nRule7M;\
uint32 nRule8M;\
uint32 nRule5N;\
uint32 nRule6N;\
bool bJudgeContinuous
//删除分布式版本不需要的属性
#define TAG_BASE_PROP(NUM) \
char szTagName[HD_LEN_TAG_NAME * NUM]; \
bool bArchiving; \
float fCompDev; \
int32 nCompMaxTime; \
uint8 nCompType; \
uint8 nRecAccess; \
uint32 nRecNormalGroupID; \
uint32 nRecOwnerGroupID; \
uint32 nTagID; \
uint8 nTagType; \
bool bScan; \
float fSpan; \
float fMinValue; \
uint8 nTagClass; \
bool bDelete
#define TAG_EXT_PROP(NUM) \
char szInstrumentPoint[HD_LEN_INSTURMENT_POINT * NUM]; \
uint8 nInstrumentPointType; \
char szCollectorName[HD_LEN_COLLECTOR_NAME * NUM]; \
int32 nCollectorID; \
char szDeviceName[HD_LEN_DEVICE_NAME * NUM]; \
int32 nDeviceID; \
char szScanGroupName[HD_LEN_SCANGROUP_NAME * NUM]; \
int32 nScanGroupID; \
uint8 nParam1; \
uint8 nParam2; \
uint8 nParam3; \
uint8 nParam4; \
uint8 nParam5
#define ALARM_TAG_EXT_PROP(NUM) \
char szTest1[HD_LEN_ALARM_TEST * NUM]; \
char szTest2[HD_LEN_ALARM_TEST * NUM]; \
char szTest3[HD_LEN_ALARM_TEST * NUM]; \
char szTest4[HD_LEN_ALARM_TEST * NUM]; \
char szAction1[HD_LEN_ALARM_ACTION * NUM]; \
char szAction2[HD_LEN_ALARM_ACTION * NUM]; \
char szAction3[HD_LEN_ALARM_ACTION * NUM]; \
char szAction4[HD_LEN_ALARM_ACTION * NUM]; \
uint32 nSourceTagID; \
uint32 nAlarmGroupID; \
uint8 nAutoAck ; \
int32 nTimeDeadBand; \
float fValueDeadBand
#define STATS_TAG_EXT_PROP(NUM) \
char szSourceTagName[HD_LEN_TAG_NAME * NUM]; \
uint8 nStatsType; \
int32 nSampleStartDate; \
uint8 nSampleMode; \
int32 nSampleInerval; \
int32 nSampleBeginOffset; \
int32 nSampleEndOffset; \
uint8 nSampleMonthBeginDay; \
uint8 nSampleMonthEndDay; \
bool bBeginTimeStamp; \
int32 nTimeStampOffset; \
int32 nScanPeriod; \
float fPctGood; \
char szFilterExpr[HD_LEN_FILTER_EXPR * NUM]; \
uint8 nDropBadMode; \
double dCountParam1; \
double dCountParam2
#define STATS_TAG_EXT_PROP_V2(NUM) \
uint8 nSampleType; \
int32 nInterpOffset; \
int32 nInterpPeriod; \
uint8 nConverType; \
double dConversion; \
uint8 nFilterFailMode; \
int32 nCalcPeriod; \
bool bReset; \
bool bUseBadValue
#define Calc_TAG_EXT_PROP(NUM) \
uint8 nCalcMode; \
int32 nCalcPeriod; \
char szCalcExpr[HD_LEN_CALC_EXPR * NUM]; \
bool bCalcHistory; \
int32 nCalcStartDate; \
int32 nCalcEndDate; \
bool bHaveEndTime; \
char szSourceTagName[HD_LEN_TAG_NAME * NUM]
#define SPC_TAG_EXT_PROP(NUM) \
uint32 nSourceTagID; \
uint32 nAlarmGroupID; \
uint8 nCtrlChartType; \
uint8 nTriggleMode; \
int32 nSampleSize; \
int32 nSampleInerval; \
bool bAutoAck; \
SPC_RULE(NUM)
/*点属性结构 */
typedef struct _TagBaseProp
{
TAG_BASE_PROP(1);
}TagBaseProp;
typedef struct _TagProp
{
TAG_BASE_PROP(1);
}TagProp;
typedef struct _AlarmTagProp
{
TAG_BASE_PROP(1);
ALARM_TAG_EXT_PROP(1);
}AlarmTagProp;
typedef struct _SPCAlarmTagProp
{
TAG_BASE_PROP(1);
SPC_TAG_EXT_PROP(1);
}SPCAlarmTagProp;
typedef struct _StatsTagProp
{
TAG_BASE_PROP(1);
STATS_TAG_EXT_PROP(1);
}StatsTagProp;
typedef struct _StatsTagPropV2
{
TAG_BASE_PROP(1);
STATS_TAG_EXT_PROP(1);
STATS_TAG_EXT_PROP_V2(1);
}StatsTagPropV2;
typedef struct _CalcTagProp
{
TAG_BASE_PROP(1);
Calc_TAG_EXT_PROP(1);
}CalcTagProp;
typedef struct _QueryTagPropItem
{
uint8 nPropItemID;
uint8 nRelation;
char szValue[LENGTH_QUERY_ITEM_VALUE];
}QueryTagPropItem;
//条件查询报警记录时的查询项ID
#define ALARM_REC_QUERY_ITEM_MIN 0
#define ALARM_REC_QUERY_ITEM_PRIORITY 0 //优先级
#define ALARM_REC_QUERY_ITEM_ACK 1 //确认状态
#define ALARM_REC_QUERY_ITEM_ALARM_TYPE 2 //报警类型
#define ALARM_REC_QUERY_ITEM_NORMAL 3 //是否查询正常的报警记录
#define ALARM_REC_QUERY_ITEM_MAX 3
typedef struct _QueryAlarmRecItem
{
uint8 nItemID;
uint8 nRelation;
char szValue[HD_LEN_QUERY_ALARM_REC_ITEM_VALUE];
}QueryAlarmRecItem;
/*用于历史报警记录查询,表明选中所有的可选项*/
#define MASK_ALARM_ALL 0XFF
/*报警记录的确认状态*/
#define ALARM_STATE_UNACK 0
#define ALARM_STATE_ACK 1
/*报警确认状态掩码,用于历史报警查询接口*/
#define MASK_ALARM_STATE_ACK (1 << ALARM_STATE_ACK)
#define MASK_ALARM_STATE_UNACK (1 << ALARM_STATE_UNACK)
/*恢复状态*/
#define ALARM_STATE_UNRESTORE 0
#define ALARM_STATE_RESTORE 1
/*掩码*/
#define MASK_ALARM_STATE_RESTORE (1 << ALARM_STATE_RESTORE)
#define MASK_ALARM_STATE_UNRESTORE (1 << ALARM_STATE_UNRESTORE)
/*注释状态*/
#define ALARM_STATE_UNCOMMENT 0
#define ALARM_STATE_COMMENT 1
/*掩码*/
#define MASK_ALARM_STATE_COMMENT (1 << ALARM_STATE_COMMENT)
#define MASK_ALARM_STATE_UNCOMMENT (1 << ALARM_STATE_UNCOMMENT)
/*报警记录的优先级,0为最低*/
#define ALARM_PRI_FIRST 1
#define ALARM_PRI_SECOND 2
#define ALARM_PRI_THIRD 3
#define ALARM_PRI_FORTH 4
#define ALARM_PRI_COUNT 4
/*报警优先级掩码,用于历史报警查询接口*/
#define MASK_ALARM_PRIORITY_LOW (1 << ALARM_PRI_FIRST)
#define MASK_ALARM_PRIORITY_MID (1 << ALARM_PRI_SECOND)
#define MASK_ALARM_PRIORITY_HIGH (1 << ALARM_PRI_THIRD)
#define MASK_ALARM_PRIORITY_EMER (1 << ALARM_PRI_FORTH)
/*报警记录的报警类型*/
#define ALARM_TYPE_LOLO 1
#define ALARM_TYPE_LOW 2
#define ALARM_TYPE_HIHI 3
#define ALARM_TYPE_HIGH 4
#define ALARM_TYPE_CHANGE 5
#define ALARM_TYPE_COUNT 5
/*报警类型的掩码,用于历史报警查询接口*/
#define MASK_ALARM_TYPE_LOLO (1 << ALARM_TYPE_LOLO)
#define MASK_ALARM_TYPE_LOW (1 << ALARM_TYPE_LOW)
#define MASK_ALARM_TYPE_HIHI (1 << ALARM_TYPE_HIHI)
#define MASK_ALARM_TYPE_HIGH (1 << ALARM_TYPE_HIGH)
#define MASK_ALARM_TYPE_CHANGE (1 << ALARM_TYPE_CHANGE)
//报警记录属性掩码
#define ALARM_REC_PROP_ALARM_TAG_ID 1
#define ALARM_REC_PROP_START_TIME ((int64)1 << 1)
#define ALARM_REC_PROP_END_TIME ((int64)1 << 2)
#define ALARM_REC_PROP_ACK_TIME ((int64)1 << 3)
#define ALARM_REC_PROP_COMMENT_TIME ((int64)1 << 4)
#define ALARM_REC_PROP_ACKED ((int64)1 << 5)
#define ALARM_REC_PROP_RESTORED ((int64)1 << 6)
#define ALARM_REC_PROP_PRIORITY ((int64)1 << 7)
#define ALARM_REC_PROP_ACK_TYPE ((int64)1 << 8)
#define ALARM_REC_PROP_ALARM_TYPE ((int64)1 << 9)
#define ALARM_REC_PROP_SRC_VALUE ((int64)1 << 10)
#define ALARM_REC_PROP_TEST ((int64)1 << 11)
#define ALARM_REC_PROP_COMMENT ((int64)1 << 12)
#define ALARM_REC_PROP_ACKER ((int64)1 << 13)
#define ALARM_REC_PROP_COMMENTOR ((int64)1 << 14)
#define ALARM_REC_PROP_COMMENTED ((int64)1 << 15)
#define ALARM_REC_PROP_ALL 0xFFFF
#define ALARM_ACK_TYPE_MANUAL 1
#define ALARM_ACK_TYPE_AUTO 2
#define ALARM_ACK_TYPE_COUNT 2
#define ALARM_TAG_PROP_NUM_EXCEL_MAX 24
//条件查询记录时的查询项ID
#define REC_QUERY_ITEM_MIN 0
#define REC_QUERY_ITEM_QUALITY 0 //质量
#define REC_QUERY_ITEM_VALUE 1 //值
#define REC_QUERY_ITEM_MAX 1
typedef struct _QueryRecItem
{
uint8 nItemID;
uint8 nRelation;
uint8 nItemValueLen;
char* pItemValue;
}QueryRecItem;
#define RELATION_MIN 0
#define RELATION_EQUAL 0
#define RELATION_NON_EQUAL 1
#define RELATION_GREAT 2
#define RELATION_LESS 3
#define RELATION_GREAT_AND_EQUAL 4
#define RELATION_LESS_AND_EQUAL 5
#define RELATION_LIKE 6
#define RELATION_MAX 6
/** 时间从1970年1月0日00:00:01到2038年1月19日3:14:06 */
typedef struct _HDTimeStamp{
int32 month; /**< 1-12 */
int32 year; /**< four digit */
int32 day; /**< 1-31 */
int32 hour; /**< 0-23 */
int32 minute; /**< 0-59 */
int32 second; /**< 0-59*/
int32 mSecond; /**< 0-999*/
int32 timezone; /**< -12~12*/
}HDTimeStamp;
typedef struct
{
int32 nSec;
int16 nMsec;
}HDTime;
typedef struct _HDTimeRegion
{
HDTime left; //左区间
HDTime right; //右区间
bool bLeftClosed; //左区间开或是闭
bool bRightClosed; //右区间开或是闭
}HDTimeRegion;
#define API_CLIENT_MAX_SOCKET_NUM 100
typedef struct _HDClientConnInfo
{
uint32 nClientIp;
char szMac[32];
int32 nSocketNum;
SOCKET nSocket[API_CLIENT_MAX_SOCKET_NUM];
}HDClientConnInfo;
typedef struct _HDSocketNetInfo
{
SOCKET nSocket;
int32 nConnectTime;
int32 nPackageRecvNum;
int32 nPackageRecvTime;
char szUserName[HD_LEN_USER_NAME*2];
}HDSocketNetInfo;
#define HD_LEN_HD_VERSION 128
// 节点配置信息
typedef struct _HDServerCfg{
int32 nPort; //网络端口号
int32 nArchFileSizeMB; //单个归档文件的大小
int32 nArchFileNum; //归档文件个数
int32 nSeqFileSizeMB; //单个序列缓存文件的大小
int32 nSeqCacheFlushPeriodSec; // 序列缓存刷新频率
bool bAutoDisconn; //是否自动断开无数据交互的连接
int32 nAutoDisconnPeriodSec; //自动无数据交互连接的超时时间
bool bSysInfoCollect; //是否采集系统信息
int32 nSysInfoCollectPeriodSec; //系统信息采集间隔
bool bDiscardFutureData; //是否丢弃超过服务器时间戳的未来数据
int32 nDiscardFutureDataTimeDelterSec; //超过服务器时间戳的时间偏差
int64 nMachineTimeMs; //服务端的相对时间(毫秒)
int32 nEnableExportBigData;
int32 nEnableRyBigData;
char szHDVersion[HD_LEN_HD_VERSION];
}HDServerCfg;
// rest配置信息
//paramBody.put("name", dsName);
// paramBody.put("hostip", hostip);
// paramBody.put("port", port);
// paramBody.put("user", user);
// paramBody.put("password", pwd);
// paramBody.put("hostname", "/");
// paramBody.put("exchange", "v6-direct-exchange");
// paramBody.put("routingrtalms", "CR_AL_00");
// paramBody.put("routingclearalm", "CR_AL_01");
// paramBody.put("routingrtrec", "CR_RT_00");
// paramBody.put("routingcrs", "CR_RS_00");
// */
#define HD_LEN_REST_CONFIG_COMMON 64
typedef struct _HDRestCfg{
char szDsName[HD_LEN_REST_CONFIG_COMMON];
char szHostIP[HD_LEN_REST_CONFIG_COMMON];
char szPort[HD_LEN_REST_CONFIG_COMMON];
char szPassword[HD_LEN_REST_CONFIG_COMMON];
char szMaxTotal[HD_LEN_REST_CONFIG_COMMON];
char szMaxWait[HD_LEN_REST_CONFIG_COMMON];
char szMasterName[HD_LEN_REST_CONFIG_COMMON];
char szRoutingrtalms[HD_LEN_REST_CONFIG_COMMON];
char szRoutingclearalm[HD_LEN_REST_CONFIG_COMMON];
char szRoutingrtrec[HD_LEN_REST_CONFIG_COMMON];
char szRoutingcrs[HD_LEN_REST_CONFIG_COMMON];
char szUser[HD_LEN_REST_CONFIG_COMMON];
char szHostName[HD_LEN_REST_CONFIG_COMMON];
char szExChange[HD_LEN_REST_CONFIG_COMMON];
char szExtend1[HD_LEN_REST_CONFIG_COMMON];
char szExtend2[HD_LEN_REST_CONFIG_COMMON];
char szExtend3[HD_LEN_REST_CONFIG_COMMON];
char szExtend4[HD_LEN_REST_CONFIG_COMMON];
}HDRestCfg;
/** iHyperDB 注册信息ID+域 */
typedef struct _HDRegInfo
{
uint32 nTagID; /**< TAG点ID*/
uint32 nFieldID; /**< 域ID*/
} HDRegInfo;
typedef struct
{
int32 nSec;
int16 nMsec;
uint16 nQuality;
uint8 nTagType;
struct
{
int8 nInt8;
int16 nInt16;
int32 nInt32;
float32 fFloat32;
float64 fFloat64;
int8 nDigital;
struct
{
char* pBuf;
uint16 nLenBuf;
}strBlob;
}value;
}HDRecord;
// Driver types
#define DRIVER_TYPE_OPC 1
#define DRIVER_TYPE_TCPMODBUS 2
//统计类型
#define HD_STATS_TYPE_MAX 0 //最大值
#define HD_STATS_TYPE_MIN 1 //最小值
#define HD_STATS_TYPE_SUM 2 //求和
#define HD_STATS_TYPE_LAST 3 //最新值
#define HD_STATS_TYPE_PCT_GOOD 4 //可信度
#define HD_STATS_TYPE_ARITH_MEAN 5 //算术平均值
#define HD_STATS_TYPE_TIME_WEIGHTED_MEAN 6 //时间加权平均值
#define HD_STATS_TYPE_INTEGRAL 7 //积分
#define HD_STATS_TYPE_COUNT_CHG_VALUE 8 //值变化
#define HD_STATS_TYPE_COUNT_CHG_FROM_LESS_TO_GREAT 9 //区间变化,从<=到>=
#define HD_STATS_TYPE_COUNT_CHG_FROM_GREAT_TO_LESS 10 //区间变化,从>=到<=
#define HD_STATS_TYPE_DIFF 11 //差值统计
#define HD_STATS_TYPE_COUNT_IN_RANGE 12 //值在区间
#define HD_STATS_TYPE_COUNT_NOT_IN_RANGE 13 //值不在区间
#define HD_STATS_TYPE_RANGE 14 //极差
#define HD_STATS_TYPE_STANDARD_DEVIATION 15 //标准差
#define HD_STATS_TYPE_TIME_GT 16 //大于某个值的时间
#define HD_STATS_TYPE_TIME_GE 17 //大于等于某个值的时间
#define HD_STATS_TYPE_TIME_EQ 18 //等于某个值的时间
#define HD_STATS_TYPE_TIME_NE 19 //不等于某个值的时间
#define HD_STATS_TYPE_TIME_LT 20 //小于某个值的时间
#define HD_STATS_TYPE_TIME_LE 21 //小于等于某个值的时间
#define HD_STATS_TYPE_TIME_IN_RANGE 22 //在某个值区间的时间
#define HD_STATS_TYPE_TIME_NOT_IN_RANGE 23 //不在某个值区间的时间
#define HD_STATS_TYPE_LIMIT_MAX 23 //统计类型值的最大值, 做校验用
//统计点采样模式
#define HD_STATS_SAMPLE_MODE_INTERVAL 0 //统计等间隔采样
#define HD_STATS_SAMPLE_MODE_EVERY_DAY 1 //统计每天同时段采样
#define HD_STATS_SAMPLE_MODE_EVERY_MONTH 2 //统计每月同时段采样
#define HD_STATS_SAMPLE_MODE_TIME_MOVING 3 //时间移动采样
#define HD_STATS_SAMPLE_MODE_FOREVER 4 //时间移动采样
#define HD_STATS_SAMPLE_MODE_MAX 5
//统计转换类型
#define HD_STATS_CONVERSION_TYPE_AMPLIFICATION 0 //统计值放大
#define HD_STATS_CONVERSION_TYPE_MINIFICATION 1 //统计值缩小
#define HD_STATS_CONVERSION_TYPE_MAX 1//最大值,做校验
//统计点采样类型
#define HD_STATS_SAMPLE_TYPE_RAW 0 //采样点都是原始值
#define HD_STATS_SAMPLE_TYPE_LINER_INTERP 1 //采样点都是线性插值
#define HD_STATS_SAMPLE_TYPE_PREV_INTERP 2 //采样点都是前向插值
#define HD_STATS_SAMPLE_TYPE_MAX 2 //最大采样类型值
//统计点弃坏点模式
#define HD_STATS_DROP_BAD_MODE_REC 0 //弃坏点模式——弃bad记录
#define HD_STATS_DROP_BAD_MODE_AREA 1 //弃坏点模式——弃bad记录相邻的区域
#define HD_STATS_DROP_BAD_MODE_MAX 1
// 求均值模式
#define HD_STATS_TIMED_WEIGHT_MODE 1 //以时间为权值
#define HD_STATS_RECORD_WEIGHT_MODE 2 // 无权值
// count计算模式值变化模式和区间变化模式
#define HD_STATS_COUNT_MODE_CHANGE_VALUE 1
#define HD_STATS_COUNT_MODE_GREATER_CHANGE_TO_LESS 2
#define HD_STATS_COUNT_MODE_LESS_CHANGE_TO_GREATER 3
#define HD_STATS_COUNT_MODE_IN_RANGE 4
#define HD_STATS_COUNT_MODE_NOT_IN_RANGE 5
// 过滤表达式计算失败是否需过滤
#define HD_STATS_FILTER_FAIL_MODE_FIL 0
#define HD_STATS_FILTER_FAIL_MODE_NO_FIL 1
#define HD_STATS_FILTER_FAIL_MODE_LIMIT_MAX 1
/*计算点模式*/
#define HD_CALC_MODE_POLL 0 //计算模式——轮询
#define HD_CALC_MODE_NOTIFY 1 //计算模式——通知
#define HD_CALC_MODE_MAX 1 //计算模式的最大值,用来校验
//tag分组下载
#define RES_TAG_NAME_SERVER_IP "服务器IP"
#define RES_TAG_NAME_SERVER_PORT "端口号"
#define RES_TAG_NAME_TAGID "TagID"
#define RES_TAG_NAME_TAGNAME "Tag名称"
#define RES_TAG_NAME_TAGTYPE "Tag类别"
#define RES_TAG_NAME_TAG_DISC "Tag描述"
#define RES_TAG_NAME_NODENAME "节点名称"
#define RES_TAG_NAME_NODEID "节点ID"
#define RES_TAG_NAME_GROUPPATH "分组路径"
//采集器类型
enum
{
COLLECTOR_TYPE_INVALID = -1,
COLLECTOR_TYPE_OPC,
COLLECTOR_TYPE_MODBUS,
COLLECTOR_TYPE_RDB,
COLLECTOR_TYPE_IHD,
COLLECTOR_TYPE_MAX
};
//记录的插值查询模式
#define HD_REC_INTERP_QUERY_MODE_LINEAR 0 //线性插值
#define HD_REC_INTERP_QUERY_MODE_PREV 1 //前向插值
#define HD_REC_INTERP_QUERY_MODE_MAX 1 //最大值,用来校验
// 数据量状态集
#define HD_DIGITAL_SET_MAX_STATE_NUM 256
#define HD_DIGITAL_SET_MAX_STATE_VAL 127
#define HD_DIGITAL_SET_MIN_STATE_VAL -128
// 采集器状态点类型
#define HD_CT_STATUS_TAG_TYPE_COLLECTOR 1
#define HD_CT_STATUS_TAG_TYPE_DEVICE 2
//SPC报警控制图类型对应于SPCBasicDef.h中的枚举类型 SPCChartType
#define HD_SPC_CTRL_CHART_TYPE_MIN 13 //控制图类型的最小值,用来做参数校验
#define HD_SPC_CTRL_CHART_TYPE_XBAR 13 //XBar类型
#define HD_SPC_CTRL_CHART_TYPE_R 14 //R图
#define HD_SPC_CTRL_CHART_TYPE_S 15 //S图
#define HD_SPC_CTRL_CHART_TYPE_MAX 15 //控制图类型的最大值,用来做参数校验
//SPC报警触发模式
#define HD_SPC_TRIGGLE_MODE_TRIGGLE 0
#define HD_SPC_TRIGGLE_MODE_MAX 0
//SPC报警记录属性掩码
#define SPC_ALARM_REC_PROP_SPC_TAG_ID 1
#define SPC_ALARM_REC_PROP_START_TIME ((int64)1 << 1)
#define SPC_ALARM_REC_PROP_END_TIME ((int64)1 << 2)
#define SPC_ALARM_REC_PROP_ACK_TIME ((int64)1 << 3)
#define SPC_ALARM_REC_PROP_COMMENT_TIME ((int64)1 << 4)
#define SPC_ALARM_REC_PROP_ACKED ((int64)1 << 5)
#define SPC_ALARM_REC_PROP_ACK_TYPE ((int64)1 << 6)
#define SPC_ALARM_REC_PROP_RESTORED ((int64)1 << 7)
#define SPC_ALARM_REC_PROP_COMMENTED ((int64)1 << 8)
#define SPC_ALARM_REC_PROP_ALARM_VALUE ((int64)1 << 9)
#define SPC_ALARM_REC_PROP_RULE ((int64)1 << 10)
#define SPC_ALARM_REC_PROP_SRC_VALUE ((int64)1 << 11)
#define SPC_ALARM_REC_PROP_COMMENT ((int64)1 << 12)
#define SPC_ALARM_REC_PROP_ACKER ((int64)1 << 13)
#define SPC_ALARM_REC_PROP_COMMENTOR ((int64)1 << 14)
#define SPC_ALARM_REC_PROP_ALL 0xFFFF
//SPC报警规则MN值的最大值和最小值
#define SPC_ALARM_RULE_M_N_VALUE_MIN 1
#define SPC_ALARM_RULE_M_N_VALUE_MAX 99
//SPC报警值掩码
#define SPC_ALARM_VALUE_MASK_RULE1 1
#define SPC_ALARM_VALUE_MASK_RULE2 ((int8)1 << 1)
#define SPC_ALARM_VALUE_MASK_RULE3 ((int8)1 << 2)
#define SPC_ALARM_VALUE_MASK_RULE4 ((int8)1 << 3)
#define SPC_ALARM_VALUE_MASK_RULE5 ((int8)1 << 4)
#define SPC_ALARM_VALUE_MASK_RULE6 ((int8)1 << 5)
#define SPC_ALARM_VALUE_MASK_RULE7 ((int8)1 << 6)
#define SPC_ALARM_VALUE_MASK_RULE8 ((int8)1 << 7)
// 系统点前缀
#define HD_SYS_TAG_PREFIX "hdsys"
//OPC发布状态
#define HD_TAG_OPC_STATE_UNRELEASE 0
#define HD_TAG_OPC_STATE_RELEASE 1
#define LICENSE_OEM_VCODE_MAXLEN 4
// API版本
#define HD_API_VER_0 0
#define HD_API_VER_1 1
//授权项的权限类型
#define HD_SEC_AUTH_READ_DISABLE 0
#define HD_SEC_AUTH_READ_ENABLE 1
#define HD_SEC_AUTH_MAX 1//用来校验
#define HD_INS_POINT_TYPE_BASE 1
//modbus data point type
#define HD_INS_POINT_TYPE_INT8 (HD_INS_POINT_TYPE_BASE + 0)
#define HD_INS_POINT_TYPE_UINT8 (HD_INS_POINT_TYPE_BASE + 1)
#define HD_INS_POINT_TYPE_INT16 (HD_INS_POINT_TYPE_BASE + 2)
#define HD_INS_POINT_TYPE_UINT16 (HD_INS_POINT_TYPE_BASE + 3)
#define HD_INS_POINT_TYPE_INT32 (HD_INS_POINT_TYPE_BASE + 4)
#define HD_INS_POINT_TYPE_UINT32 (HD_INS_POINT_TYPE_BASE + 5)
#define HD_INS_POINT_TYPE_FLOAT (HD_INS_POINT_TYPE_BASE + 6)
#define HD_INS_POINT_TYPE_DOUBLE (HD_INS_POINT_TYPE_BASE + 7)
#define HD_INS_POINT_TYPE_STRING (HD_INS_POINT_TYPE_BASE + 8)
#define HD_INS_POINT_TYPE_BLOB (HD_INS_POINT_TYPE_BASE + 9)
#define HD_INS_POINT_TYPE_DIGITAL (HD_INS_POINT_TYPE_BASE + 10)
#define HD_INS_POINT_TYPE_MAX (HD_INS_POINT_TYPE_BASE + 11)
#define HD_MODBUS_DATA_ORDER_BASE 1
#define HD_MODBUS_DATA_NO_ORDER (HD_MODBUS_DATA_ORDER_BASE - 1)
#define HD_MODBUS_DATA_ORDER_12 (HD_MODBUS_DATA_ORDER_BASE + 0)
#define HD_MODBUS_DATA_ORDER_21 (HD_MODBUS_DATA_ORDER_BASE + 1)
#define HD_MODBUS_DATA_ORDER_1234 (HD_MODBUS_DATA_ORDER_BASE + 2)
#define HD_MODBUS_DATA_ORDER_2143 (HD_MODBUS_DATA_ORDER_BASE + 3)
#define HD_MODBUS_DATA_ORDER_3412 (HD_MODBUS_DATA_ORDER_BASE + 4)
#define HD_MODBUS_DATA_ORDER_4321 (HD_MODBUS_DATA_ORDER_BASE + 5)
#define HD_MODBUS_DATA_ORDER_12345678 (HD_MODBUS_DATA_ORDER_BASE + 6)
#define HD_MODBUS_DATA_ORDER_21436587 (HD_MODBUS_DATA_ORDER_BASE + 7)
#define HD_MODBUS_DATA_ORDER_34127856 (HD_MODBUS_DATA_ORDER_BASE + 8)
#define HD_MODBUS_DATA_ORDER_43218765 (HD_MODBUS_DATA_ORDER_BASE + 9)
#define HD_MODBUS_DATA_ORDER_56781234 (HD_MODBUS_DATA_ORDER_BASE + 10)
#define HD_MODBUS_DATA_ORDER_65872143 (HD_MODBUS_DATA_ORDER_BASE + 11)
#define HD_MODBUS_DATA_ORDER_78563412 (HD_MODBUS_DATA_ORDER_BASE + 12)
#define HD_MODBUS_DATA_ORDER_87654321 (HD_MODBUS_DATA_ORDER_BASE + 13)
#define HD_MODBUS_CONNECT_TYPE_TCP 0
#define HD_MODBUS_CONNECT_TYPE_RTU 1
#define HD_MODBUS_CONNECT_TYPE_SERIAL 2
#define HD_MODBUS_SERIAL_CHECKPARITY_NONE 0 //不校验
#define HD_MODBUS_SERIAL_CHECKPARITY_ODD 1 //奇校验
#define HD_MODBUS_SERIAL_CHECKPARITY_EVEN 2 //偶校验
//REST注册点的域值 VTQ
#define HD_REST_REG_TAG_FIELD_VALUE 0
#define HD_REST_REG_TAG_FIELD_TIMESTAMP 1
#define HD_REST_REG_TAG_FIELD_QUALITY 2
#endif //#ifndef RD_CONST_H_FILE