Skip to end of metadata
Go to start of metadata

Abstract

This page describes how Cloud Injector Tag Agent configurations interact with Ignition tag trees to push messages and tags to a Cloud service or IoTHub.  It explains how tags get identified and goes over some example configurations to show how the system will behave in different scenarios.

Sparkplug Overview

Like the MQTT Transmission Transmitter, the Cloud Injector Tag Agent is designed to pick up tags in Ignition or Ignition Edge and push those tags, parts of their configuration, and tag change events to a Cloud service.  Which tags are pushed to the Cloud is based on a combination of an Agents configuration as well as the arrangement of tags in the Ignition tag tree.

(Are these paragraphs below relevant to the Tag Agent ?   Are they using the proper verbs and nouns ?)

It is important to note that the configuration of the tag agent in conjunction with the tag tree determines what MQTT topics data is published on. The MQTT topics are essentially the 'addresses' of the different components in the distributed system. In the topics, per the Sparkplug specification, there are three important identifiers to note. These are shown below.

These identifiers then become components of the MQTT topics. There is also a 'verb' in Sparkplug messages which denotes whether the message is a birth certificate, death certificate, data message, command message, etc. Sparkplug topics are of the following form using all of these different parameters.

  • spBv1.0/GROUP_ID/VERB/EDGE_NODE_ID/DEVICE_ID


It is also important to note that the combination of any GROUP_ID and EDGE_NODE_ID must be unique within the distributed system. Because these are used as 'addresses' in the system you should never have two that conflict with each other. It is a bit like having two houses on the same street (GROUP_ID) with the same postal address (EDGE_NODE_ID).  It isn't possible for other MQTT clients in the system to tell where messages are coming from and when sending messages to them they will both receive the messages. This is why the combination of these two identifiers must be unique. For example, you can have two or more Edge Nodes with the same GROUP_ID as long as each EDGE_NODE_ID is unique.

Tag Agents Sparkplug Settings and Tag Trees

  • Group ID
    • An ID representing a logical grouping of MQTT Edge Of Network (EoN) Nodes and Devices into the infrastructure.  This can be a region, a facility name, or any meaningful grouping of Edge Nodes within your application.
  • Edge Node ID
    • An ID that uniquely identifies the MQTT Edge Of Network (EoN) Node within the infrastructure.  This is often the name of the system running Ignition with MQTT Transmission.
  • Device ID
    • An optional ID that uniquely identifies a Device within the infrastructure.  This can be a PLC or logical grouping of tags the represent a physical or logical device connected to Ignition.

The Sparkplug settings are optional and allow for an additional customization of how the Tag Agent scans and discovers tag within the specified Tag Path.  Here is a brief description of how the Agent scans/discovers folders based on the different combinations of potential Sparkplug Settings.

  • If all three IDs are left blank the Agent will assume the following folder structures follow the Tag Path:
    • <groupFolder>/<edgeNodeFolder>/<deviceFolder>/<tags>
    • <groupFolder>/<edgeNodeFolder>/<tags>
  • If only the Group ID is specified the Agent will assume the following folder structure follows the Tag Path:
    • <edgeNodeFolder>/<deviceFolder>/<tags>
    • <edgeNodeFolder>/<tags>
  • If the Group ID and the Edge Node ID are specified the Agent will assume the following folder structure follows the Tag Path:
    • <deviceFolder>/<tags>
    • <tags>
  • If the Group ID, Edge Node ID, and the Device ID are specified the Agent will assume the following folder structure follows the Tag Path:
    • <tags>

As you can see, the Sparkplug settings can be used to either hard-code these IDs, or leave them blank so that the Agent will scan and discover them based on the Ignition tag tree layout.

Additional Resources

  • No labels