スケーリングは、値の範囲を測定された単位から計算された範囲へ変換する場合に役立ちます。シェア変数の各データタイプに対してスケールを構成することができます。シェア変数プロパティダイアログボックスのスケーリングページでスケーリングを構成できます。

(DSCモジュール) スケーリングのSharedVariableIOプロパティを使用してスケーリングを構成することもできます。

数値シェア変数をスケールする

線形スケールおよび平方根スケールには数値シェア変数を使用することができます。

アプリケーションによっては、デバイスサーバで使用される未処理データを操作して、データをアプリケーションの使用者に適した形式 (工学単位) に変換する必要がある場合があります。シェア変数プロパティダイアログボックスのスケーリングページで、シェア変数の未処理範囲と工学範囲を定義して、この2つの範囲間で簡単な変換を行うことができます。未処理の範囲は、デバイスサーバによって使用される値を示しています。工学範囲は、シェア変数エンジンおよびヒューマンマシンインタフェース (HMI) アプリケーションで使用される値を示しています。

線形スケールおよび平方根スケール

線形スケールは以下の式で定義されます。

m * raw + b

(このとき、b = 工学ゼロスケールm = (工学フルスケール - 工学ゼロスケール)/(未処理フルスケール - 未処理ゼロスケール)

平方根スケールは以下の式で定義されます。

b + m * sqrtrawo

(このとき、b = 工学ゼロスケールm = (工学フルスケール工学ゼロスケール)/sqrt(未処理フルスケール - 未処理ゼロスケール)、o = 未処理ゼロスケール)

以下の表は0~100の範囲で0~10範囲の工学単位にスケールされたシェア変数値を示します。

未処理単位 線形スケール 平方根スケール
0 0 0
4 4 2
9 9 3
10 1 3.16
16 1.6 4
20 2 4.47
25 2.5 5
30 3 5.48
36 3.6 6
40 4 6.32
49 4.9 7
50 5 7.07
60 6 7.75
64 6.4 8
70 7 8.37
80 8 8.94
81 8.1 9
90 9 9.49
100 10 10

以下の表は0~100の範囲で15~30範囲の工学単位にスケールされたシェア変数値を示します。オフセットのスケールでは、結果が複雑になります。

未処理単位 線形スケール 平方根スケール
0 15 15
4 15.60 18
10 16.50 19.74
16 17.40 21
20 18 21.71
30 19.50 23.22
36 20.40 24
40 21 24.49
50 22.50 25.61
60 24 26.62
64 24.60 27
70 25.50 27.55
80 27 28.42
90 28.5 29.23
100 30 30

線形スケールの例

この例では、デバイスサーバが0~5 Vの電圧を返していますこの例では、デバイスサーバが0~5 Vの電圧を返しています。電圧は位置センサに関連しており、実世界の位置はセンチメーターで測定され、0 Vは50 cmに、また5 Vは100 cmにマップされます。以下の表は、スケール後のシェア変数値を示します。

未処理単位 (V) 線形スケール (cm)
0 50
1 60
2 70
3 80
4 90
5 100

平方根スケールの例

この例では、フローメータが差動圧力読み取りを使用して液体のフローレートを測定します。デバイスサーバで’は4~20 mAの読み取り値を使用します。実際のフローは、ガロン/分 (GPM) で測定され、4 mA は0 GPMに相当し、20 mAは100 GPMに相当します。以下の表は、スケール後のシェア変数値を示します。

未処理単位 (mA) 平方根スケール (GPM)
4 0
5 25
6 35.36
7 43.3
8 50
10 61.24
13 75
15 82.92
20 100

(DSCモジュール)「Scaling.UnitsSharedVariableIO」プロパティを使用して、シェア変数に単位を割り当てます。前記の例では、スケール単位プロパティにガロン/分を定数として指定できました。

ブールシェア変数をスケールする

ブールシェア変数には、反転スケールを使用することができます。反転スケールを有効にすると、サーバとの通信中にLabVIEWでブール値が反転されます。

U32ビットフィールドシェア変数をスケールする

U32ビットフィールドシェア変数には、反転マスクおよび選択マスクスケールを使用することができます。

マスクスケールはU32ビットフィールドにのみ適用します。LabVIEWはビットフィールドを数字として保存し、必要に応じて数字を32ビットフィールドに変換します。ビットフィールドには、32の値の集合体が含まれ、各値は1または0に制限されています。マスクスケールを使用して、どの配列メンバーに注意すべきか確認することができます。マスクによってフィルタされたビットは0として表示されます。フィルタされなかったビットは、実際の値を反映する0または1で表示されます。マスク

00000000000000001111111111111111 0x0000FFFF

ここで、0はフィルタ除外する位置をマークし、1はレポートする場所をマスクしてビット配列を読み取ります。

10110011100011001100111000110010

以下にあるように、

00000000000000001100111000110010

メモ 反転マスクはマスク除外されたビットを反転しません。

以下の表は、U32ビットフィールドスケール用に構成されたシェア変数の例を示します。

シェア変数名 未処理の値 スケーリング反転マスク スケーリング選択マスク スケールされた値
シェア変数1 0x0000000F 0x00000000 0x000000FF 0x0000000F
シェア変数2 0x0000000F 0x00000033 0x000000FF 0x0000003C
シェア変数3 0x0000000F 0x00000033 0x0000000F 0x0000000C
シェア変数4 0x0000000F 0x00000000 0x00000033 0x00000003
シェア変数5 0x0000000F 0x00000033 0x00000033 0x00000030
シェア変数6 0x00000FF0 0x0000000F 0x000000FF 0x000000FF