commCPU_SUPV/code/user/inc/device_desc.h
2025-04-30 16:24:29 +08:00

284 lines
6.6 KiB
C
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#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.0IO板数量由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表示IO12表示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