What is TCNDL?

TCNDL is Time Critical Networks open XML document file format. It is used to store information on networks created using TCN Ethernet Design & Analysis Suite. Since it is an open XML format it is free to create TCNDL files by any other tool. As long as it conforms to this specification, it can be loaded into and updated by TCN Ethernet Design & Analysis Suite.

File Structure

First level

The first level consist only of the root element, < Network >, which all other elements fall under. < Network > has no attributes.

Second level

On the second level there are a number of elements that act as containers for a collection of child elements. It is obvious from the names of the elements which belong together. E.g Second level element < Hosts > contains a collection of child element < Host >. Second level elements have no attributes. The second level elements are < Hosts >, < Switches >, < Links >, < CanBuses >, < LinBuses >, < Dataframes >, < HeaFiles >, < Timers >, < VLANs > .

Lower levels

From the third level and down the elements contain attributes. A complete list of lower level elements and attributes with their constraints can be found below.

Element definition

 Element: Host

This element represents a host in the network.

Parent element: Hosts

Child elementsEthernetPortsCanPortsLinPorts

Attribute: name

This attribute specifies the name of a host.

Type: String

Unique: Yes

Mandatory: Yes

Attribute: modelID

This attribute specifies the model type of the host.

Type: Integer

Unique: No

Mandatory: Yes

Constraint: Must reference a value in ~lib/hostModels.xml

 Element: Switch

This element represents a switch in the network.

Parent element: Switches

Child elementsEthernetPorts

Attribute: name

This attribute specifies the name of a switch.

Type: String

Unique: Yes

Mandatory: Yes

Attribute: modelID

This attribute specifies the model type of the switch.

Type: Integer

Unique: No

Mandatory: Yes

Constraint: Must reference a value in ~lib/hostModels.xml

 Element: EthernetPorts

This element represents a collection of Ethernet ports.

Parent elementHost OR Switch

Child elementsEthernetPort 

Attributes: 

This element has no attributes 

 Element: EthernetPort

This element represents an Ethernet port.

Parent elementEthernetPorts

Child elements: -

Attribute: name

This attribute specifies the name of the Ethernet port.

Type: String

Unique: Unique within its parent.

Mandatory: Yes

Attribute: speed

This attribute defines the speed of an Ethernet port. Expressed in bit/s.

Type: Integer

Unique: No

Mandatory: Yes

 Element: Link

This element represents a connection between two Ethernet ports.

Parent element: Links

Child elementsEthernetPort

Attribute: name

Specifies the name of a link.

Type: String

Unique: Yes

Mandatory: Yes

 Element: EthernetPort

This element represents an Ethernet port.

Parent elementLink

Child elements: -

Constraint: There must be exactly two EthernetPorts for each Link.

Attribute: name

This attribute specifies the name of the Ethernet port connected by the parent link.

Type: String

Unique: Yes

Mandatory: Yes

Constraint: Must reference a value equal to Host.name + EthernetPort.name OR Switch.name + EthernetPort.name.

Attribute: priorityMode

This attribute defines which priority mode the port uses. 

Type: String

Unique: No

Mandatory: Yes

Valid values: "TAG", "PORT", "IP"

Attribute: priority

This attribute defines the priority of the port. A higher value implies a higher priority. Only used if priorityMode is "PORT"

Type: Integer

Unique: No

Mandatory: Yes

Valid values: 0 .. 7

Attribute: schedulingPolicy

This attribute defines which scheduling policy is applied.

Type: String

Unique: No

Mandatory: Yes

Valid values: "Credit Based Shaper", "Strict Priority"

Attribute: bandwidthFractionClassA & bandwidthFractionClassB

These attributes define the bandwidth fraction reserved for Class A and B respectively. Expressed as a decimal between 0 and 1, where 1 means 100%.

Type: Decimal

Unique: No

Mandatory: Yes, if schedulingPolicy is "Credit Based Shaper"

Valid values: 0 .. 1

 Element: LinPorts

This element represents a collection of LIN ports.

Parent elementHost

Child elementsLinPort

Attributes: 

This element has no attributes.

 Element: CanPorts

This element represents a collection of CAN ports.

Parent elementHost

Child elementsCanPort

Attributes: 

This element has no attributes

 Element: LinPort

This element represents a LIN port.

Parent elementLinPorts

Child elements: -

Attribute: name

This attribute specifies the name of the LIN port.

Type: String

Unique: Unique within its parent.

Mandatory: Yes

Attribute: speed

This attribute defines the speed of a LIN port. Expressed in bit/s.

Type: Integer

Unique: No

Mandatory: Yes

 Element: CanPort

This element represents a CAN port.

Parent elementCanPorts

Child elements: -

Attribute: name

This attribute specifies the name of the CAN port.

Type: String

Unique: Unique within its parent.

Mandatory: Yes

Attribute: speed

This attribute defines the speed of a CAN port. Expressed in bit/s.

Type: Integer

Unique: No

Mandatory: Yes

 Element: DataFrame

This element represents a data frame containing signal information, an image or similar. A DataFrame is carried as the payload in, for example, a CAN frame when it is to be sent over a CAN bus.

Parent element: DataFrames

Child elementsPath

Attribute: name

This attribute specifies the name of the data frame.

Type: String

Unique: Yes

Mandatory: Yes

Attribute: bitsize

This attribute defines the size of the data frame. Expressed in bits.

Type: Integer

Unique: No

Constraint: Min Value = 1, Max Value = 12144

Mandatory: Yes

Attribute: period

This attribute defines the periodicity with which the data frame is released by the associated application. Expressed in seconds. Can be defined with 10 µs precision.

Type: Integer

Unique: No

Mandatory: Yes

Constraint: Must be larger than 0.

Attribute: offset

This attribute defines the offset of the first instance of a data frame in time relative time t=0. Expressed in seconds. Can be defined with 10 µs precision.

Type: Integer

Unique: No

Mandatory: Yes

Constraint: Must be larger than 0.

Attribute: priority

This attribute defines the priority of the data frame. A higher value implies a higher priority.

Type: Integer

Unique: No

Mandatory: Yes

Valid values: 0 .. 7

 Element: Path

This element represents the path of a data frame. A path is comprised of all nodes a data frame passes including the destination and the target nodes.

Parent elementDataFrame

Child elementsNode

Attribute: name

This attribute specifies the name of the path.

Type: String

Unique: Yes

Mandatory: Yes

 Element: Node

This element represents a node. A node can be either a device (host/switch) or a bus (CAN bus/LIN bus). The nodes of a path is ordered by a sequence number. The lowest sequence number is the destination and the highest is the target of the path.

Parent elementPath

Child elements: -

Attribute: name

This attribute specifies the name of the node

Type: String

Unique: Unique within its parent

Mandatory: Yes

Constraint 1: Must reference Host.name OR Switch.name OR CanBus.name OR LinBus.name.

Constraint 2: The node with lowest sequence number within its parent must reference a Host.name.

Constraint 3: The node with highest sequence number within its parent must reference a Host.name.

Attribute: sequenceNumber

This attribute specifies the sequence number of the node within the path.

Type: Integer

Unique: Unique within its parent

Mandatory: Yes

Constraint: The lowest sequence number within its parent must be 1.

 Element: Timer

This element represents a timer.

Parent element: Timers

Child elementsTimeSampler

Attribute: name

This attribute specifies the name of the timer.

Type: String

Unique: Yes

Mandatory: Yes

Attribute: dataFrame

This attribute specifies the data frame this particular timer should watch.

Type: String

Unique: No

Mandatory: Yes

Attribute: targetMacAddress

This attribute specifies the MAC address of the timer's target Host. Expressed as six groups of two hexadecimal digits, separated by hyphens(-) or colons (:).

Type: String

Unique: No

Mandatory: No

 Element: TimeSampler

This element represents a time sampler.

Parent elementTimer

Child elements: -

Attribute: processor

This attribute specifies the processor that is responsible for the time sampling performed by the TimeSampler.

Type: String

Unique: Yes

Mandatory: Yes

Constraint 1: The value must contain two dots (.)

Constraint 2: When the value is separated in four parts, the separating character being a dot (.), the first part must reference a value in Switch.name. The second part must reference a value in EthernetPort.name where EthernetPort is a child element to the device referenced by part 1. The third+fourth parts must be either EI.Tx (Egress Interface.Transmitter) OR II.Rx (Ingress Interface.Receiver).

Constraint 3: The EthernetPort that is referenced must be connected.

 Element: HeaFile

This element represents a Ethernet frame capture file generated by a netANALYZER real-time Ethernet capture card and stored in the HEA file format.

Parent element: HeaFiles

Child elementsTaps

Attribute: name

This attribute specifies the name of the measurement.

Type: String

Unique: Yes

Mandatory: Yes

Attribute: fileName

This attribute specifies the name of the capture file on disk.

Type: String

Unique: No

Mandatory: Yes

 Element: Taps

This element represents a collection of Traffic Access Points (TAPs).

Parent elementHeaFile

Child elementsTap

Attributes: 

This element has no attributes.

 Element: Tap

This element represents a Traffic Access Point (TAP).

Parent elementTaps

Child elements: -

Attribute: name

This attribute specifies the name of the TAP.

Type: String

Unique: Yes

Mandatory: Yes

Attribute: link

This attribute specifies the name of the link where the TAP is placed.

Type: String

Unique: Yes

Mandatory: Yes

Constraint: Must reference a value in Link.name.

Element: Vlan

This element represents a virtual LAN in the network.

Parent element: Vlans

Child elements: EthernetPort

Attribute: vlanId

This attribute specifies the id of a VLAN.

Type: Integer

Unique: Yes

Mandatory: Yes

Attribute: name

This attribute specifies the name of a VLAN.

Type: String

Unique: Yes

Mandatory: Yes

Attribute: priority

This attribute specifies the priority of the VLAN. A higher value implies a higher priority.

Type: Integer

Unique: No

Mandatory: Yes

Valid values: 0 .. 7

Element: EthernetPort

This element represents an Ethernet port included in the VLAN.

Parent element: Vlan

Child elements: -

Attribute: name

This attribute specifies the name of the Ethernet port connected by the parent link.

Type: String

Unique: Yes

Mandatory: Yes

Constraint: Must reference a value equal to Host.name + EthernetPort.name OR Switch.name + EthernetPort.name.

Attribute: tagged

This attribute is not used.

Type: Boolean

Unique: No

Mandatory: No