284 lines
6.6 KiB
C
284 lines
6.6 KiB
C
|
||
|
||
#ifndef DEVICE_DESC_123_INCLUDED
|
||
#define DEVICE_DESC_123_INCLUDED
|
||
|
||
|
||
#include "glbtypes.h"
|
||
#include "basetype.h"
|
||
#ifdef __cplusplus
|
||
extern "C" {
|
||
#endif
|
||
/************************************************************************/
|
||
|
||
//数据库中描述信息的最大长度
|
||
#define DEVICE_DESC_TEXT_LEN 63
|
||
|
||
|
||
//定值枚举类型,每个分组的最大分类
|
||
#define DEVICE_DESC_DZ_ENUM_TYPE_NUM 16
|
||
|
||
//状态灯的最大个数
|
||
#define DEVICE_DESC_LIGHTS_NUM 16
|
||
|
||
//每个装置遥测的最大个数
|
||
#define DEVICE_DESC_YC_NUM 30
|
||
|
||
//每个装置的最大IO板子数目
|
||
#define DEVICE_DESC_IO_BORD_NUM (CLZType_IO_NUM) //4 //cbt modified 2021.3.23 硬件4.0,IO板数量由4块->5块,统一采用basetype.h中的宏定义
|
||
//每个板子最大的IO数目
|
||
#define DEVICE_DESC_IO_KRKC_NUM 32
|
||
|
||
typedef struct
|
||
{
|
||
ST_INT enumID;
|
||
ST_CHAR enumDesc[DEVICE_DESC_TEXT_LEN+1];
|
||
|
||
ST_UCHAR valStart; //下面数组,实际开始配置的枚举值
|
||
ST_UCHAR valEnd; //下面数组,最后一个配置的枚举值
|
||
|
||
struct
|
||
{
|
||
ST_INT enumVal; //枚举的值, -1表示本枚举值没有定义. 如果配置了数组的索引号等于枚举的值.
|
||
ST_CHAR valDesc[DEVICE_DESC_TEXT_LEN+1];
|
||
} enumVals[DEVICE_DESC_DZ_ENUM_TYPE_NUM];
|
||
} DEVICE_DZ_ENUM;
|
||
|
||
|
||
typedef struct
|
||
{
|
||
ST_CHAR bitDesc[32][DEVICE_DESC_TEXT_LEN+1];
|
||
} DEVICE_DZ_BIT_DESC;
|
||
|
||
|
||
typedef struct
|
||
{
|
||
ST_CHAR group[DEVICE_DESC_TEXT_LEN+1];
|
||
ST_CHAR dzName[DEVICE_DESC_TEXT_LEN+1];
|
||
ST_FLOAT valMin;
|
||
ST_FLOAT valMax;
|
||
|
||
ST_CHAR unit2[DEVICE_DESC_TEXT_LEN+1];
|
||
ST_CHAR unit1[DEVICE_DESC_TEXT_LEN+1];
|
||
|
||
ST_INT dzTypeCode;
|
||
ST_INT enumID;
|
||
|
||
ST_CHAR defaultVal[DEVICE_DESC_TEXT_LEN+1];
|
||
|
||
ST_FLOAT scale2;
|
||
ST_FLOAT scale1;
|
||
|
||
ST_INT relCT2;
|
||
ST_INT relCT1;
|
||
ST_INT relPT2;
|
||
ST_INT relPT1;
|
||
ST_INT PTCTIndex;
|
||
|
||
ST_INT visable;
|
||
ST_INT modify;
|
||
|
||
ST_CHAR LCDName[DEVICE_DESC_TEXT_LEN+1];
|
||
|
||
//如果本定值项是枚举类型,下面指针指向对应的枚举ID对应的枚举值描述,否则指针为空
|
||
const DEVICE_DZ_ENUM *pDzEnum;
|
||
//如果本定值项是按位定义,那么下面的指针指向位的描述 数组,否则指针为空
|
||
const DEVICE_DZ_BIT_DESC *pDzKrtx;
|
||
|
||
//默认值为-1
|
||
ST_INT relateV2; //关联的二次额定值,当relCT2或relPT2大于0时,实际最小最大值,需要乘以本项指向序号的定值值
|
||
ST_INT relateV1; //关联的一次额定值,当relCT1或relPT1大于0时,实际最小最大值,需要乘以本项指向序号的定值值
|
||
|
||
} DEVICE_DZ_DESC;
|
||
|
||
typedef struct
|
||
{
|
||
ST_INT dzNum;
|
||
DEVICE_DZ_DESC *pDzDesc;
|
||
} DEVICE_DZ_GROUP;
|
||
|
||
|
||
//状态灯的定义
|
||
typedef struct
|
||
{
|
||
ST_INT num;
|
||
struct
|
||
{
|
||
ST_INT index0; //从0开始,表示对应的bit位
|
||
ST_CHAR name[DEVICE_DESC_TEXT_LEN+1];
|
||
ST_INT color;
|
||
} lights[DEVICE_DESC_LIGHTS_NUM];
|
||
} DEIVCE_LIGHTS;
|
||
|
||
|
||
//故障报告动作标识的描述
|
||
typedef struct
|
||
{
|
||
ST_CHAR actDesc[32][DEVICE_DESC_TEXT_LEN+1];
|
||
} DEVICE_GZBG_ACTFLAG;
|
||
|
||
|
||
//测类型的定义
|
||
typedef struct
|
||
{
|
||
ST_INT ycType;
|
||
ST_CHAR ycName[DEVICE_DESC_TEXT_LEN+1];
|
||
ST_CHAR ycCategor[DEVICE_DESC_TEXT_LEN+1];
|
||
ST_CHAR unit1[DEVICE_DESC_TEXT_LEN+1];
|
||
ST_CHAR unit2[DEVICE_DESC_TEXT_LEN+1];
|
||
ST_INT coeff1;
|
||
ST_INT coeff2;
|
||
} DEVICE_YC_TYPE_ITEM;
|
||
|
||
typedef struct
|
||
{
|
||
ST_INT ycNum;
|
||
struct
|
||
{
|
||
ST_INT index0; //序号从1开始,对应遥测数组中值的位置
|
||
ST_INT ycType;
|
||
ST_INT visible;
|
||
ST_CHAR duanzi[DEVICE_DESC_TEXT_LEN+1];
|
||
|
||
//根据ycType生成
|
||
const DEVICE_YC_TYPE_ITEM *pYcDescType;
|
||
} ycItem[DEVICE_DESC_YC_NUM];
|
||
|
||
} DEVICE_YC;
|
||
|
||
typedef struct
|
||
{
|
||
ST_INT deviceTypeCode;
|
||
ST_CHAR deviceName[DEVICE_DESC_TEXT_LEN+1];
|
||
ST_CHAR deviceCategory[DEVICE_DESC_TEXT_LEN+1];
|
||
ST_CHAR shortName[DEVICE_DESC_TEXT_LEN+1];
|
||
ST_INT refDeviceEvent;
|
||
ST_INT haveTouTui;
|
||
ST_INT toutuiChl;
|
||
} DEVICE_DESC;
|
||
|
||
|
||
//事件、自检报告的代码描述
|
||
typedef struct
|
||
{
|
||
ST_INT code; //报告的代码
|
||
ST_CHAR desc[DEVICE_DESC_TEXT_LEN+1];
|
||
} DEVICE_CODE_DESC_ITEM;
|
||
|
||
typedef struct
|
||
{
|
||
ST_INT num;
|
||
DEVICE_CODE_DESC_ITEM *pCodeType;
|
||
} DEVICE_CODE_DESC;
|
||
|
||
typedef struct
|
||
{
|
||
ST_INT boardIndex; //板子序号,从1开始
|
||
|
||
ST_INT ioNum; //下面结构体,包含的IO个数
|
||
struct
|
||
{
|
||
ST_INT bitIndex; //0开始的bit序号,第二个板子从32开始
|
||
ST_CHAR duanzi[DEVICE_DESC_TEXT_LEN+1];
|
||
ST_CHAR name[DEVICE_DESC_TEXT_LEN+1];
|
||
} ioDesc[DEVICE_DESC_IO_KRKC_NUM];
|
||
} DEVICE_IO_BOARD;
|
||
|
||
//每个装置的IO描述
|
||
typedef struct
|
||
{
|
||
ST_INT boardNum;
|
||
DEVICE_IO_BOARD board[DEVICE_DESC_IO_BORD_NUM];
|
||
} DEVICE_IO_DESC;
|
||
|
||
//GOOSE开入描述
|
||
typedef struct
|
||
{
|
||
ST_INT bit2Index; //0开始的bit序号
|
||
ST_CHAR duanzi[DEVICE_DESC_TEXT_LEN+1];
|
||
ST_CHAR type0[DEVICE_DESC_TEXT_LEN+1]; //实际显示的端子?
|
||
ST_CHAR name[DEVICE_DESC_TEXT_LEN+1];
|
||
ST_CHAR bitDesc[DEVICE_DESC_TEXT_LEN+1];
|
||
} DEVICE_GOOSE_IO_ITEM;
|
||
|
||
typedef struct
|
||
{
|
||
ST_INT num;
|
||
DEVICE_GOOSE_IO_ITEM *pGooseItem;
|
||
} DEVICE_GOOSE_IO;
|
||
|
||
|
||
//IO开出传动
|
||
typedef struct
|
||
{
|
||
ST_INT boardIndex; //相关传动的分类,0代表保护,1表示IO1,2表示IO2
|
||
ST_INT cdNum;
|
||
|
||
struct
|
||
{
|
||
ST_INT channel; //传动通道号
|
||
ST_CHAR name[DEVICE_DESC_TEXT_LEN+1];
|
||
ST_INT kcIndex; //相关开出的编号
|
||
ST_INT type0; //传动类型,按钮or普通传动
|
||
} cdDesc[DEVICE_DESC_IO_KRKC_NUM];
|
||
} DEVICE_CD_IO_ITEM;
|
||
|
||
typedef struct
|
||
{
|
||
ST_INT boardNum;
|
||
DEVICE_CD_IO_ITEM board[DEVICE_DESC_IO_BORD_NUM+1];
|
||
} DEVICE_CD_IO_DESC;
|
||
|
||
typedef struct
|
||
{
|
||
ST_INT infIndex; //信息体地址编号,从1开始,对应遥信
|
||
ST_CHAR name[DEVICE_DESC_TEXT_LEN+1]; //遥信名称
|
||
ST_CHAR heText[DEVICE_DESC_TEXT_LEN+1];
|
||
ST_CHAR fenText[DEVICE_DESC_TEXT_LEN+1];
|
||
ST_CHAR interText[DEVICE_DESC_TEXT_LEN+1]; //不定态的描述
|
||
ST_INT type0; //类型
|
||
ST_INT imageID;
|
||
} DEVICE_YAOXIN_ITEM;
|
||
|
||
typedef struct
|
||
{
|
||
ST_INT num; //遥信个数. 注意配置遥信个数,可能与得到的遥信值的个数不一样
|
||
DEVICE_YAOXIN_ITEM *pYaoXin;
|
||
} DEVICE_YAOXIN_DESC;
|
||
|
||
|
||
ST_RET device_desc_init( ST_VOID );
|
||
ST_RET device_desc_release( ST_VOID );
|
||
ST_RET device_desc_handle( ST_VOID );
|
||
|
||
//获取定值的描述,类型1=用户定值,2=压板定值,3=电抗距离表,4=系统定值
|
||
const DEVICE_DZ_GROUP * device_desc_dz_get( ST_INT dzType );
|
||
const DEIVCE_LIGHTS * device_desc_lights_get( ST_VOID );
|
||
const DEVICE_YC * device_desc_yc_get( ST_VOID );
|
||
const DEVICE_DESC * device_desc_devname_get( ST_VOID );
|
||
//获取装置类型,0为没有初始化完成
|
||
ST_INT device_desc_type_get( ST_VOID );
|
||
|
||
|
||
//根据模拟量类型,获取模拟量的描述。没找到返回NULL
|
||
DEVICE_YC_TYPE_ITEM * device_desc_yc_type_find( ST_INT ycType );
|
||
DEVICE_CODE_DESC_ITEM * device_desc_sjzj_type_find( ST_INT code );
|
||
//根据指定的bit位,获取动作标志的描述
|
||
const ST_CHAR * device_desc_gzbg_actbit_find( ST_INT bitIndex );
|
||
|
||
const DEVICE_IO_DESC * device_desc_iokr_get( ST_VOID );
|
||
const DEVICE_IO_DESC * device_desc_iokc_get( ST_VOID );
|
||
const DEVICE_CD_IO_DESC * device_desc_cd_io_get( ST_VOID );
|
||
const DEVICE_YAOXIN_DESC * device_desc_yaoxin_get( ST_VOID );
|
||
const DEVICE_YAOXIN_DESC * device_desc_yaoxin_image_get( ST_VOID );
|
||
|
||
|
||
/************************************************************************/
|
||
#ifdef __cplusplus
|
||
}
|
||
#endif
|
||
|
||
|
||
#endif
|
||
|