私は、コントロールの概念をインタラクティブPID
に教えるために、コントロール ソフトウェア シミュレーターに取り組んでいます。PID
私はVelocity
コントローラーの例に取り組んでいます。例は機能していますが、プロセスが増加する固定値である出力ではなく、プロセスへの入力をパーセンテージにしたいのです。
現在、サンプル ステップの最大加速度によって出力の増加を補間し、出力をパーセンテージにスケーリングする必要があります。問題は、ドライブトレインの速度と現在のギアリングに応じて、加速率が非線形になることです。
これは機能しますが、柔軟性や適応性は高くありません。たとえば、速度に近づくまですべてを最大に加速しsetpoint
、その後オーバーシュートして数周期振動するか、オーバーシュートせずに最後の少しを取得するのに同じくらい長い時間がかかります。 .
この最大加速動作が必要な場合もあれば、バッテリー/燃料源を管理して最大効率で加速したい場合もあります。両方のビットが必要な場合もあります。
私が現在行っているような出力のスケーリングは力ずくであり、あまり巧妙ではありません。P
、I
およびゲインを動的に調整することにより、出力の計算に出力修飾子を挿入したいのD
ですが、どれに焦点を合わせ、どの順序で行うべきかわかりません。
一度に 1 つずつ手動で調整すると、非常に良い結果が得られますが、自動調整を開始しようとすると、すべてが狂ってしまいます。
私は先週、制御理論と自動調整について読んでいましたが、数学表記は私にとって不可解なものになりました。コードで何らかの実装を見つけることができれば、数学を理解できます。言語に関係なく。
ZN ヒューリスティックを適用してみましたが、それでも乱暴なスイングが発生し、オーバーシュートを補正するのは非常に困難です。加速できる速度のほんの一部でしか減速できない場合、多くのオーバーシュートを許容するのは困難です。能動的なブレーキがなく、受動的な抗力のみに依存して減速するシステムを想像してみてください