上面的手算其实可以使用MMA计算,可以参考下面的代码计算3P3Z控制器的参数,放在微处理器里面可以实时调参。
Y[z_] := Kp + (4 Kr Wc (-1 + z))/(
Ts (1 + z) (W0^2 + (4 (-1 + z)2)/(Ts2 (1 + z)^2) + (
4 Wc (-1 + z))/(Ts (1 + z))));
Yz = Simplify[Y[z]];
YYZ = Collect[Expand[Numerator[Together[Yz]]], z]/
Collect[Expand[Denominator[Together[Yz]]], z]
(CoefficientList[Numerator[YYZ],z]
CoefficientList[Denominator[YYZ],z])
YZR1 = YYZ /. {Kp -> 100, Kr -> 10, Wc -> 2*N[Pi, 15]5,
W0 -> 2N[Pi, 15]*50, Ts -> 1/10^4};
YZRealNUM =
Expand[(Numerator[YZR1]/Coefficient[Denominator[YZR1], z, 2])];
YZRealDEN =
Expand[(Denominator[YZR1]/Coefficient[Denominator[YZR1], z, 2])];
YZReal = YZRealNUM/YZRealDEN