|
楼主 |
发表于 2010-11-30 08:13:43
|
显示全部楼层
这是函数定义
void Calculate_Balance_Resistance(float u_p_old,float u_n_old,float u_p_new,float u_n_new,unsigned char mx)
{
float r_p,r_n;
float divisor;//除数
divisor = ((u_p_old-u_n_old)*u_n_new*R0_1 + (u_n_new-u_p_new)*u_n_old*R0_0);
if(divisor == 0) r_p = R_MAX;
else r_p = ((u_p_new*u_n_old - u_p_old*u_n_new)*R0_0*R0_1) / divisor;
divisor = ((u_n_old-u_p_old)*u_p_new*R0_1 + (u_p_new-u_n_new)*u_p_old*R0_0);
if(divisor == 0) r_n = R_MAX;
else r_n = ((u_p_old*u_n_new - u_p_new*u_n_old)*R0_0*R0_1) / divisor;
if(r_p < 0 || r_p > R_MAX) r_p = R_MAX;
if(r_n < 0 || r_n > R_MAX) r_n = R_MAX;
if(mx == 1)//一段母线
{
R1_P = r_p * 10;
R1_N = r_n * 10;
//当两段并联运行或者两段独立运行并且母联闭合时,一二段对地电阻一致
if(NOW_MX_RUN_STAT == 3)
{
R2_P = R1_P;
R2_N = R1_N;
}
}
else if(mx == 2)//二段母线
{
R2_P = r_p * 10;
R2_N = r_n * 10;
}
}
这是调用的地方
Calculate_Balance_Resistance(U1_P_OLD,U1_N_OLD,U1_P_NEW,U1_N_NEW,1); |
|