The MQTT protocol is rapidly being adopted as a reliable, efficient protocol in modern industrial data collection applications. MQTT uses a variety of techniques to provide highly efficient use of bandwidth to collect data from a wide range of sources and then make that data available to interested subscribers. Cirrus Link Solutions provides various modules for Inductive Automation Ignition enabling applications to take advantage of this protocol for building IIoT and SCADA applications.
Message Queuing Telemetry Transport (MQTT) is a lightweight publish/subscribe messaging protocol on TCP/IP that is designed for machine-to-machine communication in low bandwidth environments. The MQTT architecture uses brokers as centralized information hubs to store data and facilitate information flow between clients.
Clients can be publishers and/or subscribers. Publishers provide information to the broker, and subscribers receive information from the broker. Using this architecture, multiple devices throughout the enterprise can contribute information to the central broker, and then subscribers can receive only the information relevant to them via subscription. This is great for remote monitoring of enterprise systems that need to obtain information from various devices.
Cirrus Link provides various modules for Ignition that allow it to act as an MQTT Client (as a publisher and/or a subscriber), and as an MQTT Broker. The Cirrus Link MQTT modules are the MQTT Transmission, MQTT Distributor, and MQTT Engine.
MQTT Transmission Module
The MQTT Transmission module allows Ignition to act as a publisher and allows for tags in a certain location to be published on tag change to a receiving broker. In addition to auto-publishing tags on value change, one can manually trigger publishes of data payloads with desired quality of state (QoS) level on a desired MQTT Topic to a desired server via the following scripting function:
system.cirruslink.transmission.publish(mqttServerName, topic, payload, qos, retained)
Ignition MQTT Edge devices can be set up in the field to publish to an MQTT Distributor in Ignition and serve a similar function. These are useful for establishing an enterprise-wide monitoring system based on the MQTT protocol.
MQTT Distributor Module
The MQTT Distributor allows Ignition to act as an MQTT Broker/Server, allowing publishing to and from Ignition from any connectable MQTT Clients, whether they are other installations of Ignition or external clients. For extremely large enterprise applications, Cirrus Link's Chariot MQTT Server sits external to Ignition as a functional replacement for the MQTT Distributor module. This will allow the MQTT Transmission and Engine modules to connect to an external server.
MQTT Engine Module
The MQTT Engine module allows Ignition to act as a subscriber, allowing one to subscribe to any incoming payloads depending on the desired topic. The payloads can appear in the form of tags with a tag path determined from the MQTT Topic Name and will only appear if subscribed to via topic path filtering, which can be set up in the gateway. As such, it is entirely possible to send all tags as payloads from several Ignition systems acting as clients through a broker to a single central subscriber, which will convert the payload back into a tag. To use these incoming tags, one can choose to expose tag providers in the gateway, allowing one to treat incoming tags on the engine as OPC tags.
For those familiar with Ignition programming, the following sample code creates manual MQTT publishes in Ignition via scripting simulated data.
The Cirrus Link MQTT modules are an excellent choice for MQTT integration with Ignition to send data bidirectionally to and from Ignition and external brokers and clients. In addition, they are extremely good choices for designing an enterprise-wide system with central monitoring due to the lightweight nature of MQTT and the ease of communication.
Read more Ignition application use cases and programming tips on our partner page.
MQTT Architecture diagram credit to Cirrus Link Solutions.