潜渊症吧 关注:33,318贴子:282,601
  • 17回复贴,共1

各位的PID电路的I都是怎么实现的?

只看楼主收藏回复

我现在的积分控制是把误差持续输入两个累加器(加法和内存),然后两个累加器做减法,做减法前让一个累加器的输出流先过延时组件,这样一来延时组件的延时即积分变数。但是累加器有溢出的风险,需要定时清空。有没有更好的实现方法?


IP属地:上海来自iPhone客户端1楼2024-03-28 13:31回复
    另外如果用pid做航行控制,引擎推力越大越好,只要不鬼畜。响应慢?过冲大?稳态误差?只要把引擎出力提高十倍,一切都会好起来。


    IP属地:上海来自iPhone客户端2楼2024-03-28 13:39
    回复
      没有实践过 主要是不会玩编辑器 我想的是信号输出到加法 加法给内存 内存返回到加法的另一个点 内存的锁存信号用脉冲取反 至于溢出我是打算设定一个限制 比如绝对值大于10000就/2(比较之后赋值比较麻烦我就直接/2了 可以直接/(1+大于组件输出值)


      IP属地:江苏来自Android客户端3楼2024-03-28 15:24
      收起回复
        目前有一种想法是:把误差信号流平分为奇数tik和偶数tik,分别输入两套I电路。奇数信号流的I电路在奇数tik给内存做加法,在偶数tik把内存减去dt前的信号,偶数信号流的I电路在偶数tik给内存做加法,在奇数tik把内存减去dt前的信号。两个内存加起来就是完整的dt时间内误差的积累。


        IP属地:上海来自iPhone客户端4楼2024-03-28 16:14
        收起回复
          每当累加器加满时,产生一次溢出,以控制各寄存器异步清零,从而完成一个周期动作。而当下一时钟来时,再开始下一周期的累加。
          文献是这样写的 我也好奇这个事情


          IP属地:黑龙江来自iPhone客户端5楼2024-03-28 16:28
          收起回复