NI製品ディスカッション

キャンセル
次の結果を表示 
次の代わりに検索 
もしかして: 

ステートマシンのカウント

解決済み
解決策を見る

ステートマシンのカウントについて教えてください。

 

列挙体 A(初期化)→B→C→D→Eの順でコード書いています。

列挙体Eまできたら、列挙体Bに戻り、列挙体C、D、Eまで行くというループで書いています。

 

WHILEループのiのカウントを列挙体Bに来たら+1にする

 

というコードが書けません。

 

現在は、列挙体 毎に+1してしまうコードになってしまっています。

恐れ入りますが、ご教授願いします。

0 件の賞賛
メッセージ1/8
2,227件の閲覧回数
解決策
トピック作成者sakana55が受理

平素よりNI製品をご愛顧頂きありがとうございます。
日本ナショナルインスツルメンツ技術部の上野です。

 

ステートマシンということは、Whileループとケースストラクチャを併用しているかと思います。「列挙体 毎に+1してしまうコードになってしまっています」とのことは、加算しているのはケースストラクチャの外側か、各ケース内で加算しているのではないでしょうか?

 

ステートBだけで+1されたいのでしたら、シフトレジスタを追加してステートBを処理するケース内だけでインクリメントする数値とiカウントを加算すれば良いかと思います。それにより、0, 1+1=2, 3, 4, 5, 7, 8, 9 ... とカウントを作成できます。

 

添付ファイルは、ステートBのときだけ+1する部分の処理します。

0 件の賞賛
メッセージ2/8
2,178件の閲覧回数

NI 上野様

 

早速ありがとうございます。解決致しました。

 

追加で質問なのですが、

列挙体を追加するときに、ステートマシンのイベントと連動させたいのですが、どのように操作すればいいでしょうか?

 

単純に列挙体に追加するとステートマシンのイベントが数字に変わってしまいます。

名前はそのままで追加したいです。

 

0 件の賞賛
メッセージ3/8
2,166件の閲覧回数

無事解決して何よりです。

 

列挙体定数は、選択された項目を数値で扱う定数です。文字列で扱いたいのでしたら、フロントパネルで制御器パレット>文字列からコンボボックスをしてダイアグラムに移動し、コンボボックスのオブジェクトを右クリックして定数に変更を選択します。

これで仕様方法は列挙体でデータは文字列の定数となります。

0 件の賞賛
メッセージ4/8
2,152件の閲覧回数

何度もすいません。

ご教授していただいた方法で試しましたがうまくいきませんでした。

 

先ほど添付していただいたVIの列挙体BとCの間にFを追加したいとき

追加するとステートマシンのイベントが数字に変わってしまいます。

 

数字ではなく、そのままの文字列にしておきたいのと、

いくつかある列挙体も連動して列挙体A、B、F、C、Dみたいにしたいです。

0 件の賞賛
メッセージ5/8
2,150件の閲覧回数

「文字列のままにしたい」いうのはケースストラクチャのケース名でしょうか?

これは、使用されている複数の列挙体が一致していない場合、数値に変更されます。

 

同一の列挙体を複数の箇所で使用する場合は、列挙体を右クリックしてタイプ定義に指定を選択して、カスタムの制御器のように1つのファイルに保存し、そのファイルを複数箇所で使用することで連動するようになります。

 

タイプ定義に指定を利用する方法は以下のとおりです。

  1. ダイアグラムで列挙体を右クリックして、タイプ定義に指定を選択します。列挙体の左上に黒色の三角形が付きます。
  2. <Ctrl-S>でVIを保存します。拡張子が.ctlとして保存するように促されますので、名前を付けて保存します。
  3. タイプ定義に指定された列挙体を選択して、<Ctrl>を押しながらドラッグ・アンド・ドロップするとコピーされますので、タイプ定義に指定されていない列挙体とすべて入れ替えます。
  4. 列挙体の項目を変更する場合は、タイプ定義に指定された列挙体を右クリックして、タイプ定義を開くを選択します。
  5. 手順2で保存した制御器(フロントパネルだけのファイル)が開きますので、その中にある列挙体制御を右クリックして編集し、保存してから閉じます。
  6. この変更がすべての列挙体定数に反映されます。

 

 

 

 

0 件の賞賛
メッセージ6/8
2,127件の閲覧回数

NI 上野様

 

うまくいきました。

本件、ご対応ありがとうございました。

0 件の賞賛
メッセージ7/8
2,119件の閲覧回数

無事解決して何よりです。今後ともよろしくお願い申し上げます。

0 件の賞賛
メッセージ8/8
2,110件の閲覧回数