BACnet

BACnet/IP のビル自動化機器につなぎます。デバイスインスタンス、オブジェクトの型とインスタンスによるアドレス指定、Who-Is の機器検出、そして presentValue。

Markdown で表示

BACnet のドライバーは、BACnet/IP でビル自動化の設備と話します。どのタグも、BACnet のオブジェクト 1 つの現在値を読みます。アナログ入力の実時間の読み取り、バイナリ出力の状態、多状態値の位置などです。Connector の BACnet のドライバーの下に機器を追加してください。パネルは、このプロトコルが使う項目だけを見せます。

接続

項目 意味 既定
ホスト BACnet の機器(またはそれに代わって答えるルーター)の IP アドレスかホスト名。
ポート 機器の UDP のポート。0 は BACnet/IP の標準である 47808 を使います。 0
機器 ID その機器のインスタンス番号、つまり Device オブジェクトの番号で、BACnet のネットワークの中で一意です。 0

機器の見出しは、組み立てられた接続先を見せます。たとえば bacnet://192.168.0.30:47808/1234 です。接続では、設備が答えることを確かめるために、機器のオブジェクトの一覧の大きさを尋ねる要求を 1 つ送ります。一覧そのものを巡ることはしません。その答えが接続です。答えない機器は、接続済みに見せかけるのではなくオフラインのままになり、その理由(UDP のポートがすでに取られている、アドレスがアドレスになっていない)が Events のページとその日のログのファイルに書かれます。このドライバーには読み出し周期の項目がありません。そのタグは 1 秒に 1 回読まれます。

アドレス指定

BACnet のタグは、タグの「取得元」のカードの 2 つの型付きの項目でアドレスを取ります。自由記述のアドレスはありません。

項目 意味 受け付ける値 既定
オブジェクトの型 読む BACnet のオブジェクトの種類。 下の 9 つの型 AnalogInput
インスタンス その型の中でのオブジェクトのインスタンス番号。 0 以上 0

出るオブジェクトの型と、その標準の BACnet の型コードは次のとおりです。

オブジェクトの型 コード 現在値が持つもの
AnalogInput 0 測定された数値
AnalogOutput 1 指令された数値
AnalogValue 2 保存された数値
BinaryInput 3 非動作/動作
BinaryOutput 4 非動作/動作
BinaryValue 5 非動作/動作
MultiStateInput 13 1 以上の状態の番号
MultiStateOutput 14 1 以上の状態の番号
MultiStateValue 19 1 以上の状態の番号

機器 1234 の AnalogInput 5 は、「その機器のアナログ入力 5 の現在値」という意味です。読み取りのたびに、そのオブジェクトの presentValue プロパティを尋ねます。ほかのプロパティを指すことはできません。「取得元」のカードの読み取り専用の取得元のアドレス(バス上)の行が、編集しているそばから組み立てられた type,instance の組を見せます。

データ型

データ型の選択肢には 4 つの型が出ます。オブジェクトに合うものを選んでください。

データ型 合う相手 備考
Float アナログのオブジェクト Real の現在値。倍精度は Float に縮められます
Boolean バイナリのオブジェクト Boolean の現在値、またはバイナリのオブジェクトが答える列挙の 0 と 1
Int32 多状態やそのほかの整数の値 符号付き、符号なし、列挙の答えは、どれもここに届きます
String 文字列の値 機器が送ってくるままの文字

選んだ型は、そのオブジェクトが持つものと合っている必要があります。別のもので答える機器は、そのタグの読み取りを失敗させます。タグは品質が悪くなり、理由が何が届いたかを名指しします(「Integer と宣言された点に対して、機器は Single の値で答えました。」)。変換された数値がトレンド、履歴、警報に入っていくことはありません。アナログのオブジェクトをブール値として読む、Real を Int32 として読む、というのがまさにこの場合です。機器の残りは読み取りを続けます。型の合っていないタグのために再接続が起こることもありません。

書き込み

アクセスが読み書きか書き込みのみのタグは書き込めます。書き込みは、そのオブジェクトの presentValue を、タグのデータ型に合わせた型で設定します。Float は BACnet の Real、Boolean は BACnet の Boolean、Int32 は符号付きの整数、String は文字列を書きます。書き込みに指令の優先度は付けません。現在値に別の型を求める設備(たとえば、列挙の値しか受け付けないバイナリ出力もあります)は、書き込みを拒否することがあります。そのときタグは、成功を装うのではなく失敗を報告します。新しいタグは読み取りのみから始まります。

機器検出

Connector の機器検出のボタンは、BACnet の Who-Is を同報し、I-Am の答えを 10 秒間聞きます。答えたすべての機器が、そのアドレス、ポート、デバイスインスタンスを運ぶ候補になり、接続の項目が埋まった状態ですぐ追加できます。しかも 10 秒の終わりではなく答えた瞬間に一覧に現れるので、途中で取りやめたスキャンでも、すでに答えていたものはすべて残ります。スキャンはオブジェクトを巡らないので、候補はタグ 0 件で届きます。オブジェクトの型とインスタンスの組は自分で追加してください。

BACnet のルーター越しに答える機器も、同じように追加されます。その候補はルーターのアドレスと、それに添えてその機器自身のネットワークと、そのネットワーク上でのアドレスを運びます。追加するときはどちらも保たれ、読み取りはすべて、中の機器を名指ししてルーターへ送られます。こうして見つかった機器は、ほかと同じように読まれ、その接続先は「ルーター経由の機器」と読めます。手で追加した機器は経路を持たず、そのホストへ直接届きます。

知っておくとよいこと

  • BACnet/IP だけです。MS/TP や BACnet/SC の設備には、それを BACnet/IP で見せるルーター越しにしか届きません。そしてそれを見つけるのがスキャンです。機器が答えた経路はスキャンから保たれるので、項目を手で入力するのではなく、検出された一覧から追加してください。
  • このドライバーは、このステーションの標準の BACnet の UDP ポート 47808 から通信します。同じ機械で別の BACnet のアプリケーションがそのポートを占有していると、ぶつかることがあります。
  • このドライバーでは、読み出しはどのタグも 1 秒に固定です。いつもの読み出し周期の項目は出ません。