コード例 #1
0
ファイル: PMSM_VShape.cs プロジェクト: wtliu/pmsm_calculation
 PMSM_VShape(Geo_PMSM_MagnetVShape geo)
 {
     this.geo         = geo;
     gmc              = geo.buildGMC();
     OutputFolder     = ".\\out\\";
     OutputFileResult = OutputFolder + "result.txt";
 }
コード例 #2
0
        /// <summary>
        /// Make a GMC, All lengths are converted from mm to m
        /// </summary>
        /// <returns></returns>
        public GeneralMagnetCircuit buildGMC()
        {
            if (!isPointsCoordCalculated)
            {
                CalcPointsCoordinates();
            }

            /////assign for shorten variables
            //material
            double Br   = MaterialParams.Br;
            double mu_0 = MaterialParams.mu_0;
            double mu_M = MaterialParams.mu_M;
            double Bsat = MaterialParams.Bsat;
            double Hc   = MaterialParams.Hc;
            //coeff
            double Kc = Coeffs.Kc;
            //rotor
            double lm     = RotorParams.lm;
            double Rrotor = RotorParams.Rrotor;
            int    p      = RotorParams.p;
            double wFe    = RotorParams.wFe;
            double alphaM = RotorParams.alphaM;
            double wFe2   = RotorParams.wFe2;
            double wb2min = RotorParams.wb2min;
            //stator
            int    Q         = StatorParams.Q;
            double Dstator   = StatorParams.Dstator;
            double Rinstator = StatorParams.Rinstator;
            double L         = StatorParams.L;
            double wy        = StatorParams.wy;
            double ly        = StatorParams.ly;
            double lz        = StatorParams.lz;
            double wz        = StatorParams.wz;

            //calc sizes of barrier and bridge
            double bf   = Math.Sqrt(Math.Pow(xF - xB, 2) + Math.Pow(yF - yB, 2));
            double af   = Math.Sqrt(Math.Pow(xF - xA, 2) + Math.Pow(yF - yA, 2));
            double wm   = (yB - yC) / Math.Sin(RotorParams.alphaM);
            double wb2  = yD + yC;
            double lb2  = xC - xD;
            double lFe  = RotorParams.wFe2 + bf;
            double lFe2 = af;
            double wb1  = af / 2;
            double lb1  = bf;

            ///// create GMC
            GeneralMagnetCircuit gmc = new GeneralMagnetCircuit();

            // start calculation permeance
            if (Kc == 0)
            {
                Kc = 1;//default carter coefficient
            }
            double delta = Rinstator - Rrotor;
            double wslot = 2 * Rinstator * Math.PI / Q - wz;
            int    Nz    = Q / (2 * p);
            double wd    = (Rrotor + delta / 2) * 2 * Math.PI / (2 * p);

            // magnet parameters
            gmc.phiR = Br * 2 * wm * L * 1e-6;
            gmc.PM   = mu_0 * mu_M * 2 * wm * L / lm * 1e-3;
            gmc.Fc   = Hc * lm * 1e-3;

            // airgap
            gmc.Pd = mu_0 * wd * L / (delta * Kc) * 1e-3;

            // leakage path parameters
            gmc.phiHFe = Bsat * 2 * wFe * L * 1e-6;
            gmc.PFe    = mu_0 * 2 * wFe * L / lFe * 1e-3;
            double Pb1 = mu_0 * wb1 * L / lb1;
            double Pb2 = mu_0 * wb2 * L / lb2;

            gmc.Pb = (Pb1 + Pb2) * 1e-3;

            // stator teeth and yoke
            ly        = 0.5 * (Dstator - wy) * Math.PI / (2 * p);
            gmc.Sz    = Nz * wz * L * 1e-6;
            gmc.Sy    = 2 * wy * L * 1e-6;
            gmc.lz    = lz * 1e-3;
            gmc.ly    = ly * 1e-3;
            gmc.Pslot = mu_0 * wslot * L / lz * 1e-3;

            // steel characteristic
            gmc.Barray = MaterialParams.B;
            gmc.Harray = MaterialParams.H;

            return(gmc);
        }