equ.h 7.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310
  1. /******************************************************************************
  2. 版权所有:
  3. 文件名称: equ.h
  4. 文件版本: 01.01
  5. 创建作者: sunxi
  6. 创建日期: 2013-03-25
  7. 功能说明: 装置信息管理维护
  8. 其它说明:
  9. 修改记录:
  10. */
  11. #ifndef _EQU_H
  12. #define _EQU_H
  13. /*------------------------------- 头文件 --------------------------------------
  14. */
  15. /*------------------------------- 宏定义 --------------------------------------
  16. */
  17. // 配置资源名字长度,不要随意改动,影响文件的对齐。
  18. #define EQU_CFG_NAME_LEN 20
  19. // 板卡类型用一个字节表示,分为四组,用最高2位表示
  20. // 1、001~063: 和主板直接或通过CAN连接。
  21. // 2、064~127: 和主板通过串口连接
  22. // 3、128~191: 保留
  23. // 4、192~255: 保留
  24. #define BOARD_TYPE_GROUP_MASK 0XC0
  25. #define BOARD_TYPE_GROUP_MAIN 0X00
  26. #define BOARD_TYPE_GROUP_RS 0X40
  27. #define BOARD_TYPE_GROUP_RSV1 0X80
  28. #define BOARD_TYPE_GROUP_RSV2 0XC0
  29. // 支持的控制板数量
  30. #define BOARD_TYPE_KZ_NUM 26 //增加控制板的类型数量,适应分布式不同办卡类型
  31. #define BOARD_TYPE_NULL 0
  32. #define BOARD_TYPE_POWER 1
  33. #define BOARD_TYPE_MAIN 2
  34. #define BOARD_TYPE_DO 3
  35. #define BOARD_TYPE_DI 4
  36. #define BOARD_TYPE_AUX 5
  37. #define BOARD_TYPE_AC 6
  38. #define BOARD_TYPE_ZT 7 //状态板
  39. #define BOARD_TYPE_ZH 8 //综合板
  40. #define BOARD_TYPE_KZ 9 //控制板
  41. #define BOARD_TYPE_FTUMAIN 11 //GH_F308 主板,DI、DO、AI
  42. #define BOARD_TYPE_FTUKZ1 12 //GH_F308 控制板,仅占板卡位置,10DO, 3DI, 8AC
  43. #define BOARD_TYPE_DFTU_KC00 13 //DFTU 二遥DFTU控制板,,00DO, 12DI, 16AC
  44. #define BOARD_TYPE_DFTU_KC08 14 //DFTU 三遥DFTU控制板,,08DO, 3DI, 10AC
  45. #define BOARD_TYPE_DFTU_KC10 15 //DFTU 三遥DFTU控制板,,10DO, 3DI, 10AC
  46. #define BOARD_TYPE_FBDTU_KZ1 16 //一体式分布式DTU控制板
  47. #define BOARD_TYPE_FBDTU_KZ2 17 //后拔插分布式DTU控制板
  48. #define BOARD_TYPE_FBDTU_MAIN1 18 //分布式DTU主板
  49. #define BOARD_TYPE_FBDTU_MAIN 19 //分布式DTU主板
  50. #define BOARD_TYPE_DI60 10 //标准化DTU开入拓展板
  51. #define BOARD_TYPE_DO_2 20 //标准化DTU开出拓展板
  52. #define BOARD_TYPE_RS_STATUS 64 //状态板
  53. #define BOARD_TYPE_LCD_16LED 65 // 液晶面板
  54. #define BOARD_TYPE_LCD 65 // 液晶面板
  55. #define BOARD_TYPE_METERING 67 // 计量板
  56. #define BOARD_TYPE_LCD_24LED 68 // 液晶面板 24个双色灯
  57. #define BOARD_TYPE_LCD_26LED 70 // 液晶面板 26个双色灯
  58. #define BOARD_TYPE_FBC_V1 25 // 国网测控控制板
  59. #define BOARD_TYPE_FBM_V1 26 // 国网管理控制板
  60. #define BOARD_TYPE_FTU 100 //FTU主板
  61. #define BOARD_TYPE_FTU_V2 103 //FTU_V2
  62. #define BOARD_TYPE_FTU_END 130
  63. #define BOARD_TYPE_HAT_FTU_LCD 63///120 // 新罩式FTU面板
  64. #define BOARD_STATUS_POWERUP 0X00
  65. #define BOARD_STATUS_CONFIG_DO 0X01
  66. #define BOARD_STATUS_CONFIG_DI 0X02
  67. #define BOARD_STATUS_NORMAL 0X03
  68. #define BOARD_STATUS_UPDATE 0X04
  69. #define BOARD_STATUS_CONFIG_WAIT 0X07
  70. #define BOARD_STATUS_CONFIG_LED 0X08
  71. //CT PT标度,1V或1A对应的码值
  72. enum
  73. {
  74. EQU_SCALE_PT_264V_3V53,
  75. EQU_SCALE_PT_DEFAULT, // 默认值,不同装置默认值可能不同
  76. EQU_SCALE_EVT_3V25_100V,
  77. EQU_SCALE_EVT_6V50_100V,
  78. EQU_SCALE_CT_100A_3V53,
  79. EQU_SCALE_CT_DEFAULT, // 默认值,一般额定值为100A,不同装置默认值可能不同
  80. EQU_SCALE_ECT_1V_1A,
  81. EQU_SCALE_ECT_0V2_1A,
  82. EQU_SCALE_CT_10A_51,
  83. EQU_SCALE_PT_102K,
  84. EQU_SCALE_PT_120K,
  85. EQU_SCALE_PT_172K,
  86. EQU_SCALE_PT_204K,
  87. EQU_SCALE_CT_10A_604,
  88. EQU_SCALE_CT_10A_120,
  89. EQU_SCALE_CT_10A_249,
  90. EQU_SCALE_PT_120K_604,
  91. EQU_SCALE_PT_400V_3V53,
  92. EQU_SCALE_CT_20A_3V53,
  93. EQU_SCALE_DC_VOLT,
  94. EQU_SCALE_DC_CURRENT,
  95. EQU_SCALE_NUM
  96. };
  97. #define LED_NULL (-1)
  98. #define LED_MAX_NUM (16*4 + 8)
  99. /*------------------------------ 类型结构 -------------------------------------
  100. */
  101. //装置配置文件头
  102. struct equ_config
  103. {
  104. // 配置文件头
  105. struct cfg_file_head cfh;
  106. //工程文件名
  107. s8 prj_name[64];
  108. // 装置类型
  109. u8 equ_sw_num; // 装置支持的本地开关数量
  110. u8 equ_slot_num; // 装置支持的插槽数量
  111. s8 equ_name[14];
  112. // 板卡信息
  113. u8 brd_type[16];
  114. // 通道配置头
  115. // DI
  116. u32 di_addr; //地址
  117. u32 di_num; //个数
  118. // DO
  119. u32 do_addr; //地址
  120. u32 do_num; //个数
  121. // AC
  122. u32 ac_addr; //地址
  123. u32 ac_num; //个数
  124. // 保留
  125. u32 re_addr; //地址
  126. u32 re_num; //个数
  127. //对应描述文件
  128. u32 rsc_version;// 版本
  129. u32 rsc_signature;// 签名
  130. u32 rsc_length;// 长度
  131. u16 rsc_crc; // CRC
  132. u16 reserved0;
  133. };
  134. struct equ_config_di
  135. {
  136. u8 slot; //板卡槽位地址
  137. u8 index; //DI硬件地址,从0开始
  138. u8 type; //DI类型
  139. u8 owner; //归属:开关1~开关12、公共
  140. u32 filter_time; //DI防抖滤波时间
  141. u8 is_Inverse; //是否取反
  142. s8 name[EQU_CFG_NAME_LEN]; //DI名称
  143. u8 reserved[3];
  144. };
  145. struct equ_config_do
  146. {
  147. u8 slot; //板卡槽位地址
  148. u8 index; //DO硬件地址
  149. u8 type; //DO类型
  150. u8 owner; //归属:开关1~开关12、公共
  151. u16 time_pulse; //DO脉宽时间
  152. s8 name[EQU_CFG_NAME_LEN]; //DO名称
  153. u8 reserved[6];
  154. };
  155. struct equ_config_ac
  156. {
  157. u8 slot; //板卡槽位地址
  158. u8 index; //AI硬件地址
  159. u8 type; //AI类型
  160. u8 owner; //归属:开关1~开关12、公共
  161. u8 is_ct_inverse; //CT是否反向:防止CT反接
  162. u8 scale; //采样PT变比:1A 5A 20A100A
  163. s8 name[EQU_CFG_NAME_LEN]; //AI名称
  164. u16 reserved[6];
  165. };
  166. struct board_res_head
  167. {
  168. // 配置文件头
  169. struct cfg_file_head cfh;
  170. // 板卡描述
  171. u32 br_addr; //地址
  172. u32 br_num; //个数
  173. // 保留
  174. u32 re_addr; //地址
  175. u32 re_num; //个数
  176. };
  177. struct board_res
  178. {
  179. u8 type; // 类型
  180. u8 di_num; // DI数量
  181. u8 do_num; // DO数量
  182. u8 ac_num; // AC数量
  183. s8 name[12];// 名字
  184. };
  185. struct board_info
  186. {
  187. u8 type;
  188. u8 di_num; // DI数量
  189. u8 do_num; // DO数量
  190. u8 ac_num; // AC数量
  191. u8 status;
  192. u16 errcode;
  193. u16 crc;
  194. u32 version;
  195. struct timespec update_time;
  196. u16 can_bus;
  197. // 子板通讯异常检查
  198. u8 is_check; // 是否检查
  199. u8 is_ok; // 检查结果是否ok
  200. u32 us0; // 检查时间点记录
  201. };
  202. struct sn
  203. {
  204. s8 sw;
  205. s8 no;
  206. };
  207. //LED配置结构体
  208. struct led_config
  209. {
  210. u8 num; // 板卡LED个数
  211. struct sn sn[LED_MAX_NUM]; // LED对应逻辑点
  212. };
  213. /*------------------------------ 函数声明 -------------------------------------
  214. */
  215. extern struct equ_config *g_equ_config;
  216. extern struct equ_config_di *g_equ_config_di;
  217. extern struct equ_config_do *g_equ_config_do;
  218. extern struct equ_config_ac *g_equ_config_ac;
  219. extern struct board_info g_board_info[];
  220. extern struct board_res *g_board_res;
  221. extern u8 g_equ_adc_inv[CFG_ADC_CHANNEL];
  222. extern int g_equ_adc_inv_num;
  223. // ADC通道是否配置
  224. extern u8 g_equ_adc_config[CFG_ADC_CHANNEL];
  225. extern u32 g_sw_num;
  226. extern int g_slot_addr; // 插槽地址
  227. extern int g_hw_version; // 硬件版本
  228. extern u16 g_crc_brd_res;
  229. extern u16 g_crc_equ_cfg;
  230. extern u32 g_ac_slot_begin; //8槽机箱为6,11槽机箱为7
  231. extern struct file_contrast g_equ_contrast;
  232. extern int g_sw_ac_num[SWITCH_NUM_MAX+1];
  233. extern int g_pub_ac_num;
  234. #define equ_config_null() (!g_equ_config->equ_slot_num)
  235. #define equ_slot_can_bus(slot) (g_board_info[slot].can_bus)
  236. int equ_init(void);
  237. int equ_exit(void);
  238. int equ_ac_index_to_slot(int ac_index);
  239. int equ_get_di_num(u32 slot);
  240. int equ_get_do_num(u32 slot);
  241. int equ_get_ac_num(u32 slot);
  242. int equ_get_ac_channel(u32 slot,u32 index);
  243. int equ_get_ac_scale(u8 slot,u8 no);
  244. u32 equ_get_slot_by_type(u8 type);
  245. u16 equ_di_to_sw(u8 slot,u8 no);
  246. char * equ_di_name(u8 slot,u8 no);
  247. u8 equ_di_type(u8 slot,u8 no); //根据板卡和序号,返回遥信类型
  248. u8 equ_pub_di_type(u8 slot,u8 no) ;
  249. #endif //_EQU_H
  250. /*------------------------------ 文件结束 -------------------------------------
  251. */