/****************************************************************************** 版权所有: 文件名称: equ.h 文件版本: 01.01 创建作者: sunxi 创建日期: 2013-03-25 功能说明: 装置信息管理维护 其它说明: 修改记录: */ #ifndef _EQU_H #define _EQU_H /*------------------------------- 头文件 -------------------------------------- */ /*------------------------------- 宏定义 -------------------------------------- */ // 配置资源名字长度,不要随意改动,影响文件的对齐。 #define EQU_CFG_NAME_LEN 20 // 板卡类型用一个字节表示,分为四组,用最高2位表示 // 1、001~063: 和主板直接或通过CAN连接。 // 2、064~127: 和主板通过串口连接 // 3、128~191: 保留 // 4、192~255: 保留 #define BOARD_TYPE_GROUP_MASK 0XC0 #define BOARD_TYPE_GROUP_MAIN 0X00 #define BOARD_TYPE_GROUP_RS 0X40 #define BOARD_TYPE_GROUP_RSV1 0X80 #define BOARD_TYPE_GROUP_RSV2 0XC0 // 支持的控制板数量 #define BOARD_TYPE_KZ_NUM 26 //增加控制板的类型数量,适应分布式不同办卡类型 #define BOARD_TYPE_NULL 0 #define BOARD_TYPE_POWER 1 #define BOARD_TYPE_MAIN 2 #define BOARD_TYPE_DO 3 #define BOARD_TYPE_DI 4 #define BOARD_TYPE_AUX 5 #define BOARD_TYPE_AC 6 #define BOARD_TYPE_ZT 7 //状态板 #define BOARD_TYPE_ZH 8 //综合板 #define BOARD_TYPE_KZ 9 //控制板 #define BOARD_TYPE_FTUMAIN 11 //GH_F308 主板,DI、DO、AI #define BOARD_TYPE_FTUKZ1 12 //GH_F308 控制板,仅占板卡位置,10DO, 3DI, 8AC #define BOARD_TYPE_DFTU_KC00 13 //DFTU 二遥DFTU控制板,,00DO, 12DI, 16AC #define BOARD_TYPE_DFTU_KC08 14 //DFTU 三遥DFTU控制板,,08DO, 3DI, 10AC #define BOARD_TYPE_DFTU_KC10 15 //DFTU 三遥DFTU控制板,,10DO, 3DI, 10AC #define BOARD_TYPE_FBDTU_KZ1 16 //一体式分布式DTU控制板 #define BOARD_TYPE_FBDTU_KZ2 17 //后拔插分布式DTU控制板 #define BOARD_TYPE_FBDTU_MAIN1 18 //分布式DTU主板 #define BOARD_TYPE_FBDTU_MAIN 19 //分布式DTU主板 #define BOARD_TYPE_DI60 10 //标准化DTU开入拓展板 #define BOARD_TYPE_DO_2 20 //标准化DTU开出拓展板 #define BOARD_TYPE_RS_STATUS 64 //状态板 #define BOARD_TYPE_LCD_16LED 65 // 液晶面板 #define BOARD_TYPE_LCD 65 // 液晶面板 #define BOARD_TYPE_METERING 67 // 计量板 #define BOARD_TYPE_LCD_24LED 68 // 液晶面板 24个双色灯 #define BOARD_TYPE_LCD_26LED 70 // 液晶面板 26个双色灯 #define BOARD_TYPE_FBC_V1 25 // 国网测控控制板 #define BOARD_TYPE_FBM_V1 26 // 国网管理控制板 #define BOARD_TYPE_FTU 100 //FTU主板 #define BOARD_TYPE_FTU_V2 103 //FTU_V2 #define BOARD_TYPE_FTU_END 130 #define BOARD_TYPE_HAT_FTU_LCD 63///120 // 新罩式FTU面板 #define BOARD_STATUS_POWERUP 0X00 #define BOARD_STATUS_CONFIG_DO 0X01 #define BOARD_STATUS_CONFIG_DI 0X02 #define BOARD_STATUS_NORMAL 0X03 #define BOARD_STATUS_UPDATE 0X04 #define BOARD_STATUS_CONFIG_WAIT 0X07 #define BOARD_STATUS_CONFIG_LED 0X08 //CT PT标度,1V或1A对应的码值 enum { EQU_SCALE_PT_264V_3V53, EQU_SCALE_PT_DEFAULT, // 默认值,不同装置默认值可能不同 EQU_SCALE_EVT_3V25_100V, EQU_SCALE_EVT_6V50_100V, EQU_SCALE_CT_100A_3V53, EQU_SCALE_CT_DEFAULT, // 默认值,一般额定值为100A,不同装置默认值可能不同 EQU_SCALE_ECT_1V_1A, EQU_SCALE_ECT_0V2_1A, EQU_SCALE_CT_10A_51, EQU_SCALE_PT_102K, EQU_SCALE_PT_120K, EQU_SCALE_PT_172K, EQU_SCALE_PT_204K, EQU_SCALE_CT_10A_604, EQU_SCALE_CT_10A_120, EQU_SCALE_CT_10A_249, EQU_SCALE_PT_120K_604, EQU_SCALE_PT_400V_3V53, EQU_SCALE_CT_20A_3V53, EQU_SCALE_DC_VOLT, EQU_SCALE_DC_CURRENT, EQU_SCALE_NUM }; #define LED_NULL (-1) #define LED_MAX_NUM (16*4 + 8) /*------------------------------ 类型结构 ------------------------------------- */ //装置配置文件头 struct equ_config { // 配置文件头 struct cfg_file_head cfh; //工程文件名 s8 prj_name[64]; // 装置类型 u8 equ_sw_num; // 装置支持的本地开关数量 u8 equ_slot_num; // 装置支持的插槽数量 s8 equ_name[14]; // 板卡信息 u8 brd_type[16]; // 通道配置头 // DI u32 di_addr; //地址 u32 di_num; //个数 // DO u32 do_addr; //地址 u32 do_num; //个数 // AC u32 ac_addr; //地址 u32 ac_num; //个数 // 保留 u32 re_addr; //地址 u32 re_num; //个数 //对应描述文件 u32 rsc_version;// 版本 u32 rsc_signature;// 签名 u32 rsc_length;// 长度 u16 rsc_crc; // CRC u16 reserved0; }; struct equ_config_di { u8 slot; //板卡槽位地址 u8 index; //DI硬件地址,从0开始 u8 type; //DI类型 u8 owner; //归属:开关1~开关12、公共 u32 filter_time; //DI防抖滤波时间 u8 is_Inverse; //是否取反 s8 name[EQU_CFG_NAME_LEN]; //DI名称 u8 reserved[3]; }; struct equ_config_do { u8 slot; //板卡槽位地址 u8 index; //DO硬件地址 u8 type; //DO类型 u8 owner; //归属:开关1~开关12、公共 u16 time_pulse; //DO脉宽时间 s8 name[EQU_CFG_NAME_LEN]; //DO名称 u8 reserved[6]; }; struct equ_config_ac { u8 slot; //板卡槽位地址 u8 index; //AI硬件地址 u8 type; //AI类型 u8 owner; //归属:开关1~开关12、公共 u8 is_ct_inverse; //CT是否反向:防止CT反接 u8 scale; //采样PT变比:1A 5A 20A100A s8 name[EQU_CFG_NAME_LEN]; //AI名称 u16 reserved[6]; }; struct board_res_head { // 配置文件头 struct cfg_file_head cfh; // 板卡描述 u32 br_addr; //地址 u32 br_num; //个数 // 保留 u32 re_addr; //地址 u32 re_num; //个数 }; struct board_res { u8 type; // 类型 u8 di_num; // DI数量 u8 do_num; // DO数量 u8 ac_num; // AC数量 s8 name[12];// 名字 }; struct board_info { u8 type; u8 di_num; // DI数量 u8 do_num; // DO数量 u8 ac_num; // AC数量 u8 status; u16 errcode; u16 crc; u32 version; struct timespec update_time; u16 can_bus; // 子板通讯异常检查 u8 is_check; // 是否检查 u8 is_ok; // 检查结果是否ok u32 us0; // 检查时间点记录 }; struct sn { s8 sw; s8 no; }; //LED配置结构体 struct led_config { u8 num; // 板卡LED个数 struct sn sn[LED_MAX_NUM]; // LED对应逻辑点 }; /*------------------------------ 函数声明 ------------------------------------- */ extern struct equ_config *g_equ_config; extern struct equ_config_di *g_equ_config_di; extern struct equ_config_do *g_equ_config_do; extern struct equ_config_ac *g_equ_config_ac; extern struct board_info g_board_info[]; extern struct board_res *g_board_res; extern u8 g_equ_adc_inv[CFG_ADC_CHANNEL]; extern int g_equ_adc_inv_num; // ADC通道是否配置 extern u8 g_equ_adc_config[CFG_ADC_CHANNEL]; extern u32 g_sw_num; extern int g_slot_addr; // 插槽地址 extern int g_hw_version; // 硬件版本 extern u16 g_crc_brd_res; extern u16 g_crc_equ_cfg; extern u32 g_ac_slot_begin; //8槽机箱为6,11槽机箱为7 extern struct file_contrast g_equ_contrast; extern int g_sw_ac_num[SWITCH_NUM_MAX+1]; extern int g_pub_ac_num; #define equ_config_null() (!g_equ_config->equ_slot_num) #define equ_slot_can_bus(slot) (g_board_info[slot].can_bus) int equ_init(void); int equ_exit(void); int equ_ac_index_to_slot(int ac_index); int equ_get_di_num(u32 slot); int equ_get_do_num(u32 slot); int equ_get_ac_num(u32 slot); int equ_get_ac_channel(u32 slot,u32 index); int equ_get_ac_scale(u8 slot,u8 no); u32 equ_get_slot_by_type(u8 type); u16 equ_di_to_sw(u8 slot,u8 no); char * equ_di_name(u8 slot,u8 no); u8 equ_di_type(u8 slot,u8 no); //根据板卡和序号,返回遥信类型 u8 equ_pub_di_type(u8 slot,u8 no) ; #endif //_EQU_H /*------------------------------ 文件结束 ------------------------------------- */