Nodelist.graphml Format Specification

13 December 2011

Editors
Heikki Saha, Sandvik Mining and Construction Oy
Ossi Nykänen, Tampere University of Technology (TUT)
Matti Helminen, TUT
Jaakko Salonen, TUT

Table of Contents

1. Scope

This document describes a proposal for GraphML(XML)-based node list file for CANopen systems. GraphML /GraphML/ was selected, because it contains capabilities for structural network representation and because it is supported by commonly available viewer tools and software libraries.

Node list contains description of all nodes within a network. Additionally, this GraphML-based format defines the network topology and both physical and logical positions of the nodes. Power supply scheme is also included to be able to serve better various automated troubleshooting guidance services. Capability of GraphML-based node list is not restricted to single network – it can define the whole systems consisting of multiple networks.

This specification contains all information expressed by nodelist.cpj defined by /CiA-306-3/. Primary purpose of this file format remains unchanged – to provide either network or system level structural information and links to the appropriate DCF- /CiA-306-1/ or XDC-files /CiA-311/. In such purpose, only minimal set of entries are required.

Another purpose of this file format is to improve information exchange between e.g. CANopen system design software and membership monitoring view of the graphical user interface software. For such purpose, wider set of entries are required to be able to express human understandable system structure and status visualization without a need of DCF- or XDC-files.

2. Normative references

/CiA-306-1/ Electronic Device Description, Part 1: Electronic Data Sheet and Device Configuration File
/CiA-306-3/ Electronic Device Description, Part 3: Network variable handling and tool integration
/CiA-311/ CANopen Device Description, XML schema definition
/GraphML/ The GraphML File Format (http://graphml.graphdrawing.org/)
/SVG1.1/ Scalable Vector Graphics (SVG) 1.1 (http://www.w3.org/TR/SVG/)

3. Abbreviations and definitions

3.1 Abbreviations

Abbreviation Description
DCF Device configuration file
EDS Electronic datasheet file
GraphML XML-based graph description file format
SVG Scalable Vector Graphics
XDC XML device configuration file
XDD XML device description file
XML Extensible markup language
   

3.2 Definitions

Term DescriptionSorted ascending
   
Network A communication network connecting two or more nodes
System A communication system, which may consists of one or more networks
Hub A network hub divides single logical network into two or more physical networks
Switch A network switch divides single logical network into two or more physical networks
Device Device can be any kind of equipment – e.g. sensor, actuator, application processing platform, hub or switch
Edge Edge represents a physical network connection. Network-ID of the logical network, where it belongs to, is given as an attribute.
Graph Graph represents a whole system consisting of one or more networks
Node Node represents any kind of device connected to one or more networks through network ports

4. System description

Only GraphML elements graph, node and edge are allowed with additional data attributes listed in this section. Systems with multiple networks are modeled with flat structure, instead of hierarchical graphs. Physical network connections are modeled in the graph and logical network information is included as attributes for both nodes and edges.

4.1 System

Each node list defines the entire system as a single GraphML graph. Applicable attributes for <graph>-element are defined in Table 1. CPJ-column indicates the existence of the attribute in the nodelist.cpj /CiA-306-3/. The last column indicates, whether the attribute is mandatory or optional.

Table 1: Graph attributes
AttributeTypeDescriptionCPJM/O
EDSBaseName string Path to a folder containing EDS- or XDD-files of the systems nodes. X O
Background string Path to a background figure - O

4.2 Nodes

All kind of devices are defined as GraphML nodes. Applicable attributes for <node>-element are defined in Table 2. All attributes after NumOfNets are required for each supported logical network port so, that postfix N1, N2, ... , Ni in the attribute name indicates the corresponding logical network. Power supply attributes are specific for each network port, because the device may have a separate internal unit for each logical network. Mandatory attributes enable automatic transform to the nodelist.cpj-format despite of slightly different structure.

Table 2: Node attributes
AttributeTypeDescriptionCPJM/O
NodeName string Name of the node. This shall be equal to the name defined in corresponding entry of DCF- or XDC-file and in other design documents containing the same node. X M
NodeType string Type of the node can be one of following:
device: A CANopen device, with one or more logical network ports
hub: Network hub
switch: Network switch
- M
NodeFig string A path to the node figure - O
X int X-coordinate of the center point of the node figure in pixels - O
Y int Y-coordinate of the center point of the node figure in pixels - O
NumOfNets int Number of supported logical network ports, 1 ≤ i ≤ 127. Following attributes are separately defined for each supported logical network connections. - M
NetNumberNi int Network-ID of the i:th logical network. This shall be equal to the node-ID defined in corresponding entry of DCF- or XDC-file. - M
NetworkNameNi string Network name of the i:th logical network. This shall be equal to the name defined in corresponding entry of DCF- or XDC-file. X O
NodeIDNi int Node-ID of the i:th logical network. This shall be equal to the network-ID defined in corresponding entry of DCF- or XDC-file. X M
NodeDCFNameNi string A path to the DCF- or XDC-file of the i:th logical network. X O
SupplyDomainNi string Identifier of the power supply domain supplying the device from i:th logical network. - O
SupplyPointNi int Indicates if the device is the origin of a supply domain in the i:th logical network:
0: Device is the origin of supply domain
1: Device is not origin of the supply domain
- O

4.3 Network(s)

To enable compatibility with existing viewer programs, network connections are defined as GraphML edges. Differentiation between different logical networks is made by NetNumber-attribute values. Applicable attributes for <edge>-element are defined in Table 3.

Table 3: Edge attributes
AttributeTypeDescriptionCPJM/O
NetNumber int Network-ID of the logical network - M
CableName string Name of the cable connection. This shall be equal to the cable name defined in other design documents containing the same connection. - O
Length int Physical length of the connection in millimeters, 1 ≤ i ≤ 231 (1mm..2147km) - O
LineType string Line type for visualization:
line: straight line between connected nodes
path: path along given points between the conneced nodes
- O
LineParam string Line parameter for visualization:
line: none
path: middle point coordinates in SVG-format /SVG1.1/
- O
Edge LineParam defines the middle points of a path, whose start and end points are given by the associated nodes' X and Y data values, respectively. The middle points are represented as pairs of coordinate values in the user coordinates system, where coordinate values are separated with a comma and optional whitespace characters, and pairs of coordinates are separated using whitespace characters. Only L (lineto) command is supported for middle points. All coordinates – X, Y, and middle point coordinates for drawing commands – must be provided in user coordinates, without any explicit unit identifiers. In brief, this middle point syntax is a simplification of the <path-data> type defined in /SVG 1.1/.

Table 4: Path line parameter definition
Node and line definition in GraphML node list
<node id="Device_A">
  :
  <data key="X">10</data>
  <data key="Y">10</data>
  :
</node>
:
<node id="Device_B">
  :
  <data key="X">40</data>
  <data key="Y">40</data>
  :
</node>
:
<data key="EdgeLineType">line</data>
<data key="EdgeLineParams">L 20 20 L 30 30</data>
Corresponding SVG path element
<path d="M 10 10 L 20 20 L 30 30 L 40 40" />

4.4 Manufacturer specific extensions

Manufacturer specific data attributes are allowed for each element type. The attribute names shall start with prefix mfg_ to avoid conflicts with future standard expansions.

5. Examples

Some examples of GraphML based node list file format are presented in this section. The purpose of the examples is to clarify the format description, not to provide complete presentation of all supported nuances.

5.1 Nodelist.cpj replacement

First example is presented in Figure 1. It is the simplest usable description of a single network, consisting only information included into nodelist.cpj, from which an example is presented in Figure 2. Black elements are mandatory for current use and grey elements are optional. Only information, which is possible to express in nodelist.cpj is included into these examples. The only exception is NetNumber, which is not included into nodelist.cpj but is required in GraphML representation.
<!-- GraphML header -->
<?xml version="1.0" encoding="UTF-8"?>
<graphml xmlns="http://graphml.graphdrawing.org/xmlns"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://graphml.graphdrawing.org/xmlns
  http://graphml.graphdrawing.org/xmlns/1.0/graphml.xsd">

  <!-- Attribute definitions for element <graph> -->
  <key id="EDSBaseName" for="graph" attr.name="EDSBaseName" attr.type="string" />

  <!-- Global attribute definitions for element <node> -->
  <key id="NodeName" for="node" attr.name="NodeName" attr.type="string" />
  <key id="NodeType" for="node" attr.name="NodeType" attr.type="string" />
  <key id="NumOfNets" for="node" attr.name="NumOfNets" attr.type="int" />
  <!-- Network-specific attribute definitions for element <node> -->
  <key id="NetNumberN1" for="node" attr.name="NetNumberN1" attr.type="int" />
  <key id="NetworkNameN1" for="node" attr.name="NetworkNameN1" attr.type="string" />
  <key id="NodeIDN1" for="node" attr.name="NodeIDN1" attr.type="int" />
  <key id="NodeDCFNameN1" for="node" attr.name="NodeDCFNameN1" attr.type="string" />

  <!-- Attribute definitions for element <Edge> -->
  <key id="NetNumber" for="edge" attr.name="NetNumber" attr.type="int" />

  <!-- Network description graph (single network) -->
  <graph id="DemoSystem" edgedefault="undirected">
    <data key="EDSBaseName">EDS</data>
    <node id="N001">
      <data key="NodeName">DemoNode_A</data>
      <data key="NodeType">device</data>
      <data key="NumOfNets">1</data>
      <data key="NetNumberN1">1</data>
      <data key="NetworkNameN1">DefaultNet</data>
      <data key="NodeIDN1">2</data>
      <data key="NodeDCFNameN1">demo_plc.dcf</data>
    </node>
    <node id="N002">
      <data key="NodeName">DemoNode_B</data>
      <data key="NodeType">device</data>
      <data key="NumOfNets">1</data>
      <data key="NetNumberN1">1</data>
      <data key="NetworkNameN1">DefaultNet</data>
      <data key="NodeIDN1">3</data>
      <data key="NodeDCFNameN1">demodeva.dcf</data>
    </node>
    <node id="N003">
      <data key="NodeName">DemoNode_C</data>
      <data key="NodeType">device</data>
      <data key="NumOfNets">1</data>
      <data key="NetNumberN1">1</data>
      <data key="NetworkNameN1">DefaultNet</data>
      <data key="NodeIDN1">4</data>
      <data key="NodeDCFNameN1">demodevb.dcf</data>
    </node>

  <!-- Network connections -->
  <edge id="E001" source="N001" target="N002">
    <data key="NetNumber">1</data>
  </edge>
  <edge id="E002" source="N002" target="N003">
    <data key="NetNumber">1</data>
  </edge>
  </graph>

<!-- GraphML footer -->
</graphml>

Figure 1: Network description as GraphML
[Topology]
EDSBaseName=EDS
NetName=DefaultNet
Nodes=0x03
Node2Present=0x01
Node2DCFName=demo_plc.dcf
Node2Name=DemoNode_A
Node3Present=0x01
Node3DCFName=demodeva.dcf
Node3Name=DemoNode_B
Node4Present=0x01
Node4DCFName=demodevb.dcf
Node4Name=DemoNode_C

Figure 2: Network description as nodelist.cpj

5.2 Single linear network

Additional useful information can be included into GraphML representation. Figure 3 presents, how a background figure of e.g. system layout can be linked to the graph. Figures and device coordinates in the area of background figure can be given for nodes. It is impossible to use realistic distances between the devices in general. Therefore the actual node-to-node distances can be given for each edge. Furthermore, to enable more flexible screen layouts, node-to-node connections can be arcs and polylines in addition to the straigt lines.
<!-- GraphML header -->
<?xml version="1.0" encoding="UTF-8"?>
<graphml xmlns="http://graphml.graphdrawing.org/xmlns"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://graphml.graphdrawing.org/xmlns
  http://graphml.graphdrawing.org/xmlns/1.0/graphml.xsd">

  <!-- Attribute definitions for element <graph> -->
  <key id="EDSBaseName" for="graph" attr.name="EDSBaseName" attr.type="string" />
  <key id="Background" for="graph" attr.name="Background" attr.type="string" />

  <!-- Global attribute definitions for element <node> -->
  <key id="NodeName" for="node" attr.name="NodeName" attr.type="string" />
  <key id="NodeType" for="node" attr.name="NodeType" attr.type="string" />
  <key id="NodeFig" for="node" attr.name="NodeFig" attr.type="string" />
  <key id="X" for="node" attr.name="X" attr.type="int" />
  <key id="Y" for="node" attr.name="Y" attr.type="int" />
  <key id="NumOfNets" for="node" attr.name="NodeType" attr.type="int" />
  <!-- Network-specific attribute definitions for element <node> -->
  <key id="NetNumberN1" for="node" attr.name="NetNumberN1" attr.type="int" />
  <key id="NetworkNameN1" for="node" attr.name="NetworkNameN1" attr.type="string" />
  <key id="NodeIDN1" for="node" attr.name="NodeIDN1" attr.type="int" />
  <key id="NodeDCFNameN1" for="node" attr.name="NodeDCFNameN1" attr.type="string" />
  <key id="SupplyDomainN1" for="node" attr.name="SupplyDomainN1" attr.type="string" />
  <key id="SupplyPointN1" for="node" attr.name="SupplyPointN1" attr.type="int" />

  <!-- Attribute definitions for element <Edge> -->
  <key id="NetNumber" for="edge" attr.name="NetNumber" attr.type="int" />
  <key id="CableName" for="edge" attr.name="CableName" attr.type="string" />
  <key id="Length" for="edge" attr.name="Length" attr.type="int" />
  <key id="LineType" for="edge" attr.name="LineType" attr.type="string" />
  <key id="LineParam" for="edge" attr.name="LineParam" attr.type="string" />

  <!-- System description graph (single network) -->
  <graph id="DemoSystem" edgedefault="undirected">
    <data key="EDSBaseName">EDS</data>
    <data key="Background">lin_back.bmp</data>
    <node id="N001">
      <data key="NodeName">DemoNode_A</data>
      <data key="NodeType">device</data>
      <data key="NodeFig">icplc.bmp</data>
      <data key="X">20</data>
      <data key="Y">20</data>
      <data key="NumOfNets">1</data>
      <data key="NetNumberN1">1</data>
      <data key="NetworkNameN1">DefaultNet</data>
      <data key="NodeIDN1">2</data>
      <data key="NodeDCFNameN1">demo_plc.dcf</data>
      <data key="SupplyDomainN1">Primary</data>
      <data key="SupplyPointN1">1</data>
    </node>
    <node id="N002">
      <data key="NodeName">DemoNode_B</data>
      <data key="NodeType">device</data>
      <data key="NodeFig">testnode.bmp</data>
      <data key="X">120</data>
      <data key="Y">20</data>
      <data key="NumOfNets">1</data>
      <data key="NetNumberN1">1</data>
      <data key="NetworkNameN1">DefaultNet</data>
      <data key="NodeIDN1">3</data>
      <data key="NodeDCFNameN1">demodeva.dcf</data>
      <data key="SupplyDomainN1">Primary</data>
      <data key="SupplyPointN1">0</data>
    </node>
    <node id="N003">
      <data key="NodeName">DemoNode_C</data>
      <data key="NodeType">device</data>
      <data key="NodeFig">testnode.bmp</data>
      <data key="X">220</data>
      <data key="Y">20</data>
      <data key="NumOfNets">1</data>
      <data key="NetNumberN1">1</data>
      <data key="NetworkNameN1">DefaultNet</data>
      <data key="NodeIDN1">4</data>
      <data key="NodeDCFNameN1">demodevb.dcf</data>
      <data key="SupplyDomainN1">Primary</data>
      <data key="SupplyPointN1">0</data>
    </node>

  <!-- Network connections -->
  <edge id="E001" source="N001" target="N002">
    <data key="NetNumber">1</data>
    <data key="CableName">W5001</data>
    <data key="Length">750</data>
    <data key="LineType">line</data>
    <data key="LineParams"></data>
  </edge>
  <edge id="E002" source="N002" target="N003">
    <data key="NetNumber">1</data>
    <data key="CableName">W5002</data>
    <data key="Length">500</data>
    <data key="LineType">line</data>
    <data key="LineParams"></data>
  </edge>
  </graph>

<!-- GraphML footer -->
</graphml>

Figure 3: GraphML description of single linear network

sglinear.gif
Figure 4: Example visualization of single linear network (Gephi)

5.3 Single star-topology network

An example of a star-topology network is presented in Figure 5. A switch – or a hub as well – just acts as a centre point of the physical network, without isolating the branches logically. There is a DCF-file assinged to switch, because it is assumed to be a managed one.
<!-- GraphML header -->
<?xml version="1.0" encoding="UTF-8"?>
<graphml xmlns="http://graphml.graphdrawing.org/xmlns"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://graphml.graphdrawing.org/xmlns
  http://graphml.graphdrawing.org/xmlns/1.0/graphml.xsd">

  <!-- Attribute definitions for element <graph> -->
  <key id="EDSBaseName" for="graph" attr.name="EDSBaseName" attr.type="string" />
  <key id="Background" for="graph" attr.name="Background" attr.type="string" />

  <!-- Global attribute definitions for element <node> -->
  <key id="NodeName" for="node" attr.name="NodeName" attr.type="string" />
  <key id="NodeType" for="node" attr.name="NodeType" attr.type="string" />
  <key id="NodeFig" for="node" attr.name="NodeFig" attr.type="string" />
  <key id="X" for="node" attr.name="X" attr.type="int" />
  <key id="Y" for="node" attr.name="Y" attr.type="int" />
  <key id="NumOfNets" for="node" attr.name="NodeType" attr.type="int" />
  <!-- Network-specific attribute definitions for element <node> -->
  <key id="NetNumberN1" for="node" attr.name="NetNumberN1" attr.type="int" />
  <key id="NetworkNameN1" for="node" attr.name="NetworkNameN1" attr.type="string" />
  <key id="NodeIDN1" for="node" attr.name="NodeIDN1" attr.type="int" />
  <key id="NodeDCFNameN1" for="node" attr.name="NodeDCFNameN1" attr.type="string" />
  <key id="SupplyDomainN1" for="node" attr.name="SupplyDomainN1" attr.type="string" />
  <key id="SupplyPointN1" for="node" attr.name="SupplyPointN1" attr.type="int" />

  <!-- Attribute definitions for element <Edge> -->
  <key id="NetNumber" for="edge" attr.name="NetNumber" attr.type="int" />
  <key id="CableName" for="edge" attr.name="CableName" attr.type="string" />
  <key id="Length" for="edge" attr.name="Length" attr.type="int" />
  <key id="LineType" for="edge" attr.name="LineType" attr.type="string" />
  <key id="LineParam" for="edge" attr.name="LineParam" attr.type="string" />

  <!-- System description graph (single network) -->
  <graph id="DemoSystem" edgedefault="undirected">
    <data key="EDSBaseName">EDS</data>
    <data key="Background">lin_back.bmp</data>
    <node id="N001">
      <data key="NodeName">DemoNode_A</data>
      <data key="NodeType">device</data>
      <data key="NodeFig">icplc.bmp</data>
      <data key="X">20</data>
      <data key="Y">20</data>
      <data key="NumOfNets">1</data>
      <data key="NetNumberN1">1</data>
      <data key="NetworkNameN1">DefaultNet</data>
      <data key="NodeIDN1">2</data>
      <data key="NodeDCFNameN1">demo_plc.dcf</data>
      <data key="SupplyDomainN1">Primary</data>
      <data key="SupplyPointN1">0</data>
    </node>
    <node id="N002">
      <data key="NodeName">DemoNode_B</data>
      <data key="NodeType">device</data>
      <data key="NodeFig">testnode.bmp</data>
      <data key="X">120</data>
      <data key="Y">20</data>
      <data key="NumOfNets">1</data>
      <data key="NetNumberN1">1</data>
      <data key="NetworkNameN1">DefaultNet</data>
      <data key="NodeIDN1">3</data>
      <data key="NodeDCFNameN1">demodeva.dcf</data>
      <data key="SupplyDomainN1">Primary</data>
      <data key="SupplyPointN1">0</data>
    </node>
    <node id="N003">
      <data key="NodeName">DemoNode_C</data>
      <data key="NodeType">device</data>
      <data key="NodeFig">testnode.bmp</data>
      <data key="X">220</data>
      <data key="Y">20</data>
      <data key="NumOfNets">1</data>
      <data key="NetNumberN1">1</data>
      <data key="NetworkNameN1">DefaultNet</data>
      <data key="NodeIDN1">4</data>
      <data key="NodeDCFNameN1">demodevb.dcf</data>
      <data key="SupplyDomainN1">Primary</data>
      <data key="SupplyPointN1">0</data>
    </node>
    <node id="N004">
      <data key="NodeName">Switch</data>
      <data key="NodeType">switch</data>
      <data key="NodeFig">cansw.bmp</data>
      <data key="X">120</data>
      <data key="Y">120</data>
      <data key="NumOfNets">1</data>
      <data key="NetNumberN1">1</data>
      <data key="NetworkNameN1">DefaultNet</data>
      <data key="NodeIDN1">126</data>
      <data key="NodeDCFNameN1">demo_csw.dcf</data>
      <data key="SupplyDomainN1">Primary</data>
      <data key="SupplyPointN1">1</data>
    </node>

  <!-- Network connections -->
  <edge id="E001" source="N004" target="N001">
    <data key="NetNumber">1</data>
    <data key="CableName">W5001</data>
    <data key="Length">750</data>
    <data key="LineType">line</data>
    <data key="LineParams"></data>
  </edge>
  <edge id="E002" source="N004" target="N002">
    <data key="NetNumber">1</data>
    <data key="CableName">W5002</data>
    <data key="Length">500</data>
    <data key="LineType">line</data>
    <data key="LineParams"></data>
  </edge>
  <edge id="E003" source="N004" target="N003">
    <data key="NetNumber">1</data>
    <data key="CableName">W5003</data>
    <data key="Length">750</data>
    <data key="LineType">line</data>
    <data key="LineParams"></data>
  </edge>
  </graph>

<!-- GraphML footer -->
</graphml>

Figure 5: GraphML description of single star network

sgstarnt.gif
Figure 6: Example visualization of single star network (Gephi)

5.4 Dual linear network system

A dual network example is presented in Figure 7. For simplicity there are only two logical networks. Device_A acts as a gateway and it has logically isolated network ports.
<!-- GraphML header -->
<?xml version="1.0" encoding="UTF-8"?>
<graphml xmlns="http://graphml.graphdrawing.org/xmlns"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://graphml.graphdrawing.org/xmlns
  http://graphml.graphdrawing.org/xmlns/1.0/graphml.xsd">

  <!-- Attribute definitions for element <graph> -->
  <key id="EDSBaseName" for="graph" attr.name="EDSBaseName" attr.type="string" />
  <key id="Background" for="graph" attr.name="Background" attr.type="string" />

  <!-- Global attribute definitions for element <node> -->
  <key id="NodeName" for="node" attr.name="NodeName" attr.type="string" />
  <key id="NodeType" for="node" attr.name="NodeType" attr.type="string" />
  <key id="NodeFig" for="node" attr.name="NodeFig" attr.type="string" />
  <key id="X" for="node" attr.name="X" attr.type="int" />
  <key id="Y" for="node" attr.name="Y" attr.type="int" />
  <key id="NumOfNets" for="node" attr.name="NodeType" attr.type="int" />
  <!-- Network-specific attribute definitions for element <node> -->
  <key id="NetNumberN1" for="node" attr.name="NetNumberN1" attr.type="int" />
  <key id="NetworkNameN1" for="node" attr.name="NetworkNameN1" attr.type="string" />
  <key id="NodeIDN1" for="node" attr.name="NodeIDN1" attr.type="int" />
  <key id="NodeDCFNameN1" for="node" attr.name="NodeDCFNameN1" attr.type="string" />
  <key id="SupplyDomainN1" for="node" attr.name="SupplyDomainN1" attr.type="string" />
  <key id="SupplyPointN1" for="node" attr.name="SupplyPointN1" attr.type="int" />
  <key id="NetNumberN2" for="node" attr.name="NetNumberN2" attr.type="int" />
  <key id="NetworkNameN2" for="node" attr.name="NetworkNameN2" attr.type="string" />
  <key id="NodeIDN2" for="node" attr.name="NodeIDN2" attr.type="int" />
  <key id="NodeDCFNameN2" for="node" attr.name="NodeDCFNameN2" attr.type="string" />
  <key id="SupplyDomainN2" for="node" attr.name="SupplyDomainN2" attr.type="string" />
  <key id="SupplyPointN2" for="node" attr.name="SupplyPointN2" attr.type="int" />

  <!-- Attribute definitions for element <Edge> -->
  <key id="NetNumber" for="edge" attr.name="NetNumber" attr.type="int" />
  <key id="CableName" for="edge" attr.name="CableName" attr.type="string" />
  <key id="Length" for="edge" attr.name="Length" attr.type="int" />
  <key id="LineType" for="edge" attr.name="LineType" attr.type="string" />
  <key id="LineParam" for="edge" attr.name="LineParam" attr.type="string" />

  <!-- System description graph (single network) -->
  <graph id="DemoSystem" edgedefault="undirected">
    <data key="EDSBaseName">EDS</data>
    <data key="Background">lin_back.bmp</data>
    <node id="N001">
      <data key="NodeName">DemoNode_A</data>
      <data key="NodeType">device</data>
      <data key="NodeFig">icplc.bmp</data>
      <data key="X">120</data>
      <data key="Y">40</data>
      <data key="NumOfNets">2</data>
      <data key="NetNumberN1">1</data>
      <data key="NetworkNameN1">DefaultNet</data>
      <data key="NodeIDN1">2</data>
      <data key="NodeDCFNameN1">demoplc1.dcf</data>
      <data key="SupplyDomainN1">Primary</data>
      <data key="SupplyPointN1">1</data>
      <data key="NetNumberN2">7</data>
      <data key="NetworkNameN2">SubNet</data>
      <data key="NodeIDN2">12</data>
      <data key="NodeDCFNameN2">demoplc2.dcf</data>
      <data key="SupplyDomainN2">Secondary</data>
      <data key="SupplyPointN2">1</data>
    </node>
    <node id="N002">
      <data key="NodeName">DemoNode_B</data>
      <data key="NodeType">device</data>
      <data key="NodeFig">testnode.bmp</data>
      <data key="X">20</data>
      <data key="Y">20</data>
      <data key="NumOfNets">1</data>
      <data key="NetNumberN1">1</data>
      <data key="NetworkNameN1">DefaultNet</data>
      <data key="NodeIDN1">3</data>
      <data key="NodeDCFNameN1">demodeva.dcf</data>
      <data key="SupplyDomainN1">Primary</data>
      <data key="SupplyPointN1">0</data>
    </node>
    <node id="N003">
      <data key="NodeName">DemoNode_C</data>
      <data key="NodeType">device</data>
      <data key="NodeFig">testnode.bmp</data>
      <data key="X">220</data>
      <data key="Y">20</data>
      <data key="NumOfNets">1</data>
      <data key="NetNumberN1">7</data>
      <data key="NetworkNameN1">SubNet</data>
      <data key="NodeIDN1">4</data>
      <data key="NodeDCFNameN1">demodevb.dcf</data>
      <data key="SupplyDomainN1">Secondary</data>
      <data key="SupplyPointN1">0</data>
    </node>

  <!-- Network connections -->
  <edge id="E001" source="N001" target="N002">
    <data key="NetNumber">1</data>
    <data key="CableName">W5001</data>
    <data key="Length">500</data>
    <data key="LineType">line</data>
    <data key="LineParams"></data>
  </edge>
  <edge id="E002" source="N001" target="N003">
    <data key="NetNumber">7</data>
    <data key="CableName">W5002</data>
    <data key="Length">500</data>
    <data key="LineType">line</data>
    <data key="LineParams"></data>
  </edge>
  </graph>

<!-- GraphML footer -->
</graphml>

Figure 7: GraphML description of dual linear network system

duallinn.gif
Figure 8: Example visualization of dual linear network system (Gephi)

6. Cross reference with nodelist.cpj and DCF

Cross-reference between nodelist.cpj and GraphML node list entries is collected into Table 4. It shall be emphasized, that connection between logical network of a node and network connection edge is made with NetNumberNi (node) and NetNumber (edge). DCF-column indicates the attributes, which shall have same values in both node list and DCF- or XDC-file.

Table 5: CPJ to GraphML cross-reference
CPJ field GraphML field DCF
(XDC)
Element Attribute
EDSBaseName <graph> EDSBaseName -
- Background -
Nodes - 1 - 1 -
NodeXName <node> NodeName
NodeIDNi 2
X
NodeXPresent X
- NodeFig -
- X -
- Y -
- NumOfNets -
- SupplyDomainNi -
- SupplyPointNi -
- NetNumberNi X
NetName NetworkNameNi X
NodeXDCFName NodeDCFNameNi X 3
- <edge> NetNumber X
- CableName -
- Length -
- EdgeLineType -
- EdgeLineParams -
1 Not needed in GraphML representation
2 For one network only
3 Filename entry in [FileInfo] section of the DCF-file

Topic attachments
I Attachment Action Size Date Who Comment
duallinn.gifgif duallinn.gif manage 15.8 K 13 Dec 2011 - 13:38 JaakkoSalonen  
sglinear.gifgif sglinear.gif manage 16.3 K 13 Dec 2011 - 13:38 JaakkoSalonen  
sgstarnt.gifgif sgstarnt.gif manage 22.3 K 13 Dec 2011 - 13:38 JaakkoSalonen  
Print version |  PDF  | History: r1 | 
Topic revision: r1 - 13 Dec 2011 - 13:41:04 - JaakkoSalonen
 

TUTWiki

Copyright © by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding TUTWiki? Send feedback