Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Asterix Cat-10 is a network communication protocol used extensively in airports and air traffic control for passing track information. Asterix is a suite of message protocols that are used for communicating various air control information of which Cat-10 is specifically for communicating tracks.
The protocol is used over standard UDP connection. There are two documents that describe the protocol in detail. The primary document, Asterix Specifications Part 1 covers the protocol, including message structure and message framing for all Asterix messages. The second document, Asterix Specifications Part 7, covers details on forming and reading a CAT-10 message

OPC United Architechture (OPC UA) protocol is widely used industrial communications protocol. The Canary OPC Server plugin instantiates an OPC UA Server within Witness Canary, allowing 3rd party OPC UA clients to connect and obtain data from the Witness system. The OPC UA Specifications come in multiple parts and can be obtained from the OPC Foundation website.

Info

For customers and integrators intending to use Asterix Cat-10OPC Server plugin, the documents assume a reasonable working knowledge of UDP network communication. They are targeted at technical teams, typically with software development skills, who are integrating the output from Witness into external systems.

Technical Overview

When Witness processes targets into tracksalarms and health statuses, it passes all this information to Witness Canary. Witness Canary then converts this information into a suitable data format to send to external systems.Image Removed

Image Added
The data is transmitted as the events occur, leading to near-real time reporting.


Panel
borderColorsilver
borderWidth1
borderStylesolid

CAT-10 Specification:

  • Asterix Specification Part 1 (Overview)
  • Asterix Specification Part 7 (CAT-10)

    OPC UA Specification:


    Panel
    borderColorsilver
    borderWidth1
    borderStylesolid

    On this page:

    Table of Contents
    indent10px
    absoluteUrltrue


    The

    CAT-10

    OPC Server Plugin

    Witness Canary supports integration with many different types of external systems through the use of plugins. These are stand-alone software libraries which are dynamically loaded by Canary and contain code which knows how to convert the Witness data into the required format for the external system. Navtech Radar can easily develop bespoke plugins to interface with a specific type of equipment or application. The Asterix CAT-10 OPC Server plugin has been developed to provide integration to a the common OPC UA standard using in Airport system communicationused in highway systems.

    The Asterix OPC Server plugin file is entitled Witness.Plugin.CAT10OpcServer.dll and must be present in the Witness Plugin folder which is inside the main application folder.  The plugin depends on OPC Foundation's liberaries Opc.Ua.Core.dll and Opc.Ua.Server.dll which must be present in the same folder.

    Tip

    The plugin can be selected during setup and required files will automatically be installed in the correct location.

    Configuring the CAT-10 Plugin

    .

    OPC UA Client Prequisites

    The OPC UA client used to connect to the OPC server must login through a Username and Password channel. Other authentication methods are not supported.

    To facilitate secure connection, the client server connection requires a security certificate. You may choose to let the plugin generate its own security certificate for the communication or provide a custom certificate. Generated certificates are by default stored under ProgramData → Navtech\CertificateStore\ and must be installed as trusted by the OPC Client.

    Configuring the OPC Server Plugin

    When the plugin is installed and Canary starts, the plugin configuration settings are saved to the PluginConfiguration.xml file. This file is located in the Witness main application folder. To change the settings this file should be opened in a text editor, such as Notepad, however we would recommend an editor which is XML aware, such as Notepad++.

    Once the file is open, locate the CAT10 OpcServer section, as illustrated below:

    Code Block
    languagexml
    themeRDark
    titleExample of CAT-10 OpcServer Plugin Configuration
    <?xml version="1.0" encoding="utf-8"?>
    <Config>
      <Plugins>
        <CAT10><OpcServer>
          <PluginConfig>
            <ApplicationName>Tungsten.IntegrationPlugins.OPCServer</ApplicationName>
            <ApplicationUri>http://navtechradar.com/OpcServerPlugin</ApplicationUri>
              <TimerTick>500</TimerTick><BaseUri>opc.tcp://localhost:51210/WitnessOpcServer</BaseUri>
            <Carriageways>
              <Carriageway Id="2" Name="Carriageway 1">
                <Sections>
                  <Section RadarId="1" Id="28" Name="Section 11">
                    <Rules>
                      <Rule Id="1" Name="Reversing Rule" />
                      <Rule Id="2" Name="Speed Rule" />
                      <Rule Id="3" Name="Person Rule" />
                      <Rule Id="4" Name="ERA Stopped Vehicle Rule" />
                    </Rules>
                  </Section>
                  <Section RadarId="2" Id="29" Name="Section 12">
                    <Rules>
                      <Rule Id="1" Name="Reversing Rule" />
                      <Rule Id="2" Name="Speed Rule" />
                      <Rule Id="3" Name="Person Rule" />
                      <Rule Id="4" Name="ERA Stopped Vehicle Rule" />
                    </Rules>
                  <SystemIdentificationCode>1</SystemIdentificationCode></Section>
                  <Section RadarId="3" Id="30" Name="Section 13">
                    <Rules>
                      <Rule <UdpServer RemoteIPAddress="239.192.86.0" Enabled="True" Port="8600" />Id="1" Name="Reversing Rule" />
                      <Rule Id="2" Name="Speed Rule" />
                  <SendCAT10>True</SendCAT10>    <Rule Id="3" Name="Person Rule" />
                      <Rule Id="4" Name="ERA Stopped Vehicle Rule" <ListenCAT10>True</ListenCAT10>/>
                  <CAT10SourcePositions> 			<SourcePositions>
    				<Sic>23</Sic>
    				<Sac>0</Sac>
    				<X>10</X>
    				<Y>49</Y>
    				</SourcePositions>
    		</CAT10SourcePositions> </Rules>
                  </Section>
                </Sections>
              </Carriageway>
            </Carriageways>
            <NodeConfiguration>
              <DescriptionNode>Description</DescriptionNode>
              <RaisedNode>Raised</RaisedNode>
              <LocationXNode>LocationX</LocationXNode>
              <LocationYNode>LocationY</LocationYNode>
              <ActiveNode>Active</ActiveNode>
              <SensorHealth>LastHealth</SensorHealth>
              <SensorHealthTime>LastTime</SensorHealthTime>
              <LaneIdNode>Lane</LaneIdNode>
              <SectionIdNode>SectionId</SectionIdNode>
              <SectionCountNode>SectionCount</SectionCountNode>
              <CarriagewayCountNode>CarriagewayCount</CarriagewayCountNode>
              <RadarCountNode>RadarCount</RadarCountNode>
              <ManagementServerHealthNode>ManagementServerHealth</ManagementServerHealthNode>
              <TrackEngineHealthNode>TrackEngineHealth</TrackEngineHealthNode>
              <DatabaseHealthNode>DatabaseHealth</DatabaseHealthNode>
              <RadarIdNode>RadarId</RadarIdNode>
              <TrafficDataNode>TrafficData</TrafficDataNode>
              <AveSpeedNode>AverageSpeed</AveSpeedNode>
              <AveCountNode>AverageCount</AveCountNode>
              <HeartbeatNode>Heartbeat</HeartbeatNode>
              <CountClassify>CountClassify</CountClassify>
            </NodeConfiguration>
            <GenerateCertificate>False</GenerateCertificate>
            <ServerCertificateType>Directory</ServerCertificateType>
            <ServerCertificatePath>C:\ProgramData\Navtech\CertificateStore</ServerCertificatePath>
            <ServerCertificateName>NoCertificate</ServerCertificateName>
            <UserName>admin</UserName>
            <Password>12345</Password>
            <HeartbeatInterval>0<<HeartbeatInterval>5</HeartbeatInterval>
    		<BufferTracks>False</BufferTracks>
            <DisableTrafficData>False</DisableTrafficData>
          </PluginConfig>
        </CAT10>OpcServer>
      </Plugins>
    </Config>


    Info

    Once you have made changes to the plugin configuration file then you must restart the Canary application / service for the new settings to be applied. No other modules need to be restarted.

    The setting options are as follows:

    TimerTick

    Timer used to control sending status messages and cleaning up buffers in milliseconds. A CAT-10 status message is sent on this timer if Sending CAT10 is enabled.

    SystemIdentificationCode

    Unique number identifying the Witness system in an Asterix network. SIC Must be smaller or equal to 255. Witness cannot share a SIC with another system.

    UdpServer

    • Enabled - Should always be set to true
    • RemoteIPAddress - The IP address used for clients to access the UDP data. Only Multicast IPs (starting in range 224 to 239) are supported.
    • Port - The port used for the UDP communications.

    SendCAT10

    • True - Sends all confirmed tracks in Witness as CAT-10 messages to the UdpServer address.
    • False - Tracks are not sent out.

    ListenCAT10

    • True - Listens to CAT-10 messages on the udpserver address and port and inserts tracks detected as friendly tracks into Witness.
    • False - Does not listen to CAT-10 messages.

    One or both of ListenCAT10 or SendCAT10 should be true.

    CAT10SourcePositions

    Source positions are used to configure displacements of origins between systems.

    • List of displacement locations based on system SIC and SAC for other systems.
    • SIC: System Identification Code - uniquely identifies each systems within the airport.
    • SAC: should normally be 0 for other systems in the same airport.
    • X: System origin is located east from witness origin by X meters.
    • Y: System origin is located north from witness origin by Y meters.

    This does not need to be configured for systems who's origin coincides with Witness origin.

    Tip
    titleExamples

    Example 1: A multilateration detection system has it's origin set at the airport control tower. Witness is configured with origion the control tower as well.

    In this case, we do not need a SourcePosition record for the system.

    Example 2: A single detector also sends CAT-10 messages relative to its own location - 150 meters north and 200 meters west from the control tower. This detector is assigned SIC153.

    For this detector we will need a CAT10SourcePositions record of:

    			<SourcePositions>
    				<Sic>153</Sic>
    				<Sac>0</Sac>
    				<X>-200</X>
    				<Y>150</Y>
    			</SourcePositions>
     

    External System tracks should be within Witness radar coverage to appear in Sentinel.

    HeartbeatInterval

    • Period, in seconds, between each heartbeat being sent to every connected client. Default is 10 seconds.

    BufferTracks

    Buffer tracks to send in batches on TimerTicks

    ApplicationName

    • Application Name reported through the OPC protocol

    ApplicationUri

    • Application Uri reported through the OPC protocol

    BaseUri

    • Location where the OPC Server is hosted. This should be the actual Canary hosting machine name, localhost or the canary machine IP followed by an unused port and optionally location.

    Carriageways

    • This section indicates the carriageways, sections  and rules that we want to track in the OPC server.
      When a highway alarm is received, only an alarm matching a configured Carriageway, Section and Rule will be processed.

    Tip
    titleExamples

    A basic structure of the carriageways, indicating 1 carriageway with 1 section with 1 rule that we are interested in.

    Code Block
    languagexml
    themeRDark
    titleCarriageway setup
    <Carriageways>
      <Carriageway Id="3" Name="Carriageway 1">
    	<Sections>
    	  <Section RadarId="1" Id="36" Name="Section 1">
    		<Rules>
    		  <Rule Id="1" Name="Reversing Rule" />
    		</Rules>
    	  </Section>
    	</Sections>
      </Carriageway>
    </Carriageways>


    Attributes on Carriageways and Sections

    Image Added

    When configuring a carriageway for the plugin, the Carriageway and Section Id attribute should be the "ID" number of the desired carriageway or section and NOT the "Carriageway ID" or "Section ID" number.

    The name attribute will be used for the display name of the node in OPC. It is advised to use the Witness name for consistency.


    Attributes on Rules

    Image Added

    When configuring rules for the sections, the Id attribute should use the rule "ID".

    NodeConfiguration

    • Customize the name for each node. Each string must be different from the other string. It is recommended to stay with the defaults.
      To review the structure of the OPC nodes, please see the "Generating OPC Node Structure" section below.

    • Description: Name of the node for the alarm description
    • Raised: The last time the alarm was raised
    • LocationX: The X position of the Track causing this alarm is stored on this node if a track is available
    • LocationY: The Y position of the Track causing this alarm is stored on this node if a track is available
    • Active: Indicates if the alarm is active
    • SensorHealth: Last health from a radar or other sensor
    • SensorHealthTime: When the sensor health was last updated
    • LaneId: Lane where the last alarm was raised
    • SectionCount: Indicates the number of sections within a carriageway 
    • CarriagewayCount: Number of carriageways being tracked
    • RadarCount: Number of radars or sensors having their healths tracked
    • DatabaseHealth: Last health of the database (Vault) module
    • RadarId: Radar Id of the radar in Radar healths or section radar
    • TrafficData: Indicates that traffic data is available for this section
    • AveSpeed: Traffic data average speed
    • AveCount: Traffic data tracks count
    • HeartBeat: This is an increasing overall health indicator. This indicator resets to 0 after 32767

    GenerateCertificate

    • Defaults to True. This indicates that a server certificate will be generated if the specified one is not available. This is the recommended option.
    • If a custom pregenerated certificate is used, the OPC Server must be configured to match the certified application name and URI.

    ServerCertificateType

    • Windows - Default - tries to read the certificate from in Windows Certificate Store. Certificate path must be a valid windows certificate store path e.g. "CurrentUser\My" or "LocalMachine\TrustedPublisher"
    • Directory - This tries to read the certificate from the file storage. If the certificate does not exist it will attempt to create one if the Opc foundation redistributable is installed or else will fail to start up the plugin.

    ServerCertificatePath

    • Location to store the server certificate. This can be a file location e.g. "C:\OpcCertificate\" if using Directory certificate type or Certificate Store path e.g. "CurrentUser\My"

    ServerCertificateName

    • Name on the server certificate file. This name is used as both the issuer and the issued to.

    UserName

    • Username for the OPC login. The OPC UA client should be set up to always use this.

    Password

    • Password for OPC login. The OPC UA client should be set up to always use this.

    HeartbeatInterval

    • Interval, in seconds, at which the heartbeat counter on the OPC Server will count up while it is connected to the Witness system. This can be used to monitor the overall health of the OPC Server plugin.

    DisableTrafficData

    • Setting this to true will cause the plugin to ignore traffic data and will only output the more accurate Count Classify date

    Generating the OPC Node Structure

    To assist development or configuration of the OPC UA Client, the OPC node structure will be output to the local program data folder in csv format each time the plugin is started. As you add or remove radars or change plugin configuration, OPC Node structure will change.

    You should be able to find the output at: ProgramData → Navtech\OPCServer\OPCNodes.csv. The location of your ProgramData folder will depend on your Windows setup.

    Example output in table format:

    Each node is listed first with Display Name, DataType and namespace : relative browse name. Child nodes are indented relative to their parent.

    WitnessFolder1:Witness





    HeartbeatInt321:Heartbeat



    DatabaseHealthInt321:DatabaseHealth



    CarriagewayCountInt321:CarriagewayCount



    RadarCountInt321:RadarCount



    CarriageWaysFolder1:CarriageWays




    Carriageway 1Folder1:Carriageway1




    SectionCountInt321:SectionCount



    Section 1Folder1:Section1




    SectionIdInt321:SectionId




    RadarIdInt321:RadarId




    TrafficDataBoolean1:TrafficData




    AverageSpeedDouble1:AverageSpeed




    AverageCountInt321:AverageCount




    Reversing RuleFolder1:Rule1





    DescriptionString1:Description





    ActiveBoolean1:Active





    RaisedDateTime1:Raised





    LocationXDouble1:LocationX





    LocationYDouble1:LocationY





    LaneInt321:Lane




    Speed RuleFolder1:Rule2





    DescriptionString1:Description





    ActiveBoolean1:Active





    RaisedDateTime1:Raised





    LocationXDouble1:LocationX





    LocationYDouble1:LocationY





    LaneInt321:Lane



    Section 2Folder1:Section2




    SectionIdInt321:SectionId




    RadarIdInt321:RadarId




    TrafficDataBoolean1:TrafficData




    AverageSpeedDouble1:AverageSpeed




    AverageCountInt321:AverageCount




    Reversing RuleFolder1:Rule1





    DescriptionString1:Description





    ActiveBoolean1:Active





    RaisedDateTime1:Raised





    LocationXDouble1:LocationX





    LocationYDouble1:LocationY





    LaneInt321:Lane




    Speed RuleFolder1:Rule2





    DescriptionString1:Description





    ActiveBoolean1:Active





    RaisedDateTime1:Raised





    LocationXDouble1:LocationX





    LocationYDouble1:LocationY





    LaneInt321:Lane




    Person RuleFolder1:Rule3





    DescriptionString1:Description





    ActiveBoolean1:Active





    RaisedDateTime1:Raised





    LocationXDouble1:LocationX





    LocationYDouble1:LocationY





    LaneInt321:Lane

    SensorsFolder1:Sensors





    Radar 1Folder1:Sensor7083798e-329d-4eb6-a4bc-4dee3553faea



    LastHealthInt321:LastHealth



    LastTimeDateTime1:LastTime



    RadarIdInt321:RadarId



    Radar 2Folder1:Sensord8aec3b1-4f71-41c1-8d90-0bb0387340b0



    LastHealthInt321:LastHealth



    LastTimeDateTime1:LastTime



    RadarIdInt321:RadarId


    READMEString1:README


    Related information

    Filter by label (Content by label)
    showLabelsfalse
    showSpacefalse
    cqllabel = "asterixOPC"