シェア変数のスケールを構成する
- 更新日2025-08-27
- 6分で読める
スケーリングは、値の範囲を測定された単位から計算された範囲へ変換する場合に役立ちます。シェア変数の各データタイプに対してスケールを構成することができます。シェア変数プロパティダイアログボックスのスケーリングページでスケーリングを構成できます。
(DSCモジュール) スケーリングのSharedVariableIOプロパティを使用してスケーリングを構成することもできます。
数値シェア変数をスケールする
線形スケールおよび平方根スケールには数値シェア変数を使用することができます。
アプリケーションによっては、デバイスサーバで使用される未処理データを操作して、データをアプリケーションの使用者に適した形式 (工学単位) に変換する必要がある場合があります。シェア変数プロパティダイアログボックスのスケーリングページで、シェア変数の未処理範囲と工学範囲を定義して、この2つの範囲間で簡単な変換を行うことができます。未処理の範囲は、デバイスサーバによって使用される値を示しています。工学範囲は、シェア変数エンジンおよびヒューマンマシンインタフェース (HMI) アプリケーションで使用される値を示しています。
線形スケールおよび平方根スケール
線形スケールは以下の式で定義されます。
m * raw + b
(このとき、b = 工学ゼロスケール、m = (工学フルスケール - 工学ゼロスケール)/(未処理フルスケール - 未処理ゼロスケール)
平方根スケールは以下の式で定義されます。
b + m * sqrtraw – o
(このとき、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 |