Gw XML setup: Difference between revisions

From Phobos Wiki
Jump to navigation Jump to search
No edit summary
Line 122: Line 122:


== Element: Port ==
== Element: Port ==
<Port>
        <Buffer id="inBuffer"></Buffer>
        <Buffer id="outBuffer"></Buffer>
        <IoBuffer in="inBuffer" out="outBuffer" />
</Port>
=== Serial port ===
=== Serial port ===
  <Port class="SerialPortSetup">
  <Port class="SerialPortSetup">

Revision as of 12:10, 30 June 2011

Element: Setup

The XML setup starts with the tag Setup. The entire setup is contained in this element.

All id attributes must be unique!

This element contains:

  • Element: Device
    • At least one element of this type.
  • Attribute: device
    • If more than one Device element available. This attribute specifies the id of the Device to use as current setup.
<Setup device="Telem-Gw6-1">
	<Device id="Telem-Gw6-1" />
	<Device id="Gw1" />
	<Device id="Gw2" />
</Setup>

Element: Device

This element contains setup for a specific device. This might be Gw itself or some substation device or SCADA device.

This element contains:

Child elements of Device when used as GW device

<Device id="Telem-Gw6-1">
	<Channel />
	<Interfaces />
</Device>

Child elements of Device when used as the device we're connecting to.

<Device id="DI-24T-1">
	<Protocol />
	<Objects />
</Device>

Element: Channel

This element contains:

<Channel id="DI-24T-1">
	<Port />
	<Device />
	<Objects />
</Channel>

Element: Protocol

<Protocol comment="protocol8" id="prot_8_0">
	<Address />
	<CommunicationDelay unit="millisecond">0</CommunicationDelay>
	<PollingTimeout unit="millisecond">500</PollingTimeout>
	<TimeSync />
	<TimeoutRemoveCount>5</TimeoutRemoveCount>
	<TimeoutRemoveTime unit="second">20</TimeoutRemoveTime>
	<ReplaceTime>false</ReplaceTime>
	<GeneralInterrogationForwarding>false</GeneralInterrogationForwarding>
	<Type SubVersion="0" isMaster="false">IEC101UnBalanced</Type>
</Protocol>

Element: TimeSync

Timesync interval and correction setup

<TimeSync isEnabled="true">
	<Interval unit="second">30</Interval>
	<Correction />
</TimeSync>

Element: Correction

Possible timesync correction types:

  • Absolute
    • Timesync message shall always be modified by this amount.
  • ConnectionSpeed
    • Baudrate based(only when using serial port)
<Correction>
	<Absolute enabled="true" unit="millisecond">0</Absolute>
	<ConnectionSpeed enabled="true"/>
</Correction>

Element: Address

This element can refer to protocol address or some specific object address.

Address of protocol

This elements contents depend on the protocol selected

Iec-10x

<Address>
	<LinkAddress>1</LinkAddress>
	<LinkAddressLength>1</LinkAddressLength>
	<AsduAddress>1</AsduAddress>
	<AsduAddressLength>2</AsduAddressLength>
	<ObjectAddressLength>2</ObjectAddressLength>
</Address>

MODBUS

Value: integer

<Address>2</Address>

IEC62056-21

Value: string

Can be empty if only one device on channel.

<Address>addr123</Address>

Address of object

Iec-10x

Value: integer

<Address index="0">10</Address>


IEC61580/IEC62056-21

Value: string

<Address>5.3.5</Address>

Other

Other protocols might have additional fields.

Element: Port

<Port>
       <Buffer id="inBuffer"></Buffer>
       <Buffer id="outBuffer"></Buffer>
       <IoBuffer in="inBuffer" out="outBuffer" />
</Port>

Serial port

<Port class="SerialPortSetup">
	<BaudRate>9600</BaudRate>
	<DataBits>8</DataBits>
	<StopBits>1</StopBits>
	<Parity>none</Parity>
	<FlowControl>none</FlowControl>
</Port>

TCP/IP server

<Port class="TcpIpServerSetup">
	<PortNumber>80</PortNumber>
	<ClientIpMask>0.0.0.0</ClientIpMask>
	<Interface>eth0</Interface>
</Port>

TCP/IP client

<Port class="TcpIpClientSetup" name="16">
	<PortNumber>502</PortNumber>
	<IpAddress>10.0.0.89</IpAddress>
	<Interface>eth0</Interface>
</Port>

Virtual port

They are ports 3-5 on GW6.

<Port class="VirtualPortSetup">
	<Port class="SerialPortSetup">
	      <BaudRate>9600</BaudRate>
	      <DataBits>8</DataBits>
	      <StopBits>1</StopBits>
	      <Parity>none</Parity>
	      <FlowControl>none</FlowControl>
	</Port>
</Port>

Element: Objects

Element: Status

Master protocol has (connection)status DI object.

Has child Object element.

Element: Object

Depending on protocol the object belongs to (master/slave), has different child elements.

Possible child elements:

Attribute: type

Defines object type.

Possible values:

  • DI
  • AI
  • CN
  • DO
  • AO


Element: MxValue

Defines the object for current/latest value.

Child elements define default value, flags and time tag.

<MxValue id="DI_6_value">
	<Value>0</Value>
	<BitMask>
		<Bit>Invalid</Bit>
		<Bit>NotTopical</Bit>
	</BitMask>
</MxValue>


Element: Filter

Defines what is going to happen to the incoming measured value.

Filters can be daisy chained. To achieve different outcomes.

When an event is received, it is sent to it's filter. After the filter does what it's supposed to do, it will pass the event to the Next Filter

<Filter class="Change">
	<Filter class="Proxy" />
</Filter>
AddToBuffer

AddToBuffer may have more than one Target.

Target is a Buffer object.

<Filter class="AddToBuffer">
	<Target ref="DI_0_7_buf"/>
	<Target ref="DI_1_7_buf"/>
	<Target ref="DI_2_7_buf"/>
	<Target ref="DI_3_7_buf"/>
	<Target ref="DI_4_7_buf"/>
</Filter>
Assert

Passes event to the next filter only if specified target(MxValue) == false.

<Filter class="Assert">
	<Target ref="DI_7_value"/>
</Filter>
Change

Detects change in Digital measurments value and status bits.

Deadband
Fallback

Falls back to specified value.

Inversion

Inverts the passed digital value.

Proxy

Proxy may have more than one next Filter.

<Filter class="Proxy">
	<Filter class="AddToBuffer" />
	<Filter class="AddToBuffer" />
	<Filter class="Fallback" />
</Filter>
CsvLogger
UpdateValue

Target is a MxValue object.

<Filter class="UpdateValue">
	<Target ref="DI_7_value"/>
</Filter>

Element: Buffer

Defines a buffer object, with depth.

<Buffer id="DI_8_0_buf">
	<Depth>10</Depth>
</Buffer>

Element: Interfaces

Network setup

Has at least one Interface element.

<Interface name="eth0">
	<IpAddress>192.168.0.111</IpAddress>
	<Netmask>255.255.255.0</Netmask>
	<Gateway>192.168.0.1</Gateway>
</Interface>

VLAN

Example with required elements.

<Vlan interface="eth0">
    <VlanId>10</VlanId>
    <VlanIngressQos>4</VlanIngressQos>
    <VlanEgressQos>4</VlanEgressQos>
    <IpIngressQos>0</IpIngressQos>
    <IpEgressQos>0</IpEgressQos>
</Vlan>

Example with additional elements from Interface

<Vlan interface="eth0">
    <VlanId>131</VlanId>
    <VlanIngressQos>4</VlanIngressQos>
    <VlanEgressQos>4</VlanEgressQos>
    <IpIngressQos>0</IpIngressQos>
    <IpEgressQos>0</IpEgressQos>
    <IpAddress>172.18.0.11</IpAddress>
    <Netmask>255.255.255.0</Netmask>
    <Gateway>172.18.0.254</Gateway>
</Vlan>