Skip to main content

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.

ejemplo 1. Ejemplo del uso correcto de 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.