5.Consoleプログラム

 Consoleプログラムは多くのVIから構成されています。Main Console.viが最上位のConsoleプログラムVIです。まず,Main Console.viで使われているサブVIなどの説明をします。その後,Main Console.viの内容を説明します。以下の説明で,フロントパネルアイコンがついている箇所は,各VIのフロントパネル/ダイアグラム説明にリンクします。

5.1 Main Console.viで使われているサブvi他の説明

5.1.1 サブVIs

(1)status Logger.vi フロントパネルとダイアグラムの説明 (2)Read Text Configuration.vi フロントパネルとダイアグラムの説明 (3)Extract System Parameter.vi フロントパネルとダイアグラムの説明 (4)Simple Converter and Configurator.vi フロントパネルとダイアグラムの説明
  Caseストラクチャを用いて以下の5つのステートを順に制御しています。
Write Text Configuration.vi フロントパネルとダイアグラムの説明 (Simple Converter and Configurator.viのサブVI)
  1. 文字列型の構成ファイル(*.bin.txt)を開くか,なければ作成します。
  2. System Parameters Arrayの内容に応じて,構成情報形式(*.bin.txt)で,
         「Master」,「StopTimer」
         各DAQ Deviceごとの「LogPath」
         各DAQ Deviceごとのトリガ関連の「Station」,「Channel」,「Level」,「Slope」,「PreTrigger」
         各StationにあるDAQ Deviceの「ScanRate」,「NumberOfChannels」
        をtextファイルに書き込みます。

(5)Main Queue Processor.vi フロントパネルとダイアグラムの説明
  MainProcessQueue内の全てのメッセージをMain Queue Processor VIで処理します。その内容は, (6)Connect To Remote.vi フロントパネルとダイアグラムの説明
  1. VIサーバー機能を利用して,各StationのメモリにData Log用のプログラムであるStation Executive.viをロードします。
  2. VIサーバー機能を利用して,各StationのフロントパネルのDevice Parameters Array制御器に構成パラメータの初期値を設定します。
  3. VIサーバー機能を利用して,各Stationのトリガ通信用のTCPポート(6402〜6405)を引数から設定します。
    (Front:6402,Rear:6403,Left:6404,Right:6405)
  4. VIサーバー機能を利用して,各StationがStation Statusを送る際の,Main ConsoleのUDP受信ポート(6550)をローカルに設定します。
  5. VIサーバー機能を利用して,各Stationがモニタデータを送る際の,Main ConsoleのUDP受信ポート
    (Front:6600,Rear:6601,Left:6602,Right:6603)を引数から設定します。
  6. VIサーバー機能を利用して,各Station Executive.viのフロントパネルを開きます。
  7. VIサーバーで開いたStation Executive.viのRefnumをStation Statusグローバルに保存します。
  8. VIサーバーを閉じます。
(7)Start Processor.vi フロントパネルとダイアグラムの説明
  1. データ収集の実行時間タイマが設定されていた場合には,VIサーバーでTimer Processor.viをCenter Station(自分自身)のメモリにロードします。
  2. 処理に必要なQueueのRefnumをTimer Processor.viに渡します。
  3. Timer Processor.viを起動します。
  4. 実行時間の値をStopQueueに入れます。
  5. VIサーバーで各StationからのStation Statusを受信するUDP Reader.viをCenter Station(自分自身)のメモリにロードします。
  6. 処理に必要なQueueのRefnumをUDP Reader.viに渡します。
  7. UDP Reader.viを起動します。
Timer Processor.vi フロントパネルとダイアグラムの説明 (Main Console.viとは並列に独立動作するVI)
  StopQueue内のメッセージにもとづいて,時間管理を行ないます。
  1. StopQueueにメッセージが送られてくるのを待つ。
  2. 「SetTime」メッセージならば,データ収集実行時間の値を記憶し,終了時刻に変換します。
  3. 1秒ごとに,現在時刻と終了時刻を比較し,終了時刻でなければ,残り時間TimeLeftグローバルを更新します。
  4. 終了時刻になると, MainProcessQueueに「StopTmUp」メッセージを書き込みます。
UDP Reader.vi フロントパネルとダイアグラムの説明 (Main Console.viとは並列に独立動作するVI)
  1. 各StationからUDPで送られてくるStation Status情報を,Port 6550で待ち受けます。
  2. 全てのステーションは,Main Console の同じポート6550にStation Status情報を書込むので,UDPデータを受信したら,UDPデータのIPアドレスでどのステーションから送られたのかを区別します。
  3. Station Statusグローバルを更新します。

(8) Launch TCP.vi フロントパネルとダイアグラムの説明
  1. VIサーバーで,トリガ処理用TCP Processor1.vi 〜TCP Processor4.viをCenter Station(自分自身)のメモリにロードします。
  2. トリガ処理に必要なQueueのRefnumをTCP Processor1.vi 〜 TCP Processor4.viに渡します。
  3. トリガ通信用のTCPポートを設定します。
  4. トリガ処理に必要なQueueのRefnumをTCP Processor1.vi 〜 TCP Processor4.viに渡します。
  5. トリガ通信用のTCPポートを設定します。
  6. TCP Processor1.vi 〜 TCP Processor4.viを起動します。
TCP Processor1.vi フロントパネルとダイアグラムの説明 (Main Console.viとは並列に独立動作するVI)
  1. Port 6402でFront StationとTCP通信を行ないます。
  2. Front Stationでトリガが発生したら,Front Stationからトリガメッセージを受け取り,MainProcessQueueに入れる。
  3. Front Station以外のStationでトリガが発生した場合には,そのことをTCPQueueから読み取り,Front Stationに知らせる。
TCP Processor2.vi (Main Console.viとは並列に独立動作するVI)
  1. Port 6403でRear StationとTCP通信を行なう。
  2. Rear Stationでトリガが発生したら,Rear Stationからトリガメッセージを受け取り,MainProcessQueueに入れる。
  3. Rear Station以外のStationでトリガが発生した場合には,そのことをTCPQueueから読み取り,Rear Stationに知らせる。
TCP Processor3.vi (Main Console.viとは並列に独立動作するVI)
  1. Port 6404でLeft StationとTCP通信を行なう。
  2. Left Stationでトリガが発生したら,Left Stationからトリガメッセージを受け取り,MainProcessQueueに入れる。
  3. Left Station以外のStationでトリガが発生した場合には,そのことをTCPQueueから読み取り,Left Stationに知らせる。
TCP Processor4.vi (Main Console.viとは並列に独立動作するVI)
  1. Port 6405でRight StationとTCP通信を行なう。
  2. Right Stationでトリガが発生したら,Right Stationからトリガメッセージを受け取り,MainProcessQueueに入れる。
  3. Right Station以外のStationでトリガが発生した場合には,そのことをTCPQueueから読み取り,Right Stationに知らせる。    
(9) Execute Remote.vi フロントパネルとダイアグラムの説明
  1. 全StationのStation Executive.viを起動します。
  2. 全Station内のデバイスステートを読み取って,もし全てのMasterデバイスが「Start Clock」かつ,Slaveデバイスが「Acquire Data」状態になったら,VIサーバー経由で全StationにSlave Readyブールを設定します。
    これで各Stationでのデータ収集開始準備が整いました。
    もし上記の条件を満たさなかったら,0.1秒待って各デバイスのステートをもう一度検査します。
    この動作を300回(約30秒)繰返した後,未だ条件を満たせなかったら,リモートStationの起動Timeoutエラーを発生させます。
  3. もしデータ収集の実行タイマが設定されていたら,タイマを開始するため,StopQueueに「Start」メッセージを送ります。
(10) Stop Remote.vi フロントパネルとダイアグラムの説明
  1. VIサーバーで,全てスレーブからなるRight, Left, Rear Stationの中止ボタン制御器(Stop Acquire)にTrueを送り,停止要求を出します。Front StationのDeviceにはマスターが含まれているので後の工程で設定します。
  2. Right, Left, Rear StationがすべてQuit状態になり,Front StationがAcquire Data状態になるのを,約10秒待ちます。
  3. VIサーバーで,Front Stationの中止ボタン制御器(Stop Acquire)にTrueを送り停止させます。
  4. もしエラーが発生していたら,Timeoutエラーをログします。
--------------------

5.1.2 グローバル変数

(1)Console Global.vi フロントパネルとダイアグラムの説明
--------------------

5.1.3 Typedef

(1)System Parameters Array.ctl フロントパネルとダイアグラムの説明 :全Stationの全DAQ Deviceパラメータを配列化したもので以下を含みます。

(2)Simplified System Parameters.ctl:Main Consoleに表示するStationの動作状況,センサパラメータなどの表示器です。

(3)Simplified System Parameters Array.ctl フロントパネルとダイアグラムの説明 :上記を4Stationで配列化したもので,Station Status表示器として使用しています。

--------------------

5.1.4 LabVIEWライブラリ

vi.lib\Utility\queue.llb中にあるもの vi.lib\Utility\error.llb中にあるもの

目次に戻る


5.2 Main Console.viフロントパネルとダイアグラムの説明内容説明

5.2.1 通信方法

 このVIは全ステーションをリモート(Network経由)で制御します。プログラム内ではTCP,UDP,およびリモートVIサーバーの3種の通信方法を利用しています。以下は各通信方法の役目です。

5.2.1.1 TCP
 TCP通信は必ず送り先に届く必要がある情報のみ使用しています。現在はステーションおよびMain Console.vi間でのトリガー情報のやり取りのみに使用しています。

5.2.1.2 UDP
 UDPは情報の送り先が多い時便利です。しかし,転送中にデータを失う恐れがあるので,現在は各ステーションのステート情報,エラー情報,バックログ情報,および収録されたデータのモニタ送信に使用しています。その理由として,これらのデータは一定時間で連続送信される為,たとえ一つのデータを失っても問題ないからです。

5.2.1.3 リモートVIサーバー
 VIサーバーは一般的にVIの制御に利用していますが,VIサーバーはVIパネル上の制御器に直接値を入力できる為,一つの通信方法にもなります。このVIはVIサーバー機能を使用して,各ステーションのVIおよび内部の制御器の値をリモート制御しています。

----------------------------------------

5.2.2 VI間の通信と同期

 このVIは多くのVIをVIサーバーで実行しています。VIサーバー機能でVIを実行すると,VIが各自のスレッドで起動するので,VI間の通信および同期は大変難しくなります。このVIは三つのキュー(Queue)を使用して,VI間の通信を制御しています。
 3種のキューおよび各キュー内のメッセージを以下に示します。

5.2.2.1 MainProcessQueue
 各スレッドで並行実行しているVIかMain Console VIに情報を渡す時に使用します。以下にこのキュー内で存在可能なメッセージおよび各タイプのFormatを示します。

5.2.2.1.1 「TCPRece」(TCP Processor VIから)
   TCP通信でStationから受け取ったトリガ発生を伝えるメッセージ
     Format:TCPRece::[ステーション名(すべて小文字)]::[TCPで受信したトリガメッセージ(文字列)]

5.2.2.1.2 「TCPErr」(TCP Processor VIから)
   TCPプロセスにエラー発生を示すメッセージ
     Format:TCPErr::[ステーション名]::[Flatten To String VIを使用して文字列化したエラークラスタ]

5.2.2.1.3 「StopTmUp」(Timer Processor VIから)
   プログラムの実行TimerがTimeUpしたメッセージであり,このメッセージをうけてMain Consoleが
   各Stationを停止させるので,実際の終了は多少遅れます。
     Format:StopTmUp::

5.2.2.1.4 「StopErr」(Timer Processor VIから)
   実行タイマプロセスにエラー発生を示すメッセージ
     Format:StopErr::[エラー発生時刻(U32タイプ)を文字列にType Castした物]::[Flatten To Stringで文字列化したエラークラスタ]

5.2.2.1.5. 「DSErr」(DataSocket Read VIから)
   UDPにエラーが発生したことを示すメッセージ
     Format:DSErr::[Flatten To String VIを使用して文字列化したエラークラスタ]


5.2.2.2 TCPQueue
 Main Consoleから指定したStationにTCPで送るメッセージが入っています。
存在可能なメッセージは一つだけです。
     Format:[送り先のステーション名]::[TCPで送信したいメッセージ(ASCII型)]

5.2.2.3 StopQueue
 Main Console VIは実行Timerを設定して実行時間を制限できます。実行時間を制御するTimer Processor.viとMain Console VI間の通信はStopQueueを経由しています。

5.2.2.3.1 「SetTime」 (Main Console.vi内のStart Processor.viから)
Timer Processor.viにデータ収集実行時間を伝えるメッセージ
    Format:SetTime::[タイムアウト値(U32タイプ)を文字列にタイプキャスト(Type Cast関数)した物]

5.2.2.3.2 「Start」 (Main Console.vi内のExecute Remote.viから)
このメッセージでTimer Processor.viのタイマはカウントを始め,タイムアウトまで時間をモニタします。
各Stationが起動してからタイマへ「Start」が送られるのであり,タイマが各Stationを起動させるわけではありません。
    Format:Start::

----------------------------------------

5.2.3 Main Console.viプログラムの構成

 Main Console.viは,Caseストラクチャを用いて以下の9つのステートを順に制御しています。
もしあるステートでエラーが発生したら,自動的に「全て停止」ステートに行き,プログラムは終了します。
ステート処理を開始する前に,Global StopをFalseにして,MainProcessQueue,TCPQueue,StopQueueを作成します。

--------------------

5.2.3.1 「Initialization」ステート

初期化ステートで,このステートでは,
  1. データ収集実行時間Timer表示器を隠し,
  2. ステータスメッセージ表示器をクリアし,次のステートで選択可能なボタンのみを有効にし,他のボタンを無効にします。
  3. Status Logger.viで,現在時刻と開始メッセージをフロントパネル上のステータスメッセージ表示器に表示し,ファイルにも記録するためのStatus Loggerの設定を行い,
  4. サンプリングレート(Scan Rate)やトリガ条件,データ収集時間などを設定してあるバイナリー形式の構成ファイル名を指定します。
エラーがなければ,次のステートは「構成ファイルをロード」です。

--------------------

5.2.3.2 「構成ファイルをロード」ステート

 構成ファイルとは,4台のデータ収集Stationの動作条件を記述したファイルです。
  1. 文字列型構成情報ファイル(.bin.txt)が存在すれば,Read Text Configuration.viでこれを開き,フロントパネルに構成情報を表示します。
  2. 指定した構成ファイル(.bin)を開き,Extract System Parameter.viで,Main ConsoleのSystem Status表示器を初期化します。
  3. 文字列型構成情報ファイルが存在しなければ,構成ファイルが未構成なので,未構成であることを表示します。
  4. 次のステートで選択可能となるボタンを有効にし,他のボタンを無効にします。
構成ファイルが未構成なら次のステートは「構成を変更」であり,そうでなければ,次ステートは操作を選択する「ManualSelect」です。

--------------------

5.2.3.3 「構成を変更」ステート

  1. Simple Converter and Configurator.viで,System Parameters Arrayの書き換えを行い,文字列型の構成情報ファイルも生成します。
  2. メインコンソールに変更処理結果のメッセージを表示します。
再構成が問題無く終了したら,次のステートを「構成ファイルをロード」にして,新しい構成を読み取ります。もし再構成処理が途中でキャンセルされたら,「ManualSelect」に戻ります。

--------------------

5.2.3.4 「ManualSelect」ステート

ほとんどの時間,プログラムはこのステートにいます。このステートはStation実行管理のステートであり,
  1. UDP Reader.viで更新されるStation Statusグローバルを用いてStatus表示を更新します。
  2. 逐次に減らされていくデータ収集実行時間Timerの表示を更新します。
    (この表示はデータ収集実行時間が指定されている場合のみ表示されます。)
  3. MainProcessQueue内の全てのメッセージをMain Queue Processor VIで処理します。
    MainProcessQueue内のメッセージ処理が終了したら,
  4. ユーザーが押したボタンにそって次に実行するステートを選択します。
    もしMain Queue Processor.viが実行停止を要求したら,次のステートは「ステーションを停止」となります。
    それ以外はユーザーが押したボタンで決まります。
        「構成を変更」ボタンを押したら「構成を変更」ケースを実行します。
        「ステーションを起動」ボタンを押したら「ステーションを起動」ケースを実行します。
        「計測モニタを起動」ボタンを押したら「計測モニタを起動」ケースを実行します。
        「ステーションを停止」ボタンを押したら「ステーションを停止」ケースを実行します。
        「ファイル転送を起動」ボタンを押したら「ファイル転送を起動」ケースを実行します。
        「全て停止」ボタンを押したら「全て停止」ケースを実行します。
    何も押さなかったら「ManualSelect」のままです。
--------------------

5.2.3.5 「ステーションを起動」ステート

  1. フロントパネル上の構成ファイル関連のボタンと「ステーションを起動」,「ファイル転送を起動」ボタンを無効にします。
  2. コンソール表示器に「20秒ほど,お待ちください。」のメッセージを表示します。
  3. Connect To Remote.viで各Stationの初期設定を行います。
  4. メインコンソールに「リモートStationに接続しました。」のメッセージを表示します。
  5. Start Processor.viで,Timer関連の初期設定と,Station Statusの受信の準備を行います。
    なお,Main Console.viとTimer Processor.vi,UDP Reader.viは並行動作します。
  6. メインコンソールに「ConsoleのTimerとUDP Readerを起動しました。」のメッセージを表示します。
  7. トリガを設定して計測を行う場合には,Launch TCP.viでトリガ処理用TCP Processor1.vi 〜 TCP Processor4.viを起動します。そして,コンソール表示器に「トリガ用TCPを開きました。」のメッセージを表示します。なお,TCP ProcessorN.viはMain Console.viと並行動作します。
  8. Execute Remote.viで,全リモートStationを起動させ,Front Station以外のStationをFront Stationからの同期クロック発生待ちの状態にします。
  9. メインコンソールのステータス欄に「リモートStation Executiveを起動しました。」のメッセージを表示します。
  10. 実行時間Timerを設定した場合には,フロントパネル上に「残り時間」表示器を出し,「計測モニタを起動」「ステーションを停止」ボタンを有効にします。
エラーがなければ,次のステートは「ManualSelect」になり,以後そのステートでStation実行管理処理を続けます。

--------------------

5.2.3.6 「計測モニタを起動」ステート

 各Stationが収録したデータのうち,UDP経由で希望のチャネルを指定してモニタできるUDP Graph.viをVIサーバーで起動します。
UDP Graph.viはMain Consoleと並行動作します。
エラーがなければ,次のステートは「ManualSelect」です。

--------------------

5.2.3.7 「ステーションを停止」ステート

  1. データ収集実行時間Timerの表示器を隠します。
  2. Stop Remote.viで, 全てのStationを停止させます。
  3. メインコンソールに「リモートStationを停止しました。」のメッセージを表示します。
  4. 「計測モニタを起動」,「ステーションを停止」ボタンを無効にし,「構成を変更」,「ステーションを起動」,「ファイル転送を起動」ボタンを有効にします。
  5. UDP ReaderによるStation Statusの最終更新が完了するのを1.5sec待ってから,全体停止Global StopをTrueに設定します。
  6. 並行動作しているVI(Timer Processor, UDP Reader, TCP ProcessN)を確実に停止させるために,Global StopをTrueに設定してから1.5sec待ちます。これを行わないと,次のステートであるManualSelectでGlobal StopがFalseに設定されていますので,VIが停止ミスをする場合があります。
次のステートは「ManualSelect」です。

--------------------

5.2.3.8 「ファイル転送を起動」ステート

 各Stationのハードディスクに仮保存された収集データファイルをCenter Stationに集めて,2次処理用の変更を行なうため,簡単ファイル転送.vi を動的にメモリにロードし,起動します。

--------------------

5.2.3.9 「全て停止」ステート

  1. リモートStationが停止状態ならば,Status Loggerを閉じて,「ファイル転送を起動」ボタンを無効にし,全プログラムを終了させます。
  2. リモートStationが起動中ならば,Stationの停止を要求するメッセージをフロントパネルに表示します。この場合,次のステートは「Manual Select」です。

目次に戻る


5.3 UDP Graph.viフロントパネルとダイアグラムの説明内容説明

 VIサーバ機能でMain Consoleと独立に起動されます。
各Stationに対して,モニタ表示したいセンサをVIサーバ機能で指定し,各StationからUDPで送られてくるDataをチャート表示します。
Display画面ではMain Consoleのフロントパネル上に重なってモニタ画面が表示されます。
 UDP Graph.viは以下の7つのステートからなっています。

--------------------

5.3.1 「Initialize」ステート

  1. Stationの数だけ受信Portを指定してUDPソケットをOpenします。
  2. メニューリング制御器にStation名称を表示します。
  3. モニタ用チャートの時間軸,凡例などを初期化します。
Stopボタンを押すかGlobal Stopにならなければ,次のステートは「ShiftToSelection」です。Stopボタンを押すかGlobal Stopとなると次のステートは「Stop」です。

--------------------

5.3.2 「ShiftToSelection」ステート

Stopボタンを押すかGlobal Stopにならなければ,次のステートは「SetPlot」です。Stopボタンを押すかGlobal Stopとなると次のステートは「Stop」です。

--------------------

5.3.3 「SetPlot」ステート

  1. Stationのメニューリング制御器の初期値は0なので,FrontのStation Statusが取出され,3,5,4の3つのDAQ Device要素をもつDevice Parameterが取出されます。
  2. Station初期値65535とメニューリング値は不一致なので,上側のCaseストラクチャでTrueステートを実行し,3,5,4のDAQ Device番号がDeviceのメニューリング制御器に書き込まれ,メニューリング出力は0(Device3)に設定されます。
  3. 下側のCaseストラクチャでTrueステートを実行します。
  4. Device3のParameterが取出され,センサ名称がChannel List box制御器に表示されます。
  5. 直前のStation(65535)と直前のDevice(65535)にもとづいて,表示指定されたch情報配列は,空クラスタのままとなります。
  6. Stationリング値0とDeviceリング値0にもとづいてChannel Listが初期化されますが,もとになる配列が空クラスタなのでChannel Listは空配列となります。
  7. 次のループで,StationリングとDeviceリングを変更しなければ,Channel Listの指定/変更を行っても,仮にそのまま記憶されるだけで,この「SetPlot」ステートを繰返します。
  8. Deviceリング制御器を変更すると,下側のCaseストラクチャでTrueステートを実行するので,直前までChannel Listに記憶されたch指定情報がStation Listに確定的に記憶され,新たに指定されたDeviceのch指定情報が表示されます。
  9. Stationリング制御器を変更した場合は,上記(8)の前にDevice番号がDeviceのメニューリング制御器に書き込まれます。以後「センサ選択完了」ボタンが押されるまでこのステートの(7)に戻って繰り返します。
  10. 「センサ選択完了」を押すと,下側のCaseストラクチャでTrueステートを実行するので,直前までChannel Listに記憶されたch指定情報がStation Listに確定的に記憶されます。
Stopボタンを押すかGlobal Stopにならなければ,次のステートは「UpdateLegend」です。Stopボタンを押すかGlobal Stopとなると次のステートは「Stop」です。

--------------------

5.3.4 「UpdateLegend」ステート

  1. VIサーバで,各Stationに,各デバイス(DAQ Device3, 4, 5)ごとの,モニタデータ送信要求(Publish)のリストを設定します。
  2. 表示指定したセンサ名称をチャート凡例に表示します。
Stopボタンを押すかGlobal Stopにならなければ,次のステートは「ShiftToGraph」です。Stopボタンを押すかGlobal Stopとなると次のステートは「Stop」です。

--------------------

5.3.5 「ShiftToGraph」ステート

「Stop」にならなければ,次のステートは「Plot」です。Stopボタンを押すかGlobal Stopとなると次のステートは「Stop」です。

--------------------

5.3.6 「Plot」ステート

  1. 全Stationの全DAQ Deviceについて,表示指定されたセンサ情報をUDP受信Port経由で受け取ります。
       Port 6500から送信されたものは,全StationのDAQ Device3のモニタデータです。
       Port 6501から送信されたものは,Front Station以外のDAQ Device4のモニタデータ,
       もしくは,Front StationのDIO Device5のモニタデータです。
       Port 6502から送信されたものは,Front StationのDAQ Device4のモニタデータです。
       UDPでの受信エラー(おそらく,400msのタイムアウト)が発生すると,Errorランプを点灯させます。
  2. データの欠落,過剰を補正し,連続的にグラフ表示します。X軸の時間間隔は0.1秒です。
  3. 一時停止ボタンを押すと,グラフの更新を停止します。
「Stop」にならず,「センサ選択の変更」ボタンを押すまでこのステートを繰返します。 「センサ選択の変更」ボタンを押すと,次のステートは「ShiftToSelection」です。 Stopボタンを押すかGlobal Stopとなると次のステートは「Stop」です。

--------------------

5.3.7 「Stop」ステート

  1. VIサーバで,全ステーションの全デバイスの,グラフ表示要求(Publish)のリストをクリアします。
  2. UDP Data Portを全て閉じます。
  3. UDP Graph.viを終了します。

目次に戻る


5.4 簡単ファイル転送.viフロントパネルとダイアグラムの説明内容説明

 このVIは,4台のStationに仮保存されたデータファイル群をCenter Stationにコピーし,2次処理用の準備をします。
データ管理の仕様としては,  (1)保存されたデータの内容が区別しやすいこと。  (2)ユーザーの誤操作によるデータ喪失をおこさないこと
をめざして作成しました。
  1. 保存先の「記憶装置名称」を選択し,「試験の大項目」を選択し,試験の「ケース番号」,「コメント」などを入力します。
  2. 試験の[ケース番号][試験大項目][コメント][保存日時]を連結した文字列からなるディレクトリを自動作成します。
  3. 収集されたデータの各Stationでの仮保存パスは,全てのStationで同じ名称E:\dataなので,このVIで各Station固有のパス名(F_data, R_data, L_data, T_data)に変換し,上記2で作成したディレクトリ内に保存します。
保存されたデータ群は,2次処理用プログラムPostProcessで使われます。データの保存に対して,保存日時が自動的に使われるため,オペレータが間違って上書きしてしまう操作ミスをなくしています。

目次に戻る


5.5 Configuration Reader & Writer.viフロントパネルとダイアグラムの説明内容説明

 このVIは,各Stationでのデータ収集の仕様をまとめてあるバイナリ構成ファイル(*.bin)を読込み,内容を変更した後,再度書込む処理をオフラインで行います。このVIでは,DAQ Device3の「Scan Rate」とDAQ Device4,5の「Master Scan Rate」の独立指定が可能ですが,Main Consoleとしては,この2つの値は同じでなければなりません。
  1. ファイル指定のダイアログを表示して,バイナリ構成ファイル*.binの指定を行います。
  2. ファイルを読み,System Parameters Array表示器に表示します。
  3. 「構成ファイルの修正が完了したら押してください」と表示して,System Parameters Array内容の変更完了と「修正完了」ボタンが押されるのを待ちます。
  4. 全Station, 全DAQ Deviceについて,
    (4-1-1)Device3のMasterならば,「Scan Rate」をAct Freq3にコピーします。
    (4-1-2)Device3のSlaveならば,Act Freq3を「Scan Rate」にコピーします。
    (4-2-1)Device4のMasterならば,「Master Scan Rate」と「Scan Rate」から,実際に発生可能なスキャンレートを
        求めて「Scan Rate」を修正し,Act Freq4にコピーします。
    (4-2-2)Device4のSlaveならば,Act Freq4を「Scan Rate」にコピーします。
    (4-3-1)Device5のMasterならば,なにもしませんが,この状態は有り得ません。
    (4-3-2)Device5のSlaveならば,「Master Scan Rate」と「Scan Rate」から,実際に発生可能なスキャンレートを
        求めて「Scan Rate」を修正します。
  5. バイナリ構成ファイル*.binの書換えを行います。

目次に戻る


LabVIEW TOPに戻る