坐标变换(Clark,Park,反Park)
Q15格式
电流为Ia,Ib,Ic,角度θ
Clark:
struct_Clark Clarke(struct_Curr_abc Iphase)
{
struct_Clark Clarke_Output;
Clarke_Output.Alpha = Iphase.Ia; // (2/3)*[Ia -(1/2)*Ib - (1/2)*Ic]
Clarke_Output.Beta = (18918 * (Iphase.Ia + Iphase.Ib*2)>>15); // (2/3)*[(sqrt(3)/2)*Ib - (sqrt(3)/2)*Ic]
return(Clarke_Output);
}
```c
Park:
```c
struct_Park Park(struct_SinCos SinCosVal, struct_Clark Clarke)
{
struct_Park Park_Output;
Park_Output.Id = ((SinCosVal.Cos * Clarke.Alpha)>>15) + ((SinCosVal.Sin * Clarke.Beta)>>15);
Park_Output.Iq = ((SinCosVal.Cos * Clarke.Beta )>>15) - ((SinCosVal.Sin * Clarke.Alpha)>>15);
return(Park_Output);
}
struct_RevPark RevPark(struct_SinCos SinCosVal, struct_Volt_dq Volt)
{
struct_RevPark RevPark_Output;
RevPark_Output.Alpha = ((SinCosVal.Cos * Volt.Ud)>>15) - ((SinCosVal.Sin * Volt.Uq)>>15);
RevPark_Output.Beta = ((SinCosVal.Sin * Volt.Ud)>>15) + ((SinCosVal.Cos * Volt.Uq)>>15);
return(RevPark_Output);
}