こんにちはドルフィンシステムの笹生です。
三月になりまして、年度末に向けて弊社も非常に忙しいところです。
今回は、「LabVIEW の [配列からクラスタに変換] 関数がデフォルトで要素数 9 までに制限される問題」という知って知る方からすればなんてことのない内容です。
以前開発をしていた際に、なぜか 10 個以上のデータ系列が波形チャートに表示されない問題が発生して、原因がしばらく分からず焦ったことがありました。(納品直前に気が付いたのでかなり焦りました。。。)
結局原因はLabVIEW の [配列からクラスタに変換] 関数がデフォルトで要素数 9 までに制限される問題であったという落ちでした。。。
LabVIEW の [配列からクラスタに変換] 関数とは?
LabVIEW の [配列からクラスタに変換] 関数とは配列をクラスタに変換してくれる関数です。
関数パレットでは[配列]⇒[配列からクラスタに変換] にあります。
この関数の使いどころですが、私的には波形チャートに複数の波形をプロットしていくときに使います。
波形チャートというのは、NI のヘルプによりますと
「波形チャートは、通常、一定のレートで集録された1つまたは複数のプロットを表示する特殊なタイプの数値表示器です。」
グラフには過去のデータが表示されていて、新しいデータをどんどん追加して表示させることができるグラフの一種です。
例として、index + 乱数/20 を用いて 複数のデータを波形チャートに渡す VI を作成してみました。
Num of array を変更すると生成するデータの数を増やすことができます。
9 まで増やしてみました。9本のデータが確認できます。
しかしデフォルトだと 10 個以上データを表示できません。Num of array を 10 にしても 11にしても 9 本のままです。
タイトルの通り、LabVIEW の [配列からクラスタに変換] 関数がデフォルトだと要素数 9 までに制限されているからです。
[配列からクラスタに変換] 関数の要素数の変更方法
表示できる 要素数が 9 では困るので、増やしてみたいと思います。
増やす方法は、
無事に 20本のデータが表示されました。
さてここで思うのですが、プログラム的に実行中に要素数を変更できないかというところです。
この NI のフォーラムでも議論されていますが、基本的に[配列からクラスタに変換] 関数の要素数をプログラム的に変更することはできないようです。
ただ、一旦バリアント型を経由すればよいという意見もありました。
「バリアントを文字列にフラット化し、文字列を連結してから、クラスターに非フラット化することによって、バリアントの配列をクラスターに変換します。これは要素の数に関係なく機能します。」
ここまでやるかどうかは正直微妙ですね、、、
まとめ
LabVIEW の [配列からクラスタに変換] 関数がデフォルトだと要素数 9 までに制限されているという些細な内容ではございますが、知らないと原因がわかるまで意外と悩むところでございます。
0 件のコメント :
コメントを投稿