问题标签 [pid-algorithm]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
algorithm - PID控制器适用于百分比而不是绝对单位?
我正在开发一个PID
控制软件模拟器,用于PID
交互式地教授控制概念。
我正在研究Velocity
控制器的示例。我有这个例子工作,但我真的希望我的流程的输入是百分比而不是我得到的输出,这是流程应该增加的固定值。
现在,我必须通过采样步骤的最大加速度对输出增加进行插值,然后将输出缩放到一个百分比。问题是加速度是非线性的,取决于传动系统的速度和当前传动装置。
这可行,但不是很灵活或适应性不强,例如,它使一切都以最大速度加速,直到接近setpoint
速度,然后过冲和振荡几个周期,或者需要同样长的时间才能在不过度射击的情况下获得最后一点.
有时您会想要这种最大的加速行为,有时您会想要管理电池/燃料源并以最大效率加速;有时你想要两者兼而有之。
像我现在这样缩放输出是蛮力的,不是很微妙。我宁愿通过动态调整P
,I
和D
增益将输出修饰符注入到输出的计算中,但我不确定要关注哪些以及以什么顺序?
当我一次手动调整它们时,我可以获得非常好的结果,但是当我尝试开始自动调整它们时,一切都变得疯狂。
上周我一直在阅读有关控制理论和自动调整的内容,而数学符号对我来说变得很神秘,如果我能在代码中找到一些实现,我就会理解数学;不管语言。
我尝试过应用 ZN 启发式算法,但仍然会出现剧烈波动,而且很难补偿过冲;当您只能以您可以加速的速度的一小部分减速时,很难容忍过多的超调。想象一个没有主动制动且仅依靠被动阻力减速的系统