TestModel created using UaModeler and compiled into XML and afterwards into C code

This commit is contained in:
Hottgenroth 2016-06-07 14:54:24 +02:00
parent 29da8433c0
commit 5b272aa5d7
6 changed files with 443 additions and 0 deletions

106
CMakeLists.txt Normal file
View File

@ -0,0 +1,106 @@
project(testproviderprovider C)
cmake_minimum_required(VERSION 2.6)
include(MessageUtils)
include(FindUaOpenSSL)
include(InstallIfNewer)
include(InstallPDBFiles)
include(ConfigureCompiler)
include(ConfigureUaStack)
include(ConfigureAnsiCSdk)
display_project_header()
####################################### Different Configurations ########################################
string(REPLACE "-Waggregate-return" "" CMAKE_C_FLAGS ${CMAKE_C_FLAGS})
string(REPLACE "-Wcast-align" "" CMAKE_C_FLAGS ${CMAKE_C_FLAGS})
# Build with shared stack
if (BUILD_SHARED_STACK OR BUILD_SHARED_LIBS)
add_definitions(-D_UA_STACK_USE_DLL)
endif ()
# configure Dll/Lib
if (BUILD_SHARED_LIBS)
add_definitions(-DBUILD_SHARED_LIBS)
add_definitions(-D_UA_BASE_USE_DLL)
add_definitions(-D_UA_SERVER_USE_DLL)
add_definitions(-D_UA_TESTPROVIDERPROVIDER_BUILD_DLL)
endif ()
################################################ Encodings #################################################
add_definitions(-DHAVE_ENCODING_BINARY=1)
add_definitions(-DHAVE_ENCODING_XML=0)
####################################### Get all needed Source Files ########################################
if (UASERVER_HISTORYREAD)
set(SRC_HISTORY_TESTPROVIDER ${SRC_HISTORY_TESTPROVIDER} uaprovider_testprovider_historyread.c)
endif ()
if (UASERVER_HISTORYUPDATE)
set(SRC_HISTORYUPDATE_TESTPROVIDER ${SRC_HISTORYUPDATE_TESTPROVIDER})
endif ()
if (UASERVER_CALL)
set(SRC_CALL_TESTPROVIDER ${SRC_CALL_TESTPROVIDER}
uaprovider_testprovider_call.c
)
set(testprovider_INSTALL_HEADERS ${testprovider_INSTALL_HEADERS}
)
endif ()
# add sources
set(testproviderProvider_SRCS ${SRC_HISTORY_TESTPROVIDER} ${SRC_HISTORYUPDATE_TESTPROVIDER} ${SRC_CALL_TESTPROVIDER} ${SRC_EVENTS_TESTPROVIDER}
uaprovider_testprovider_nodes_1.c
uaprovider_testprovider_read.c
uaprovider_testprovider_subscription.c
uaprovider_testprovider_write.c
uaprovider_testprovider_browse.c
uaprovider_testprovider_strings_1.c
uaprovider_testprovider_hooks.c
uaprovider_testprovider_utils.c
uaprovider_testprovider.c
)
# define headers to be installed
set(testprovider_INSTALL_HEADERS ${testprovider_INSTALL_HEADERS}
uaprovider_testprovider.h
uaprovider_testprovider_helper.h
uaprovider_testprovider_strings_1.h
uaprovider_testprovider_nodes_1.h
uaprovider_testprovider_utils.h
uaprovider_testprovider_identifiers_1.h
uaprovider_testprovider_browsenames_1.h
)
####################################### Include Paths ########################################
include_directories(${UASTACK_INCLUDE})
include_directories(${UABASEC_INCLUDE})
include_directories(${UASERVERC_INCLUDE})
include_directories(${DATALOGGER_INCLUDE})
include_directories(${CMAKE_CURRENT_SOURCE_DIR})
if (NOT TARGET uastack)
link_directories(${UA_LIB_DIR})
endif ()
####################################### Create Library ########################################
add_library(${PROJECT_NAME} ${testproviderProvider_SRCS} ${testprovider_INSTALL_HEADERS})
# link dependencies
target_link_libraries(${PROJECT_NAME} ${UASERVERC_LIBRARY} ${UABASEC_LIBRARY} ${UASTACK_LIBRARY})
# INSTALL target
install(FILES ${testprovider_INSTALL_HEADERS} DESTINATION include/${PROJECT_NAME})
install(TARGETS ${PROJECT_NAME}
RUNTIME DESTINATION bin
LIBRARY DESTINATION lib
ARCHIVE DESTINATION lib
)
install_pdb_files()

185
TestModel.c Normal file
View File

@ -0,0 +1,185 @@
/* WARNING: This is a generated file.
* Any manual changes will be overwritten.
*/
#include "TestModel.h"
UA_INLINE void TestModel(UA_Server *server) {
UA_Server_addNamespace(server, "http://krohnegroup.com/TestModel/Types.xsd");
do {
// Node: opcua_node_objectType_t(ns=2;i=1002), 1:TemperatureSensorType
UA_ObjectTypeNode *opcua_node_objecttype_t_ns_2_i_1002 = UA_NodeStore_newObjectTypeNode();
opcua_node_objecttype_t_ns_2_i_1002->browseName = UA_QUALIFIEDNAME_ALLOC(1, "TemperatureSensorType");
opcua_node_objecttype_t_ns_2_i_1002->displayName = UA_LOCALIZEDTEXT_ALLOC("en_US", "TemperatureSensorType");
opcua_node_objecttype_t_ns_2_i_1002->description = UA_LOCALIZEDTEXT_ALLOC("en_US", "");
opcua_node_objecttype_t_ns_2_i_1002->nodeId.namespaceIndex = 2;
opcua_node_objecttype_t_ns_2_i_1002->nodeId.identifier.numeric = 1002;
// Parent node does not exist yet. This node will be bootstrapped and linked later.
UA_RCU_LOCK();
UA_NodeStore_insert(server->nodestore, (UA_Node*) opcua_node_objecttype_t_ns_2_i_1002);
UA_RCU_UNLOCK();
} while(0);
do {
// Node: opcua_node_object_t(ns=2;i=5001), 1:Configuration
UA_ObjectNode *opcua_node_object_t_ns_2_i_5001 = UA_NodeStore_newObjectNode();
opcua_node_object_t_ns_2_i_5001->browseName = UA_QUALIFIEDNAME_ALLOC(1, "Configuration");
opcua_node_object_t_ns_2_i_5001->displayName = UA_LOCALIZEDTEXT_ALLOC("en_US", "Configuration");
opcua_node_object_t_ns_2_i_5001->description = UA_LOCALIZEDTEXT_ALLOC("en_US", "");
opcua_node_object_t_ns_2_i_5001->nodeId.namespaceIndex = 2;
opcua_node_object_t_ns_2_i_5001->nodeId.identifier.numeric = 5001;
opcua_node_object_t_ns_2_i_5001->eventNotifier = (UA_Byte) 0;
// Parent node does not exist yet. This node will be bootstrapped and linked later.
UA_RCU_LOCK();
UA_NodeStore_insert(server->nodestore, (UA_Node*) opcua_node_object_t_ns_2_i_5001);
UA_RCU_UNLOCK();
} while(0);
do {
UA_Variant *opcua_node_variable_t_ns_2_i_6001_variant = UA_alloca(sizeof(UA_Variant));
UA_Variant_init(opcua_node_variable_t_ns_2_i_6001_variant);
// Node: opcua_node_variable_t(ns=2;i=6001), 1:EngineeringUnit
UA_VariableNode *opcua_node_variable_t_ns_2_i_6001 = UA_NodeStore_newVariableNode();
opcua_node_variable_t_ns_2_i_6001->browseName = UA_QUALIFIEDNAME_ALLOC(1, "EngineeringUnit");
opcua_node_variable_t_ns_2_i_6001->displayName = UA_LOCALIZEDTEXT_ALLOC("en_US", "EngineeringUnit");
opcua_node_variable_t_ns_2_i_6001->description = UA_LOCALIZEDTEXT_ALLOC("en_US", "");
opcua_node_variable_t_ns_2_i_6001->nodeId.namespaceIndex = 2;
opcua_node_variable_t_ns_2_i_6001->nodeId.identifier.numeric = 6001;
opcua_node_variable_t_ns_2_i_6001->minimumSamplingInterval = (UA_Double) 0.0;
opcua_node_variable_t_ns_2_i_6001->userAccessLevel = (UA_Int32) 3;
opcua_node_variable_t_ns_2_i_6001->accessLevel = (UA_Int32) 3;
opcua_node_variable_t_ns_2_i_6001->valueRank = (UA_Int32) -1;
opcua_node_variable_t_ns_2_i_6001->value.variant.value = *opcua_node_variable_t_ns_2_i_6001_variant;
opcua_node_variable_t_ns_2_i_6001->valueSource = UA_VALUESOURCE_VARIANT;
// Parent node does not exist yet. This node will be bootstrapped and linked later.
UA_RCU_LOCK();
UA_NodeStore_insert(server->nodestore, (UA_Node*) opcua_node_variable_t_ns_2_i_6001);
UA_RCU_UNLOCK();
} while(0);
do {
// Node: opcua_node_object_t(ns=2;i=5002), 1:Measurement
UA_ObjectNode *opcua_node_object_t_ns_2_i_5002 = UA_NodeStore_newObjectNode();
opcua_node_object_t_ns_2_i_5002->browseName = UA_QUALIFIEDNAME_ALLOC(1, "Measurement");
opcua_node_object_t_ns_2_i_5002->displayName = UA_LOCALIZEDTEXT_ALLOC("en_US", "Measurement");
opcua_node_object_t_ns_2_i_5002->description = UA_LOCALIZEDTEXT_ALLOC("en_US", "");
opcua_node_object_t_ns_2_i_5002->nodeId.namespaceIndex = 2;
opcua_node_object_t_ns_2_i_5002->nodeId.identifier.numeric = 5002;
opcua_node_object_t_ns_2_i_5002->eventNotifier = (UA_Byte) 0;
// Parent node does not exist yet. This node will be bootstrapped and linked later.
UA_RCU_LOCK();
UA_NodeStore_insert(server->nodestore, (UA_Node*) opcua_node_object_t_ns_2_i_5002);
UA_RCU_UNLOCK();
} while(0);
do {
UA_Variant *opcua_node_variable_t_ns_2_i_6002_variant = UA_alloca(sizeof(UA_Variant));
UA_Variant_init(opcua_node_variable_t_ns_2_i_6002_variant);
// Node: opcua_node_variable_t(ns=2;i=6002), 1:Temperature
UA_VariableNode *opcua_node_variable_t_ns_2_i_6002 = UA_NodeStore_newVariableNode();
opcua_node_variable_t_ns_2_i_6002->browseName = UA_QUALIFIEDNAME_ALLOC(1, "Temperature");
opcua_node_variable_t_ns_2_i_6002->displayName = UA_LOCALIZEDTEXT_ALLOC("en_US", "Temperature");
opcua_node_variable_t_ns_2_i_6002->description = UA_LOCALIZEDTEXT_ALLOC("en_US", "");
opcua_node_variable_t_ns_2_i_6002->nodeId.namespaceIndex = 2;
opcua_node_variable_t_ns_2_i_6002->nodeId.identifier.numeric = 6002;
opcua_node_variable_t_ns_2_i_6002->minimumSamplingInterval = (UA_Double) 0.0;
opcua_node_variable_t_ns_2_i_6002->userAccessLevel = (UA_Int32) 3;
opcua_node_variable_t_ns_2_i_6002->accessLevel = (UA_Int32) 3;
opcua_node_variable_t_ns_2_i_6002->valueRank = (UA_Int32) -1;
opcua_node_variable_t_ns_2_i_6002->value.variant.value = *opcua_node_variable_t_ns_2_i_6002_variant;
opcua_node_variable_t_ns_2_i_6002->valueSource = UA_VALUESOURCE_VARIANT;
// Parent node does not exist yet. This node will be bootstrapped and linked later.
UA_RCU_LOCK();
UA_NodeStore_insert(server->nodestore, (UA_Node*) opcua_node_variable_t_ns_2_i_6002);
UA_RCU_UNLOCK();
} while(0);
do {
// Node: opcua_node_object_t(ns=2;i=5004), 1:TemperatureSensor
UA_ObjectNode *opcua_node_object_t_ns_2_i_5004 = UA_NodeStore_newObjectNode();
opcua_node_object_t_ns_2_i_5004->browseName = UA_QUALIFIEDNAME_ALLOC(1, "TemperatureSensor");
opcua_node_object_t_ns_2_i_5004->displayName = UA_LOCALIZEDTEXT_ALLOC("en_US", "TemperatureSensor");
opcua_node_object_t_ns_2_i_5004->description = UA_LOCALIZEDTEXT_ALLOC("en_US", "");
opcua_node_object_t_ns_2_i_5004->nodeId.namespaceIndex = 2;
opcua_node_object_t_ns_2_i_5004->nodeId.identifier.numeric = 5004;
opcua_node_object_t_ns_2_i_5004->eventNotifier = (UA_Byte) 0;
// Parent node does not exist yet. This node will be bootstrapped and linked later.
UA_RCU_LOCK();
UA_NodeStore_insert(server->nodestore, (UA_Node*) opcua_node_object_t_ns_2_i_5004);
UA_RCU_UNLOCK();
} while(0);
do {
// Node: opcua_node_object_t(ns=2;i=5003), 1:Configuration
UA_ObjectNode *opcua_node_object_t_ns_2_i_5003 = UA_NodeStore_newObjectNode();
opcua_node_object_t_ns_2_i_5003->browseName = UA_QUALIFIEDNAME_ALLOC(1, "Configuration");
opcua_node_object_t_ns_2_i_5003->displayName = UA_LOCALIZEDTEXT_ALLOC("en_US", "Configuration");
opcua_node_object_t_ns_2_i_5003->description = UA_LOCALIZEDTEXT_ALLOC("en_US", "");
opcua_node_object_t_ns_2_i_5003->nodeId.namespaceIndex = 2;
opcua_node_object_t_ns_2_i_5003->nodeId.identifier.numeric = 5003;
opcua_node_object_t_ns_2_i_5003->eventNotifier = (UA_Byte) 0;
// Parent node does not exist yet. This node will be bootstrapped and linked later.
UA_RCU_LOCK();
UA_NodeStore_insert(server->nodestore, (UA_Node*) opcua_node_object_t_ns_2_i_5003);
UA_RCU_UNLOCK();
} while(0);
do {
UA_Variant *opcua_node_variable_t_ns_2_i_6003_variant = UA_alloca(sizeof(UA_Variant));
UA_Variant_init(opcua_node_variable_t_ns_2_i_6003_variant);
// Node: opcua_node_variable_t(ns=2;i=6003), 1:EngineeringUnit
UA_VariableNode *opcua_node_variable_t_ns_2_i_6003 = UA_NodeStore_newVariableNode();
opcua_node_variable_t_ns_2_i_6003->browseName = UA_QUALIFIEDNAME_ALLOC(1, "EngineeringUnit");
opcua_node_variable_t_ns_2_i_6003->displayName = UA_LOCALIZEDTEXT_ALLOC("en_US", "EngineeringUnit");
opcua_node_variable_t_ns_2_i_6003->description = UA_LOCALIZEDTEXT_ALLOC("en_US", "");
opcua_node_variable_t_ns_2_i_6003->nodeId.namespaceIndex = 2;
opcua_node_variable_t_ns_2_i_6003->nodeId.identifier.numeric = 6003;
opcua_node_variable_t_ns_2_i_6003->minimumSamplingInterval = (UA_Double) 0.0;
opcua_node_variable_t_ns_2_i_6003->userAccessLevel = (UA_Int32) 3;
opcua_node_variable_t_ns_2_i_6003->accessLevel = (UA_Int32) 3;
opcua_node_variable_t_ns_2_i_6003->valueRank = (UA_Int32) -1;
opcua_node_variable_t_ns_2_i_6003->value.variant.value = *opcua_node_variable_t_ns_2_i_6003_variant;
opcua_node_variable_t_ns_2_i_6003->valueSource = UA_VALUESOURCE_VARIANT;
// Parent node does not exist yet. This node will be bootstrapped and linked later.
UA_RCU_LOCK();
UA_NodeStore_insert(server->nodestore, (UA_Node*) opcua_node_variable_t_ns_2_i_6003);
UA_RCU_UNLOCK();
} while(0);
do {
// Node: opcua_node_object_t(ns=2;i=5005), 1:Measurement
UA_ObjectNode *opcua_node_object_t_ns_2_i_5005 = UA_NodeStore_newObjectNode();
opcua_node_object_t_ns_2_i_5005->browseName = UA_QUALIFIEDNAME_ALLOC(1, "Measurement");
opcua_node_object_t_ns_2_i_5005->displayName = UA_LOCALIZEDTEXT_ALLOC("en_US", "Measurement");
opcua_node_object_t_ns_2_i_5005->description = UA_LOCALIZEDTEXT_ALLOC("en_US", "");
opcua_node_object_t_ns_2_i_5005->nodeId.namespaceIndex = 2;
opcua_node_object_t_ns_2_i_5005->nodeId.identifier.numeric = 5005;
opcua_node_object_t_ns_2_i_5005->eventNotifier = (UA_Byte) 0;
// Parent node does not exist yet. This node will be bootstrapped and linked later.
UA_RCU_LOCK();
UA_NodeStore_insert(server->nodestore, (UA_Node*) opcua_node_object_t_ns_2_i_5005);
UA_RCU_UNLOCK();
} while(0);
do {
UA_Variant *opcua_node_variable_t_ns_2_i_6004_variant = UA_alloca(sizeof(UA_Variant));
UA_Variant_init(opcua_node_variable_t_ns_2_i_6004_variant);
// Node: opcua_node_variable_t(ns=2;i=6004), 1:Temperature
UA_VariableNode *opcua_node_variable_t_ns_2_i_6004 = UA_NodeStore_newVariableNode();
opcua_node_variable_t_ns_2_i_6004->browseName = UA_QUALIFIEDNAME_ALLOC(1, "Temperature");
opcua_node_variable_t_ns_2_i_6004->displayName = UA_LOCALIZEDTEXT_ALLOC("en_US", "Temperature");
opcua_node_variable_t_ns_2_i_6004->description = UA_LOCALIZEDTEXT_ALLOC("en_US", "");
opcua_node_variable_t_ns_2_i_6004->nodeId.namespaceIndex = 2;
opcua_node_variable_t_ns_2_i_6004->nodeId.identifier.numeric = 6004;
opcua_node_variable_t_ns_2_i_6004->minimumSamplingInterval = (UA_Double) 0.0;
opcua_node_variable_t_ns_2_i_6004->userAccessLevel = (UA_Int32) 3;
opcua_node_variable_t_ns_2_i_6004->accessLevel = (UA_Int32) 3;
opcua_node_variable_t_ns_2_i_6004->valueRank = (UA_Int32) -1;
opcua_node_variable_t_ns_2_i_6004->value.variant.value = *opcua_node_variable_t_ns_2_i_6004_variant;
opcua_node_variable_t_ns_2_i_6004->valueSource = UA_VALUESOURCE_VARIANT;
// Parent node does not exist yet. This node will be bootstrapped and linked later.
UA_RCU_LOCK();
UA_NodeStore_insert(server->nodestore, (UA_Node*) opcua_node_variable_t_ns_2_i_6004);
UA_RCU_UNLOCK();
} while(0);
}

22
TestModel.h Normal file
View File

@ -0,0 +1,22 @@
/* WARNING: This is a generated file.
* Any manual changes will be overwritten.
*/
#ifndef TESTMODEL_H_
#define TESTMODEL_H_
#ifdef UA_NO_AMALGAMATION
#include "server/ua_server_internal.h"
#include "server/ua_nodes.h"
#include "ua_util.h"
#include "ua_types.h"
#include "ua_types_encoding_binary.h"
#include "ua_types_generated_encoding_binary.h"
#include "ua_transport_generated_encoding_binary.h"
#else
#include "open62541.h"
#define NULL ((void *)0)
#endif
#define UA_NS2ID_TEMPERATURESENSORTYPE 1002
extern void TestModel(UA_Server *server);
#endif /* TESTMODEL_H_ */

19
testmodel.tt2pro Normal file
View File

@ -0,0 +1,19 @@
###########################
# UaModeler Project File #
# Generated at 07.06.2016 #
###########################
PROJECTNAME = TestModel
TEMPLATESET = ($TEMPLATES)/modeling/v1_0/t0/modeling.tt2set
MODELS += ($MODELS)/Opc.Ua.NodeSet2.ua \
testmodel.ua
COLORS = ($MODELS)/Opc.Ua.NodeSet2.ua: #0000ff\
testmodel.ua: #008000
OUTPUTPATH =
GENERATE += testmodel.ua

BIN
testmodel.ua Normal file

Binary file not shown.

111
testmodel.xml Normal file
View File

@ -0,0 +1,111 @@
<UANodeSet xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:uax="http://opcfoundation.org/UA/2008/02/Types.xsd" xmlns="http://opcfoundation.org/UA/2011/03/UANodeSet.xsd" xmlns:s1="http://krohnegroup.com/TestModel/Types.xsd" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<NamespaceUris>
<Uri>http://krohnegroup.com/TestModel/</Uri>
</NamespaceUris>
<Aliases>
<Alias Alias="Double">i=11</Alias>
<Alias Alias="String">i=12</Alias>
<Alias Alias="Organizes">i=35</Alias>
<Alias Alias="HasModellingRule">i=37</Alias>
<Alias Alias="HasTypeDefinition">i=40</Alias>
<Alias Alias="HasSubtype">i=45</Alias>
<Alias Alias="HasProperty">i=46</Alias>
<Alias Alias="HasComponent">i=47</Alias>
</Aliases>
<Extensions>
<Extension>
<ModelInfo Tool="UaModeler" Hash="ngSlXA/wXFdk+KET7IyQOQ==" Version="1.4.3"/>
</Extension>
</Extensions>
<UAObjectType NodeId="ns=1;i=1002" BrowseName="1:TemperatureSensorType">
<DisplayName>TemperatureSensorType</DisplayName>
<References>
<Reference ReferenceType="HasComponent">ns=1;i=5001</Reference>
<Reference ReferenceType="HasComponent">ns=1;i=5002</Reference>
<Reference ReferenceType="HasSubtype" IsForward="false">i=58</Reference>
</References>
</UAObjectType>
<UAObject ParentNodeId="ns=1;i=1002" NodeId="ns=1;i=5001" BrowseName="1:Configuration">
<DisplayName>Configuration</DisplayName>
<References>
<Reference ReferenceType="HasTypeDefinition">i=58</Reference>
<Reference ReferenceType="HasComponent" IsForward="false">ns=1;i=1002</Reference>
<Reference ReferenceType="HasComponent">ns=1;i=6001</Reference>
<Reference ReferenceType="HasModellingRule">i=78</Reference>
</References>
</UAObject>
<UAVariable DataType="String" ParentNodeId="ns=1;i=5001" NodeId="ns=1;i=6001" BrowseName="1:EngineeringUnit" UserAccessLevel="3" AccessLevel="3">
<DisplayName>EngineeringUnit</DisplayName>
<References>
<Reference ReferenceType="HasTypeDefinition">i=63</Reference>
<Reference ReferenceType="HasModellingRule">i=78</Reference>
<Reference ReferenceType="HasComponent" IsForward="false">ns=1;i=5001</Reference>
<Reference ReferenceType="HasProperty" IsForward="false">ns=1;i=6002</Reference>
</References>
</UAVariable>
<UAObject ParentNodeId="ns=1;i=1002" NodeId="ns=1;i=5002" BrowseName="1:Measurement">
<DisplayName>Measurement</DisplayName>
<References>
<Reference ReferenceType="HasTypeDefinition">i=58</Reference>
<Reference ReferenceType="HasModellingRule">i=78</Reference>
<Reference ReferenceType="HasComponent" IsForward="false">ns=1;i=1002</Reference>
<Reference ReferenceType="HasComponent">ns=1;i=6002</Reference>
</References>
</UAObject>
<UAVariable DataType="Double" ParentNodeId="ns=1;i=5002" NodeId="ns=1;i=6002" BrowseName="1:Temperature" UserAccessLevel="3" AccessLevel="3">
<DisplayName>Temperature</DisplayName>
<References>
<Reference ReferenceType="HasTypeDefinition">i=63</Reference>
<Reference ReferenceType="HasProperty">ns=1;i=6001</Reference>
<Reference ReferenceType="HasModellingRule">i=78</Reference>
<Reference ReferenceType="HasComponent" IsForward="false">ns=1;i=5002</Reference>
</References>
<Value>
<uax:Double>0</uax:Double>
</Value>
</UAVariable>
<UAObject NodeId="ns=1;i=5004" BrowseName="1:TemperatureSensor">
<DisplayName>TemperatureSensor</DisplayName>
<References>
<Reference ReferenceType="HasComponent">ns=1;i=5003</Reference>
<Reference ReferenceType="HasComponent">ns=1;i=5005</Reference>
<Reference ReferenceType="Organizes" IsForward="false">i=85</Reference>
<Reference ReferenceType="HasTypeDefinition">ns=1;i=1002</Reference>
</References>
</UAObject>
<UAObject ParentNodeId="ns=1;i=5004" NodeId="ns=1;i=5003" BrowseName="1:Configuration">
<DisplayName>Configuration</DisplayName>
<References>
<Reference ReferenceType="HasTypeDefinition">i=58</Reference>
<Reference ReferenceType="HasComponent" IsForward="false">ns=1;i=5004</Reference>
<Reference ReferenceType="HasComponent">ns=1;i=6003</Reference>
</References>
</UAObject>
<UAVariable DataType="String" ParentNodeId="ns=1;i=5003" NodeId="ns=1;i=6003" BrowseName="1:EngineeringUnit" UserAccessLevel="3" AccessLevel="3">
<DisplayName>EngineeringUnit</DisplayName>
<References>
<Reference ReferenceType="HasTypeDefinition">i=63</Reference>
<Reference ReferenceType="HasComponent" IsForward="false">ns=1;i=5003</Reference>
<Reference ReferenceType="HasProperty" IsForward="false">ns=1;i=6004</Reference>
</References>
</UAVariable>
<UAObject ParentNodeId="ns=1;i=5004" NodeId="ns=1;i=5005" BrowseName="1:Measurement">
<DisplayName>Measurement</DisplayName>
<References>
<Reference ReferenceType="HasTypeDefinition">i=58</Reference>
<Reference ReferenceType="HasComponent" IsForward="false">ns=1;i=5004</Reference>
<Reference ReferenceType="HasComponent">ns=1;i=6004</Reference>
</References>
</UAObject>
<UAVariable DataType="Double" ParentNodeId="ns=1;i=5005" NodeId="ns=1;i=6004" BrowseName="1:Temperature" UserAccessLevel="3" AccessLevel="3">
<DisplayName>Temperature</DisplayName>
<References>
<Reference ReferenceType="HasTypeDefinition">i=63</Reference>
<Reference ReferenceType="HasProperty">ns=1;i=6003</Reference>
<Reference ReferenceType="HasComponent" IsForward="false">ns=1;i=5005</Reference>
</References>
<Value>
<uax:Double>0</uax:Double>
</Value>
</UAVariable>
</UANodeSet>