//public static Single[] GetPhiGlys(int int_Clfs, /// <summary> /// 计算角度 分相计算 /// /// </summary> /// <param name="int_Clfs">测量方式</param> /// <param name="str_Glys">功率因数</param> /// <param name="int_Element">逆相序</param> /// <param name="bln_NXX">逆相序</param> /// <param name="isYouGong">有、无功</param> /// <returns>返回数组,数组元素为各相ABC相电压电流角度</returns> public static Single[] GetPhiGlys(int int_Clfs, string str_Glys, int int_Element, Cus_PowerPhase bln_NXX, bool isYouGong) { /* * /* 三相四线有功 = 0, * 三相四线无功 = 1, * 三相三线有功 = 2, * 三相三线无功 = 3, * 二元件跨相90 = 4, * 二元件跨相60 = 5, * 三元件跨相90 = 6, * * 三相四线=0, * 三相三线=1, * 二元件跨相90=2, * 二元件跨相60=3, * 三元件跨相90=4, * 单相=5 * */ string str_CL = str_Glys.ToUpper().Substring(str_Glys.Length - 1, 1); Double dbl_XS = 0; if (str_CL == "C" || str_CL == "L") { dbl_XS = Convert.ToDouble(str_Glys.Substring(0, str_Glys.Length - 1)); } else { dbl_XS = Convert.ToDouble(str_Glys); } Double dbl_Phase; if (!isYouGong) { dbl_Phase = Math.Asin(Math.Abs(dbl_XS)); //无功计算 } else { dbl_Phase = Math.Acos(Math.Abs(dbl_XS)); //有功计算 } dbl_Phase = dbl_Phase * 180 / Math.PI; //角度换算 if (dbl_XS < 0) { dbl_Phase = 180 + dbl_Phase; //反向 } if (str_CL == "C") { dbl_Phase = 360 - dbl_Phase; } if (dbl_Phase < 0) { dbl_Phase = 360 + dbl_Phase; } Single sng_UIPhi = Convert.ToSingle(dbl_Phase); Single[] sng_Phi = new Single[6]; if (isYouGong) { switch (str_Glys.Trim().ToUpper()) { case "0.5L": sng_UIPhi = 60F; break; case "0.8C": sng_UIPhi = 330F; break; case "0.5C": sng_UIPhi = 300F; break; case "0.25L": sng_UIPhi = 75.5F; break; default: break; } sng_Phi[0] = 0; //Ua sng_Phi[1] = 0; //Ub sng_Phi[2] = 0; //Uc } else { switch (str_Glys.Trim().ToUpper()) { case "1.0": sng_UIPhi = 90F; break; case "0.5L": sng_UIPhi = 30F; break; case "0.8C": sng_UIPhi = 120F; break; case "0.5C": sng_UIPhi = 150F; break; case "0.25L": sng_UIPhi = 14.5F; break; default: break; } sng_Phi[0] = 90; //Ua sng_Phi[1] = 90; //Ub sng_Phi[2] = 90; //Uc } //if (bln_NXX) //{ //sng_Phi[0] = 0; //Ua //sng_Phi[1] = 240; //Ub //sng_Phi[2] = 120; //Uc //sng_Phi[0] = 0; //Ua //sng_Phi[1] = 0; //Ub //sng_Phi[2] = 0; //Uc //} //else //{ //} sng_Phi[3] = sng_Phi[0] + sng_UIPhi; //Ia sng_Phi[4] = sng_Phi[1] + sng_UIPhi; //Ib sng_Phi[5] = sng_Phi[2] + sng_UIPhi; //Ic //if (int_Clfs == 2 || int_Clfs == 3) //{ // sng_Phi[2] += 60; //Uc // sng_Phi[3] += 30; //Ia // sng_Phi[4] += 30; //Ib // sng_Phi[5] += 30; //Ic //} sng_Phi[3] %= 360; //Ia sng_Phi[4] %= 360; //Ib sng_Phi[5] %= 360; //0, 240, 120, 0, 240, 120 //0, 240, 120, 180, 60, 300 //0, 240, 120, 30, 270, 150 //0, 240, 120, 210, 90, 330, return(sng_Phi); }
public static Single[] GetPhiGlys(Cus_Clfs Clfs, Cus_PowerFangXiang Glfx, Cus_PowerYuanJian Glyj, string strGlys, Cus_PowerPhase bln_Nxx) { Single sngAngle; Single[] sng_Phi = new Single[7]; int intFX; int intClfs; int m_intClfs; Single sngPhiTmp; intClfs = (int)Clfs; m_intClfs = intClfs; intFX = (int)Glfx; if (intClfs == 0) { if (intFX == 1 || intFX == 2) { intClfs = 0; } else { intClfs = 1; } } else if (intClfs == 1) { if (intFX == 1 || intFX == 2) { intClfs = 2; } else { intClfs = 3; } } else if (intClfs == 5) { if (intFX == 1 || intFX == 2) { intClfs = 0; } else { intClfs = 1; } } //电压电流相位 sngAngle = GetGlysAngle(intClfs, strGlys); sngAngle = (int)sngAngle; sng_Phi[6] = sngAngle; if (m_intClfs == 0) { //----------------三相四线角度------------------------ sng_Phi[0] = 0; //Ua sng_Phi[1] = 240; //Ub sng_Phi[2] = 120; //Uc sng_Phi[3] = sng_Phi[0] - sngAngle; sng_Phi[4] = sng_Phi[1] - sngAngle; sng_Phi[5] = sng_Phi[2] - sngAngle; if (sng_Phi[3] > 360) { sng_Phi[3] = sng_Phi[3] - 360; } if (sng_Phi[3] < 0) { sng_Phi[3] = sng_Phi[3] + 360; } if (sng_Phi[4] > 360) { sng_Phi[4] = sng_Phi[4] - 360; } if (sng_Phi[4] < 0) { sng_Phi[4] = sng_Phi[4] + 360; } if (sng_Phi[5] > 360) { sng_Phi[5] = sng_Phi[5] - 360; } if (sng_Phi[5] < 0) { sng_Phi[5] = sng_Phi[5] + 360; } //如果是反向要将电流角度反过来 if (strGlys.IndexOf('-') == -1) { if (intFX == 2 || intFX == 4) { sng_Phi[3] = sng_Phi[3] + 180; sng_Phi[4] = sng_Phi[4] + 180; sng_Phi[5] = sng_Phi[5] + 180; if (sng_Phi[3] > 360) { sng_Phi[3] = sng_Phi[3] - 360; } if (sng_Phi[4] > 360) { sng_Phi[4] = sng_Phi[4] - 360; } if (sng_Phi[5] > 360) { sng_Phi[5] = sng_Phi[5] - 360; } } } if (bln_Nxx == Cus_PowerPhase.电流逆相序) { sngPhiTmp = sng_Phi[0]; sng_Phi[0] = sng_Phi[1]; sng_Phi[1] = sngPhiTmp; } else if (bln_Nxx == Cus_PowerPhase.电压逆相序) { sngPhiTmp = sng_Phi[3]; sng_Phi[3] = sng_Phi[4]; sng_Phi[4] = sngPhiTmp; } } else if (m_intClfs == 1) { //---------------三相三线角度-------------------- sng_Phi[0] = 0; //Ua sng_Phi[2] = 120; //Uc sng_Phi[3] = sng_Phi[0] - sngAngle; sng_Phi[5] = sng_Phi[2] - sngAngle; sng_Phi[0] = 30; sng_Phi[2] = 90; if (Glyj != Cus_PowerYuanJian.H) { sng_Phi[3] = sng_Phi[0] - sngAngle; sng_Phi[5] = sng_Phi[2] - sngAngle; } if (sng_Phi[3] > 360) { sng_Phi[3] = sng_Phi[3] - 360; } if (sng_Phi[3] < 0) { sng_Phi[3] = sng_Phi[3] + 360; } if (sng_Phi[5] > 360) { sng_Phi[5] = sng_Phi[5] - 360; } if (sng_Phi[5] < 0) { sng_Phi[5] = sng_Phi[5] + 360; } //如果是反向要将电流角度反过来 if (strGlys.IndexOf('-') == -1) { if (intFX == 2 || intFX == 4) { sng_Phi[3] = sng_Phi[3] + 180; sng_Phi[5] = sng_Phi[5] + 180; if (sng_Phi[3] > 360) { sng_Phi[3] = sng_Phi[3] - 360; } if (sng_Phi[5] > 360) { sng_Phi[5] = sng_Phi[5] - 360; } } } } else if (m_intClfs == 2) { //-----------三元件跨相90°无功表角度------------------ sng_Phi[0] = 0; //Ua sng_Phi[1] = 240; //Ub sng_Phi[2] = 120; //Uc sng_Phi[3] = sng_Phi[0] - sngAngle; sng_Phi[4] = sng_Phi[1] - sngAngle; sng_Phi[5] = sng_Phi[2] - sngAngle; //sngPhiUab = 30; //Uab //sngPhiUbc = 270; //Ubc //sngPhiUca = 150; //Uca if (sng_Phi[3] > 360) { sng_Phi[3] = sng_Phi[3] - 360; } if (sng_Phi[3] < 0) { sng_Phi[3] = sng_Phi[3] + 360; } if (sng_Phi[4] > 360) { sng_Phi[4] = sng_Phi[4] - 360; } if (sng_Phi[4] < 0) { sng_Phi[4] = sng_Phi[4] + 360; } if (sng_Phi[5] > 360) { sng_Phi[5] = sng_Phi[5] - 360; } if (sng_Phi[5] < 0) { sng_Phi[5] = sng_Phi[5] + 360; } } else { //-----------单相表------------------ sng_Phi[0] = 0; //Ua sng_Phi[3] = sng_Phi[0] - sngAngle; if (sng_Phi[3] > 360) { sng_Phi[3] = sng_Phi[3] - 360; } if (sng_Phi[3] < 0) { sng_Phi[3] = sng_Phi[3] + 360; } //如果是反向要将电流角度反过来 if (strGlys.IndexOf('-') == -1) { if (intFX == 2 || intFX == 4) { sng_Phi[3] = sng_Phi[3] + 180; if (sng_Phi[3] > 360) { sng_Phi[3] = sng_Phi[3] - 360; } } } } return(sng_Phi); }