BACnetのEDEからオブジェクトリスト授受用CSVファイルに変換する方法

YABEを使用してCoolMasterのBACnetのEDEデータを取得し、IEIEJ-G-0006で定義されたオブジェクトリスト授受用CSVファイル(IEIEJファイル)に変換する方法を調べています。

まずは、YABEを使って取得できるEDEデータというものがどういうものかを調べます。

BACnet EDEファイルとは?

BACnet(Building Automation and Control Network)は、ビル管理システム向けの通信プロトコルで、EDE(Engineering Data Exchange)ファイルは、BACnetデバイスの情報を記述するための標準的なフォーマットのファイルです。

EDEファイルの概要

  • 目的: BACnetデバイスのオブジェクト情報やプロパティ情報をシステム間で交換・共有するためのファイル。
  • フォーマット: 通常はCSV形式(カンマ区切りテキスト)で構成されています。
  • 内容: デバイスのオブジェクト情報(AI、AO、AVなど)やプロパティ(名前、説明、単位など)を詳細に記述します。

EDEファイルの主な項目例

以下のようなフィールドで構成されています:

  • Device ID(デバイスID)
    • BACnetデバイスの識別子
  • Object Type(オブジェクトタイプ)
    • アナログ入力(Analog Input: AI)、アナログ出力(Analog Output: AO)など
  • Object Instance(オブジェクトインスタンス番号)
    • BACnetオブジェクトの個別ID
  • Object Name(オブジェクト名)
    • オブジェクトの識別名
  • Description(説明)
    • オブジェクトの説明
  • Units(単位)
    • 測定単位(例: °C, kW, ppm)
  • Writable(書き込み可能か)
    • 読み取り専用か、書き込み可能か

EDEファイルの例

Device ID,Object Type,Object Instance,Object Name,Description,Units,Writable
1001,Analog Input,1,AI_Temperature,室内温度,°C,No
1001,Analog Output,2,AO_SetPoint,設定温度,°C,Yes
1001,Binary Input,3,BI_DoorStatus,ドア開閉状態,,No

用途

  • システム間のデータ移行
    • 異なるベンダーのシステム間でBACnetオブジェクトの設定情報を共有する。
  • BMS(ビル管理システム)構築
    • 設計段階でのデバイス情報の管理や、運用時の保守管理に活用される。

YABEでCoolMasterのEDEファイルをExportする

まずはYABEでCoolMasterのデバイス(インスタンス番号64)を確認。

FunctionsからExport selected deviceをクリック。

すると、Device64_EDE.csvとDevice64_StateTExt.csvの2種類のファイルが生成されます。

Device64_StateText.csv(状態テキスト:状態表現情報)について

EDEの前にDevice64_StateText.csvを見てみましょう。

MS-Excelを開きます。

上部タブのデータから、”テキストまたはCSVから”をクリック

Device64_StateText.csvを選択してインポート。

区切り記号などを確認して”読み込み”。

このように表示されました。

つまり、EDEファイルと同時に生成されたStateTextファイルは、EDEファイルでReference Numberが記載されているBinary(2値)やMulti-state(多値)オブジェクトの状態表示(State Text)情報をまとめたファイルとなります。

こちらがDevice64_EDE.csvファイルをEXCELに読み込んだデータとなります。

オブジェクトリスト授受用CSVファイルフォーマットとは?

日本国内でBACnetデバイスを採用する場合、このCSVファイルフォーマットでのデバイスデータを提出することを求められます。

このファイルフォーマットについては、

 BACnet公開仕様書(アズビル株域会社) のページにある

 オブジェクトリスト授受用CSVファイルフォーマット(V1.02)

が参考になります。

授受用CSVファイルフォーマットは1行目にPropertyIDが横方向にうめられており、

このような形になります。

EDEファイルから授受用CSVファイルの値をいれてみよう

EDEファイルにあるCoolMasterの「OBJECT_ANALOG_INPUT:256/L1.101 room_temp」について授受用CSVファイルの値を考えてみましょう。

#75 オブジェクト識別子

BACnetのオブジェクト識別子(Object Identifier)は、オブジェクトタイプ(Object Type)とインスタンス番号(Instance Number)の組み合わせで決まります。以下の式で計算されます。

  • Object Type:オブジェクトの種類(アナログ入力やバイナリ出力など)
  • Instance Number:各オブジェクトタイプ内での固有の番号(0~4194303)

 オブジェクトタイプ「Analog Input(AI)」の数字

BACnetのオブジェクトタイプは、以下のように数値で規定されています。

  • AI(Analog Input) → 0
  • AO(Analog Output) → 1
  • AV(Analog Value) → 2
  • BI(Binary Input) → 3
  • BO(Binary Output) → 4

よって、「OBJECT_ANALOG_INPUT:256/L1.101 room_temp」のオブジェクト識別子は

AI + インスタンス番号 = 0 + 256 = 256

となります。

77 オブジェクト名

これはそのまま「L1.101 room_temp」にします。

79 オブジェクトタイプ

AI(Analog Input) → 0 です。

-1 インスタンス番号

256 です。

117 単位

単位とUnit Codeは下記の通り。EDE(Unit Code)もIEIEJ(Unit)も同じです。

Unit Code単位(Units)説明
62Degrees Celsius摂氏温度(℃)
63Degrees Kelvinケルビン(K)
64Degrees Fahrenheit華氏温度(℉)
93Percentパーセント(%)
94Percent Relative Humidity相対湿度(%)
111Parts per million (ppm)100万分率(ppm)
116Voltsボルト(V)
117Amperesアンペア(A)
129Wattsワット(W)
130Kilowattsキロワット(kW)
140Joulesジュール(J)
141Kilojoulesキロジュール(kJ)
168Luxルクス(lx、照度)

よって、Unitは62の摂氏温度(℃)


授受用CSVファイルのデータ

以上より、「OBJECT_ANALOG_INPUT:256/L1.101 room_temp」の授受用CSVファイルのデータは下記のようになります。

注意点としては、最上段の数字はフォーマットで決まっているので、インスタンスNoと単位の間にもいくつかあります。(今回は、見やすいように省略しましたが、ここにしっかりデータが入っている必要があります。)

オブジェクト識別子などグレーの部分はわかりやすくいれたもので、実際のフォーマットではここは削除になります。

その他注意点など

授受用CSVファイルはフォーマットが決まっており、該当データが無い場合はNULLデータとなっている必要があります。

また、オブジェクト識別子はオブジェクトタイプ(Object Type)とインスタンス番号(Instance Number)の組み合わせで決まるので、その計算式は覚えておいた方がよいでしょう。

今回はAnalog Input(AI)で例をお見せしましたが、MULTI_STATE_VALUE(MV)などはDevice64_StateText.csv(状態テキスト:状態表現情報)も関係してくるので、ここらへんの変換方法はまたご紹介したいと思います。