我正在使用PID
控制软件模拟器,以交互方式教授PID
控制概念。
我正在研究Velocity
控制器的示例。我有一个工作的例子,但我真的希望我的进程的输入是百分比而不是我得到的输出,这是一个固定的值,该过程应该增加。
现在我必须通过样本步骤的最大加速度插入输出增量,然后将输出缩放到百分比。问题是加速度是非线性的,取决于传动系的速度和当前传动。
这有效但不是很灵活或适应性强,例如,它会使一切都加速到最大值,直到它接近setpoint
速度,然后过冲并振荡几个周期或需要相同的时间在没有过度射击的情况下获得最后一点。
有时您会想要这种最大加速行为,有时您会想要管理电池/燃料源并以最高效率加速;有时你想要两者兼而有之。
像我现在所做的那样缩放输出是蛮力而不是非常微妙。我宁愿通过动态调整P
,I
和D
增益来为输出计算注入输出修饰符,但我不确定要关注哪些以及按什么顺序?
当我一次手动调整它时,我可以获得非常好的效果,但是当我尝试开始自动调整它们时,一切都变得疯狂。
我在上周阅读了有关控制理论和自动调整的内容,而数学符号对我来说只是神秘莫测,如果我能在代码中找到一些实现,我理解数学;不管语言如何。
我尝试过应用Z-N启发式算法,但是我仍然会出现波动,并且很难弥补过冲;当你只能以可以加速的速度的一小部分减速时,很难容忍过多的过冲。 想象一个没有主动制动的系统,只依靠被动阻力来减速