短い質問
他の点では均一な制御領域内で非常に大きな異常(桁)を処理する一般的な方法はありますか?
背景
一般に均一な制御領域にわたってモーターを駆動する制御アルゴリズムに取り組んでいます。負荷がゼロまたは最小限の場合、PIDコントロールは適切に機能します(高速応答、オーバーシュートがほとんどない、またはまったくない)。私が遭遇している問題は、通常、少なくとも1つの高負荷の場所があることです。位置はインストール中にユーザーによって決定されるため、いつ/どこでそれを期待するかを知るための合理的な方法はありません。
高負荷の場所を処理するようにPIDを調整すると、非負荷領域に大きなオーバーシュートが発生します(これは完全に予想されていました)。移動途中でオーバーシュートしても問題ありませんが、エンクロージャーには機械的なハードストップはありません。ハードストップがないことは、大幅なオーバーシュートが発生すると、コントロールアームがモーターから切り離される可能性があることを意味します(デッドユニットが発生します)。
私がプロトタイピングしているもの
- ネストされたPID(ターゲットから遠く離れている場合は非常にアグレッシブ、近くにある場合は控えめ)
- 遠くはゲインを固定、近距離はPID
- 保守的なPID(負荷なしで機能)+目標が達成されるか、または急速な変化率が検出されるまで(つまり、高負荷領域を離れるまで)、PIDを探して失速させ、追加のエネルギーを適用する外部制御
制限事項
- 完全な旅行の定義
- ハードストップは追加できません(現時点では)
- エラーはおそらくゼロになりません
- 高負荷は、10%未満の移動から得られた可能性があります(「実行開始」がないことを意味します)