Sample induction machine simulation, based on Runge-Kutta algorithm. P. T. Krein, March 2010 Parameters Lls := 0.0008 Lm := 0.035 Ls := Lls + Lm Rr := 0.1 Lr := Lls + Lm Rs := 0.04 p := 2 J := 0.01 Load torque, corrected for direction ( ) 2 Tload( wm) := sign( wm) ⋅ 0.00007 ⋅ wm + 0.02⋅ wm + 0.5 Input (this case is for line start). The orthogonal Park transformation yields a vds value that matches the line to line RMS value. vds := 230 vqs := 0 vdr := 0 vqr := 0 ws := 120 ⋅ π The algebraic relationships between current and flux linkage: ⎛⎜ lamds ⎞⎟ ⎛⎜ Ls ⎜ lamqs ⎟ = ⎜ 0 ⎜ lamdr ⎟ ⎜ Lm ⎜ lamqr ⎟ ⎜ 0 ⎝ ⎠ ⎝ ⎞⎟ ⎛⎜ ids ⎞⎟ Ls 0 Lm ⎟ ⎜ iqs ⎟ ⋅ 0 Lr 0 ⎟ ⎜ idr ⎟ ⎟⎜ ⎟ Lm 0 Lr ⎠ ⎝ iqr ⎠ 0 Lm 0 Define the L matrix to set up the inverse of this algebraic case, since we need current. ⎛⎜ Ls 0 lmattrix = ⎜ ⎜ Lm ⎜ 0 ⎝ 0 Lm Ls 0 0 Lr Lm 0 0 ⎞⎟ Lm ⎟ ⎟ ⎟ Lr ⎠ 0 ⎛⎜ Ls 0 linv = ⎜ ⎜ Lm ⎜ 0 ⎝ ⎞⎟ Ls 0 Lm ⎟ 0 Lr 0 ⎟ ⎟ Lm 0 Lr ⎠ 0 Lm 0 −1 Lr Lm ⎛⎜ − ⎞⎟ 0 0 2 2 ⎜ Lm − Lr⋅ Ls ⎟ Lm − Lr⋅ Ls ⎜ ⎟ Lr Lm ⎜ − 0 ⎟ 0 2 2 ⎜ Lm − Lr⋅ Ls Lm − Lr⋅ Ls ⎟ linv := ⎜ ⎟ Ls Lm ⎜ ⎟ − 0 0 2 ⎜ Lm2 − Lr⋅ Ls ⎟ Lm − Lr⋅ Ls ⎜ ⎟ Ls Lm ⎜ ⎟ 0 − 0 2 2 ⎜ ⎟ Lm − Lr⋅ Ls ⎠ Lm − Lr⋅ Ls ⎝ 0 −617.938 0 ⎛⎜ 632.062 ⎞⎟ 0 632.062 0 −617.938 ⎟ linv = ⎜ ⎜ −617.938 ⎟ 0 632.062 0 ⎜ 0 ⎟ −617.938 0 632.062 ⎠ ⎝ Now, the current relationships: ids( λds , λqs , λdr , λqr ) := linv ⋅ λds + linv ⋅ λqs + linv ⋅ λdr + linv ⋅ λqr iqs( λds , λqs , λdr , λqr ) := linv ⋅ λds + linv ⋅ λqs + linv ⋅ λdr + linv ⋅ λqr 0, 0 0, 1 1, 0 0, 2 1, 1 0, 3 1, 2 1, 3 idr( λds , λqs , λdr , λqr ) := linv ⋅ λds + linv ⋅ λqs + linv ⋅ λdr + linv ⋅ λqr iqr( λds , λqs , λdr , λqr ) := linv ⋅ λds + linv ⋅ λqs + linv ⋅ λdr + linv ⋅ λqr 2, 0 3, 0 2, 1 3, 1 2, 2 3, 2 The differential equations for flux linkage, from Krause p. 150. 2, 3 3, 3 x sub 4 is the speed. The torque is equation 4.6-4, except that the factor of 3/2 is an artifact of a non-orthogonal Park matrix and will not appear. ⎤ ⎡ (vds − Rs⋅ids(x0 , x1 , x2 , x3)) + ws⋅x1 ⎢ ⎥ vqs − Rs⋅ iqs( x , x , x , x ) − ws⋅ x ⎢ ⎥ 0 1 2 3 0 ⎢ ⎥ vdr − Rr⋅ idr( x , x , x , x ) + ( ws − x ) ⋅ x ⎢ ⎥ 0 1 2 3 4 3 D( t , x ) := ⎢ ⎥ vqr − Rr⋅ iqr( x , x , x , x ) − ( ws − x ) ⋅ x 0 1 2 3 4 2 ⎢ ⎥ ⎢ ⎥ p ⎢ ( x0⋅ iqs( x 0 , x1 , x 2 , x3) − x1⋅ ids( x 0 , x1 , x 2 , x3) ) ⋅ − Tload( x 4) ⎥ 2 ⎢ ⎥ J ⎣ ⎦ Here x0 is lambda ds, x1 is lambda qs, x2 is lambda dr, x3 is lambda qr, x4 is speed. Initialize with zero all around: ⎛ 0.1 ⎞ ⎜0 ⎟ ⎜ ⎟ init := ⎜ 0.1 ⎟ ⎜0 ⎟ ⎜ ⎟ ⎝0 ⎠ tstart := 0 tend := 1 npoints := 10000 Use the MathCAD Runge-Kutta expression. y := rkfixed ( init , tstart , tend , npoints , D) Redefine results to make them easier to follow 〈0〉 time := y kk := 0 .. npoints 〈1〉 λds := y 〈2〉 λqs := y 〈3〉 λdr := y 〈4〉 λqr := y 〈5〉 wm := y Here is speed. 400 300 wmkk 200 100 0 − 100 0 0.2 0.4 0.6 timekk wm 9000 = 371.955 wm ⋅ 30 9000 π = 3.552 × 10 3 0.8 1