へのアクセス 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
補助機能を提供します (例: SetBACnetRealProperty
、 SetBACnetBooleanProperty
) 頻繁に使用されるデータ型の一部について。
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 オブジェクトの機能ブロックごとに機能ブロック プロパティの選択があり、直接型指定されたアクセスが可能です。