Esempio n. 1
0
        //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);
        }
Esempio n. 2
0
        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);
        }