|
制御器リファレンスを使用することで、プロパティノードやインボークノードをループで使用したり、サブ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を開いて実行してください。
|