⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 main.h

📁 基于AVR的一种程序,智能控制器,可用于低压无功补偿部分,
💻 H
字号:
/*main*/ 

/*ad采样需要的数据*/
int samp0[36],samp1[36],samp2[36],samp3[36],samp4[36],samp5[36];     /*原始采样数据*/
int samp6[36],samp7[36],samp8[36],samp9[36],samp10[36],samp11[36];   /*备份数据*/

/*采样循环指针*/
int samp=0;
uint mea_count=0,xb_count1=0,xb_count2=0;
float u_abc[3][20],i_abc[3][20],p_abc[3][20],q_abc[3][20],c_abc[3][20];
float xiebo[6][16];                            /* 电压电流2-18次谐波*/
uint  f_abc[20],f_bak,per_bak;
uint  cos_flag[3],p_flag[3],q_flag[3];                  /*正数的为0,负数为1*/

/* 采样频率 */
uint pin_lv1,pin_lv2,pin_lv=36;
uint pin_count;

/*时间计数器*/
uint time_count=0;

/**time.c*/
/*系统时间*/
uint p_second,p_minute,p_hour,p_day,p_month,p_year;
uint temp_second,temp_minute,temp_hour,temp_day,temp_month,temp_year;
uint timer[6];/*year month day hour minute second*/
uint time_flag=0;

#pragma DATA_SECTION(start_int,"SARAM")
uint start_int;            /*判是上电复位还是掉电*/

uint err_state=0;          /*故障状态*/

/*save.c*/
uint flash_buffer[255];


/*uart.c*/
uint receive[1000];
uint receive_temp[50];                /*接收的有用数据*/
uint copy_count=0;                      /*解析有用数据计数器*/
uint rece_count;                      /*接收数据计数器*/
uint rece_flag;                       /*有未处理数据*/
uint serial_count;                    /*处理数据计数器*/
uint send_data[1000];
uint send_count=0;

uint rece_begain_flag=1;               /*报文头标志*/
uint rece_addr1_flag=0;								 /*地址1标志*/
uint rece_addr2_flag=0;                /*地址2标志*/
uint rece_enable_flag=0;               /*报文头标志*/
uint rece_con1_flag=0;                 /*控制码一*/
uint rece_con2_flag=0;                 /*控制码二*/
uint rece_l1_flag=0;                   /*数据长度一*/ 
uint rece_l2_flag=0;                   /*数据长度二*/
uint rece_data1_flag=0;                /*数据一*/
uint rece_cs_flag=0;                   /*数据校验和*/
uint rece_end_flag=0;                  /*桢结束标志*/
uint rece_fin_flag=0;                  /*完整桢标志*/

uint rece_addr[2]={0,0};                   /*接收地址*/
uint rece_con[2]={0,0};                    /*接收控制码*/
uint rece_long[2]={0,0};                   /*接收数据长度*/

uint read_set_flag=0;                  /*读设置参数标志*/
uint write_set_flag=0;                 /*写设置参数标志*/
uint write_control_flag=0;             /*写控制投切标志*/ 
uint read_ss_flag=0;                   /*读实时数据标志*/
uint wr_time_flag=0;                   /*写时钟数据标志*/
uint read_zd_flag=0;                   /*读整点数据标志*/
uint read_tj_flag=0;                   /*读统计数据标志*/
uint read_td_flag=0;                   /*读停电数据标志*/
uint wr_bl_flag=0;                     /*写比例系数标志*/
uint chushihua=0;                      /*初始化数据区*/
uint set_power_flag=0;                 /*设置电量表底*/

/*tq.c*/
//uint c_state=0;                       /*电容状态*/
uint guzhang[3]={0,0,0};
uint cap[12];                         /*电容的有无标志和容值*/
uint group=0;                         /*投三角行电容,切分相*/
uint t_count[4]={0,2,4,6};            /*投计数器,A、B、C、三角*/
uint q_count[4]={0,2,4,6};            /*切计数器,A、B、C、三角*/
uint t_over[4]={0,0,0,0};             /*投完标志,A、B、C、三角*/
uint q_over[4]={0,0,0,0};             /*切完标志,A、B、C、三角*/
uint tou_state[4]={0,0,0,0};          /*投满的状态,A、B、C、三角*/
uint tou_flag[4]={0,0,0,0};           /*投电容标志,A、B、C、三角*/
uint qie_flag[4]={0,0,0,0};           /*切电容标志,A、B、C、三角*/
uint dongzuo[4]={0,0,0,0};            /*动作标志,  A、B、C、三角*/
uint dzuo_q[4]={0,0,0,0};             /*切动作标志, A  B  C 三角*/
uint tq_time[4]={0,0,0,0};            /*投切延时时间计数器*/
uint q_time[4]={0,0,0,0};             /*切延时时间计数器*/


/*比例系数*/
//#define ui_xishu		 0.0271267361111            /* ((2/36)*(500/1024)) */
//#define ci_xishu		 6.5104166667e-4            /* ((2/36)*(12/1024))  */

#define ui_xishu     0.0330682171858            /* 2/(36*2*sin5)*87/1024 */ 
#define ci_xishu     6.5361322200e-4            /* 2/(36*2*sin5)*2.1/1024 */ 
/*
float uxb_xishu[16]=
{
	0.0405993319,0.027239108301,0.020612821021,0.016681721161,
	0.014100000000,0.012291299909,0.010967852979,0.009970205615,
	0.009203121389,0.008606460850,0.008140638795,0.007812001869,
	0.007534461768,0.007329836238,0.007189299741,0.007107122871,
};

float ixb_xishu[16]=
{
	7.81083236e-4,5.24048299e-4,3.96566352e-4,3.20936631e-4,
	2.71267361e-4,2.36470106e-4,2.11008546e-4,1.91814991e-4,
	0.0001770572,1.65578151e-4,1.56616284e-4,1.49655208e-4,
	1.44338348e-4,1.40418319e-4,1.37726049e-4,1.36151779e-4,
};
*/
/*电压谐波系数*/
//#define xbu_xishu      0.02655683003              /* 2/(36*2*sin10)*170/1024 */
#define xbu_xishu      0.03265683003              /* 2/(36*2*sin10)*170/1024 */
#define xbi_xishu      6.24866589e-4              /* 2/(36*2*sin10)*4/1024 */

//#define uer_xishu    0.0405993319             /* 2/(36*2*sin10)*260/1024 */   
/*
#define usan_xishu   0.027239108301
#define usi_xishu    0.020612821021
#define uwu_xishu    0.016681721161

#define uliu_xishu   0.014100000000
#define uqi_xishu    0.012291299909
#define uba_xishu    0.010967852979
#define uj_xishu     0.009970205615

#define ushi_xishu   0.009203121389
#define usy_xishu    0.008606460850
#define use_xishu    0.008140638795
#define uss_xishu    0.007812001869

#define uss_xishu    0.007534461768
#define usw_xishu    0.007329836238
#define usl_xishu    0.007189299741
#define usq_xishu    0.007107122871
*/

/*电流谐波系数*/


//#define ier_xishu     7.81083236e-4            /* 2/(36*2*sin10)*5/1024 */ 
/*  
#define isan_xishu    5.24048299e-4
#define isi_xishu     3.96566352e-4
#define iwu_xishu     3.20936631e-4

#define iliu_xishu    2.71267361e-4
#define iqi_xishu     2.36470106e-4
#define iba_xishu     2.11008546e-4
#define ij_xishu      1.91814991e-4

#define ishi_xishu    0.0001770572
#define isy_xishu     1.65578151e-4
#define ise_xishu     1.56616284e-4
#define iss_xishu     1.49655208e-4

#define iss_xishu     1.44338348e-4
#define isw_xishu     1.40418319e-4
#define isl_xishu     1.37726049e-4
#define isq_xishu     1.36151779e-4
*/


/*校正系数*/
uint bl_xishu[6];

long cs0[36]=
{
	00000,11380,22415,32768,42126,50203,56756,61584,64540,
	65536,64540,61584,56756,50203,42126,32768,22415,11380,
	00000,-11380,-22415,-32768,-42126,-50203,-56756,-61584,-64540,
	-65536,-64540,-61584,-56756,-50203,-42126,-32768,-22415,-11380
};

long int cs1[36]=
{
	65536,64540,61584,56756,50203,42126,32768,22415,11380,
	00000,-11380,-22415,-32768,-42126,-50203,-56756,-61584,-64540,
	-65536,-64540,-61584,-56756,-50203,-42126,-32768,-22415,-11380,
	-00000,11380,22415,32768,42126,50203,56756,61584,64540
};

struct
{    
    uint avr_u[4];             /* 相电压 */    
    uint avr_i[4];             /* 相电流 */
    uint avr_c[3];             /* 功率因数 */
    uint avr_f;                /* 频率 */   
    uint avr_p[3];             /* 有功 */
    uint avr_q[3];             /* 无功 */    
    uint c_status;             /* 电容状态 */    
}up1_data;  

struct
{
	uint avr_xb[6][16];            /* 显示谐波数据 */
	uint avr_zxb[6];               /*总谐波*/
}up2_data;

/*设置数据*/
/* 密码 ID号 CT变比 有功电能 无功电能 */
/* 电压保护上下限 谐波保护门限 零序保护门限*/
/* 电压统计上限 电压统计下限 投入无功容量 切除无功容量*/
/* 目标功率因数 投切延时 角型电容路数 星型电容路数*/
/* 角型电容编码 星型电容编码 角型电容容量 星型电容容量*/

struct
{
	uint set_shuju[19];	
}up3_data;

/*设置数据的BCD码*/
uint set_mm[4]={0,0,0,0};
uint input_mm[4]={0,0,0,0};
uint set_id[4]={0,0,0,0};
uint set_yg[4];         /*有功电量*/
uint set_wg[4];         /*无功电量*/
float p_yg=0;
float p_wg=0;
//ulong p_power=0;
//ulong q_power=0;
uint ct_array[19]=
{
	100,150,200,250,300,400,500,600,750,800,
	1000,1200,1500,2000,2500,3000,4000,5000,6000
};

/*key.c*/
uint p_key=0;
uint p_mode=0;
uint p_screen=0X0FF;
uint enter_flag=0;       /*修改参数确认键标志*/
uint screen_flag=0;      /*换屏标志*/

/*disp.c*/
uint led_flag=0;         /*开背景灯标志*/
uint led_count=0;        /*灯光延时计数器*/

/* save.c */
/*************统计数据**************************************************************************/
/*ABC相电压超上限时间、ABC相电压超下限时间、ABC相缺相时间***********************************9***/
/*A相电压最大值、发生时间、B相电压最大值、发生时间、C相电压最大值、发生时间*****************6***/
/*A相电压最小值、发生时间、B相电压最小值、发生时间、C相电压最小值、发生时间*****************6***/
/*A相电流最大值、发生时间、B相电流最大值、发生时间、C相电流最大值、发生时间*****************6***/
/*A相电流最小值、发生时间、B相电流最小值、发生时间、C相电流最小值、发生时间*****************6***/
/*A相15分钟电流最大值、发生时间、B相15分钟电流最大值、发生时间、C相15分钟电流最大值、发生时间*6*/
/*总P最大值、发生时间、总Q最大值、发生时间****************************************************4*/
/*A相电压谐波最大值、发生时间、B相电压谐波最大值、发生时间、C相电压谐波最大值、发生时间******6**/
/*A相电流谐波最大值、发生时间、B相电流谐波最大值、发生时间、C相电流谐波最大值、发生时间******6**/
/*C1--C12电容投入时间、ABC电容投切次数、三相电容投切次数*************************************16*/
/*三相最大电流不平横率、发生时间、三相最大电压不平横率、发生时间******************************4*/
/*ACOS大于0。9时间、BCOS大于0。9时间、CCOS大于0。9时间、**************************************3*/
/*系统运行时间********************************************************************************1*/
/*共158字节*/
/*********************************************************************************************/
struct
{
	uint tj_shuju[160];            /* 统计数据 */	
}up4_data;

uint minute_15=0;                  /*15分钟计时*/

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -