SlideShare a Scribd company logo
LabVIEW NXG Training Course
Session6 - ファイル I/O
Yusuke Tochigi
NXG 5.0 Version
LabVIEW NXG Training Course 2
ファイル I/O
集録 / 解析したデータをファイルに保存する機能は多くのアプリケーションで必須要件に
なります。複数のファイル形式を、要件に応じて使い分けます。
テキスト (csv など ) バイナリ TDMS
数値精度
精度を保持して保存できるか
△
フォーマットに依存
◎
精度落ちなし
◎
精度落ちなし
可読性
メモ帳等で開いて読めるか
◎ × 〇
Excel アドオン有
サイズ
ファイルサイズは小さいか
× ◎ ◎
検索可能
既存手法でデータ検索可能か
× × ◎
属性を付与
データに属性を付与できるか
× × ◎
高速ストリーミング
保存速度は高速か
× ◎ ◎
LabVIEW NXG Training Course 3
ファイル I/O 関数
ファイル I/O 関数は以下の場所からアクセスできます。「区切られた ... 」関数はそれ 1
つでファイルを開き、読み書きし、閉じる操作を行う便利な関数です。ループの中でこの
関数を呼び出すと、処理が遅くなる原因になります。背景が黄色の関数を使用すること
で、パフォーマンス効率を上げることができます。
LabVIEW NXG Training Course 4
ファイル I/O の基本操作
ファイルの読み書きでは、ファイルを開く、読む / 書く、閉じるという手順を踏む必要があ
ります。一度ファイルを開けば、次に閉じるまで繰り返し読み書きができます。
繰り返し処理の場合は、ファイルを開く / 閉じる処理までループの中に入れると、処理が
遅くなります。これらの関数はループの外に出し、ループの中では読み書きの処理だけを
行います。
読み書き
LabVIEW NXG Training Course 5
ファイルの閉じ忘れ
開いたファイルは必ず閉じます。ファイルが閉じられないとリファレンスリークが発生し、不必
要にメモリを消費します。最後にはメモリオーバーフローとなって、アプリケーションが停止す
る原因となります。また、ファイルが開けなくなる危険性もあります。
例えば以下のコードを実行すると、メモリ使用量は継続的に増えていき、最終的にはメ
モリオーバーフローとなります。開いたら閉じる、この手順を忘れないようにします。
LabVIEW NXG Training Course 6
ファイルを開く
ファイルを開く関数は、操作入力によって、ファイルを開く際の操作を選択することができ
ます。既存のファイルを開く、ファイルが既存であれば置き換える、新規に作成するなどが
選択できます。
LabVIEW NXG Training Course 7
リファレンス
ファイルを開くと、ファイルの情報はリファレンスに保持されます。ファイル I/O ではこのリファ
レンスを受け渡すことで、対象のファイルに対する操作を行います。
リファレンスはそれ自身が一つのデータタイプで、配列などのようにリファレンス自身に対す
る処理というものはありません。あくまでファイル I/O 関数間での情報受け渡しにのみ使
用されます。
LabVIEW NXG Training Course 8
テキストファイルへの書き込み
テキストファイル保存では、文字列データタイプとしてデータを読み書きします。そのため、
書き込むデータは文字列にフォーマットする必要があり、読み込むデータは必要に応じて
文字列から数値への変換作業を行う必要があります。
数値を文字列に変換する際に、数値精度を指定する必要があります。精度を高くする
ほど元のデータの再現率が高くなりますが、ファイルサイズも大きくなります。
LabVIEW NXG Training Course 9
テキストファイルからの読み取り
テキストファイルから読み取られるデータは文字列です。開発者は文字列にどのようなデ
ータが、どのような形式で保持されているか知っている必要があります。
LabVIEW NXG Training Course 10
文字列変換のテクニック
ダイアグラムのパレットから、データタイプ 》 文字列 》 変換の関数を使って、文字列を他
のデータタイプに変換することができます。文字列にフォーマット、文字列からスキャン関
数を使用して、スカラデータを文字列に、またはその逆の操作を行います。
配列を文字列に、もしくはその逆の操作も行えます。
LabVIEW NXG Training Course 11
バイナリファイルへの書き込み
バイナリファイルへの書き込みは、書き込みたいデータをそのまま書き込み関数へ配線し
ます。入力は、任意タイプのスカラ、配列、クラスタを受け付けます。データを文字列へ変
換する作業は不要ですが、書き込まれたデータが何か、ファイルを開いて確認できないた
め、詳細ドキュメントの作成が必要です。
LabVIEW NXG Training Course 12
バイナリファイルからの読み取り
バイナリファイルにどのようなデータが保存されているか LabVIEW NXG は知りません。
よって読み取り関数には、データタイプや読み取るデータ要素の最大数を指定
し、 LabVIEW NXG が正しく読めるようサポートする必要があります。
今回の例は 2D 配列の読み書きであったのでそこまで難しくありませんでしたが、ヘッダと
データが混在するようなケースでは、正しく読み取ることは至難の業です。
LabVIEW NXG Training Course 13
ヘッダの作成
バイナリファイルでヘッダ情報を追加する場合、バイナリデータを書き込む前にテキストファ
イルでヘッダ情報を書き込みます。
読み取り時は、ヘッダ情報の文字サイズを把握しておき、ファイル先頭からそのサイズ分フ
ァイル位置を移動したのち、データの読み取りを開始します。このようなにバイナリファイル
では、文字列と実データが混在するファイルの取り扱いは非常に難しくなります。
LabVIEW NXG Training Course 14
TDMS
Technical Data Management Storage (TDMS) ファイルは National
Instruments が開発したデータ管理ソリューションです。データ保存を最も効率的に行
うことができ、測定データのストリーミング保存などにおいて使用が推奨されます。
TDMS は「ファイル」「グループ」「チャンネル」の 3 階層構造を持ち、ファイルの下に複数
のグループを、グループの下に複数のチャンネルを無制限に作成できます。車両テストの
例を以下に示します。
自動車名 ( ファイル )
+ エンジン ( グループ )
+ 温度 ( チャンネル )
+ 振動 ( チャンネル )
+ 圧力 ( チャンネル )
+ ブレーキ
+ 電圧
+ 電流
+ ライト
+ 電圧
+ 電流
http://www.ni.com/product-documentation/3727/ja/より
LabVIEW NXG Training Course 15
TDMS の属性とデータ
TDMS のファイル / グループ / チャンネルには、それぞれ属性をつけることができます。属
性は各階層に付与できるヘッダ情報です。
例えば先の例では、
●
ファイルに「作業者」や「作業日時」など
●
エンジンやブレーキに「シリアル番号」や「配線情報」など
●
温度や振動に「センサの型番」や「測定条件」など
の属性を付与することで、測定に関する情報を詳細に記録できます。
TDMS ファイルはデータをバイナリ形式で保存するので、情報を失うことなく高速ストリー
ミングが可能です。構造化されているため、属性の読み書きも容易に行えます。
TDMS はテキストとバイナリ、両者の利点を統合したファイル形式です。
LabVIEW NXG Training Course 16
TDMS ファイルの基本操作
テキストファイルと同様に、 TDMS ファイルも開いて閉じる操作が必要です。 TDMS の
場合は、 TDMS を開く、 TDMS を閉じる関数を使用します。 TDMS ファイルの拡張
子は「 *.tdms 」です。 TDMS ファイルは「 *.tdms_index 」ファイルも自動的に生成
します。このファイルは TDMS ファイルを検索する際などに使用されます。インデックスファ
イルがなければ自動で生成されるため、配布の際などに提供する必要はありません。
LabVIEW NXG Training Course 17
TDMS へのデータ書き込み
TDMS 書き込み関数を使用してデータを TDMS ファイルへ書き込みます。書き込みの
際は、グループ名とチャンネル名を指定します。
以下の例では、 DAQmx 読み取り関数から 2 チャンネル分のデータが出力されます。
これを Engine グループの Temperature と Acceleration チャンネルデータとし
て、 TDMS ファイルへ書き込みます。
LabVIEW NXG Training Course 18
TDMS からのデータ読み取り
TDMS 読み取り関数を使用してデータを TDMS ファイルからデータを読み取ります。書
き込みの際と同様に、グループ名とチャンネル名を指定します。
他のテクニックとして、グループまたはチャンネルを未配線にすることができます。詳細はヘ
ルプの配線されていない場合の読み取り動作を確認します。
LabVIEW NXG Training Course 19
属性の追加
TDMS プロパティを設定関数によって、ファイル / グループ / チャンネルに属性を追加し
ます。端子の配線によって、何に対する操作かが変わります。プロパティ値はバリアント
で、様々なデータタイプを入力することができます。
LabVIEW NXG Training Course 20
属性の取得
TDMS プロパティを取得関数を使用して、ファイル / グループ / チャンネルから属性を
取得します。設定と同様に、端子の配線によって何に対する操作かが変わります。デー
タタイプ端子に属性のデータタイプと同じデータを入力することによって、プロパティ値の出
力データタイプが変わります。
LabVIEW NXG Training Course 21
3rd
Party ソフトウェアでの TDMS 読み書き
ナショナルインスツルメンツが提供する
TDM Excel Add-In for Microsoft Excelを使用すると、 Excel で TDMS ファ
イルを開くことができます。
また、無償のCライブラリが提供されているので、他のプログラミング環境からも取り扱うこ
とができます。
LabVIEW NXG Training Course 22
ファイルパス
ファイルパスを使用して、操作対象のファイルを指定します。パスは大きく分けて以下の 2
種類があります。
●
絶対パス
C:UsersUserDesktopHello.txt のように、ファイルまたはフォルダへの完璧な
経路を示します。道を聞かれた際に、目的地の住所を教えるイメージです。
●
相対パス
現在のファイルまたはフォルダ位置からの経路を示します。道を聞かれた際に、現在地か
らの経路を教えるイメージです。 LabVIEW NXG では、以下のような関数を使用して
相対パスを取得します。
LabVIEW NXG Training Course 23
パスの指定
パネル上でパスを指定する場合は絶対パスを使用します。ファイルパス制御器では、構
成ペーンにおいてパス指定の手法を設定することができます。パターンを「 *.png 」のよう
にすることで、ファイル選択時にその拡張子を使用できます。
LabVIEW NXG Training Course 24
パスの自動作成
手動での入力以外に、ファイル名に日時を使用したり、同じファイル名の末尾に番号を
自動で付与したり、 LabVIEW NXG では便利な関数が多く準備されています。
LabVIEW NXG Training Course 25
区切られたスプレッドシート
区切られたスプレッドシートに書き込む / を読み取る関数を使用して、配列を簡単に
csv ファイル等へ保存することができます。ただしこの関数は、ファイルを開いて閉じるまで
の処理を内部的に行います。そのためループの中で処理を行う場合、処理速度に大き
な遅延を生じさせる可能性があるため、高速処理が求められる場合は使用しません。

More Related Content

Similar to Session6 - LabVIEW NXG Training Course

The overview of Server-ide Bulk Loader
 The overview of Server-ide Bulk Loader The overview of Server-ide Bulk Loader
The overview of Server-ide Bulk Loader
Treasure Data, Inc.
 
TensorFlowをもう少し詳しく入門
TensorFlowをもう少し詳しく入門TensorFlowをもう少し詳しく入門
TensorFlowをもう少し詳しく入門
tak9029
 
【ウェブ セミナー】AI / アナリティクスを支えるビッグデータ基盤 Azure Data Lake [実践編]
【ウェブ セミナー】AI / アナリティクスを支えるビッグデータ基盤 Azure Data Lake [実践編]【ウェブ セミナー】AI / アナリティクスを支えるビッグデータ基盤 Azure Data Lake [実践編]
【ウェブ セミナー】AI / アナリティクスを支えるビッグデータ基盤 Azure Data Lake [実践編]
Hideo Takagi
 
組み込みDb empressホワイトペーパー
組み込みDb empressホワイトペーパー組み込みDb empressホワイトペーパー
組み込みDb empressホワイトペーパー
ITDORAKU
 
Big Data Architecture 全体概要
Big Data Architecture 全体概要Big Data Architecture 全体概要
Big Data Architecture 全体概要
Knowledge & Experience
 
メタデータスキーマレジストリ MetaBridge
メタデータスキーマレジストリ MetaBridgeメタデータスキーマレジストリ MetaBridge
メタデータスキーマレジストリ MetaBridge
Mitsuharu Nagamori
 
印刷におけるデジタル活用入門 データベースによるワンソースマルチユースについて
印刷におけるデジタル活用入門 データベースによるワンソースマルチユースについて印刷におけるデジタル活用入門 データベースによるワンソースマルチユースについて
印刷におけるデジタル活用入門 データベースによるワンソースマルチユースについて
Seiji Deguchi
 
[DDBJing31] Mass Submission System の紹介
[DDBJing31] Mass Submission System の紹介[DDBJing31] Mass Submission System の紹介
[DDBJing31] Mass Submission System の紹介
DNA Data Bank of Japan center
 
アプリのロギングからデータ収集・分析・活用
アプリのロギングからデータ収集・分析・活用アプリのロギングからデータ収集・分析・活用
アプリのロギングからデータ収集・分析・活用
Atsushi Yokohama (BEACHSIDE)
 
第29回 SQL Server 勉強会 (JSSUG) - Azure Synapse Analytics 概要
第29回 SQL Server 勉強会 (JSSUG) - Azure Synapse Analytics 概要 第29回 SQL Server 勉強会 (JSSUG) - Azure Synapse Analytics 概要
第29回 SQL Server 勉強会 (JSSUG) - Azure Synapse Analytics 概要
Daiyu Hatakeyama
 
エンタープライズワークロードにおけるAmazon Auroraの活用
エンタープライズワークロードにおけるAmazon Auroraの活用エンタープライズワークロードにおけるAmazon Auroraの活用
エンタープライズワークロードにおけるAmazon Auroraの活用
Amazon Web Services Japan
 
「ビジネス活用事例で学ぶ データサイエンス入門」輪読会#5資料
「ビジネス活用事例で学ぶ データサイエンス入門」輪読会#5資料「ビジネス活用事例で学ぶ データサイエンス入門」輪読会#5資料
「ビジネス活用事例で学ぶ データサイエンス入門」輪読会#5資料
Shintaro Nomura
 
2020/11/19 Global AI on Tour - Toyama プログラマーのための機械学習入門
2020/11/19 Global AI on Tour - Toyama プログラマーのための機械学習入門2020/11/19 Global AI on Tour - Toyama プログラマーのための機械学習入門
2020/11/19 Global AI on Tour - Toyama プログラマーのための機械学習入門
Daiyu Hatakeyama
 
Azure Antenna はじめての Azure Data Lake
Azure Antenna はじめての Azure Data LakeAzure Antenna はじめての Azure Data Lake
Azure Antenna はじめての Azure Data Lake
Hideo Takagi
 
Dvx update 20180605
Dvx update 20180605Dvx update 20180605
Dvx update 20180605
正明 羽鳥
 
Datrium DVX update 20180605
Datrium DVX update 20180605Datrium DVX update 20180605
Datrium DVX update 20180605
datriumjapan
 
Amazon Redshift パフォーマンスチューニングテクニックと最新アップデート
Amazon Redshift パフォーマンスチューニングテクニックと最新アップデートAmazon Redshift パフォーマンスチューニングテクニックと最新アップデート
Amazon Redshift パフォーマンスチューニングテクニックと最新アップデート
Amazon Web Services Japan
 
2011年度 生物データベース論 2日目 木構造データ
2011年度 生物データベース論 2日目 木構造データ2011年度 生物データベース論 2日目 木構造データ
2011年度 生物データベース論 2日目 木構造データ
Taro L. Saito
 
Cloudianの構築と運用の基礎 (Cloudian Summit 2012)
Cloudianの構築と運用の基礎 (Cloudian Summit 2012)Cloudianの構築と運用の基礎 (Cloudian Summit 2012)
Cloudianの構築と運用の基礎 (Cloudian Summit 2012)
CLOUDIAN KK
 
既存ツールの不満を簡単に解消! AWS環境の保護ならN2WSにおまかせ
既存ツールの不満を簡単に解消! AWS環境の保護ならN2WSにおまかせ既存ツールの不満を簡単に解消! AWS環境の保護ならN2WSにおまかせ
既存ツールの不満を簡単に解消! AWS環境の保護ならN2WSにおまかせ
株式会社クライム
 

Similar to Session6 - LabVIEW NXG Training Course (20)

The overview of Server-ide Bulk Loader
 The overview of Server-ide Bulk Loader The overview of Server-ide Bulk Loader
The overview of Server-ide Bulk Loader
 
TensorFlowをもう少し詳しく入門
TensorFlowをもう少し詳しく入門TensorFlowをもう少し詳しく入門
TensorFlowをもう少し詳しく入門
 
【ウェブ セミナー】AI / アナリティクスを支えるビッグデータ基盤 Azure Data Lake [実践編]
【ウェブ セミナー】AI / アナリティクスを支えるビッグデータ基盤 Azure Data Lake [実践編]【ウェブ セミナー】AI / アナリティクスを支えるビッグデータ基盤 Azure Data Lake [実践編]
【ウェブ セミナー】AI / アナリティクスを支えるビッグデータ基盤 Azure Data Lake [実践編]
 
組み込みDb empressホワイトペーパー
組み込みDb empressホワイトペーパー組み込みDb empressホワイトペーパー
組み込みDb empressホワイトペーパー
 
Big Data Architecture 全体概要
Big Data Architecture 全体概要Big Data Architecture 全体概要
Big Data Architecture 全体概要
 
メタデータスキーマレジストリ MetaBridge
メタデータスキーマレジストリ MetaBridgeメタデータスキーマレジストリ MetaBridge
メタデータスキーマレジストリ MetaBridge
 
印刷におけるデジタル活用入門 データベースによるワンソースマルチユースについて
印刷におけるデジタル活用入門 データベースによるワンソースマルチユースについて印刷におけるデジタル活用入門 データベースによるワンソースマルチユースについて
印刷におけるデジタル活用入門 データベースによるワンソースマルチユースについて
 
[DDBJing31] Mass Submission System の紹介
[DDBJing31] Mass Submission System の紹介[DDBJing31] Mass Submission System の紹介
[DDBJing31] Mass Submission System の紹介
 
アプリのロギングからデータ収集・分析・活用
アプリのロギングからデータ収集・分析・活用アプリのロギングからデータ収集・分析・活用
アプリのロギングからデータ収集・分析・活用
 
第29回 SQL Server 勉強会 (JSSUG) - Azure Synapse Analytics 概要
第29回 SQL Server 勉強会 (JSSUG) - Azure Synapse Analytics 概要 第29回 SQL Server 勉強会 (JSSUG) - Azure Synapse Analytics 概要
第29回 SQL Server 勉強会 (JSSUG) - Azure Synapse Analytics 概要
 
エンタープライズワークロードにおけるAmazon Auroraの活用
エンタープライズワークロードにおけるAmazon Auroraの活用エンタープライズワークロードにおけるAmazon Auroraの活用
エンタープライズワークロードにおけるAmazon Auroraの活用
 
「ビジネス活用事例で学ぶ データサイエンス入門」輪読会#5資料
「ビジネス活用事例で学ぶ データサイエンス入門」輪読会#5資料「ビジネス活用事例で学ぶ データサイエンス入門」輪読会#5資料
「ビジネス活用事例で学ぶ データサイエンス入門」輪読会#5資料
 
2020/11/19 Global AI on Tour - Toyama プログラマーのための機械学習入門
2020/11/19 Global AI on Tour - Toyama プログラマーのための機械学習入門2020/11/19 Global AI on Tour - Toyama プログラマーのための機械学習入門
2020/11/19 Global AI on Tour - Toyama プログラマーのための機械学習入門
 
Azure Antenna はじめての Azure Data Lake
Azure Antenna はじめての Azure Data LakeAzure Antenna はじめての Azure Data Lake
Azure Antenna はじめての Azure Data Lake
 
Dvx update 20180605
Dvx update 20180605Dvx update 20180605
Dvx update 20180605
 
Datrium DVX update 20180605
Datrium DVX update 20180605Datrium DVX update 20180605
Datrium DVX update 20180605
 
Amazon Redshift パフォーマンスチューニングテクニックと最新アップデート
Amazon Redshift パフォーマンスチューニングテクニックと最新アップデートAmazon Redshift パフォーマンスチューニングテクニックと最新アップデート
Amazon Redshift パフォーマンスチューニングテクニックと最新アップデート
 
2011年度 生物データベース論 2日目 木構造データ
2011年度 生物データベース論 2日目 木構造データ2011年度 生物データベース論 2日目 木構造データ
2011年度 生物データベース論 2日目 木構造データ
 
Cloudianの構築と運用の基礎 (Cloudian Summit 2012)
Cloudianの構築と運用の基礎 (Cloudian Summit 2012)Cloudianの構築と運用の基礎 (Cloudian Summit 2012)
Cloudianの構築と運用の基礎 (Cloudian Summit 2012)
 
既存ツールの不満を簡単に解消! AWS環境の保護ならN2WSにおまかせ
既存ツールの不満を簡単に解消! AWS環境の保護ならN2WSにおまかせ既存ツールの不満を簡単に解消! AWS環境の保護ならN2WSにおまかせ
既存ツールの不満を簡単に解消! AWS環境の保護ならN2WSにおまかせ
 

More from Yusuke Tochigi

LabVIEW NXG Current Status @ 2020
LabVIEW NXG Current Status @ 2020LabVIEW NXG Current Status @ 2020
LabVIEW NXG Current Status @ 2020
Yusuke Tochigi
 
Test Driven Development in LabVIEW
Test Driven Development in LabVIEWTest Driven Development in LabVIEW
Test Driven Development in LabVIEW
Yusuke Tochigi
 
LabVIEW NXG Web Module Training Slide
LabVIEW NXG Web Module Training SlideLabVIEW NXG Web Module Training Slide
LabVIEW NXG Web Module Training Slide
Yusuke Tochigi
 
LabVIEW NXG OOP Training
LabVIEW NXG OOP TrainingLabVIEW NXG OOP Training
LabVIEW NXG OOP Training
Yusuke Tochigi
 
Session9 - LabVIEW NXG Training Course
Session9 - LabVIEW NXG Training CourseSession9 - LabVIEW NXG Training Course
Session9 - LabVIEW NXG Training Course
Yusuke Tochigi
 
Session8 - LabVIEW NXG Training Course
Session8 - LabVIEW NXG Training CourseSession8 - LabVIEW NXG Training Course
Session8 - LabVIEW NXG Training Course
Yusuke Tochigi
 
Session7 - LabVIEW NXG Training Course
Session7 - LabVIEW NXG Training CourseSession7 - LabVIEW NXG Training Course
Session7 - LabVIEW NXG Training Course
Yusuke Tochigi
 
Session11 - LabVIEW NXG Training Course
Session11 - LabVIEW NXG Training CourseSession11 - LabVIEW NXG Training Course
Session11 - LabVIEW NXG Training Course
Yusuke Tochigi
 
Session10 - LabVIEW NXG Training Course
Session10 - LabVIEW NXG Training CourseSession10 - LabVIEW NXG Training Course
Session10 - LabVIEW NXG Training Course
Yusuke Tochigi
 
Session5 - LabVIEW NXG Training Course
Session5 - LabVIEW NXG Training CourseSession5 - LabVIEW NXG Training Course
Session5 - LabVIEW NXG Training Course
Yusuke Tochigi
 
Session4 - LabVIEW NXG Training Cours
Session4 - LabVIEW NXG Training CoursSession4 - LabVIEW NXG Training Cours
Session4 - LabVIEW NXG Training Cours
Yusuke Tochigi
 
Session3 - LabVIEW NXG Training Course
Session3 - LabVIEW NXG Training CourseSession3 - LabVIEW NXG Training Course
Session3 - LabVIEW NXG Training Course
Yusuke Tochigi
 
Session2 - LabVIEW NXG Training Course
Session2 - LabVIEW NXG Training CourseSession2 - LabVIEW NXG Training Course
Session2 - LabVIEW NXG Training Course
Yusuke Tochigi
 
Session1 - LabVIEW NXG Training Course
Session1 - LabVIEW NXG Training CourseSession1 - LabVIEW NXG Training Course
Session1 - LabVIEW NXG Training Course
Yusuke Tochigi
 
Intro - LabVIEW NXG Training Course
Intro - LabVIEW NXG Training CourseIntro - LabVIEW NXG Training Course
Intro - LabVIEW NXG Training Course
Yusuke Tochigi
 
Automotive QMS IATF16949
Automotive QMS IATF16949Automotive QMS IATF16949
Automotive QMS IATF16949
Yusuke Tochigi
 

More from Yusuke Tochigi (16)

LabVIEW NXG Current Status @ 2020
LabVIEW NXG Current Status @ 2020LabVIEW NXG Current Status @ 2020
LabVIEW NXG Current Status @ 2020
 
Test Driven Development in LabVIEW
Test Driven Development in LabVIEWTest Driven Development in LabVIEW
Test Driven Development in LabVIEW
 
LabVIEW NXG Web Module Training Slide
LabVIEW NXG Web Module Training SlideLabVIEW NXG Web Module Training Slide
LabVIEW NXG Web Module Training Slide
 
LabVIEW NXG OOP Training
LabVIEW NXG OOP TrainingLabVIEW NXG OOP Training
LabVIEW NXG OOP Training
 
Session9 - LabVIEW NXG Training Course
Session9 - LabVIEW NXG Training CourseSession9 - LabVIEW NXG Training Course
Session9 - LabVIEW NXG Training Course
 
Session8 - LabVIEW NXG Training Course
Session8 - LabVIEW NXG Training CourseSession8 - LabVIEW NXG Training Course
Session8 - LabVIEW NXG Training Course
 
Session7 - LabVIEW NXG Training Course
Session7 - LabVIEW NXG Training CourseSession7 - LabVIEW NXG Training Course
Session7 - LabVIEW NXG Training Course
 
Session11 - LabVIEW NXG Training Course
Session11 - LabVIEW NXG Training CourseSession11 - LabVIEW NXG Training Course
Session11 - LabVIEW NXG Training Course
 
Session10 - LabVIEW NXG Training Course
Session10 - LabVIEW NXG Training CourseSession10 - LabVIEW NXG Training Course
Session10 - LabVIEW NXG Training Course
 
Session5 - LabVIEW NXG Training Course
Session5 - LabVIEW NXG Training CourseSession5 - LabVIEW NXG Training Course
Session5 - LabVIEW NXG Training Course
 
Session4 - LabVIEW NXG Training Cours
Session4 - LabVIEW NXG Training CoursSession4 - LabVIEW NXG Training Cours
Session4 - LabVIEW NXG Training Cours
 
Session3 - LabVIEW NXG Training Course
Session3 - LabVIEW NXG Training CourseSession3 - LabVIEW NXG Training Course
Session3 - LabVIEW NXG Training Course
 
Session2 - LabVIEW NXG Training Course
Session2 - LabVIEW NXG Training CourseSession2 - LabVIEW NXG Training Course
Session2 - LabVIEW NXG Training Course
 
Session1 - LabVIEW NXG Training Course
Session1 - LabVIEW NXG Training CourseSession1 - LabVIEW NXG Training Course
Session1 - LabVIEW NXG Training Course
 
Intro - LabVIEW NXG Training Course
Intro - LabVIEW NXG Training CourseIntro - LabVIEW NXG Training Course
Intro - LabVIEW NXG Training Course
 
Automotive QMS IATF16949
Automotive QMS IATF16949Automotive QMS IATF16949
Automotive QMS IATF16949
 

Session6 - LabVIEW NXG Training Course

  • 1. LabVIEW NXG Training Course Session6 - ファイル I/O Yusuke Tochigi NXG 5.0 Version
  • 2. LabVIEW NXG Training Course 2 ファイル I/O 集録 / 解析したデータをファイルに保存する機能は多くのアプリケーションで必須要件に なります。複数のファイル形式を、要件に応じて使い分けます。 テキスト (csv など ) バイナリ TDMS 数値精度 精度を保持して保存できるか △ フォーマットに依存 ◎ 精度落ちなし ◎ 精度落ちなし 可読性 メモ帳等で開いて読めるか ◎ × 〇 Excel アドオン有 サイズ ファイルサイズは小さいか × ◎ ◎ 検索可能 既存手法でデータ検索可能か × × ◎ 属性を付与 データに属性を付与できるか × × ◎ 高速ストリーミング 保存速度は高速か × ◎ ◎
  • 3. LabVIEW NXG Training Course 3 ファイル I/O 関数 ファイル I/O 関数は以下の場所からアクセスできます。「区切られた ... 」関数はそれ 1 つでファイルを開き、読み書きし、閉じる操作を行う便利な関数です。ループの中でこの 関数を呼び出すと、処理が遅くなる原因になります。背景が黄色の関数を使用すること で、パフォーマンス効率を上げることができます。
  • 4. LabVIEW NXG Training Course 4 ファイル I/O の基本操作 ファイルの読み書きでは、ファイルを開く、読む / 書く、閉じるという手順を踏む必要があ ります。一度ファイルを開けば、次に閉じるまで繰り返し読み書きができます。 繰り返し処理の場合は、ファイルを開く / 閉じる処理までループの中に入れると、処理が 遅くなります。これらの関数はループの外に出し、ループの中では読み書きの処理だけを 行います。 読み書き
  • 5. LabVIEW NXG Training Course 5 ファイルの閉じ忘れ 開いたファイルは必ず閉じます。ファイルが閉じられないとリファレンスリークが発生し、不必 要にメモリを消費します。最後にはメモリオーバーフローとなって、アプリケーションが停止す る原因となります。また、ファイルが開けなくなる危険性もあります。 例えば以下のコードを実行すると、メモリ使用量は継続的に増えていき、最終的にはメ モリオーバーフローとなります。開いたら閉じる、この手順を忘れないようにします。
  • 6. LabVIEW NXG Training Course 6 ファイルを開く ファイルを開く関数は、操作入力によって、ファイルを開く際の操作を選択することができ ます。既存のファイルを開く、ファイルが既存であれば置き換える、新規に作成するなどが 選択できます。
  • 7. LabVIEW NXG Training Course 7 リファレンス ファイルを開くと、ファイルの情報はリファレンスに保持されます。ファイル I/O ではこのリファ レンスを受け渡すことで、対象のファイルに対する操作を行います。 リファレンスはそれ自身が一つのデータタイプで、配列などのようにリファレンス自身に対す る処理というものはありません。あくまでファイル I/O 関数間での情報受け渡しにのみ使 用されます。
  • 8. LabVIEW NXG Training Course 8 テキストファイルへの書き込み テキストファイル保存では、文字列データタイプとしてデータを読み書きします。そのため、 書き込むデータは文字列にフォーマットする必要があり、読み込むデータは必要に応じて 文字列から数値への変換作業を行う必要があります。 数値を文字列に変換する際に、数値精度を指定する必要があります。精度を高くする ほど元のデータの再現率が高くなりますが、ファイルサイズも大きくなります。
  • 9. LabVIEW NXG Training Course 9 テキストファイルからの読み取り テキストファイルから読み取られるデータは文字列です。開発者は文字列にどのようなデ ータが、どのような形式で保持されているか知っている必要があります。
  • 10. LabVIEW NXG Training Course 10 文字列変換のテクニック ダイアグラムのパレットから、データタイプ 》 文字列 》 変換の関数を使って、文字列を他 のデータタイプに変換することができます。文字列にフォーマット、文字列からスキャン関 数を使用して、スカラデータを文字列に、またはその逆の操作を行います。 配列を文字列に、もしくはその逆の操作も行えます。
  • 11. LabVIEW NXG Training Course 11 バイナリファイルへの書き込み バイナリファイルへの書き込みは、書き込みたいデータをそのまま書き込み関数へ配線し ます。入力は、任意タイプのスカラ、配列、クラスタを受け付けます。データを文字列へ変 換する作業は不要ですが、書き込まれたデータが何か、ファイルを開いて確認できないた め、詳細ドキュメントの作成が必要です。
  • 12. LabVIEW NXG Training Course 12 バイナリファイルからの読み取り バイナリファイルにどのようなデータが保存されているか LabVIEW NXG は知りません。 よって読み取り関数には、データタイプや読み取るデータ要素の最大数を指定 し、 LabVIEW NXG が正しく読めるようサポートする必要があります。 今回の例は 2D 配列の読み書きであったのでそこまで難しくありませんでしたが、ヘッダと データが混在するようなケースでは、正しく読み取ることは至難の業です。
  • 13. LabVIEW NXG Training Course 13 ヘッダの作成 バイナリファイルでヘッダ情報を追加する場合、バイナリデータを書き込む前にテキストファ イルでヘッダ情報を書き込みます。 読み取り時は、ヘッダ情報の文字サイズを把握しておき、ファイル先頭からそのサイズ分フ ァイル位置を移動したのち、データの読み取りを開始します。このようなにバイナリファイル では、文字列と実データが混在するファイルの取り扱いは非常に難しくなります。
  • 14. LabVIEW NXG Training Course 14 TDMS Technical Data Management Storage (TDMS) ファイルは National Instruments が開発したデータ管理ソリューションです。データ保存を最も効率的に行 うことができ、測定データのストリーミング保存などにおいて使用が推奨されます。 TDMS は「ファイル」「グループ」「チャンネル」の 3 階層構造を持ち、ファイルの下に複数 のグループを、グループの下に複数のチャンネルを無制限に作成できます。車両テストの 例を以下に示します。 自動車名 ( ファイル ) + エンジン ( グループ ) + 温度 ( チャンネル ) + 振動 ( チャンネル ) + 圧力 ( チャンネル ) + ブレーキ + 電圧 + 電流 + ライト + 電圧 + 電流 http://www.ni.com/product-documentation/3727/ja/より
  • 15. LabVIEW NXG Training Course 15 TDMS の属性とデータ TDMS のファイル / グループ / チャンネルには、それぞれ属性をつけることができます。属 性は各階層に付与できるヘッダ情報です。 例えば先の例では、 ● ファイルに「作業者」や「作業日時」など ● エンジンやブレーキに「シリアル番号」や「配線情報」など ● 温度や振動に「センサの型番」や「測定条件」など の属性を付与することで、測定に関する情報を詳細に記録できます。 TDMS ファイルはデータをバイナリ形式で保存するので、情報を失うことなく高速ストリー ミングが可能です。構造化されているため、属性の読み書きも容易に行えます。 TDMS はテキストとバイナリ、両者の利点を統合したファイル形式です。
  • 16. LabVIEW NXG Training Course 16 TDMS ファイルの基本操作 テキストファイルと同様に、 TDMS ファイルも開いて閉じる操作が必要です。 TDMS の 場合は、 TDMS を開く、 TDMS を閉じる関数を使用します。 TDMS ファイルの拡張 子は「 *.tdms 」です。 TDMS ファイルは「 *.tdms_index 」ファイルも自動的に生成 します。このファイルは TDMS ファイルを検索する際などに使用されます。インデックスファ イルがなければ自動で生成されるため、配布の際などに提供する必要はありません。
  • 17. LabVIEW NXG Training Course 17 TDMS へのデータ書き込み TDMS 書き込み関数を使用してデータを TDMS ファイルへ書き込みます。書き込みの 際は、グループ名とチャンネル名を指定します。 以下の例では、 DAQmx 読み取り関数から 2 チャンネル分のデータが出力されます。 これを Engine グループの Temperature と Acceleration チャンネルデータとし て、 TDMS ファイルへ書き込みます。
  • 18. LabVIEW NXG Training Course 18 TDMS からのデータ読み取り TDMS 読み取り関数を使用してデータを TDMS ファイルからデータを読み取ります。書 き込みの際と同様に、グループ名とチャンネル名を指定します。 他のテクニックとして、グループまたはチャンネルを未配線にすることができます。詳細はヘ ルプの配線されていない場合の読み取り動作を確認します。
  • 19. LabVIEW NXG Training Course 19 属性の追加 TDMS プロパティを設定関数によって、ファイル / グループ / チャンネルに属性を追加し ます。端子の配線によって、何に対する操作かが変わります。プロパティ値はバリアント で、様々なデータタイプを入力することができます。
  • 20. LabVIEW NXG Training Course 20 属性の取得 TDMS プロパティを取得関数を使用して、ファイル / グループ / チャンネルから属性を 取得します。設定と同様に、端子の配線によって何に対する操作かが変わります。デー タタイプ端子に属性のデータタイプと同じデータを入力することによって、プロパティ値の出 力データタイプが変わります。
  • 21. LabVIEW NXG Training Course 21 3rd Party ソフトウェアでの TDMS 読み書き ナショナルインスツルメンツが提供する TDM Excel Add-In for Microsoft Excelを使用すると、 Excel で TDMS ファ イルを開くことができます。 また、無償のCライブラリが提供されているので、他のプログラミング環境からも取り扱うこ とができます。
  • 22. LabVIEW NXG Training Course 22 ファイルパス ファイルパスを使用して、操作対象のファイルを指定します。パスは大きく分けて以下の 2 種類があります。 ● 絶対パス C:UsersUserDesktopHello.txt のように、ファイルまたはフォルダへの完璧な 経路を示します。道を聞かれた際に、目的地の住所を教えるイメージです。 ● 相対パス 現在のファイルまたはフォルダ位置からの経路を示します。道を聞かれた際に、現在地か らの経路を教えるイメージです。 LabVIEW NXG では、以下のような関数を使用して 相対パスを取得します。
  • 23. LabVIEW NXG Training Course 23 パスの指定 パネル上でパスを指定する場合は絶対パスを使用します。ファイルパス制御器では、構 成ペーンにおいてパス指定の手法を設定することができます。パターンを「 *.png 」のよう にすることで、ファイル選択時にその拡張子を使用できます。
  • 24. LabVIEW NXG Training Course 24 パスの自動作成 手動での入力以外に、ファイル名に日時を使用したり、同じファイル名の末尾に番号を 自動で付与したり、 LabVIEW NXG では便利な関数が多く準備されています。
  • 25. LabVIEW NXG Training Course 25 区切られたスプレッドシート 区切られたスプレッドシートに書き込む / を読み取る関数を使用して、配列を簡単に csv ファイル等へ保存することができます。ただしこの関数は、ファイルを開いて閉じるまで の処理を内部的に行います。そのためループの中で処理を行う場合、処理速度に大き な遅延を生じさせる可能性があるため、高速処理が求められる場合は使用しません。