Z变换形式具有更高的实用性有几点。
询问任何提倡基于时间/简单/ sans-PHD方法的人,他们的Kd项设置如何。他们可能会回答“零”,他们可能会说D是不稳定的(没有低通滤波器)。在我了解所有这些如何结合之前,我会并且确实会说这样的话。
在时域中调整Kd很困难。当您看到传递函数(PID子系统的Z变换)时,您可以轻松地看到它的稳定性。您还可以轻松了解D项相对于其他参数如何影响控制器。如果您的Kd参数为z多项式系数贡献了0.00001,但是您的Ki项为10.5,则您的D项太小,无法对系统产生实际影响。您还可以查看Kp和Ki条款之间的平衡。
DSP旨在计算有限差分方程(FDE)。它们具有可将系数相乘,求和到累加器并在一个指令周期内将值移入缓冲区的操作码。这利用了FDE的并行特性。如果机器缺少此操作码...则不是DSP。嵌入式PowerPC(MPC)具有专用于计算FDE的外围设备(它们称为抽取单元)。DSP被设计为计算FDE,因为将传递函数转换为FDE很简单。16位的动态范围不足以轻松量化系数。因此,许多早期的DSP实际上都有24位字(我相信今天32位字很普遍。)
IIRC,即所谓的双线性变换,采用传递函数(时域控制器的z变换)并将其转换为FDE。证明它是“困难的”,用它来获得结果是微不足道的-您只需要扩展形式(将所有内容相乘),多项式系数就是FDE系数。
PI控制器不是一个好方法-更好的方法是建立一个系统行为模型并使用PID进行纠错。该模型应该简单,并基于您正在做的基本物理学。这是进入控制块的前馈。然后,PID块使用受控制系统的反馈来纠正错误。
如果将标准化值[-1 .. 1]或[0 ... 1]用于设定点(参考值),反馈和前馈,则可以在其中实现一个2极2零算法优化的DSP组件,您可以使用它来实现任何二阶滤波器,包括PID和最基本的低通(或高通)滤波器。这就是为什么DSP的操作码会假定归一化的值,例如,一个操作码会输出该范围的反平方根的估计值(0..1]您可以串联两个2p2z滤波器并创建一个4p4z滤波器,您可以利用2p2z DSP代码来实现4抽头低通巴特沃斯滤波器。
大多数时域实现将dt项烘焙到PID参数(Kp / Ki / Kd)中。大多数z域实现都没有。将dt放入采用Kp,Ki和Kd的方程式中,并将它们转换为a []和b []系数,因此您现在对PID控制器的校准(调整)与控制速率无关。您可以使其运行速度提高十倍,启动a []和b []数学,PID控制器将具有一致的性能。
使用FDE的自然结果是该算法隐式地“无毛刺”。您可以在运行时即时更改增益(Kp / Ki / Kd),并且表现良好-取决于时域实现,这可能很糟糕。
通常要在时域PID控制器上花费很多精力,以防止出现积分缠绕。FDE格式有一个简单的技巧,可以使PID表现良好,您可以将其值限制在历史缓冲区中。我还没有做过数学运算来了解它如何影响滤波器的行为(关于Kp / Ki / Kd参数),但经验结果是它是“平滑的”。这是在利用FDE形式的“无干扰”性质。前馈模型有助于防止整体缠绕,并且使用D项有助于平衡I项。PID确实不能按照预期的那样获得D增益。(回转设定点是防止过度缠绕的另一个关键功能。)
最后,Z变换是本科课程的主题,而不是“博士学位”。您应该已经在复杂分析中了解了所有这些知识。在这里,您所上的大学,您所拥有的老师以及您在学习数学和学习如何使用可用工具上所付出的努力会极大地改变您在行业中的表现能力。(我的复杂分析课太可怕了。)
事实行业工具是Simulink(缺少计算机代数系统CAS,因此您需要另一个工具来计算一般方程式)。MathCAD或wxMaxima是可以在PC上使用的符号求解器,我了解了如何使用TI-92计算器来实现。我认为TI-89也具有CAS系统。
您可以在Wikipedia上查找PID和低通滤波器的z域或laplace域方程。这里有一个步骤,我不理解,我相信您需要PID控制器的离散时域形式,然后需要对其进行z变换。拉普拉斯变换应该与z变换非常相似,并以PID {s} = Kp + Ki / s + Kd·s的形式给出。Dt是delta-t [ime],我使用Dt是为了避免将此常数与派生词'dt'混淆。
b[0] = Kp + (Ki*Dt/2) + (Kd/Dt)
b[1] = (Ki*Dt/2) - Kp - (2*Kd/Dt)
b[2] = Kd/Dt
a[1] = -1
a[2] = 0
这是2p2z FDE:
y[n] = b[0]·x[n] + b[1]·x[n-1] + b[2]·x[n-2] - a[1]·y[n-1] - a[2]·y[n-2]
DSP通常只有一个乘加运算(而不是乘加运算),因此您可能会看到求和运算被推到a []系数中。添加更多的b可获得更多的极点,添加更多的a可获得更多的零。