NI-DAQmxには、ほとんどの一般的なトランスデューサ、センサ、アクチュエータに対応した標準サポートが含まれています。ただし、お使いのトランスデューサやアクチュエータがNI-DAQmxで明示的にサポートされていない場合は、チャンネルで測定されたプリスケール単位から、センサに関連付けられたスケール後の単位への変換を指定するNI-DAQmxカスタムスケールを作成できます。カスタムスケールを使用した場合、変更されるのはデータの解釈のみであり、物理的測定は変更されません。
プリスケールとは、チャンネルの単位で表された、カスタムスケールを適用する前の値です。通常、プリスケール単位はボルトまたはアンペアです。これは、ほとんどのチャンネルがこの種の信号を標準で測定または生成するためです。ただし、NI-DAQmxで明示的にサポートされているトランスデューサを含むチャンネルにスケールを関連付けることもできます。その場合、プリスケール単位は、サポートされているトランスデューサチャンネルで使用されている単位です。たとえば、スケールをアナログ入力抵抗チャンネルに関連付ける場合、プリスケール単位はオームであり、スケールは、オームから必要なスケール単位に変換する方法を指定します。
スケール後とは、NI-DAQmxによってカスタムスケールが適用された後の最終単位で表された値です。スケール後の単位は、アプリケーションに適するように定義できます。たとえば、線形位置―電圧スケールを電圧出力チャンネルに対して割り当てる場合、プリスケールのサンプルはボルト単位ですが、スケール後のサンプルはメートル単位に指定できます。
NI-DAQmxでは、4つのスケールタイプを提供します。
線形カスタムスケールタイプは、公式 y = m * x + b(ここで、xはプリスケール値、yはスケール後の値)を使用します。この公式は、入力および出力のどちらに対しても同じです。
範囲の割り当てカスタムスケールタイプを使用して、プリスケール値の範囲からスケール後の値の範囲まで、値を比例的にスケールします。
多項式カスタムスケールタイプでは、n次の多項式を使用します。NI-DAQmxでは、プリスケール値からスケール後の値(順)に変換する多項式、およびスケール後の値からプリスケール値(逆)に変換する多項式の両方を必要とします。1セットの係数のみが判明している場合は、「DAQmx逆多項式係数を演算」VIを使用してもう1つのセットを生成します。
表カスタムスケールタイプでは、プリスケール値をそれぞれ対応するスケール後の値に割り当てます。NI-DAQmxは、表の値の間にある値に線形補間を適用します。読み取り操作では、表のスケール後の最大値および最小値の範囲外にあるサンプルは除外されます。書き込み操作では、表のスケール後の最大値および最小値の範囲外にあるサンプルに対してエラーが生成されます。
NI-DAQmxカスタムスケールは、Measurement & Automation Explorer(MAX)、DAQアシスタント、またはプログラム的にLabVIEWやLabWindows™/CVI™で作成および適用することができます。LabVIEWでは、NI MAXで作成されたカスタムスケールを2通りの方法で適用できます。
「DAQmx仮想チャンネルを作成」VIには、カスタムスケール名を指定できる端子がある場合があります。このVIは多態性であるため、この端子が存在するかどうかはチャンネルタイプによります。端子がない場合は、チャンネルタイプにカスタムスケールを適用することはできません。カスタムスケールが使用されている場合は、単位にカスタムスケールを使用を指定する必要があります。
NI-DAQmxチャンネルプロパティノードも、カスタムスケールの実装に使用できます。「DAQmx仮想チャンネルを作成」と同様、単位にはカスタムスケールを使用を指定する必要があります。
LabWindows™/CVI™でカスタムスケールを適用する方法も非常に似ています。チャンネルを作成する際にカスタムスケールを適用するには、単位の引数にカスタムスケールを使用を指定し、カスタムスケール名をCustom Scale Nameの引数に指定します。プロパティでカスタムスケールを適用するには、DAQmx GetChanAttributeを使用してカスタムスケール名プロパティをカスタムスケール名に設定し、単位プロパティをカスタムスケールを使用に設定します。
カスタムスケールは、プログラム的に作成および適用することもできます。
カスタムスケールは、入力チャンネルと出力チャンネルの両方に適用できます。
スケールは、スケール前のアナログ信号値を受け取り、それをカスタムスケールで指定したスケール後の単位に変換します。たとえば、スケールを使用して電圧を線形位置に変換できます。スケールに関連付けられたチャンネルでサンプルを読み取ると、それらのサンプルはスケール後の単位で表されます。
スケールは、指定された単位による値を入力として受け取り、対応するアナログ信号値を出力して出力チャンネルに書き込みます。たとえば、スケールを使用して線形位置を電圧に変換できます。スケールに関連付けられたチャンネルにサンプルを書き込むと、それらのサンプルはスケール後の単位で表されます。
また、読み取り/書き込みサンプルのキャリブレーションにスケールを使用して、最終的なスケール後の単位をプリスケールのチャンネル単位と一致させることもできます。チャンネルにスケールを関連付けると、そのスケールはそのチャンネルのプリスケール単位で通常表されるすべての属性に適用されます。チャンネルに割り当てられた最大値と最小値もこれに含まれます。たとえば、ボルトをメートルに変換するカスタムスケールが電圧チャンネルに割り当てられている場合、チャンネルの最大/最小属性はメートルで表されます。
アナログ出力電圧チャンネルを、生成される電圧に速度が比例するモータに接続し、この変換を指定するスケールを作成するとします。この場合、プリスケール単位はボルト、スケール後の単位は回転/分にできます。ここで、ボルトを回転/分に変換するための式、表、またはマップを指定します。スケールを作成した後、このスケールをアナログ出力電圧チャンネルに関連付けます。ボルトと回転/分の変換を手動や追加コードで実行しなくても、スケールに関連付けられたチャンネルにサンプルを直接回転/分の単位で書き込むだけで、NI-DAQmxは指定された変換を自動的に実行します。スケールを使用することでコードが簡略化され、アプリケーションの操作性が向上します。
メモ: 従来型NI-DAQ(レガシー)には、従来型NI-DAQカスタムスケールの形式の線形、多項式、表のスケールが含まれています。これらのカスタムスケールは、この記事で説明されているNI-DAQmxカスタムスケールと類似した方法で機能します。