From Friday, April 19th (11:00 PM CDT) through Saturday, April 20th (2:00 PM CDT), 2024, ni.com will undergo system upgrades that may result in temporary service interruption.

We appreciate your patience as we improve our online experience.



いろいろなデータ型のチャートをクリアするサブVI (タイプ指定と準タイプ指定制御器リファレンス)



使用ソフトウェア:
使用ソフトウェア・バージョン: 8.0
使用ソフトウェア・バージョンに特化:
二次のソフトウェア: LabVIEW Development Systems>>LabVIEW Full Development System

問題: NIのカスタマートレーニングを受講して、プログラム的にチャートをクリアする方法として、プロパティノードを使って、”履歴データ”プロパティに空の配列を入力するという方法を学びました。また、制御器リファレンス(制御器Refnum)を使うと複数の制御器に対してループでプロパティノードやインボークノードを使ったり、サブVI化したりできるということも学びました。そこで、シングルポイントのチャートと複数ポイントのチャートのどちらにも対応できるようなチャートクリアのサブVIを作ろうとしましたが、制御器リファレンスが接続できなかったり、履歴データプロパティのデータ型が変わったりしてしまいうまくできません。いろいろなデータ型のチャートをクリアするサブVI はどのようにすれば作れますか。

解決策:

制御器リファレンスを使用することで、プロパティノードやインボークノードをループで使用したり、サブVIで使用したりすることができます。この場合のプロパティノードやインボークノードは、”制御器リファレンスを含まないノード”になります。

制御器を右クリックして、作成→プロパティノードでプロパティノードを作成すると、そのノードには制御器のデータ型の色がつきます。このノードは、その制御器の制御器リファレンスを含んでいて、その制御器のプロパティノードやインボークノードということになります。このノードを右クリックして、”制御器から切断”メニューを選ぶと、データ型の色はなくなり、上部にその制御器の制御器クラスが表示され、さらに、制御器リファレンスの入出力端子が使えるようになります。また、制御器クラス名の後ろに”(指定)”という表示がある場合は、そのノードは、タイプ指定のノードで、タイプ指定制御器リファレンスを受けとるノードということになります。このように、プロパティノードやインボークノードには、制御器リファレンスを含むノードとタイプ指定された制御器リファレンスを受け取るノードとタイプ指定されていないものとがあります。

チャートは、スカラ値の表示をすることが基本の表示器ですが、履歴データを配列として持つことができる特殊な表示器でもあります。また、スカラ値をクラスタ化することにより、マルチプロットしたり、波形データや配列データを表示することもできたりと、さまざまなデータ型を受け取ることのできる表示器でもあります。このようにいろいろなデータを表示できる便利なチャート表示器ですが、このチャート表示器をクリアする汎用的なサブVIを作成する場合には、問題が発生します。

チャートをプログラム的にクリアするための履歴データプロパティは、タイプ指定の制御器リファレンスを使用する必要があるので、たとえば、スカラ値を表示するチャートと波形データを表示するチャートのクリアを同じプロパティノードで行うことができません。(LabVIEWのヘルプで”タイプ指定Refnum”をキーワードにして検索してください。”フロントパネルオブジェクトを制御する”という項目のメモに記述があります) また、サブVI化する場合は、サブVI上での”制御器リファレンス”制御器からデータタイプを切り離してタイプ指定ではない”制御器リファレンス”制御器にする必要もあります。一方で、タイプ指定のない制御器リファレンスでは、履歴データプロパティが使えないので、履歴データプロパティが使えるようにサブVI内でタイプ指定しなおす必要があります。そこで、”より特定のクラスに変換"関数で、チャート内のデータに合わせたタイプ指定の制御器リファレンスに変換してから履歴データプロパティを操作するということが必要になります。

添付のサンプルは、スカラ値のデータ(シングルポイント)、スカラ値をクラスタ化したデータ(複数ポイント)、数値配列、波形データ型を入力したチャートをクリアすることができるようにしたチャートクリアのVIです。スカラ値をクラスタ化したデータ(複数ポイント)では、5プロットまでに対応するようにしています。このサンプルを参照し、いろいろなデータ型のチャートをクリアする方法とタイプ指定制御器Refnumと準タイプ指定制御器Refnumの違い、そのクラスの変換方法を確認してください。

添付のVIはLabVIEW 8.6で作成し、LabVIEW 8.0用に保存したものです。

チャートのクリアを行うVIは、ChartClear.viですが、ChartClearTest.vi または、ChartClearTest2.viを開いて実行してください。



関連リンク:

添付:

ChartClear.vi

ChartClearTest.vi

ChartClearTest2.vi






報告日時: 05/07/2009
最終更新日: 05/07/2009
ドキュメントID: 4X60CF8V