Academic Company Events NI Developer Zone Support Solutions Products & Services Contact NI MyNI

Document Type: Tutorial
NI Supported: Yes
Publish Date: Aug 18, 2009


Feedback


Yes No

Related Categories

Related Links - Developer Zone

コンピュータベースのデータ集録システムに対応する構成ファイルを実装する

0 ratings | 0.00 out of 5
Read in | Print | PDF

Overview

構成ファイルはコンピュータベースの構成情報を管理するファイルです。従来のGUIによる構成とは異なり、構成ファイルは構成情報を管理する移植性と柔軟性があるメソッドを提供します。

背景

構成はコンピュータベースの測定およびオートメーションシステムの重要な要素です。多くの簡易システムでは、カスタムコードをシステム構成に含み、アプリケーション全体を実装します。ただし、アプリケーションの複雑度と再利用の必要性が増すにつれて、より多くの内容を管理システムの構成情報に加える必要があります。また、構成データの生成、保存、アクセス、管理を行うメソッドを考える必要があります。その場合、作業をすべて最初から開始するとコストがかかり過ぎてその管理が難しくなります。

さまざまなシステムタイプの構成管理を処理できる汎用性があり、再利用可能なツールセットを使用すれば、ソフトウェア開発コストを削減できます。このドキュメントでは、構成データを迅速に生成、管理、アクセスする一連の基本的なLabVIEWツールについて説明します。さらに、データ保存については、プラットフォームに依存せず人間が内容を判読できるファイル形式について説明します。多くのシステムタイプに、このツールの構成プラットフォームを使用できます。

構成ファイル形式を開発する

構成ファイル形式

データ集録システム構成情報の管理に関する注意事項(英語)』には、データ集録システムが実行時に使用する構成情報に含まれているさまざまな構成ファイル形式に関する説明が記載されています。プラットフォーム依存により制限があるデータベース、スプレッドシート、XMLなどのフォーマットを再呼び出しする可能性がある場合、構成設定ファイル(.iniファイル形式など)を使用することを推奨します。次のいくつかのセクションでは、構成を保存する.iniファイル形式の利用方法について説明します。

INIファイルはASCIIでコード化され、複数のセクションとキーで構成されています。LabVIEW 7.1以前でのINIファイルの詳細については、『LabVIEWユーザマニュアル』を参照してください。LabVIEW 8.0以降では、『LabVIEWヘルプ』の「構成ファイルを作成する」というトピックを参照してください。

図1は、セクションおよびキー内に含まれるさまざまな構成情報を持つINIファイルを示します。ファイル構成目的を示す.cfg拡張子に注目してください。.cfgファイルは.iniファイルと異なるファイルの拡張子ですが、同じ形式になります。


図1. 構成に使用するINIファイル

INIファイル構成は制限がありフラットに見えます。後に続くセクションでは、この基本フォーマットを基に複雑なシステム構成を処理する柔軟性のあるメソッドを作成します。


構成データの整理

データ集録システム構成情報の管理に関する注意事項(英語)」では、システム開発者が構成ファイルに含める可能性がある個々の情報について説明しました。大きく複雑なシステムにおいては、開発段階で完全なシステムを構成する多数の変数を明確にする必要があります。構成情報を整理する論理的な方法を見つけ出すことが重要です。論理的に整理された変数を用いると、システムの個々の部分を正しく構成するために必要な情報すべてをより簡単に把握することができます。また、他の開発者が将来的な変更の際に構成を簡単に理解できます。

通常、システムの個々の部分がシステム全体に合っているかどうかをを把握する場合、階層構造を考えます。これを基に構成を構造化します。

このドキュメントで使用されている構成の概要を簡単に明確化するため、サンプルシステムを例にします。2つのデータ集録モジュールを含む(組み込み式コントローラ付きの)ハードウェアシャーシを基に、サンプルシステムを構成していきます。

正しくシステムを制御するには、複数の情報を使用します。シャーシには関連付けられているIPアドレスと2つのモジュールがあります。それぞれ、「有効」の情報と「サンプルレート」の情報があります。シャーシは階層で最上レベルです。シャーシの下には、ipaddressmodule1module2があります。最後に各モジュールの下にenabledsamplerateを位置付けます。システム構成のプロパティとして階層の各レベルを参照できます。

図2は、各プロパティの一覧とシステム構成の階層を示します。


図2. システム構成の階層

通常のコンピュータファイルシステムと同じように、システム構成アーキテクチャは、すでに含まれているプロパティの変更なしに、構成プロパティを追加し拡張する事ができます。プロパティは通常のコンピュータディレクトリやファイルのように扱えます。

プロパティは、データを含むファイルのように関連付けられた値(文字列、整数、ブールなど)を持ちます。また、ファイルシステムのディレクトリが1つもしくは複数のファイルを含むように、他のサブプロパティを含むこともあります。これらは適用されるレベルが定められています。

また、ドット表記形式を使用してプロパティへのパスを特定することにより、システム構成の中にある任意のプロパティにアクセスできます。たとえば、chassis.module2.enabledは、module2.enabledプロパティを示します。構成内の各プロパティのパスは固有のため、パス指定においてそのプロパティの値より多くの値が返ってくる事はありません。


構成データおよび構成ファイル

システムを使用するだけの場合、構成ファイルのフォーマットを完全に理解する必要はありません。このドキュメントの後半で示すツールがフォーマットの詳細部分をサポートします。ここではフォーマットの簡単な概要を説明しますので、構成ファイルストラクチャの基本を理解します。

構成においてさまざまな階層レベルをサポートするため、サブプロパティを持つプロパティは、セクションとして保存された全体パスを持ちます。たとえば、module2プロパティにはchassis.module2のパスがあり、構成ファイルはセクションとしてパスを保存します。構成ファイルは、親プロパティの下のキーとしてのサブプロパティではなく、関連付けられた値を持つプロパティを保存します。たとえば、enabledキーとしてchassis.module2セクションの下のmodule2の下にenabledプロパティを位置付けられます。

構成ファイルプロパティは複数の異なるデータタイプ(文字列、整数、ブール、浮動)で構成されている可能性があるため、構成ファイル内でデータタイプを指定します。INIファイルはASCIIエンコードのため、構成ファイル内の各情報は、ASCII文字として保存されます。特定キーのデータタイプを確認する方法はありません。

図1では、各キーには、プロパティ名とデータタイプが連結しています。たとえば、ipaddressプロパティには、プロパティ名の終わりに文字列データタイプを示す_STRが含まれています。

「.」と「_」は、INIファイルのセクションとキー名で使用される特殊文字であることに注目してください。このため、これらの文字をプロパティ名の一部として使用することはできません。後のセクションで説明するツールは、適切な方法で自動的にこれらの特殊文字を適用し、構成をファイルに書き込む際にすべてのフォーマットを正しく処理します。

構成ツール

前のセクションでは、構成データ、階層フォーマット、標準ファイル形式でのストレージ用リファレンスプロパティを整理する階層メソッドを説明しました。後半部分では、サンプル構成ファイルの実装方法について説明します。ただし、最初に構成ファイルの生成、保存、ロード、編集を支援する一連のLabVIEWツールについて理解する必要があります。これにより、ご使用のLabVIEWアプリケーションで簡単に構成方法を組み込むことができます。

構成ツールライブラリ

このドキュメントの終わりに、構成ファイルを操作するためにLabVIEWで使用するライブラリファイルを含むサンプルのリンクがあります。このドキュメントの後半でツール機能を説明したサンプルを参照しているように、これらのファイルをインストールしておくと便利です。サンプルに付属したドキュメントは、さまざまなVIを正しい位置にインストールする方法が記載されています。ユーザライブラリ » 構成ツールを選択し、メインVIにアクセスして、関数パレットで構成を編集できます。図3は構成ツールパレットを示します。


図3. 構成ツールパレット

構成ツールパレットで「manageConfig」VIを使用して構成を管理します。この多態性VIは、構成でインタフェースに使用するAPI全体を含みます。(多態性VIの詳細については、LabVIEWヘルプを参照してください。)API内でさまざまな関数にアクセスするには、ダイアグラムでVIのすぐ下にある多態性VIセレクタをクリックします。

これらのツールを使用するプログラムフローは簡単です。まず構成を初期化します。次に、既存の構成をロードするか、または構成内でプロパティを直接に追加、変更、取得、削除する処理を行います。最後に、この構成をファイルに保存して構成のリファレンスを閉じます。図4はプログラムフローの基本的なブロック図を示します。


[+] 画像を拡大
図4. 構成アプリケーションのブロック図

以下のセクションでは、構成ツールAPIの各インスタンスの概要を説明します。

Init Config:
このインスタンスはローカルLabVIEWメモリに対してリファレンスを開き、構成のローカルコピーを保存します。これを各アプリケーションで使用します。インスタンスは、このリファレンスに関連付けられた構成にアクセスする他のVIへ渡す構成リファレンス(config ref)を出力します。このインスタンスに対して複数の呼び出しを使用し、同時に複数の構成を開くことができます。各呼び出しは個々の構成に対して固有リファレンスを生成します。

Load Config:
このインスタンスはファイルからローカルメモリへ個々の構成をロードします。Init Configインスタンスで生成されたconfig refをLoad Configインスタンスへ渡します。このインスタンスで構成をロードすると、それに続くVIは構成プロパティの取得、設定、追加、削除を行うことができます。

Add Property:
「manageConfig」多態性VIには複数データタイプのAdd Propertyインスタンスが含まれています。これらには、文字列(STR)、32ビット符号付き整数(I32)、32ビット符号なし整数(U32)、64ビット浮動小数(DBL)、ブール(BOOL)、Rawがあります。

追加したいプロパティの正しいデータタイプを選択してドット表記プロパティパス、プロパティ値、config refを入力ます。インスタンス呼び出しは自動的に既存プロパティに対してパス全体を確認します。プロパティが存在しない場合、インスタンスは自動的に必要な親プロパティを追加して、パス全体をマップします。

また、Rawデータタイプオプションを確認し、値を構成のローカルコピーに追加します。Rawデータタイプは、プロパティパス、データタイプ、値という3つの文字列のクラスタです。これは、ローカルメモリにデータを実際に保存する方法を示します。その他のAdd Propertyインスタンスは自動的にこのフォーマットを処理し、可能であれば、インスタンスをより理想的な選択内容にします。

Get Property:
「manageConfig」多態性VIには、複数データタイプのGet Propertyインスタンスも含まれています。これらのインスタンスは、プロパティとそのプロパティ値が検出されたかどうかを返します。データタイプには、STR、I32、U32、DBL、BOOL、Rawデータタイプの他に、その他の2種類のRawデータタイプがあります。Allデータタイプは、構成全体で各プロパティのRawフォーマットデータの配列を返します。Subpropertiesデータタイプは、構成の階層で指定されたプロパティのRawフォーマットサブプロパティの配列を出力します。

Rawデータにはパス、データタイプ、値が含まれていることを確認してください。また、ほどんどのアプリケーションに対して、可能であれば、標準関数を使用するようにしてください。

Set Property:
Set Propertyインスタンスは、現在ロードされた構成で既存プロパティの値を更新することができます。また、オプションにはRawタイプに関連した標準データタイプ(STR、I32、U32、DBLおよびBOOL)が含まれていて、追加インスタンスのNew PathというRawタイプもあります。このモードは、Rawのように追加機能を使用して特定のプロパティ名やプロパティパスを変更します。また、特定プロパティ領域下に存在する任意のサブプロパティのプロパティパスを更新できます。

親プロパティの名前やパスを変更する場合、それに従って各サブプロパティのパスを更新する必要があります。古いプロパティパス入力には、名前やパスの変更前に元のプロパティパスを含める必要があります。プロパティデータには、このプロパティとサブプロパティのすべてに適用する新規パスを含める必要があります。

Delete Property:
Delete Propertyインスタンスは特定のプロパティとそれに関連付けられたすべてのサブプロパティを削除します。操作を実行するには、config refとともにプロパティパスをこの関数に渡します。Delete All Propertiesインスタンスは、操作の実行のためにconfig refのみを要求し、構成で各プロパティを削除します。

Save Config:
Save Configインスタンスは構成のコピーをファイルに保存できます。この関数は、前に説明したとおり、自動的に構成フォーマットで保存するプロパティを変換します。ファイルが存在する場合、現在の構成情報でこのファイルを自動的に上書きします。上書きを回避したい場合、Save Configインスタンスの呼び出し前にファイルが存在するかどうかをプログラム的に確認する必要があります。config refをこの関数に渡すだけで希望の構成をファイルに保存できます。

Close Config VI:
「manageConfig」多態性VIの最終インスタンスはClose Configです。構成を操作してファイルに戻す場合、構成のローカルコピーの保存に使用したLabVIEWメモリのリファレンスを閉じる必要があります。config refをこのインスタンスに渡して適切な構成を閉じます。

サンプルアプリケーションの構成

構成ツールライブラリに含まれている個々のAPIについて説明しましたので、次に前述の構成で複数のアプリケーションを実装することを説明します。このドキュメントの終わりにサンプルファイルがあります。

構成ファイルを生成して保存する

まず「Generate & Save Configuration」VIサンプルについて説明します。このVIはプログラム的に構成情報を生成してファイルに保存します。図5はこのサンプルのブロックダイアグラムを示します。

 


図5. 「Generate & Save Configuration」VIのブロックダイアグラム

「Generate & Save Configuration」VIは構成の初期化、プロパティの追加、構成のファイルへの保存、構成リファレンスを閉じる操作を行います。「manageConfig」多態性VIを使用したLabVIEWコードの詳細については、下記を参照してください。

1. 構成を初期化する ― Init Configインスタンスは、構成データの一時ストレージにローカルLabVIEWメモリを設定して、構成を初期化します。


図5-1. 構成を初期化する

2. プロパティを構成に追加する ― Add Propertyインスタンスを使用し、各新規プロパティを構成に追加します。プロパティ名を含む目的のパスを保存する値と一緒に渡します。


図5-2. プロパティを構成に追加する

3. 構成を保存する ― 各プロパティを追加した後、Save Configインスタンスを呼び出して構成をファイルに保存します。これにより、適切なシステムに転送できる構成ファイルが出来上がります。


図5-3. 構成を保存する

4.構成を閉じる ― 構成ファイルを保存した後、Close ConfigインスタンスでLabVIEWリソースをクリアします。


図5-4. 構成を閉じる

「Generate & Save Configuration」VIは、このドキュメントの図1に示す通り、.cfgという構成ファイルシステムを作成します。ただし、図2に示す構成ファイルは、構成で8つの異なるプロパティを示すことに注目してください。これら8つのうち、5つのプロパティに値が存在します。chassismodule1module2の3つのプロパティは親プロパティで、値は関連付けられていません。

「Generate & Save Configuration」 Iは関連付けられた値と一緒にプロパティを明示的に追加するのみです。ツールは、パス全体(新規に追加された各サブプロパティの既存の親プロパティを含む)を自動的にチェックします。chassismodule1module2を明示的に構成に追加する場合でも、このツールはこれらのプロパティを自動的に追加し、構成ファイルが完全かどうかを確認します。

構成ファイルをロードしてプロパティを取得する

構成ファイルを生成した後、ファイルをロードして構成からさまざまなプロパティを取得する必要があります。「Load Configuration & Get Properties」VIを使用し、このタスクを完了します。図6はこのサンプルのブロックダイアグラムを示します。


図6. 「Load Configuration & Get Properties」VIのブロックダイアグラム

「Load Configuration & Get Properties」VIは構成の初期化、ファイルから構成のロード、構成から要求プロパティの取得、構成リファレンスを閉じる操作を行います。「manageConfig」多態性VIを使用したLabVIEWコードの詳細については、下記を参照してください。

1. 構成を初期化する ― Init Configインスタンスは、構成データの一時ストレージにローカルLabVIEWメモリを設定して、構成を初期化します。


図6-1. 構成を初期化する

2. 構成をロードする ― Load Configインスタンスは希望する構成ファイルをローカルメモリにロードします。これにより、プロパティの追加、取得、設定を行うファイルをクエリできます。


図6-2. 構成をロードする

3. プロパティを取得する ― プロパティパスとデータタイプを取得したい各プロパティのGet Propertyインスタンスに渡します。


図6-3. プロパティを取得する

4.構成を閉じる ― 構成ファイルをクエリした後、Close ConfigインスタンスでLabVIEWリソースをクリアします。


図6-4. 構成を閉じる

構成ファイルを編集する

最後に、「Editing Existing Configuration」VIを使用して構成ファイルを編集する操作について説明します。図7はこのサンプルのブロックダイアグラムを示します。


図7. 「Editing Existing Configuration」VIのブロックダイアグラム

「Editing Existing Configuration」VIは構成の初期化、ファイルから構成のロード、構成から要求されたプロパティの取得、新規値に対するプロパティの設定、構成のファイルへの保存、構成のリファレンスを閉じる操作を行います。「manageConfig」多態性VIを使用したLabVIEWコードの詳細については、下記を参照してください。

1. 構成を初期化する ― Init Configインスタンスは、構成データの一時ストレージにローカルLabVIEWメモリを設定して、構成を初期化します。


図7-1. 構成を初期化する

2. 構成をロードする ― Load Configインスタンスは希望の構成ファイルをローカルメモリにロードします。これにより、プロパティの追加、取得、設定を行うファイルをクエリできます。


図7-2. 構成をロードする

3. プロパティを取得する ― プロパティパスとデータタイプを取得したい各プロパティのGet Propertyインスタンスに渡します。これは、次の手順で新規値にプロパティを設定する前に、プロパティを取得する必要がない特定のサンプルであることに注意してください。Get Propertyインスタンスを使用するだけで各プロパティの現在値を確認できます。


図7-3. プロパティを取得する

4. プロパティを設定する ― Set Propertyインスタンスでプロパティ値を編集できます。パスを入力し、特定のプロパティに割り当てる新規値のデータタイプを選択します。


図7-4. プロパティを設定する

5. 構成を保存する ― 目的のプロパティを編集した後、Save Configインスタンスを呼び出して構成をファイルに保存します。


図7-5. 構成を保存する

6.構成を閉じる ― 構成ファイルを保存した後、Close ConfigインスタンスでLabVIEWリソースをクリアします。


図7-6. 構成を閉じる

構成プロパティエディタ

前のドキュメント『データ集録システム構成情報の管理に関する注意事項(英語)』には、3つの異なるレベルの構成エディタ、および複数の構成データに使用するインタフェースに関する内容が記載されています。Notepadのようなシンプルなテキストエディタを使用して最も基本的な編集を行うことができます。また、構成管理でエンドユーザを支援するデプロイされたアプリケーションに見られるような完全な機能的構成のGUIを使用することもできます。さらに、シンプルなテキストエディタと完全な機能的GUIエディタの間のハイブリッドもあります。

このタイプのエディタは、追加のGUIインタフェースなしで構成を簡単に操作できるだけの十分な機能を提供します。システム全体を開発する場合、ほとんどがこのタイプのエディタを使用します。サンプルコード付きでConfigEditorと呼ばれる中間レベルのエディタも用意しています。このConfigEditorはこちらからダウンロードできます。インストールの手順については、サンプルに含まれているReadmeを参照してください。

エディタをインストールすると、ツール » 構成プロパティエディタよりLabVIEWからこのエディタにアクセスできます。図8は、ダウンロードしたシステム構成ファイル(.cfg)を持つ構成プロパティエディタの基本インタフェースを示します。


図8. 構成プロパティエディタ

構成プロパティエディタは、手動またはプログラム的にこのファイルを作成せずに構成ファイルを対話的に作成できます。前のセクションで説明した構成ツールライブラリを使用して構成プロパティエディタを作成します。エディタのソースコードはきちんとドキュメント化されています。

このエディタは、構成ファイルを簡単に生成して管理する最も基本的な機能を提供します。必要に応じて、この機能を追加したり、エディタの既存機能を変更することをお勧めします。構成プロパティエディタの主な機能を重点的に説明します。インタフェースを含む、すべての機能に関する詳しい説明については、構成プロパティエディタのオンラインヘルプを参照してください。


構成を生成および編集する構成プロパティエディタを使用する

構成プロパティエディタには、ファイルメニューで新規構成の作成、既存構成を開く、構成の指定位置への保存を行うオプションがあります。また、編集メニューのオプションでは、指定プロパティを編集できます。編集メニュー項目を選択すると、ウィンドウが開き、データタイプとプロパティの初期値を編集できます。また、プロパティにサブプロパティを含めるかどうかを指定することもできます。


図9. プロパティデータエディタウィンドウ

メインインタフェースは、ツリー制御器を使用して構成の階層を表し、各プロパティに関連付けられたデータタイプと値を表示します。ツリーメニューを展開または縮小すると、プロパティと関連サブプロパティを参照できます。目的のプロパティを右クリックしてサブプロパティの編集、削除、追加を行います。

構成ファイルを利用するコードの書き込みを支援する構成プロパティエディタを使用する

構成プロパティエディタで構成ファイルを生成および管理する操作に加えて、アプリケーションの作成中にエディタを開いて構成ファイルをロードすることができます。コードの作成が構成によって異なる場合、構成情報を迅速にスキャンして、パスとデータタイプの情報を展開できます。これにより開発プロセスの効率化が図れます。図10は、開発画面のサンプルです。


図10. アプリケーション作成を支援する構成プロパティエディタを使用する

正しいプロパティパスを入力には、一般的に時間がかかります。この問題を軽減するには、構成プロパティエディタのProperty Pathウィンドウにあるパスをハイライトし、そのパスをコピーして、ブロックダイアグラムへ移動し、パス全体を文字列定数に貼り付けます。これにより、スペルミスや構文エラーを回避できます。コードの作成中に構成プロパティエディタを開いておくと、構成データへのオンザフライ方式でのアクセスが可能です。

まとめ

構成管理はコンピュータベースのシステムにおける重要部分です。プラットフォームに依存しない構成ファイルストラクチャに加えて、汎用の構成管理ツールセットがあると、開発時にシステムでより簡単に構成データの生成、管理、利用が可能です。このドキュメントでは、一連の再利用可能なツールと柔軟性のある構成ファイルストラクチャの利点を紹介しました。

このドキュメントで説明した構成ツールは、こちらからダウンロードできます。

0 ratings | 0.00 out of 5
Read in | Print | PDF

Legal
This tutorial (this "tutorial") was developed by National Instruments ("NI"). Although technical support of this tutorial may be made available by National Instruments, the content in this tutorial may not be completely tested and verified, and NI does not guarantee its quality in any way or that NI will continue to support this content with each new revision of related products and drivers. THIS TUTORIAL IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND AND SUBJECT TO CERTAIN RESTRICTIONS AS MORE SPECIFICALLY SET FORTH IN NI.COM'S TERMS OF USE (http://ni.com/legal/termsofuse/unitedstates/us/).