El acceso a los BACnet Objetos y sus propiedades
Cada bloque de funciones de un BACnet El objeto insertado como dispositivo en el árbol del proyecto se deriva de la BACnetStaticObjectBase
bloque de funciones (biblioteca BACnet
) y por lo tanto de BACnetObjectBase
.
BACnetObjectBase
proporciona la capacidad de cambiar cualquier propiedad BACnet para cualquier bloque de función de objeto BACnet por medio de la función general SetPropertyInstance
.
Los datos para configurar las propiedades BACnet se transfieren a SetPropertyInstance
en forma de IEC_BACNET_PROPERTY_CONTENTS
estructura. Además de una enumeración que describe el tipo de datos, esta estructura también contiene un búfer que tiene un POINTER TO BYTE
a los datos reales de propiedades de BACnet. Esto hace posible transferir cualquier estructura de datos de propiedades BACnet dentro del IEC_BACNET_PROPERTY_CONTENTS
estructura. El tipo de datos especificado define las estructuras o los datos a los que apunta el búfer.
la enumeración CmpBACnet.IEC_BACNET_DATA_TYPE
proporciona la selección de CODESYS BACnet tipos de datos; el tipo de datos correspondiente se especifica en el comentario.
El bloque de funciones básico BACnetObjectBase
proporciona funciones auxiliares (ejemplo: SetBACnetRealProperty
, SetBACnetBooleanProperty
) para algunos de los tipos de datos de uso frecuente.
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);
Este código establece una propiedad BACnet de tipo REAL
al valor 0.0
.
En consecuencia, para poder leer BACnet propiedades en el caso más general, el BACnetObjectBase
El bloque de funciones proporciona la GetPropertyInstance
función. Dentro de IEC_BACNET_PROPERTY_CONTENTS
estructura, puede transferir 1) un búfer preinicializado con el tipo de datos correcto, que luego se llena, o 2) un búfer de tamaño 0, que se inicializa automáticamente, pero que se libera nuevamente mediante el FreeStackAllocatedMemory
función.
Independientemente de este caso general, se proporcionan funciones auxiliares para los casos más frecuentes. Además, para todas las propiedades definidas en el BACnet Como estándar, hay una selección de propiedades de bloque de funciones para cada bloque de funciones de objeto BACnet que permite el acceso directo escrito.