【问题标题】:Bumpless transfer in FRPFRP 中的无颠簸传输
【发布时间】:2014-09-12 17:56:50
【问题描述】:

我可以使用为ArrowLoops 提供的ArrowLoop 实例中的loop 在Haskell FRP 库netwire 中构建PID controller

我还可以使用switch实现控制器之间或控制器与手动输入之间的切换。

如何实现无扰动传输,例如使用here(或任何数量的控制工程文章/书籍)解释的“跟踪”策略?如果性能良好,另一种策略可能是可以接受的,但跟踪方法对我的应用程序很有吸引力,因为它还解决了抗饱和问题。

我很难眯着眼睛看框图,使它看起来像两个(或一个?)loop 应用程序的类型。

【问题讨论】:

  • 哪个图?整个工厂的图表还是带跟踪的 PID 控制器的内部图表?
  • 内部的那个。当我走得更远时,我实际上注意到整个工厂的循环并不是我的软件中的循环,因为只有工厂关闭它。因此,从不是循环的软件的角度来看,我输入了一个侧倾率并输出了一个副翼命令。只有现实世界/模拟器使副翼命令影响侧倾率。

标签: haskell frp arrows control-theory netwire


【解决方案1】:

每个图表中有两个loops。在寻找循环来重绘图表时很有帮助,以便所有输入进入所有元素的同一侧,所有输出离开相同的另一侧,并尽可能减少线交叉。在这些图中,输入进入元素的底部、左侧或顶部,输出离开右侧。

整个系统有一个loop,将进程的输出送入减法进行误差比较:

控制系统有一个loop,将选择控制器(PID控制器或手动控制)后的最终控制输出馈入跟踪PID控制器。整体输出是最右边的输出。

跟踪 PID 控制器有两个loops。一是导数的反馈回路。导数的loop 可能会在另一个组件中消失。另一个loop 将 PID 控制器的输出反馈到 PID 控制器的输出与实际控制过程的控制输出之间的比较中。请注意,此图中 P、D 和 I 分支的顺序不同,以删除线交叉

请注意,如果跟踪 PID 控制器将其自己的输出连接到 Track,则与第一次减法的差值为 0,并且积分分支不会因加 0 而改变。

【讨论】:

  • 这是一个很好的解释,非常感谢!你是如何制作这些图表的?还有N 的增益是什么?
  • 我使用 Dia 制作图表。增益N 是导数的一部分。滤波器系数N 改变了滤波器的极点位置在 Simulink 的 PID 控制器设计中,您引用了该控制器。 mathworks.com/help/simulink/slref/pidcontroller.html#br9ejg0-18 PID 控制器还有其他设计。由于一切都是线性运算,因此可以将增益放在积分和微分运算之后,并且可以在导数和最终和之间使用任何低通滤波器。左边有一个矩形的三角形是积分。
  • 这是另一种设计,区分与过滤完全分离。 embedded.com/design/real-time-and-performance/4007575/…。在这个设计中,跟踪反馈需要被馈送到积分分支上的总和中,然后根据Kp 增益所在的位置,通过额外的跟踪输入系数1/Ki1/(Ki*Kp) 进行缩放。跨度>
  • 啊,确实。现在我只使用 netwire 的derivative,它使用了最后两个时间步长之间的差异。我很困惑,因为我链接的设计是针对连续时间的,而 FRP 只是假装是连续时间。可能结果是,为了有效地使用 D 项,我需要以某种方式平滑该导数,不过,我会记下这一点,以备它稍后做抽搐的事情时使用。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2022-11-24
  • 2022-12-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-04-15
  • 1970-01-01
相关资源
最近更新 更多