我看过很多 PID 文章,例如this,使用通用 PID 方程的 Z 变换来推导一些疯狂的差分方程,然后可以在软件(或者在这种情况下是 FPGA)中实现。我的问题是,与没有博士学位的传统且更直观的 PID 相比,这种实现有什么优势类型实现?第二个似乎更容易理解和实施。P 项是直接乘法,积分使用运行和,并且通过从当前样本中减去前一个样本来估计导数。如果您需要添加诸如积分饱和保护之类的功能,那就是直截了当的代数。尝试将积分饱和保护或其他功能添加到差异类型算法中,例如上面链接的,似乎要复杂得多。除了“我是个喜欢为了好玩而做 Z 变换的坏蛋”类型的吹牛之外,还有什么理由使用这样的实现?
编辑:我链接的没有 PHD 文章的 PID 是一个更简单的实现示例,它使用积分项的运行总和以及导数项的连续样本之间的差异。它可以用定点数学以确定性的方式实现,并且如果需要,可以在计算中包含实时时间常数信息。我基本上是在寻找 Z 变换方法的实际优势。我看不出它怎么会更快,或者使用更少的资源。Z 方法似乎不是保持积分的运行总和,而是使用先前的输出并减去先前的 P 和 D 分量(通过计算得出积分和)。所以,除非有人能指出我遗漏的东西,否则我会接受 AngryEE 的评论,即它们本质上是相同的。
最后编辑:感谢您的回复。我想我对每一个都了解了一些,但最后,我认为 Angry 是正确的,因为这只是一个偏好问题。两种形式:
要么
将评估基本相同的事情。有人提到第一个可以更快地在 DSP 或 FPGA 中实现,但我不相信。任何一个都可以被矢量化。第一个需要两个 post 操作,第二个需要一个 pre 和一个 post 操作,所以看起来很均匀。第一个在实际计算中还需要多1个乘法。