このブログでは、伝達関数の設定と測定方法を説明します。 Moku PID コントローラ もくPython APIまず、スタンドアロンのPIDコントローラ機器を紹介し、それを設定するために必要なPythonコマンドを順に説明し、次に、 Moku 周波数応答アナライザー.
PIDコントローラのブロック図を理解する
電子機器のアプリケーションでは、PIDと 制御ループ 多くの場合、自動テスト セットアップに不可欠な要素です。わかりやすくするために、図 1 に示すように、Moku UI を使用して PID コントローラのブロック ダイアグラムを調べると便利です。計測器のブロック ダイアグラムには、制御マトリックスに送られる XNUMX つの入力が表示されており、これにより信号の加算、減算、乗算が可能です。次に、信号は XNUMX つの独立した PID コントローラの XNUMX つに渡されます。各コントローラには独自の出力があり、DC オフセット、リミッタ、スイッチも備わっています。さらに、プローブ ポイントを使用して、測定チェーン内のさまざまな段階で信号を表示できます。

図 1. Moku PID コントローラのブロック図。
Moku UI で PID ブロックを選択すると、ユーザーは周波数空間で現在の伝達関数を表示できます。比例ゲインと飽和レベルは dB 単位で定義され、クロスオーバー ポイントは Hz 単位で指定されます。ユーザーはこれらのパラメータをクリックしてドラッグし、値を動的に調整して伝達関数の更新を確認することで、これらのパラメータを操作できます。
Python での伝達関数の定義
伝達関数の設定と測定を自動化するために、 Jupyter Notebook、当社の githubのPythonベースのMokuコントロールを初めて使用する人のために、Python APIの設定に関する詳細な書面およびビデオチュートリアルが用意されています。 このブログ内Mokuに接続して設定する手順 マルチインストゥルメントモード これらのチュートリアルでは、PID 関数を定義するための基本的なコマンドについてのみ説明します。
伝達関数を設定するときに使用する主要なコマンドは 3 つありますが、主な違いは、ユーザーが PID パラメータをゲインで定義するか、クロスオーバー周波数で定義するかということです。これらの構成のどちらにも対応できるように 2 つのコマンドを作成しました。
1つ目はコマンド 頻度によって設定します。 このコマンドは、合計ゲイン、積分器の飽和、微分飽和のパラメータを dB で定義します。一方、積分器、微分器、二重積分器のパラメータはクロスオーバー周波数で定義されます。以下のコード スニペットに示すように、このコマンドは最大 7 つのキーワード入力を受け入れ、最初のキーワードはターゲット チャネルを指定します。ユーザーは、他の 6 つのキーワード引数を追加して、それに応じてパラメータを設定できます。デフォルト値はありません。キーワードを未定義のままにすると、そのパラメータは無効になります。
ゲイン値を使用してPIDパラメータを設定できる代替コマンドは、 ゲインによって設定します。 この方法を使用する場合、比例 (P)、積分 (I)、微分 (D) の値は dB で指定され、飽和値は Hz で表されます。これらの設定は Moku UI からもアクセスでき、PID コントローラーの「詳細モード」メニューにあります。
3番目のコマンドは 要約は、現在のすべての PID 値を含む、機器設定の包括的なリストを取得します。これはすべての Moku 機器に共通ですが、UI からの視覚的なフィードバックが利用できない PID コントローラーでは特に便利です。
キーワード引数を含むこれら 2 つのコマンドの例を図 XNUMX に示します。

図 2. PID コントローラーの Python コードの例。伝達関数を構成する複数の方法を示しています。
伝達関数の測定
私たちはMokuを使用しています 周波数応答アナライザ 伝達関数を測定するために、PIDコントローラと並べて配置します。 マルチインストゥルメントモードこの設定では、周波数応答アナライザからの出力が PID コントローラに送られます。信号は入力側にループバックされ、FRA が入力信号と出力信号の差を測定できるようになります。Moku 構成の概略図を図 3 に示します。

図 3. マルチインストルメント モードで展開された Moku PID コントローラーと周波数応答アナライザー。
先ほど紹介したスクリプトに引き続き、2つの重要なPythonコマンドに焦点を当てます。1つ目は、 出力設定、 周波数応答アナライザの出力パラメータを定義します。出力が 2 つあるため、コマンドは 2 回呼び出されます (各チャネルごとに 1 回)。最初の引数は有効にするチャネルを指定し、2 番目の引数は振幅をボルト単位で設定します。
このコマンド スイープの設定 周波数応答アナライザのスイープの主要パラメータを設定し、多くのキーワード引数を含みます。これらのキーワードには、スイープの周波数範囲、測定する周波数ポイントの数、データ収集を開始する前に機器が待機する時間、および各ポイントでデータが平均化される期間が含まれます。これらの最小整定時間と平均化時間は、サイクル数または時間の長さで定義できます。たとえば、整定時間が 1 マイクロ秒で整定サイクルが 1 の場合、機器は各スイープ ポイントで 1 マイクロ秒または 1 サイクルのいずれか長い方だけ待機します。
その 開始スイープ コマンドは周波数スイープを開始し、測定期間の推定値を提供します。次のコマンドは、 get_data、 測定データを取得します。 完了待ち キーワード ◯ スイープが終了した後にのみデータ転送が行われるようにします。必要に応じて、要求がタイムアウトしないようにタイムアウト値を調整できます。
キーワード引数を含むコマンドの完全なセットの例を図 4 に示します。

図 4. 周波数応答アナライザーの Python コードの例。
データの表示とプロット
データは、「Ch1」と「Ch2」のキーを持つ辞書形式で返されます。これは、辞書でもある 3 つのセットに分割され、図 XNUMX に示すように、振幅と位相対周波数を表示するようにプロットできます。このプロットを PID コントローラー UI に表示される伝達関数と比較することで、ユーザーは伝達関数が入力信号に対して意図した応答を提供していることを確認できます。PID コントローラーの設定を調整すると、伝達関数が変更され、プロットされたデータにそれに応じた変化が生じます。


図 5. 周波数応答アナライザーから復元された振幅と位相応答データ。
このチュートリアルでは、Moku Python API を介して Moku PID コントローラーと周波数応答アナライザーを使用して伝達関数を定義および測定する方法を説明しました。これらの手順に従い、提供されているコマンドを利用することで、ユーザーは計測器を正確に構成し、伝達関数を検証できます。