📄 variable definition.h
字号:
//**********全局变量定义***********************************
//请注意:通信时,高字节先传送,低字节后传送,这个和计算机中的存储顺序相反,所以
//在处理的时候需要加以注意(交换高低字节)
//modified by zjx 2005-10-15 23:51
typedef unsigned char UBYTE;
typedef unsigned short UWORD;
typedef unsigned long UDWORD;
struct flags
{
unsigned setup :4;
unsigned gb :1; //有触摸屏中断
unsigned sure :1;
unsigned updown :4;
unsigned set :1;
unsigned ds :3; //液晶显示数据还是系统显示
unsigned sel :2;
unsigned number :4;
unsigned receive_ok :1 ;
unsigned transfer_ok :1 ;
unsigned timecount_ok :1 ;
unsigned flag0620 :1; //06号功能系统参数
unsigned flag06511 :1; //定植通道参数
unsigned flag0606 :1 ; //府费率参数
unsigned flag0621 :1 ; //实时时钟下载
unsigned flag06501 :1 ; //继电器参数
unsigned system : 1;
unsigned evecl :1; // 清除事件记录
unsigned edgcl :1; //电表复位
unsigned limicl :1; //清除最大最小值
unsigned feeflag :1; //费率清零
unsigned warnflag :1; //定值清零
unsigned second :1;
unsigned jy :1; //校表参数设置完毕/
}flag;
struct relay //继电器逻辑变量和输出量设置结构体定义
{ unsigned short controlmode; //低位对应8个继电器,高8位保留。 //bool controlmode;
unsigned short actpulse[8]; //8个继电器的动作脉宽。//unsigned char actpulse;
unsigned short lockstate;//寄存器的锁存状态,为1的话释放锁存的继电器。
}rel;
float Pgainerr[3][2]; //功率增益
float Phsregerr[3][5]; //角差校正
float UIr[2][3]; //实际输入电压值
//float Ir[3]; //实际输入电流值*/
typedef struct //定值通道的四种相关数据
{unsigned short logicalmode;//逻辑模式
unsigned short actcondition;//动作条件
unsigned short actcontinuetime;//动作延时
unsigned short actkeyvalue;//动作键值
}channel;
//channel alarm;
//channel logical;
struct Fixedvalues//定值通道结构体定义
{channel alarm[8];
channel logical[8];
}Fixedvalue; //这样定义不会引起结构体存放位置的变化
typedef struct inceptfees //起始段和费率定义
{unsigned short incept; //时间取值
unsigned short fee; //费率取值
}inceptfee;
typedef struct feestructures //费率结构
{unsigned short inlow; //输入有功电度低字
unsigned short inhigh; //输入有功电度高字
unsigned short outlow; //输出有功电度低字
unsigned short outhigh; //输出有功电度低字
unsigned short inulow; //输入无功电度低字
unsigned short inuhigh; //输入无功电度高字
unsigned short outulow; //输出无功电度低字
unsigned short outuhigh; //输出无功电度高字
}feestructure;
struct againfees //复费率结构体定义
{unsigned short timenumber;
inceptfee infee[8];
feestructure feestr[4];
unsigned short reserved[32]; //保留
}againfee;
typedef struct //UNIX时间结构体
{
unsigned short highsecond; //UNIX时间高位数
unsigned short lowsecond; //UNIX时间底位数
}UNIXtime;
// UNIXtime UNIXti;
typedef struct //年月日时分秒时间结构体
{
UBYTE second;
UBYTE minute;
UBYTE hour;
UBYTE date;
UBYTE month;
UBYTE year;
} cur_time;
cur_time mytime1; //系统时间(年月日)
cur_time mytime2; //最大小值显示的时刻。
typedef struct //事件标号
{unsigned short number1; //标号1 表示事件类型及状态
unsigned short number2; //标号2 表示发生时间毫秒
unsigned short number3; //标号3 事件发生UNIX秒低字
unsigned short number4; //标号4 事件发生UNIX秒高字
}eventnumber;
struct eventnotes //事件记录结构体定义
{
UNIXtime UNIXti;
eventnumber eventnum[10];
}eventnote;
typedef struct //baud结构体定义
{unsigned short com1; //通讯口1波特率
unsigned short com2; //通讯口2波特率
unsigned short com3; //通讯口3波特率
unsigned short com4; //通讯口4波特率
}baud;
unsigned char choicebaud; /*用于下位机的波特率选择*/
// baud baudrate;
typedef struct sbxhs //设备型号定义
{unsigned char productname[10]; //厂家名称
unsigned char maintypeno[5]; //主型号
unsigned char subtypeno[5]; //次要型号
}sbxhao;
struct systemsetups //系统设置
{ unsigned short sbzh;//设备组号
unsigned short sbh;//设备地址
baud baudrate; //通讯口波特率
unsigned short PT;//PT 变比
unsigned short CT;//CT 变比
unsigned short connectionmode;//接线模式
unsigned short xlsjcslow;//需量时间常数低位
unsigned short xlsjcshigh;//需量时间常数高位
//以上需要在下位机设置
unsigned short pulseoutmode;//脉冲输出模式
unsigned short txycsjlow;//通信延迟时间低位
unsigned short txycsjhigh;//通信延迟时间高位
unsigned short bjycsjlow;//报警延迟时间低位
unsigned short bjycsjhigh;//报警延迟时间高位
}systemsetup;
//注意:以下结构体紧接着上面的结构体存放,但是下面结构体的值的存取方式和上面的不一样
struct systemsetups1 //系统设置2
{
UNIXtime dqdatetime; //当前时间 当前日期
sbxhao sbxh; //设备型号
unsigned short ccxlhlow;//出厂序列号低位
unsigned short ccxlhhigh;//出厂序列号高位
unsigned short rjbblow;//软件日期版本低位
unsigned short rjbbhigh;//软件日期版本高位
unsigned short passwordL1;//密码L1
unsigned short passwordL2;//密码L2
unsigned short reserved[32];//保留
} systemsetup1;
//long 是32位!
//采集的数据
typedef struct
{ UNIXtime dqdatatime;
//unsigned long SpiStatus1;
//unsigned long SpiStatus2;
unsigned short I[4]; //三相电流和中线电流
unsigned short reserved1; //保留
unsigned short U[3]; //三相相电压
unsigned short reserved2; //保留
unsigned short XU[3]; //三相线电压
unsigned short reserved3; //保留
unsigned short reserved4;// 保留
signed long ActPwr[4]; //三相有功功率和总有功功率
signed long ReaPwr[4]; //三相无功功率和总有功功率
signed long AppPwr[4]; //三相视在功率和总有功功率
signed short Factor[4]; //三相功率因数
unsigned short MainF; //系统频率
unsigned short reserved5;// 保留
unsigned long r_PosEpt ; //三相输入有功电能 低位和高位不要弄错
unsigned long r_NegEpt; //三相输出有功电能
unsigned long r_AddEpt; //有功电度的总和
unsigned long r_DecEpt; //有功电度的净值
unsigned long r_PosEqt; //三相输入无功电能
unsigned long r_NegEqt; //三相输出无功电能
unsigned long r_AddEqt; //无功电度的总和
unsigned long r_DecEqt; //无功电度的净值
unsigned long r_Set; //视在电度的总和
unsigned short eventnum; // SOE 事件计数器
//失真度
unsigned short iTHD[4]; // 三相电流失真度
unsigned short uTHD[3]; //三相电压流失真度
unsigned short xuTHD[3]; //三相线电压失真度
unsigned short temp; //温度
} SPIRegister;
SPIRegister SPI;
//下面这个结构包含其他一些实时测量值 主程序实现
typedef struct
{
unsigned short inputstate; // 输入开关量 当某一开关量通道闭合,则对应状态位为1,反
//之为0。
unsigned short relaystate; //继电器状态 1为响应的继电器闭合
unsigned short channelstate; // 定值和逻辑通道状态 1为通道被激活
unsigned long anologue; // 模拟量输入值
unsigned long feestate; // 当前费率 读出每个时段(共8个)的费率
} SPIRegister1;
SPIRegister1 SPI1;
typedef struct
{ UWORD imaxmin[4][2]; //3表示3相 中线 2表示最大最小值 电流最大最小值
UWORD umaxmin[3][2]; //相电压最大最小值
UWORD xumaxmin[3][2]; //线电压最大最小值
signed long actpwrmaxmin[4][2]; //三相 总 有功功率最大最小值
signed long reapwrmaxmin[4][2]; //三相 总 无功功率最大最小值
signed long apppwrmaxmin[4][2]; //三相 总 视在功功率最大最小值
UWORD fctmaxmin[4][2]; //三相 总 功率因素 最大最小值
UWORD fmaxmin[2]; //系统频率最大值 最小
}MAXMIN;
MAXMIN myMAXMIN;
typedef struct
{ UDWORD tmimaxmin[4][2]; //三相 中线 电流最大最小值时间
UDWORD tmumaxmin[3][2]; //相电压最大最小值时间
UDWORD tmxumaxmin[3][2]; //线电压最大最小值时间
UDWORD tmactpwrmaxmin[4][2]; //三相 总 有功功率最大最小值 时间
UDWORD tmreapwrmaxmin[4][2]; //三相 总 无功功率最大最小值 时间
UDWORD tmapppwrmaxmin[4][2]; //三相 总 视在功功率最大最小值 时间
UDWORD tmfctmaxmin[4][2]; //三相 总 功率因素 最大最小值 时间
UDWORD tmfmaxmin[2]; //系统频率最大值 最小时间
}MTIME;
MTIME mytime;
unsigned char sel=1; //暂时代替的接线方式0:单项,1:三相三线2:三相四线
//需量变量定义
typedef struct
{ //三相电流需量及其最大值
unsigned short NEEDI[3];
unsigned short MAXNEEDI[3];
//三相有功功率需量及其最大值
signed long NEEDACTPWR[3];
signed long MAXNEEDACTPWR[3];
//三相无功功率需量及其最大值
signed long NEEDREAPWR[3];
signed long MAXNEEDREAPWR[3];
//三相视在功率需量及其最大值
signed long NEEDAPPPWR[3];
signed long MAXNEEDAPPPWR[3];
} XULIANG;
XULIANG myNeed;
typedef struct
{ UWORD uhwave[3][16]; //3表示 3相 ,16表示1到31次谐波。电压谐波
UWORD ihwave[3][16]; //电流谐波
} XIEBO;
XIEBO myXIEBO;
//定于全局变量,存放谐波
UWORD count,a,maxdate;
unsigned long unixtime2;
unsigned long TS;
unsigned long ts=0;
unsigned short xllow;
unsigned short xlhigh;
signed long x=30;
int c[3], g[3], e[3], f[3];
int tempcurrent; //现在温度
int TC=189;
//***************************************************************
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -