ブラシレスモータ用制御部の設計をしている。お客様とは長い付き合いで、今回の機種では、位置検出器の分解能を上げてほしいとの要望である。
モータは同じで、位置検出器の分解能が上がったので、開ループ伝達関数を同じに保つため、ゲインの配分を変更する必要がある。
しかも、速度ループの開ループ伝達関数、位置ループの開ループ伝達関数をともに前の機種と同じに保ち、かつ、制御器のゲインニューニング感覚も同じようにしたい。
半日くらい考えていた。
実装して(コーディングは、お任せしているが)デバッグを始めたところ、「動作がおかしい」と、お呼びがかかった。
位置検出器データの下位をマスキングして、以前の機種の制御構造に戻すと動作が良くなる。
位置ループを切って、速度指令を入れて、動作を評価する。
速度PI制御器のI項(積分項)をなくして、速度制御を行う。
速度ループを切って、速度指令を入力して、トルク指令を観測する。
再度、速度PI制御器のI(積分項)を入れて、トルク指令を観測する。
等々。
約1日、デバッグにかかった。
時間かけすぎだが、わかった。位置検出器データのビット数が増えていたので、オーバーフローしているところがあった。そのほかにも何点かバグがあって、わかりにくくしていた。
組込機器のネガティブフィードバック制御のデバッグは、中の状態が連続時間で観測できないので、時間がかかる。
仮説を立てて、検証を繰り返す。論理的思考、発想力が勝負。