打印

贴一段程序,大家帮忙看看,给讲解一下

[复制链接]
1484|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
jiweili010|  楼主 | 2012-3-21 09:49 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
TE, ui, ADDR, AD, DDR
//计算电压电流
void Mea_Pq(int *addr1,int *addr2,uint abc)
{
float temp_ur,temp_ui,temp_ir,temp_ii;
float bianbi[6];
uint i;
temp_ur=0;
temp_ui=0;
temp_ir=0;
temp_ii=0;
for(i=0;i<6;i++)
{
  if(bl_xishu>1100||bl_xishu<900)bl_xishu=1000;
  bianbi=bl_xishu;  
  bianbi/=1000;  
}

for(i=0;i<36;i++)
{
  temp_ur+=*(addr1+i)*cs0;    //cs0,cs1是sin 和 cos的值,相当于Ir(i)*sin(i)  Ii(i)*cos(i)
  temp_ui+=*(addr1+i)*cs1;
}
temp_ur/=FOUR_D;  //FOUR_D  65535
temp_ui/=FOUR_D;
temp_ur*=ui_xishu;  //ui_xishu     0.0330682171858            /* 2/(36*2*sin5)*87/1024 */
temp_ui*=ui_xishu;  
temp_ur*=bianbi[abc];
temp_ui*=bianbi[abc];
u_abc[abc][mea_count]=sqrt(temp_ur*temp_ur+temp_ui*temp_ui);

for(i=0;i<36;i++)
{
  temp_ir+=*(addr2+i)*cs0;
  temp_ii+=*(addr2+i)*cs1;
}
temp_ir/=FOUR_D;
temp_ii/=FOUR_D;
temp_ir*=ci_xishu;    /* 2/(36*2*sin5)*2.1/1024 */
temp_ii*=ci_xishu;
temp_ir*=bianbi[abc+3];
temp_ii*=bianbi[abc+3];
// i_abc[abc][mea_count]=sqrt(temp_ir*temp_ir+temp_ii*temp_ii)*ct_array[SET_CT]/5;
i_abc[abc][mea_count]=sqrt(temp_ir*temp_ir+temp_ii*temp_ii);
//if(i_abc[abc][mea_count]<0.03)i_abc[abc][mea_count]=0;                  /*30MA*/
//  else i_abc[abc][mea_count]=i_abc[abc][mea_count]*ct_array[SET_CT]/5;
  
p_abc[abc][mea_count]=(temp_ur*temp_ir+temp_ui*temp_ii)*ct_array[SET_CT]/500;
q_abc[abc][mea_count]=(temp_ui*temp_ir-temp_ur*temp_ii)*ct_array[SET_CT]/500;

c_abc[abc][mea_count]=p_abc[abc][mea_count]/sqrt((p_abc[abc][mea_count]*p_abc[abc][mea_count]+q_abc[abc][mea_count]*q_abc[abc][mea_count]));//功率因数
  
}
//计算谐波FFT
float Xiebo_Fft(int * PP,uint i)
{
float Valr,Vali,Max,Min,Value;
int j,k;
Valr=0;
  Vali=0;
  Value=0;
  k=0;
        
for (j=0;j<36;j++)
  {
   Valr=Valr+(*(PP+j))*cs0[k];
    Vali=Vali+(*(PP+j))*cs1[k];
   k=k+i;
   if (k>=36) k=k-36;
   }
    Valr=Valr/FOUR_D;
    Vali=Vali/FOUR_D;
    Value=sqrt(Valr*Valr+Vali*Vali);  
    return(Value);
}        


这程序是我程序员联合开发网上下载的。是关于无功补偿控制器的采样后的计算部分中的一块。我想问的问题是采回的AD值乘以相应的sin或cos之后,再乘的那个系数是怎么得到的,依据什么计算出来的,这两个系数是ui_xishu,ci_xishu这两个变量。我不知道这段程序是否正确,我是想了解无功控制补偿器处理数据的方法

相关帖子

沙发
yewuyi| | 2012-3-21 11:17 | 只看该作者
你管他代码怎么写,你去弄清楚有功或无功补偿的公式不就得了?

使用特权

评论回复
板凳
liang7143| | 2012-3-21 11:34 | 只看该作者
磨刀不误砍柴工啊
看不懂别人代码时,先看原理

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

0

主题

23

帖子

0

粉丝