Splitting complex KNX DPTs

Within the NETx Server we can split up complex KNX data point types into different sub fields. For example, to activate the sub fields for a 1 byte DALI object, open the Telegram Definition, select the corresponding group address(es) and change the data type to: 238.600 DALI_Diagnostics.

 

After restarting the server, you will find the group address and different subfields:

 

For example, if the value 67 is received, the BMS Server splits up the value into the sub fields. 67 means that the DALI ballast 3 has a lamp failure.

If you want to send a KNX telegram, you can also use the sub fields. For example of DPT 238.600, if you want to request the status of a DALI ballast, you have to set the sub field address to the corresponding address, and .LF and .BF to False. Afterwards, when you set the SEND item to True, the BMS Server combines the values of all sub fields and sends the calculated value to the KNX bus.

Custom DPTs

The definition of complex datapoint types is located in an XML file in the installation directory, typically this is C:\Program Files (x86)\NETxAutomation\NETx.BMS.Server.2.0\nxaKNXDataTypeDefinitions.xml. The file contains definition of all DPTs as specified by the KNX standard as well as other custom types used in KNX/DALI gateways.

Likewise, you can add DPTs for your own purpose to that file. In the following example we will add a new DPT with custom SubTypes.

DPT definition

First, the DPT has to be defined in the nxaKNXDataTypeDefinitions.xml file (see XML format description in the section below):

Custom DPT
<data_type name="Custom.001" descr="CustomeDPT" length_type="1BYTE" set_flag="T">
  <sub_type id="Scene" desc="Scene Number" start_index="0" length="6" length_type="1BYTE" input_type="EIS14" su="U" output_type="UINT8" unit="" pre_offset="0" post_offset="0" scale="1" min_max="" />
  <sub_type id="SA" desc="Scene Activation" start_index="6" length="1" length_type="1BIT" input_type="EIS1" su="" output_type="BOOL" unit="" pre_offset="0" post_offset="0" scale="1" min_max="" />
  <sub_type id="S" desc="BStorage function" start_index="7" length="1" length_type="1BIT" input_type="EIS1" su="" output_type="BOOL" unit="" pre_offset="0" post_offset="0" scale="1" min_max="" />
</data_type>

Now that the custom DPT is defined it has to be announced in the BMS Studio's configuration file for telegram definitions, which can be found in <install-dir>\System\Definitions\nxaTelegramDefinitions.35.tvd.

In the Data Type line, the new Definition of the DPT should be inserted following the format <Data_Type Length_Type>|<Data_Type Name>@<Data_Type Descr>. In our example the definition will be like the following:

After saving the custom DPT in nxaKNXDataTypeDefinitions.xml and the modified nxaTelegramDefinitions.35.tvd the BMS Studio needs to be restarted to be aware of the new DPT. After that the new DPT is ready to use in the telegram definition table:

XML format description

data_type attributes

Description

name

The name of the custom DPT which will be used later.

descr

Data type description.

length_type

Type length of DPT, 1BIT, 2BIT, 4BIT, 1BYTE, 2BYTE, etc.

set_flag

Set the DPT flag.

sub_type attributes

Description

id

The ID of the Sub_Type.

desc

Sub_Type description.

start_index

The start index of the Sub_Type. (warning) The most right bit's position is 0.

length

The length of the Sub_Type in bits.

length_type

The length type of the Sub_Type.

input_type

The input type EIS1, EIS2, EIS5, etc....

su

S (signed) or U (unsigned); default is signed.

output_type

The Sub_Type output type.

unit

The Sub_Type unit type °C, K/h, m/s, %, etc...

pre_offset

Offset to be added before scaling.

post_offset

Offset to be added after scaling.

scale

The Sub_Type scaling factor.

min_max

Define the min and max value e.g. "0:10" min is 0 and max is 10.

Article applies to the following products:

  • NETx BMS Platform

  • NETx Multi Protocol Server

  • NETx BMS Server 2.0