Skip to main content

へのアクセス BACnet オブジェクトとそのプロパティ

の各機能ブロック BACnet プロジェクト ツリーにデバイスとして挿入されたオブジェクトは、 BACnetStaticObjectBase ファンクションブロック(ライブラリ) BACnet) したがって、から BACnetObjectBase

BACnetObjectBase 一般関数を使用して、任意の BACnet オブジェクト関数ブロックの任意の BACnet プロパティを変更する機能を提供します。 SetPropertyInstance

設定する BACnet プロパティのデータは、 SetPropertyInstance の形で IEC_BACNET_PROPERTY_CONTENTS 構造。データ型を説明する列挙に加えて、この構造体には、 POINTER TO BYTE 実際の BACnet プロパティ データに変換します。これにより、BACnet プロパティ データ構造を BACnet 内で転送できるようになります。 IEC_BACNET_PROPERTY_CONTENTS 構造。指定されたデータ型は、バッファーが指す構造またはデータを定義します。

列挙 CmpBACnet.IEC_BACNET_DATA_TYPE の選択肢を提供します CODESYS BACnet データ型。対応するデータ型はコメントで指定されます。

基本的な機能ブロック BACnetObjectBase 補助機能を提供します (例: SetBACnetRealPropertySetBACnetBooleanProperty) 頻繁に使用されるデータ型の一部について。

1. の正しい使用例 IEC_BACNET_PROPERTY_CONTENTS
METHOD SetBACnetRealProperty
VAR_INPUT
    propID: CmpBACnet.IEC_BACNET_PROPERTY_ID;
    rVal : REAL;
END_VAR
VAR
    BACreal : CmpBACnet.IEC_BACNET_REAL := 0.0;
    conts : CmpBACnet.IEC_BACNET_PROPERTY_CONTENTS := ( tag := CmpBACnet.IEC_BACNET_DATA_TYPE.DATA_TYPE_REAL,
        nElements := 1,
        buffer := ( nBufferSize := SIZEOF(REAL), pBuffer := ADR(BACreal) ),
        rawBuffer := ( nBufferSize := 0, pBuffer :=0) );
END_VAR
BACreal := rVal;
SetPropertyInstance(propID, -1, conts);

このコードは、次のタイプの BACnet プロパティを設定します。 REAL 値に 0.0



したがって、読むためには、 BACnet 最も一般的な場合のプロパティ、 BACnetObjectBase 機能ブロックは、 GetPropertyInstance 関数。以内 IEC_BACNET_PROPERTY_CONTENTS この構造では、1) 正しいデータ型で事前に初期化されてから埋められるバッファ、または 2) サイズ 0 のバッファ (自動的に初期化されるが、 FreeStackAllocatedMemory 関数。

このような一般的なケースに関係なく、最も頻繁に発生するケースに対して補助関数が提供されています。さらに、 BACnet 標準では、BACnet オブジェクトの機能ブロックごとに機能ブロック プロパティの選択があり、直接型指定されたアクセスが可能です。