| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310 |
- /******************************************************************************
- 版权所有:
- 文件名称: 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
- /*------------------------------ 文件结束 -------------------------------------
- */
|