2025-04-30 16:24:29 +08:00

189 lines
5.8 KiB
C

/*
*********************************************************************************************************
* Copyright (c) 2013,JD-YD
* All Rights Reserved
*
*
* File Name : protectcfg.h
* Author : luoyang
* Version : 1.0
* Date : 2013.9.6
* Descriptiong : 保护读取配置文件
* Function List:
* History :
<author> <time> <version> <desc>
luoyang 13/09/06 1.0 build this modle
*********************************************************************************************************
*/
#ifndef CFGREAD_H_
#define CFGREAD_H_
#ifdef __cplusplus
extern "C" {
#endif
#ifndef TRUE
#define TRUE 1 //逻辑真
#endif
#ifndef FALSE
#define FALSE 0 //逻辑假
#endif
#define PROT_CFG_ADDR_READ_START (0x0DE43000)
#define CFG_READ_OK 0xA0 //读取成功
#define CFG_READ_NO_FILE 0xA1 //文件不存在
#define CFG_READ_FROMAT_ERROR 0xA2 //格式错误
#define CFG_READ_ERROR_UNKNOWN 0xA3 //未知错误
/****************************************
*闭锁相关
*****************************************/
#define PROT_BLOCK_CFG_ADDR_READ PROT_CFG_ADDR_READ_START
#define BLOCK_CFGFILE_FULLNAME "/nor/root/protect/cfg/block.xml" //闭锁配置文件名称(包括路径)
#define BS_XML_ROOT "blockcfg" //闭锁配置文件根节点名称
#define BS_XML_ELE "expression" //闭锁配置文件表达式元素名称
#define BS_XML_ARR_ID "id" //闭锁配置文件属性id名称
#define BS_XML_ARR_FORMULA "formula" //闭锁配置文件属性formula名称
#define EXPRESSION_MAX_LEN (100) //表达式最大长度
#define BLOCK_NUM_MAX (36) //闭锁信号最多36个
typedef char ExpArrayType[EXPRESSION_MAX_LEN];
//闭锁逻辑结构
typedef struct{
int numOfExp; //表达式个数
ExpArrayType ExpArray[BLOCK_NUM_MAX]; //表达式
}ExpType;
//外部接口
void block_cfg_read();
/*** 跳闸灯的状态 ***/
#define TZLED_CFGFILE_FULLNAME "/nor/root/protect/cfg/tzled.dat" //跳闸灯状态文件名称(包括路经)
/****************************************
*自投相关
*****************************************/
#define ZT_CFGFILE_FULLNAME "/nor/root/protect/cfg/zt.xml" //闭锁配置文件名称(包括路经)
#define PROT_ZT_CFG_ADDR_READ PROT_CFG_ADDR_READ_START + sizeof(ExpType) + 100
#define ZT_FUNC_JXC (0) //自投功能块 进线侧
#define ZT_FUNC_GDC (1) //自投功能块 高低压侧
#define ZT_FUNC_QGKC (2) //自投功能块 桥隔开侧
#define MAX_STEP_MUN (20)
#define ZT_XML_ROOT "ZTLogicConfig" //自投配置文件根节点名称
#define ZT_XML_ELE_ZTSTEP "ZTStep" //自投配置文件"ZTStep"元素名称
#define ZT_XML_ELE_JXC "JXC" //自投配置文件"JXC"元素名称
#define ZT_XML_ELE_GDC "GDC" //自投配置文件"GDC"元素名称
#define ZT_XML_ELE_QGKC "QGKC" //自投配置文件"QGKC"元素名称
#define ZT_XML_ELE_FZ "FZ" //自投配置文件"FZ"元素名称
#define ZT_XML_ELE_HZ "HZ" //自投配置文件"HZ"元素名称
#define ZT_XML_ELE_STEP "Step" //自投配置文件"ZTStep"元素名称
#define ZT_XML_ARR_KGID "KGID" //自投配置文件"KGID"属性名称
#define ZT_XML_ARR_KGName "KGName" //自投配置文件"KGName"属性名称
#define ZT_XML_ARR_KGType "KGType" //自投配置文件"KGType"属性名称
#define ZT_XML_ARR_KGPos "KGPos" //自投配置文件"KGPos"属性名称
#define ZT_XML_ARR_Action "Action" //自投配置文件"Action"属性名称
//自投操作属性
typedef enum{
ZP_FZ, //分闸
ZP_HZ //合闸
}ZTProperty;
//开关类型
typedef enum{
ST_DLQ = 1, //断路器
ST_GK = 2 //隔离开关
}SwitchType;
//开关安装位置
typedef enum{
SP_JXC, //进线侧开关
SP_GYC, //高压侧开关
SP_DYC, //低压侧开关
SP_QGKC, //桥隔开侧开关
SP_DRQ, //电容器开关
}SwitchPos;
//自投控制对象
typedef struct{
SwitchType ObjectType; //对象类型 1-断路器 2-隔离开关
unsigned char ObjectNo; //对象号(遥控对象号)
unsigned int ObjectName; //开关名称(开关号)
SwitchPos ObjectPos; //开关安装位置
ZTProperty ObjectAction; //开关操作属性(分/合)
}ZTObject, *pZTObject;
//自投步骤序列
typedef struct{
unsigned char StepNum; //自投步骤数目
ZTProperty zitouProperty; //操作属性
ZTObject Objects[MAX_STEP_MUN]; //自投控制对象序列
}ZTStepList, *pZTStepList;
//全站自投逻辑
typedef struct{
ZTStepList JXCFZStepList; //进线侧自投分步骤
ZTStepList JXCHZStepList; //进线侧自投合步骤
ZTStepList GDCFZStepList; //高低压侧自投分步骤
ZTStepList GDCHZStepList; //高低压侧自投合步骤
ZTStepList QGKCFZStepList; //桥隔开自投分步骤
ZTStepList QGKCHZStepList; //桥隔开自投合步骤
}ZTLogic, *pZTLogic;
//馈线自投相关
#define KXZT_CFGFILE_FULLNAME "/nor/root/protect/cfg/kxzt.xml" //馈线自投配置文件名称(包括路经)
#define PROT_KXZT_CFG_ADDR_READ PROT_ZT_CFG_ADDR_READ + sizeof(ZTLogic) + 100
#define KXZT_STEP_NUM_MAX 40
#define KXZT_XML_ROOT "kxztcfg" //馈线自投配置根节点名称
#define KXZT_XML_ELE_UPCFG "up_cfg" //馈线自投配置"up_cfg"元素名称
#define KXZT_XML_ELE_DOWNCFG "down_cfg" //馈线自投配置"down_cfg"元素名称
#define KXZT_XML_ARR_OPTYPE "op_type" //馈线自投配置"op_type"属性名称
#define KXZT_XML_ARR_OPOBJECT "op_object" //馈线自投配置"op_object"属性名称
#define KXZT_XML_ARR_OPTIME "op_time" //馈线自投配置"op_time"属性名称
#define KXZT_XML_ARR_OPFEEDBACK "op_feedback" //馈线自投配置"op_feedback"属性名称
//馈线自投逻辑
//馈线自投结构
typedef struct{
unsigned char op_type; //操作类型
unsigned char op_object; //操作对象
unsigned char op_feedback; //操作反馈
unsigned int op_time; //操作时间
}KXZTStep;
typedef struct{
unsigned char stepNum; //馈线自投步骤数目
KXZTStep stepSet[KXZT_STEP_NUM_MAX]; //自投操作步骤集合
}KXZTType;
//外部接口
void zt_cfg_read();
//读取自投配置文件
void kxzt_cfg_read();
//读取馈线自投配置文件
void block_cfg_read();
//读取联锁配置文件
/** 跳闸灯的状态 **/
int tzled_cfg_read(unsigned char *data, int dataLen);
int tzled_cfg_write(const unsigned char *data, int dataLen);
#ifdef __cplusplus
}
#endif
#endif /* CFGREAD_H_ */