このブログでは、伝達関数の設定と測定方法を説明します。 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 コントローラでは特に便利です。キーワード引数を使用したこれら 3 つのコマンドの例を図 2 に示します。

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

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

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


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



