优化日志,而且台账修改时无论什么状态都先关闭连接
This commit is contained in:
338
include/ied.h
338
include/ied.h
@@ -1,6 +1,6 @@
|
||||
/**
|
||||
* @file: $RCSfile: ied.h,v $
|
||||
* @brief: $<EFBFBD>豸<EFBFBD><EFBFBD><EFBFBD>ݽṹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
* @brief: $设备数据结构定义
|
||||
*
|
||||
* @version: $Revision: 1.1 $
|
||||
* @date: $Date: 2018/11/24 06:54:49 $
|
||||
@@ -24,35 +24,35 @@ typedef byte_t channel_size_type;
|
||||
#endif
|
||||
|
||||
|
||||
#define PRV_ANA_EXTENSION (1) //ģ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD><EFBFBD><EFBFBD>չ<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
#define PRV_DIGIT_EXTENSION (3) //ң<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD><EFBFBD><EFBFBD>չ<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
#define PRV_EVENT_EXTENSION (3) //<EFBFBD>¼<EFBFBD><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD><EFBFBD><EFBFBD>չ<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
#define PRV_PULSE_EXTENSION (2) //ң<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD><EFBFBD><EFBFBD>չ<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
//-----ģ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD><EFBFBD><EFBFBD>չ---------------//
|
||||
#define ANA_EXTENSION_ALARM (0) //<EFBFBD>澯:<3A>澯<EFBFBD>ȼ<EFBFBD>;<3B>澯<EFBFBD><E6BEAF><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD>
|
||||
#define PRV_ANA_EXTENSION (1) //模拟量用户扩展属性 总数
|
||||
#define PRV_DIGIT_EXTENSION (3) //遥信量用户扩展属性 总数
|
||||
#define PRV_EVENT_EXTENSION (3) //事件量用户扩展属性 总数
|
||||
#define PRV_PULSE_EXTENSION (2) //遥测量用户扩展属性 总数
|
||||
//-----模拟量用户扩展---------------//
|
||||
#define ANA_EXTENSION_ALARM (0) //告警:告警等级;告警声音文件名
|
||||
|
||||
|
||||
|
||||
typedef struct analog_t analog_t;
|
||||
struct analog_t {
|
||||
byte_t type; /**< <EFBFBD><EFBFBD>ѹ/<2F><><EFBFBD><EFBFBD>/<2F>й<EFBFBD><D0B9><EFBFBD><EFBFBD><EFBFBD>/<2F><EFBFBD><DEB9><EFBFBD><EFBFBD><EFBFBD>/Ƶ<><C6B5>/<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>/<2F><><EFBFBD><EFBFBD> */
|
||||
float initval; /**< ȱʡֵ */
|
||||
float minimum; /**< ȡֵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
float maximum; /**< ȡֵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
float step; /**< <EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
byte_t type; /**< 电压/电流/有功功率/无功功率/频率/功率因素/其它 */
|
||||
float initval; /**< 缺省值 */
|
||||
float minimum; /**< 取值下限 */
|
||||
float maximum; /**< 取值上限 */
|
||||
float step; /**< 步长 */
|
||||
byte_t integral; /**< precision ( n , m ) - n */
|
||||
byte_t decimal; /**< precision ( n , m ) - m */
|
||||
float offset; /**< ʵ<EFBFBD><EFBFBD>ֵת<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
float factor; /**< ʵ<EFBFBD><EFBFBD>ֵת<EFBFBD><EFBFBD>ϵ<EFBFBD><EFBFBD> */
|
||||
float threshold; /**< <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ */
|
||||
float smooth; /**< ƽ<EFBFBD><EFBFBD>ϵ<EFBFBD><EFBFBD> */
|
||||
float lower; /**< <EFBFBD>澯<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ */
|
||||
float higher; /**< <EFBFBD>澯<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ */
|
||||
float lowest; /**< <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>澯ֵ */
|
||||
float highest; /**< <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>澯ֵ */
|
||||
float blur; /**< <EFBFBD><EFBFBD>ֵģ<EFBFBD><EFBFBD>ϵ<EFBFBD><EFBFBD> */
|
||||
char dimension[SHORTNAME]; /**< <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ASCII<EFBFBD><EFBFBD>ʽ(A/V/kV/kvar/kW/MW etc.) */
|
||||
void *ext[PRV_ANA_EXTENSION]; /**< <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>չ */
|
||||
float offset; /**< 实际值转换基数 */
|
||||
float factor; /**< 实际值转换系数 */
|
||||
float threshold; /**< 门限值 */
|
||||
float smooth; /**< 平滑系数 */
|
||||
float lower; /**< 告警下限值 */
|
||||
float higher; /**< 告警上限值 */
|
||||
float lowest; /**< 下下限告警值 */
|
||||
float highest; /**< 上上限告警值 */
|
||||
float blur; /**< 阀值模糊系数 */
|
||||
char dimension[SHORTNAME]; /**< 量纲ASCII格式(A/V/kV/kvar/kW/MW etc.) */
|
||||
void *ext[PRV_ANA_EXTENSION]; /**< 保护管理机扩展 */
|
||||
}ALIGNPACKED;
|
||||
|
||||
|
||||
@@ -66,27 +66,27 @@ struct ana_extention_t{
|
||||
};
|
||||
|
||||
typedef struct digit_t digit_t;
|
||||
#define DGT_TYP_UNDEF 0x00 /**< δ<EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
#define DGT_TYP_SAMPLING 0x01 /**< <EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
#define DGT_TYP_EVENT 0x02 /**< <EFBFBD>¼<EFBFBD> */
|
||||
#define DGT_TYP_ALARM 0x03 /**< <EFBFBD>澯 */
|
||||
#define DGT_TYP_OPERATE 0x04 /**< <EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
#define DGT_TYP_SYSTEM 0x05 /**< ϵͳ */
|
||||
/** <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˽<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
#define DGT_TYP_UNDEF 0x00 /**< 未定义 */
|
||||
#define DGT_TYP_SAMPLING 0x01 /**< 采样 */
|
||||
#define DGT_TYP_EVENT 0x02 /**< 事件 */
|
||||
#define DGT_TYP_ALARM 0x03 /**< 告警 */
|
||||
#define DGT_TYP_OPERATE 0x04 /**< 操作 */
|
||||
#define DGT_TYP_SYSTEM 0x05 /**< 系统 */
|
||||
/** 数字量私有属性 */
|
||||
struct digit_t {
|
||||
byte_t type; /**< <EFBFBD><EFBFBD><EFBFBD><EFBFBD>/<2F>¼<EFBFBD>/<2F>澯/<2F><><EFBFBD><EFBFBD>/ϵͳ */
|
||||
byte_t type; /**< 采样/事件/告警/操作/系统 */
|
||||
byte_t initval; /**< default zero value(0 or 1) */
|
||||
byte_t level; /**< level */
|
||||
byte_t snd_timer; /**< sound play timer (s) */
|
||||
byte_t rst_timer; /**< auto restore timer (s) */
|
||||
uint16_t act_lim; /**< (0 ==> 1)<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>澯<EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
uint16_t rst_lim; /**< (1 ==> 0)<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>澯<EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
uint16_t act_num; /**< (0 ==> 1)<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>¼<EFBFBD><C2BC>) */
|
||||
uint16_t rst_num; /**< (1 ==> 0)<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>¼<EFBFBD><C2BC>) */
|
||||
//<EFBFBD>ڶ<EFBFBD><EFBFBD><EFBFBD>ȥ<EFBFBD><EFBFBD>
|
||||
//char on[SHORTNAME]; /**< 0==>1<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(ASCII<EFBFBD><EFBFBD>ʽ) */
|
||||
//char off[SHORTNAME]; /**< 1==>0<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(ASCII<EFBFBD><EFBFBD>ʽ) */
|
||||
void *ext[PRV_DIGIT_EXTENSION]; /**< <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>չ */
|
||||
uint16_t act_lim; /**< (0 ==> 1)动作告警上限 */
|
||||
uint16_t rst_lim; /**< (1 ==> 0)动作告警上限 */
|
||||
uint16_t act_num; /**< (0 ==> 1)动作上限(不需界面录入) */
|
||||
uint16_t rst_num; /**< (1 ==> 0)动作上限(不需界面录入) */
|
||||
//第二版去掉
|
||||
//char on[SHORTNAME]; /**< 0==>1动作名称(ASCII格式) */
|
||||
//char off[SHORTNAME]; /**< 1==>0动作名称(ASCII格式) */
|
||||
void *ext[PRV_DIGIT_EXTENSION]; /**< 保护管理机扩展 */
|
||||
}ALIGNPACKED;
|
||||
|
||||
|
||||
@@ -102,12 +102,12 @@ struct digit_t {
|
||||
|
||||
typedef struct state_describe_extention_t state_describe_extention_t;
|
||||
struct state_describe_extention_t{
|
||||
char *state_describe[4]; /**< ״̬0<EFBFBD><EFBFBD>1<EFBFBD><EFBFBD>2<EFBFBD><EFBFBD>3<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
char *state_describe[4]; /**< 状态0,1,2,3的描述 */
|
||||
};
|
||||
typedef struct sound_file_name_extention_t sound_file_name_extention_t;
|
||||
|
||||
struct sound_file_name_extention_t{
|
||||
char *sound_file_name[3]; /**< <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>¹ʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
char *sound_file_name[3]; /**< 开报警声、合报警声、事故报警声 */
|
||||
};
|
||||
|
||||
typedef struct epfi_addt_extension_t epfi_addt_extension_t;
|
||||
@@ -120,48 +120,48 @@ struct epfi_addt_extension_t {
|
||||
|
||||
typedef struct pulse_t pulse_t;
|
||||
/** Integrated totals private attr */
|
||||
#define PLS_TYP_UNDEF 0x00 /**< δ<EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
#define PLS_TYP_PLUS_POWER_HV 0x01 /**< <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>й<EFBFBD> */
|
||||
#define PLS_TYP_PLUS_POWER_NO 0x02 /**< <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
#define PLS_TYP_NEGATIVE_POWER_HV 0x03 /**< <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>й<EFBFBD> */
|
||||
#define PLS_TYP_NEGATIVE_POWER_NO 0x04 /**< <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
#define PLS_TYP_UNDEF 0x00 /**< 未定义 */
|
||||
#define PLS_TYP_PLUS_POWER_HV 0x01 /**< 正向有功 */
|
||||
#define PLS_TYP_PLUS_POWER_NO 0x02 /**< 正向无功 */
|
||||
#define PLS_TYP_NEGATIVE_POWER_HV 0x03 /**< 反向有功 */
|
||||
#define PLS_TYP_NEGATIVE_POWER_NO 0x04 /**< 反向无功 */
|
||||
struct pulse_t {
|
||||
byte_t type; /**< <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>й<EFBFBD>/<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>/<2F><><EFBFBD><EFBFBD><EFBFBD>й<EFBFBD>/<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
uint32_t save_flag; /**< <EFBFBD>洢<EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
byte_t type; /**< 正向有功/正向无功/反向有功/反向无功 */
|
||||
uint32_t save_flag; /**< 存储标记 */
|
||||
uint32_t initval; /**< default value */
|
||||
uint32_t minimum; /**< minimum value */
|
||||
uint32_t maximum; /**< maximum value */
|
||||
uint32_t step; /**< <EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
//changed by zhancg 2017-04-05 <EFBFBD><EFBFBD>ϵ<EFBFBD><EFBFBD>
|
||||
// uint32_t offset; /**< ʵ<EFBFBD><EFBFBD>ֵת<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
// uint32_t factor; /**< ʵ<EFBFBD><EFBFBD>ֵת<EFBFBD><EFBFBD>ϵ<EFBFBD><EFBFBD> */
|
||||
// uint32_t threshold; /**< <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ */
|
||||
// uint32_t smooth; /**< ƽ<EFBFBD><EFBFBD>ϵ<EFBFBD><EFBFBD> */
|
||||
float offset; /**< ʵ<EFBFBD><EFBFBD>ֵת<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
float factor; /**< ʵ<EFBFBD><EFBFBD>ֵת<EFBFBD><EFBFBD>ϵ<EFBFBD><EFBFBD> */
|
||||
float threshold; /**< <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ */
|
||||
float smooth; /**< ƽ<EFBFBD><EFBFBD>ϵ<EFBFBD><EFBFBD> */
|
||||
char dimension[SHORTNAME]; /**< <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ASCII<EFBFBD><EFBFBD>ʽ(kvar/kW/MW etc.) */
|
||||
uint32_t step; /**< 步长 */
|
||||
//changed by zhancg 2017-04-05 配系数
|
||||
// uint32_t offset; /**< 实际值转换基数 */
|
||||
// uint32_t factor; /**< 实际值转换系数 */
|
||||
// uint32_t threshold; /**< 门限值 */
|
||||
// uint32_t smooth; /**< 平滑系数 */
|
||||
float offset; /**< 实际值转换基数 */
|
||||
float factor; /**< 实际值转换系数 */
|
||||
float threshold; /**< 门限值 */
|
||||
float smooth; /**< 平滑系数 */
|
||||
char dimension[SHORTNAME]; /**< 量纲ASCII格式(kvar/kW/MW etc.) */
|
||||
void *ext[PRV_PULSE_EXTENSION];
|
||||
}ALIGNPACKED;
|
||||
typedef struct pluse_stage_limits_extention_t pluse_stage_limits_extention_t;
|
||||
struct pluse_stage_limits_extention_t{
|
||||
uint32_t limits[3]; /**< <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ,<2C>յ<EFBFBD><D5B5><EFBFBD><EFBFBD><EFBFBD>ֵ,<2C>µ<EFBFBD><C2B5><EFBFBD><EFBFBD><EFBFBD>ֵ */
|
||||
uint32_t limits[3]; /**< 峰电度限值,日电度限值,月电度限值 */
|
||||
};
|
||||
typedef struct pluse_stage_const_extention_t pluse_stage_const_extention_t;
|
||||
struct pluse_stage_const_extention_t{
|
||||
char* stage[8]; /**< <EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD>1,<2C><>ʱ<EFBFBD><CAB1>2,<2C><>ʱ<EFBFBD><CAB1>3,<2C><>ʱ<EFBFBD><CAB1>4,<2C><>ʱ<EFBFBD><CAB1>1,<2C><>ʱ<EFBFBD><CAB1>2,<2C><>ʱ<EFBFBD><CAB1>3,<2C><>ʱ<EFBFBD><CAB1>4 */
|
||||
char* stage[8]; /**< 峰时段1,峰时段2,峰时段3,峰时段4,谷时段1,谷时段2,谷时段3,谷时段4 */
|
||||
};
|
||||
|
||||
//
|
||||
typedef struct command_t command_t;
|
||||
/** <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD>ṹ */
|
||||
/** 命令消息结构 */
|
||||
struct command_t {
|
||||
ticks_t ticks; /**< Ticks when command generated */
|
||||
apr_time_t tmlimit; /**< <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ִ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD> */
|
||||
byte_t state; /**< ACTIVE<EFBFBD><EFBFBD>FINISH or TIMEOUT */
|
||||
apr_time_t tmlimit; /**< 命令执行完成的限制时间 */
|
||||
byte_t state; /**< ACTIVE、FINISH or TIMEOUT */
|
||||
byte_t channel; /**< command channel no */
|
||||
byte_t flag; /**< General<EFBFBD><EFBFBD>System or Special */
|
||||
byte_t flag; /**< General、System or Special */
|
||||
byte_t typ; /**< Command TYPE(IEC60870-5-101) */
|
||||
uint32_t ied; /**< Controlled IED id */
|
||||
uint32_t group; /**< Controlled group id */
|
||||
@@ -173,65 +173,65 @@ struct command_t {
|
||||
|
||||
|
||||
/** status_t code definiens */
|
||||
#define STATUS_NORMAL 0 /**< <EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
#define STATUS_NOINIT 1 /**< δ<EFBFBD><EFBFBD>ʼ<EFBFBD><EFBFBD> */
|
||||
#define STATUS_OVERTIME 2 /**< ͨ<EFBFBD>ų<EFBFBD>ʱ */
|
||||
#define STATUS_BREAKOFF 3 /**< ͨ<EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD> */
|
||||
#define STATUS_BLOCKED 4 /**< <EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
#define STATUS_TESTING 5 /**< <EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
#define STATUS_NOTDEF 6 /**< δ<EFBFBD><EFBFBD><EFBFBD>ã<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬û<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>) */
|
||||
#define STATUS_NORMAL 0 /**< 正常 */
|
||||
#define STATUS_NOINIT 1 /**< 未初始化 */
|
||||
#define STATUS_OVERTIME 2 /**< 通信超时 */
|
||||
#define STATUS_BREAKOFF 3 /**< 通信中断 */
|
||||
#define STATUS_BLOCKED 4 /**< 封锁 */
|
||||
#define STATUS_TESTING 5 /**< 测试 */
|
||||
#define STATUS_NOTDEF 6 /**< 未配置(本运行状态没有配置) */
|
||||
|
||||
typedef uint16_t status_t; /**< <EFBFBD>豸<EFBFBD><EFBFBD>ͨ<EFBFBD>Žڵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬ */
|
||||
typedef uint16_t status_t; /**< 设备或通信节点的运行状态 */
|
||||
|
||||
typedef struct alias_t alias_t;
|
||||
/** <EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ԫ<EFBFBD>صı<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ṹ */
|
||||
struct alias_t { /**< <EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ԫ<EFBFBD>صı<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ṹ */
|
||||
uint32_t id; /**< <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><EFBFBD>ַ */
|
||||
uint32_t parent; /**< <EFBFBD><EFBFBD>ָ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>IED */
|
||||
uint32_t group; /**< <EFBFBD><EFBFBD>ָ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>IED<EFBFBD>ڵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
uint32_t dot; /**< <EFBFBD><EFBFBD>ָ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>IED<EFBFBD>ڵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
value_t* value; /**< <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD>ʵʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
/** 数据元素的别名结构 */
|
||||
struct alias_t { /**< 数据元素的别名结构 */
|
||||
uint32_t id; /**< 别名信息地址 */
|
||||
uint32_t parent; /**< 所指代的IED */
|
||||
uint32_t group; /**< 所指代的IED内的组号 */
|
||||
uint32_t dot; /**< 所指代的IED内的序号 */
|
||||
value_t* value; /**< 运行时刻实时数据 */
|
||||
};
|
||||
|
||||
typedef struct ied_t ied_t;
|
||||
typedef struct group_t group_t;
|
||||
typedef struct element_t element_t;
|
||||
|
||||
/** <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϢԪ<EFBFBD>صĽṹ */
|
||||
/** 数据信息元素的结构 */
|
||||
struct element_t {
|
||||
uint32_t id; /**< Identification, Information Address */
|
||||
uint32_t flags; /**< flags define */
|
||||
byte_t type; /**< IEC60870-5-101 TYP.(IEC60870DEF.h) */
|
||||
byte_t code; /**< Data code type.(BIN/ASCII/BCD/etc.) */
|
||||
uint32_t parent; /**< <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>豸 */
|
||||
uint32_t group; /**< <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
uint32_t dot; /**< <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
uint16_t size; /**< <EFBFBD><EFBFBD><EFBFBD>ݿ<EFBFBD><EFBFBD><EFBFBD>(<28><><EFBFBD>ֽ<EFBFBD>Ϊ<EFBFBD><CEAA>λ) */
|
||||
char name[LONGNAME]; /**< <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
uint32_t parent; /**< 隶属设备 */
|
||||
uint32_t group; /**< 数据组号 */
|
||||
uint32_t dot; /**< 数据序号 */
|
||||
uint16_t size; /**< 数据宽度(以字节为单位) */
|
||||
char name[LONGNAME]; /**< 数据名称 */
|
||||
|
||||
char *aliasname; /**< <EFBFBD><EFBFBD><EFBFBD>ݵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƶ<EFBFBD>Ӧ<EFBFBD><EFBFBD>Ӣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ++EPFI++ */
|
||||
char *aliasname; /**< 数据点别名,如用于中文名称对应的英文名称 ++EPFI++ */
|
||||
|
||||
void *owner; /**< ˽<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Խṹ(analog_t/digit_t/..../etc.) */
|
||||
void *script; /**< <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʽ */
|
||||
void *owner; /**< 私有属性结构(analog_t/digit_t/..../etc.) */
|
||||
void *script; /**< 关联的计算表达式 */
|
||||
|
||||
/** Runtime generate */
|
||||
value_t value; /**< <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD>ʵʱ<EFBFBD><EFBFBD><EFBFBD>ݻ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
ticks_t last; /**< <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>仯ʱ<EFBFBD><EFBFBD> */
|
||||
uint32_t state; /**< <EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬ */
|
||||
byte_t funtype; /**< <EFBFBD>̳<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͣ<EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><EFBFBD><EFBFBD>ݹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
uint16_t index; /**< <EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ԫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
uint16_t n_alias_add_1; /**< <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ĵ<EFBFBD>С<EFBFBD><EFBFBD>Ԥ<EFBFBD><EFBFBD>1<EFBFBD><EFBFBD><EFBFBD><EFBFBD>̬<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ã<EFBFBD> */
|
||||
uint16_t n_alias; /**< <EFBFBD><EFBFBD><EFBFBD>ݱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ԫ<EFBFBD>ظ<EFBFBD><EFBFBD><EFBFBD> */
|
||||
alias_t* alias; /**< <EFBFBD><EFBFBD><EFBFBD>ݱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
uint16_t alias_pos; /**< <EFBFBD><EFBFBD><EFBFBD>ݱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǰλ<EFBFBD><EFBFBD> */
|
||||
uint32_t offset; /**< <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>豸<EFBFBD><EFBFBD><EFBFBD>ݻ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڵ<EFBFBD>ƫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
group_t *grp; /**< <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
ied_t *ied; /**< <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>豸<EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
value_t value; /**< 运行时刻实时数据缓冲区 */
|
||||
ticks_t last; /**< 最后变化时间 */
|
||||
uint32_t state; /**< 数据状态 */
|
||||
byte_t funtype; /**< 继承自所属组的类型,表示数据功能类型 */
|
||||
uint16_t index; /**< 数据元素索引 */
|
||||
uint16_t n_alias_add_1; /**< 分配的数据别名缓冲区的大小(预留1,动态定订购用) */
|
||||
uint16_t n_alias; /**< 数据别名数组元素个数 */
|
||||
alias_t* alias; /**< 数据别名索引数组 */
|
||||
uint16_t alias_pos; /**< 数据别名当前位置 */
|
||||
uint32_t offset; /**< 数据在设备数据缓冲区内的偏移索引 */
|
||||
group_t *grp; /**< 所属数据组句柄 */
|
||||
ied_t *ied; /**< 所属设备句柄 */
|
||||
|
||||
/* Extend property */
|
||||
void *sys_ext; /**< <EFBFBD><EFBFBD><EFBFBD>ݵ<EFBFBD><EFBFBD><EFBFBD>ϵͳ<EFBFBD><EFBFBD>չ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<2C>ɻ<EFBFBD><C9BB><EFBFBD><EFBFBD><EFBFBD>ʵ<EFBFBD><CAB5> */
|
||||
void *app_ext; /**< <EFBFBD><EFBFBD><EFBFBD>ݵ<EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>չ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<2C><>Ӧ<EFBFBD>ÿ<EFBFBD>ʵ<EFBFBD><CAB5> */
|
||||
void *usr_ext; /**< <EFBFBD><EFBFBD><EFBFBD>ݵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD><EFBFBD><EFBFBD>չ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<2C><>Ӧ<EFBFBD>ó<EFBFBD><C3B3><EFBFBD>ʵ<EFBFBD><CAB5> */
|
||||
void *sys_ext; /**< 数据点的系统扩展属性,由基本库实现 */
|
||||
void *app_ext; /**< 数据点的应用扩展属性,由应用库实现 */
|
||||
void *usr_ext; /**< 数据点的用户扩展属性,由应用程序实现 */
|
||||
};
|
||||
|
||||
/** group_t->type definiens */
|
||||
@@ -245,36 +245,36 @@ struct element_t {
|
||||
#define GRP_ALARM 7 /**< Alarm type */
|
||||
#define GRP_SETTING 8 /**< Fixed value type */
|
||||
#define GRP_STATUS 9 /**< State of device */
|
||||
#define GRP_VDI 10 /**< <EFBFBD><EFBFBD>ѹ<EFBFBD><EFBFBD> type */
|
||||
#define GRP_VDI 10 /**< 软压板 type */
|
||||
#define GRP_STEPPOS 11 /**< Step position type */
|
||||
#define GRP_COMBO 12 /**< combo/compute type */
|
||||
#define GRP_SIMANA 13 /**< ģ<EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
#define GRP_SETAREA 14 /**< <EFBFBD><EFBFBD>ֵ<EFBFBD><EFBFBD> */
|
||||
#define GRP_ACCANA 15 /**< ¼<EFBFBD><EFBFBD>ģ<EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
#define GRP_ACCDGT 16 /**< ¼<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
#define GRP_SIMANA 13 /**< 模拟量 */
|
||||
#define GRP_SETAREA 14 /**< 定值区 */
|
||||
#define GRP_ACCANA 15 /**< 录波模拟量 */
|
||||
#define GRP_ACCDGT 16 /**< 录波开关量 */
|
||||
#define GRP_SETPOINT 18 /**< Set point type for 101,104 protocol used only */
|
||||
#define GRP_STEPCONTROL 19 /**< <EFBFBD><EFBFBD>λ<EFBFBD>õ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
#define GRP_STEPCONTROL 19 /**< 步位置调节组 */
|
||||
|
||||
/** <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ṹ */
|
||||
/** 数据组结构 */
|
||||
struct group_t {
|
||||
uint32_t id; /**< Identification, Commond Address of Set */
|
||||
uint32_t flags; /**< Flags definiens */
|
||||
byte_t type; /**< Analogue/Digit/Control/Event/etc. */
|
||||
char name[LONGNAME]; /**< <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
uint16_t maxelems; /**< <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>elements<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ŀ */
|
||||
element_t *elements; /**< <EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ԫ<EFBFBD>ض<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
char name[LONGNAME]; /**< 数据组的名称 */
|
||||
uint16_t maxelems; /**< 允许包含elements的最大数目 */
|
||||
element_t *elements; /**< 数据元素定义数组 */
|
||||
|
||||
// runtime generate
|
||||
uint16_t count; /**< ʵ<EFBFBD>ʰ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ԫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ŀ */
|
||||
uint16_t index; /**< <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>IED->groups<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>±<EFBFBD> */
|
||||
value_t value; /**< <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>黺<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˳<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>elements<EFBFBD><EFBFBD>ʵʱֵ */
|
||||
ied_t *ied; /**< <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>豸<EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
apr_hash_t *htdots; /**< <EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ԫ<EFBFBD>ض<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϣ<EFBFBD><EFBFBD> */
|
||||
uint16_t count; /**< 实际包含的数据元素数目 */
|
||||
uint16_t index; /**< 数据组索引IED->groups的数组下标 */
|
||||
value_t value; /**< 数据组缓冲区,顺序存放elements的实时值 */
|
||||
ied_t *ied; /**< 所属设备句柄 */
|
||||
apr_hash_t *htdots; /**< 数据元素定义哈希表 */
|
||||
|
||||
/* Extend property */
|
||||
void *sys_ext; /**< <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϵͳ<EFBFBD><EFBFBD>չ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<2C>ɻ<EFBFBD><C9BB><EFBFBD><EFBFBD><EFBFBD>ʵ<EFBFBD><CAB5> */
|
||||
void *app_ext; /**< <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>չ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<2C><>Ӧ<EFBFBD>ÿ<EFBFBD>ʵ<EFBFBD><CAB5> */
|
||||
void *usr_ext; /**< <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD><EFBFBD><EFBFBD>չ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<2C><>Ӧ<EFBFBD>ó<EFBFBD><C3B3><EFBFBD>ʵ<EFBFBD><CAB5> */
|
||||
void *sys_ext; /**< 数据组的系统扩展属性,由基本库实现 */
|
||||
void *app_ext; /**< 数据组的应用扩展属性,由应用库实现 */
|
||||
void *usr_ext; /**< 数据组的用户扩展属性,由应用程序实现 */
|
||||
};
|
||||
|
||||
//<!-- IEDConfig id,name,flags,type,chncount,cpucount,addrsinfo,cpusinfo,station,frequency,delay,count
|
||||
@@ -284,83 +284,83 @@ struct group_t {
|
||||
#define IED_TYPE_REMOTE (1)
|
||||
#define IED_TYPE_SYSTEM (2)
|
||||
#define IED_TYPE_VIRTUAL (3)
|
||||
#define IED_TYPE_EPFI (4) /**< <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
#define IED_TYPE_EPFI (4) /**< 保护管理机 */
|
||||
|
||||
|
||||
#define IED_FLAG_BLOCKED 0x00000004 /**< <EFBFBD>Ƿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȱʡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
#define IED_FLAG_BLOCKED 0x00000004 /**< 是否封锁,缺省不封锁 */
|
||||
|
||||
|
||||
#define CHANBEL_TYPE_UNKNOWN (0)
|
||||
#define CHANNEL_TYPE_IPV4 (1)
|
||||
#define CHANNEL_TYPE_IPV6 (2) /**< δ<EFBFBD><EFBFBD> */
|
||||
#define CHANNEL_TYPE_SERIAL (3) /**< <EFBFBD><EFBFBD><EFBFBD>ں<EFBFBD> */
|
||||
#define CHANNEL_TYPE_IPV6 (2) /**< 未用 */
|
||||
#define CHANNEL_TYPE_SERIAL (3) /**< 串口号 */
|
||||
|
||||
#define CHANNEL_TYPE_USER_DEFINED (254) /**< <EFBFBD>û<EFBFBD><EFBFBD>Զ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
#define CHANNEL_TYPE_USER_DEFINED (254) /**< 用户自定义类型 */
|
||||
|
||||
|
||||
typedef struct channel_t channel_t;
|
||||
struct channel_t {
|
||||
uint32_t master; /**< <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͨ<EFBFBD><EFBFBD>ͨ<EFBFBD><EFBFBD>(Node ID) */
|
||||
uint32_t master; /**< 所属通信通道(Node ID) */
|
||||
|
||||
//<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ2008-08-16<EFBFBD><EFBFBD><EFBFBD><EFBFBD>,֧<><D6A7>
|
||||
int channel_type; /**< ͨ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
char addr_str[LONGNAME]; /**< ͨ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ */
|
||||
//以下两个属性域为2008-08-16增加,支持
|
||||
int channel_type; /**< 通道地址类型 */
|
||||
char addr_str[LONGNAME]; /**< 通道地址的字符串表示 */
|
||||
|
||||
uint32_t addr; /**< ͨ<EFBFBD>Ŷ˿ڵ<EFBFBD>ַ */
|
||||
uint16_t port; /**< ip<EFBFBD><EFBFBD>ַ<EFBFBD>Ķ˿<EFBFBD> */
|
||||
uint32_t addr; /**< 通信端口地址 */
|
||||
uint16_t port; /**< ip地址的端口 */
|
||||
|
||||
uint32_t status; /**< ͨ<EFBFBD>Ŷ˿<EFBFBD>״̬ */
|
||||
ticks_t last_ticks; /**< <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD> */
|
||||
ticks_t last_send_ticks; /**< <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѯʱ<EFBFBD><EFBFBD> */
|
||||
void *connect; /**< ͨ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӿ<EFBFBD><EFBFBD><EFBFBD> */
|
||||
ied_t *ied; /**< <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>豸<EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
int ied_id; /**< <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>豸id */
|
||||
uint32_t status; /**< 通信端口状态 */
|
||||
ticks_t last_ticks; /**< 最近访问时间 */
|
||||
ticks_t last_send_ticks; /**< 最近查询时间 */
|
||||
void *connect; /**< 通道连接句柄 */
|
||||
ied_t *ied; /**< 所属设备句柄 */
|
||||
int ied_id; /**< 所属设备id */
|
||||
};
|
||||
|
||||
typedef struct cpuinfo_t cpuinfo_t;
|
||||
struct cpuinfo_t {
|
||||
byte_t addr; /**< CPU<EFBFBD><EFBFBD>ַ */
|
||||
byte_t status; /**< CPU״̬ */
|
||||
byte_t templ; /**< CPUģ<EFBFBD><EFBFBD> */
|
||||
char name[LONGNAME]; /**< CPU<EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
ticks_t last_gi; /**< <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ܲ<EFBFBD>ѯʱ<EFBFBD><EFBFBD> */
|
||||
ticks_t last_gi_send; /**< <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ܲ<EFBFBD>ѯ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD> */
|
||||
ticks_t next_gi_send; /**< <EFBFBD>´<EFBFBD><EFBFBD>ܲ<EFBFBD>ѯ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD> */
|
||||
ticks_t last_ticks; /**< <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD> */
|
||||
ticks_t last_send_ticks; /**< <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѯʱ<EFBFBD><EFBFBD> */
|
||||
byte_t addr; /**< CPU地址 */
|
||||
byte_t status; /**< CPU状态 */
|
||||
byte_t templ; /**< CPU模板 */
|
||||
char name[LONGNAME]; /**< CPU名称 */
|
||||
ticks_t last_gi; /**< 最近总查询时间 */
|
||||
ticks_t last_gi_send; /**< 最近总查询发送时间 */
|
||||
ticks_t next_gi_send; /**< 下次总查询发送时间 */
|
||||
ticks_t last_ticks; /**< 最近访问时间 */
|
||||
ticks_t last_send_ticks; /**< 最近查询时间 */
|
||||
};
|
||||
|
||||
|
||||
|
||||
/** IED struct definiens */
|
||||
struct ied_t {
|
||||
uint32_t id; /**< Primy key ( = 0 ϵͳ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>IED ) */
|
||||
uint32_t id; /**< Primy key ( = 0 系统保留IED ) */
|
||||
uint32_t flags; /**< Flags define */
|
||||
byte_t type; /**< Type define */
|
||||
byte_t chncount; /**< <EFBFBD>豸ͨ<EFBFBD>Ŷ˿<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȱʡ=1<><31> */
|
||||
channel_t *channel; /**< <EFBFBD>豸ͨ<EFBFBD>Ŷ˿<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
byte_t cpucount; /**< CPU<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȱʡ=1<><31> */
|
||||
cpuinfo_t *cpuinfo; /**< CPU<EFBFBD><EFBFBD>ַ<EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
char name[LONGNAME]; /**< <EFBFBD>豸<EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
uint32_t station; /**< <EFBFBD><EFBFBD><EFBFBD><EFBFBD>վ<EFBFBD><EFBFBD><ֱ<><D6B1>Ŀ¼ID> */
|
||||
uint32_t node; /**< <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͨ<EFBFBD>Žڵ<EFBFBD><EFBFBD><EFBFBD> */
|
||||
uint16_t frequency; /**< ͨ<EFBFBD><EFBFBD>ɨ<EFBFBD><EFBFBD>Ƶ<EFBFBD><EFBFBD> */
|
||||
uint32_t delay; /**< ͨ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD><EFBFBD>ʱ(ms) */
|
||||
uint16_t count; /**< <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ŀ */
|
||||
group_t *groups; /**< <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>鶨<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
apr_hash_t *htgroups; /**< <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>鶨<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
uint32_t systoken_st; /**< ϵͳ<EFBFBD><EFBFBD><EFBFBD>Ƶ<EFBFBD>״̬ */
|
||||
byte_t chncount; /**< 设备通信端口总数(缺省=1) */
|
||||
channel_t *channel; /**< 设备通信端口数组 */
|
||||
byte_t cpucount; /**< CPU总数(缺省=1) */
|
||||
cpuinfo_t *cpuinfo; /**< CPU地址数组 */
|
||||
char name[LONGNAME]; /**< 设备名称 */
|
||||
uint32_t station; /**< 所属站号<直属目录ID> */
|
||||
uint32_t node; /**< 所属通信节点号 */
|
||||
uint16_t frequency; /**< 通信扫描频率 */
|
||||
uint32_t delay; /**< 通信响应延时(ms) */
|
||||
uint16_t count; /**< 包含的数据组数目 */
|
||||
group_t *groups; /**< 数据组定义数组 */
|
||||
apr_hash_t *htgroups; /**< 数据组定义哈希表句柄 */
|
||||
uint32_t systoken_st; /**< 系统令牌的状态 */
|
||||
|
||||
/* Runtime generate */
|
||||
uint16_t index; /**< <EFBFBD>豸<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>±<EFBFBD> */
|
||||
status_t status; /**< <EFBFBD>豸<EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬ */
|
||||
ticks_t last_ticks; /**< <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD> */
|
||||
ticks_t last_gi; /**< <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ܲ<EFBFBD>ѯʱ<EFBFBD><EFBFBD> */
|
||||
uint16_t index; /**< 设备数组下标 */
|
||||
status_t status; /**< 设备运行状态 */
|
||||
ticks_t last_ticks; /**< 最近访问时间 */
|
||||
ticks_t last_gi; /**< 最近总查询时间 */
|
||||
|
||||
/* Extend property */
|
||||
void *sys_ext; /**< <EFBFBD>豸<EFBFBD><EFBFBD>ϵͳ<EFBFBD><EFBFBD>չ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<2C><><EFBFBD><EFBFBD><EFBFBD>ⶨ<EFBFBD><E2B6A8> */
|
||||
void *app_ext; /**< <EFBFBD>豸<EFBFBD><EFBFBD>Ӧ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>չ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>,Ӧ<>ÿⶨ<C3BF><E2B6A8> */
|
||||
void *usr_ext; /**< <EFBFBD>豸<EFBFBD><EFBFBD><EFBFBD>û<EFBFBD><EFBFBD><EFBFBD>չ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>,Ӧ<>ó<EFBFBD><C3B3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
void *sys_ext; /**< 设备的系统扩展属性,基本库定义 */
|
||||
void *app_ext; /**< 设备的应用扩展属性,应用库定义 */
|
||||
void *usr_ext; /**< 设备的用户扩展属性,应用程序定义 */
|
||||
};
|
||||
|
||||
#ifdef _OS_WIN32_
|
||||
|
||||
Reference in New Issue
Block a user