| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406 |
- /******************************************************************************
- 版权所有:
- 文件名称: iectable.h
- 文件版本: 01.01
- 创建作者: xxxxxx
- 创建日期: 2013-05-29
- 功能说明: DTU点表处理
- 其它说明:
- 修改记录:
- */
- #ifndef _IECTABLE_H
- #define _IECTABLE_H
- /*------------------------------- 头文件 --------------------------------------
- */
- /*------------------------------- 宏定义 --------------------------------------
- */
- #define MAX_SPI_NUMBER 320 // 最大单点遥信个数
- #define MAX_DPI_NUMBER 64 // 最大双点遥信个数
- #define MAX_YC_NUMBER 1024 // 最大可配置遥测个数
- #define MIX_YX_NUMBER 20 // 合并点最多可合并单点个数
- #define TRANS_SZ_BUF_LEN 64 // 转发点表字符串BUF长度
- #ifdef FUN_JSON_FILE
- #define HF_IEC_TAB_DIR "/app/CONFIG/MAIN/"
- #define HF_IEC_TAB_HEAD_LEN 128
- #define HF_IEC_TAB_ITEM_LEN 64
- #endif
- // 资源类型
- enum
- {
- RES_TYPE_YX, // 遥信
- RES_TYPE_YC, // 遥测
- RES_TYPE_YK, // 遥控
- RES_TYPE_DD, // 电度
- RES_TYPE_SET, // 定值
- RES_TYPE_NUM // 资源类型数量
- };
- /*------------------------------ 类型结构 -------------------------------------
- */
- //资源表文件头,16bytes
- struct rsc_file_head
- {
- unsigned int signature; //资源表文件签名
- unsigned int version; //资源表文件版本
- unsigned int reserved0; //保留0
- unsigned int reserved1; //保留1
- };
- //资源表文件头格式
- struct rsc_file_head_data
- {
- // 资源表文件头
- struct rsc_file_head cfh;
- // 装置类型
- unsigned char equ_sw_num;
- unsigned char equ_brd_num;
- char equ_name[14];
- // 资源表头
- // 公共
- unsigned int pub_di_addr;
- unsigned int pub_di_num;
- unsigned int pub_do_addr;
- unsigned int pub_do_num;
- unsigned int pub_ac_addr;
- unsigned int pub_ac_num;
-
- // sw
- unsigned int sw_di_addr;
- unsigned int sw_di_num;
- unsigned int sw_do_addr;
- unsigned int sw_do_num;
- unsigned int sw_ac_addr;
- unsigned int sw_ac_num;
- // ac单位名称
- unsigned int unit_addr;
- unsigned int unit_num;
- // LED
- unsigned int led_addr;
- unsigned int led_num;
- // 电度
- unsigned int dd_addr;
- unsigned int dd_num;
- unsigned int rsv[2];
- };
- //DI资源表描述32byte
- struct di_rsc
- {
- u8 is_real; //是否实点
- u8 indexno; //在归属中的索引号
- char name[EQU_CFG_NAME_LEN]; //DI名称
- u8 reserved[10];
- };
- //DO资源表描述32byte
- struct do_rsc
- {
- u8 is_real; //是否实点
- u8 indexno; //在归属中的索引号
- char name[EQU_CFG_NAME_LEN]; //DO名称
- u8 reserved[10];
- };
- //AC资源表描述32byte
- struct ac_rsc
- {
- u8 is_real; //是否实点
- u8 indexno; //在归属中的索引号
- char name[EQU_CFG_NAME_LEN]; //AC名称
- u8 unit; // 单位索引
- u8 unit_angle; // 角度单位,没有角度为0
- u16 normal; //额定值
- u8 reserved[6];
- };
- //单位名称资源表描述
- struct unit_rsc
- {
- char name[8];
- };
- // LED资源表描述
- struct led_rsc
- {
- u8 owner; // 归属:公共/开关
- u8 indexno; // 索引号
- char name[20]; // LED名称
- u8 reserved[10];
- };
- //AC资源表描述32byte
- struct dd_rsc
- {
- u8 is_real; //是否实点
- u8 indexno; //在归属中的索引号
- char name[EQU_CFG_NAME_LEN]; //AC名称
- u8 unit; // 单位索引
- u8 unit_angle; // 角度单位,没有角度为0
- u16 normal; //额定值
- u8 reserved[6];
- };
- //点表文件头,16bytes
- struct table_file_head
- {
- unsigned int signature; //点表文件签名
- unsigned int version; //点表文件版本
- unsigned int reserved0; //保留0
- unsigned int reserved1; //保留1
- };
- //点表文件头格式
- struct table_file_head_data
- {
- // 点表文件头
- struct table_file_head cfh;
- //工程文件名
- s8 prj_name[64];
- // 装置类型
- u8 equ_sw_num;
- u8 equ_brd_num;
- s8 equ_name[14];
- // 点表头
- // DI
- u32 di_addr; //地址
- u32 di_num; //个数
- // DI合并
- u32 dimerge_addr;//地址
- u32 dimerge_num;//个数
-
- // DI双点
- u32 di_db_addr;//地址
- u32 di_db_num;//个数
-
- // DO
- u32 do_addr; //地址
- u32 do_num; //个数
-
- // AC
- u32 ac_addr; //地址
- u32 ac_num; //个数
- //对应描述文件
- u32 rsc_version; // 版本
- u32 rsc_signature; // 签名
- u32 rsc_length; // 长度
- u16 rsc_crc; // CRC
- u16 Rsv;
- // 名称字符串
- u32 sz_addr; //地址
- u32 sz_num; //个数
- // 电度
- u32 dd_addr; //地址
- u32 dd_num; //个数
- u32 Rsv2[2];
- };
- //DI点表描述8byte
- struct di_table
- {
- u16 cp; //通讯点号
- u8 owner; //归属:开关1~开关12、公共0
- u8 link_ch; // 级联设备通道
- u8 indexno; //在归属中的索引号
- u8 is_inverse; //是否取反
- u16 link_cp; // 级联设备通讯点号
- #ifdef IECTABLE_NEWDPI_V106
- u8 dpi;
- u8 tmp[15]; //备用属性
- #endif
- };
- //DI合并点表描述48byte
- struct di_merge_table
- {
- u16 cp; //通讯点号
- u8 is_inv_all; // 合并点是否取反
- u8 reserved[1];// 对齐
- u16 no[20]; // 资源表点号:高4位表示归属,次高4位表示是否实点,低8位表示索引号
- u8 is_inv[20]; // 各单点是否取反
- #ifdef IECTABLE_NEWDPI_V106
- u16 link_cp[20]; // 合并点来源
- u8 link_ch[20];
- u8 tmp[12];
- #endif
- };
- //DI双点点表描述(8byte)
- struct di_db_table
- {
- u16 cp; //通讯点号
- u16 no[2]; // 资源表点号:高8位表示归属,低8位表示索引号。第0个为合位,第1个为分位。
- u8 is_inv[2]; // 各单点是否取反
- };
- //DO点表描述8byte
- struct do_table
- {
- u16 cp; //通讯点号
- u8 owner; //归属:开关1~开关12、公共0,以前使用2字节,目前用1字节,表示开出的两个点只能是同一个归属。
- u8 link_ch; // 级联设备通道
- u16 link_cp; // 级联设备通讯点号
- u8 indexno[2]; //在归属中的索引号
- // u8 vsq;
- };
- //AC点表描述32byte
- struct ac_table
- {
- u16 cp; //通讯点号
- u8 owner; //归属:开关1~开关12、公共0
- u8 rsv; //保留
- u8 indexno; //在归属中的索引号
- u8 link_ch; //级联设备通道
- u16 link_cp; //级联设备通讯点号
- qs16 rate; //测量系数
- qs16 normal; //额定值
- qs16 dead_value;//遥测死区
- u8 reserved1[12];
- };
- //dd点表描述32byte
- struct dd_table
- {
- u16 cp; //通讯点号
- u8 owner; //归属:开关1~开关12、公共0
- u8 rsv; //保留
- u8 indexno; //在归属中的索引号
- u8 link_ch; // 级联设备通道
- u16 link_cp; // 级联设备通讯点号
- qs16 rate; //测量系数
- qs16 normal; //额定值
- qs16 dead_value;//遥测死区
- u8 reserved1[12];
- };
- // 字符串表
- struct sz_table
- {
- u16 type; // 遥信表、遥测表、遥控表(0、1、2)
- u16 index; // 各个表中的索引
- u32 offset; // 字符串在字符串表中的偏移
- };
- struct file_contrast
- {
- u32 version;// 版本
- u32 signature;// 签名
- u32 length;// 长度
- u16 crc; // CRC
- };
- typedef struct link_table
- {
- u32 cp_s; // 从设备通讯点号(带通道号,高16位为通道号,低16为通讯点号)
- u32 tbl_index; // 在对应点表中的索引
- // u16 cp_m; // 主设备通讯点号
- // u8 sw; // 开关号
- // u8 no; // 开关内索引
- u8 owner;
- u8 indexno;
- u8 is_inverse;
- u8 is_mix; // 若是合并点,存入soe,但不上送
- u16 cp;
- }LINK_TABLE;
- /*------------------------------ 函数声明 -------------------------------------
- */
- extern struct rsc_file_head_data *g_rsc_head;
- extern struct table_file_head_data *g_table_head;
- extern struct di_table *g_di_table;
- extern struct di_merge_table *g_di_merge_table;
- extern struct di_db_table *g_di_db_table;
- extern struct do_table *g_do_table;
- extern struct ac_table *g_ac_table;
- extern struct dd_table *g_dd_table;
- extern struct file_contrast rsc_contrast;
- extern struct file_contrast setdesc_contrast;
- extern u16 g_crc_rsc;
- extern u16 g_crc_rectable;
- extern REMOTEYKSTATUS *g_yk_info;
- #ifdef FUN_DIMER_LINK
- extern struct di_table *g_di_info_merge_table;
- extern u32 g_di_info_merge_num; //个数
- #endif
- // 级联点表
- extern u32 g_lt_di_num;
- extern u32 g_lt_do_num;
- extern u32 g_lt_ac_num;
- extern u32 g_lt_dd_num;
- extern LINK_TABLE *g_lt_di;
- extern LINK_TABLE *g_lt_do;
- extern LINK_TABLE *g_lt_ac;
- extern LINK_TABLE *g_lt_dd;
- int tbl_init(void);
- int tbl_exit(void);
- int tbl_cp2index(u16 cp);
- u8 tbl_get_dpi(int i);
- u8 tbl_get_yx(int i,int bDPI);
- int tbl_yd_yx(u16 begin,u16 num,u8 * yx_buf);
- int tbl_yd_yc(u16 begin,u16 num,u8 * yc_buf);
- int tbl_yd_dd(u16 begin,u16 num,u8 * dd_buf);
- int tbl_create_rsc(void);
- void tbl_getdiname(WORD owner,WORD index,char *name);
- void tbl_getacname(WORD owner,WORD index,char *name);
- void tbl_getddname(WORD owner,WORD index,char *name);
- void tbl_getdoname(WORD owner,WORD index,char *name);
- void tbl_getname(WORD tbl_type, WORD tbl_index,char *name);
- extern int tbl_get_sz_index_yx(u16 tbl_index);
- extern int tbl_getname_sz(WORD tbl_type, WORD tbl_index,char *name);
- int tbl_printf(void);
- int tbl_printf_rsc(void);
- void tbl_printf_cvs(void);
- // 级联通讯点表
- int tbl_link_init(void);
- int tbl_link_exit(void);
- LINK_TABLE *tbl_link_di(u16 ch,u16 cp);
- LINK_TABLE *tbl_link_do(u16 ch,u16 cp);
- LINK_TABLE *tbl_link_ac(u16 ch,u16 cp);
- LINK_TABLE *tbl_link_dd(u16 ch,u16 cp);
- int tbl_link_printf(void);
- #ifdef FUN_JSON_FILE
- int tbl_json_file_init(void);
- #endif
- #endif //_IECTABLE_H
- /*------------------------------ 文件结束 -------------------------------------
- */
|