The function park calculates the matrix P that transforms abc variables into dq0 variables with arbitrary angular orientation theta.
P can be factorised into a constant, angle independent orthogonal matrix P0 and an angle-dependent rotation R
P(theta) = R'(theta)*P0
Using the definition
c_k = cos(theta - k*2*pi/3), k=0,1,2 (phases a, b, c) s_k = sin(theta - k*2*pi/3), k=0,1,2 (phases a, b, c)
it takes the form
[ c_0, c_1, c_2] P(theta) = sqrt(2/3)*[-s_0, -s_1,-s_2] [ w, w, w ]with
[ 1, -1/2, -1/2] P0 = P(0) = sqrt(2/3)*[ 0, sqrt(3)/2, -sqrt(3)/2] [ w, w, w]and
[c_0, -s_0, 0] R(theta) = [s_0, c_0, 0] [ 0, 0, 1]
function park extends Modelica.Icons.Function; input SI.Angle theta "transformation angle"; output Real[3, 3] P "Park transformation matrix"; end park;