短い質問
それ以外の場合は均一な制御領域内で非常に大きな異常 (桁違い) を処理する一般的な方法はありますか?
背景
私は、一般的に均一な制御領域でモーターを駆動する制御アルゴリズムに取り組んでいます。負荷なし/最小限の負荷で、PID 制御はうまく機能します (応答が速く、オーバーシュートがほとんどまたはまったくありません)。私が直面している問題は、通常、負荷の高い場所が少なくとも 1 つあるということです。位置はインストール中にユーザーが決定するため、いつ/どこでそれを期待するかを知る合理的な方法はありません.
高負荷の場所を処理するように PID を調整すると、負荷のない領域で大きなオーバーシュートが発生します (これは完全に予想していたことです)。移動の途中でオーバーシュートしても問題ありませんが、筐体には機械的なハード ストップはありません。ハードストップがないということは、大幅なオーバーシュートが発生すると、コントロール アームがモーターから切り離される可能性があることを意味します (デッド ユニットが生成されます)。
私がプロトタイピングしているもの
- ネストされた PID (ターゲットから遠く離れている場合は非常に積極的、近くにある場合は保守的)
- 遠い時は固定ゲイン、近い時はPID
- 保守的な PID (無負荷で動作) + PID が失速し、目標が達成されるか急速な変化率が検出される (つまり、高負荷領域を離れる) まで追加のエネルギーを適用する外部制御
ハードウェアの制限
- フルトラベル定義
- ハードストップは追加できません(現時点では)
更新
私の答えは、これが最善の解決策であることを示していません。私が共有すると思ったのは、私の現在のソリューションです。