The core component of the SparkplugB Library will be the IEC “Google Protobufs” encoder/parser.
How do we solve this issue?
Should we include an external C library?
Personally I have no experience with that but I am willing to learn it ;-)
Should we try to translate an existing version into A pure IEC solution?
GO, C, C#, Python and many more are available, but no IEC61131-3..
Can we think of another way of implementing this? Ideas are welcome!
This ticket is therefore a placeholder for Milestone 1.0.
It is neccesary for the following;
Sparkplug™ B MQTT Payload Definition
The goal of the Sparkplug™ is to provide a specification that both OEM device manufactures and application
developers can use to create rich and interoperable SCADA/IIoT solutions using MQTT as a base messaging
technology. In Sparkplug™ B message payload definition, the goal was to create a simple and straightforward
binary message encoding that could be used primarily for legacy register based process variables (Modbus
register value for example).
The Sparkplug™ B MQTT payload specification has come about based on the feedback from many system
integrators and end user customers who wanted to be able to natively support a much richer data model within
the MQTT infrastructures that they were designing and deploying. Using the feedback from the user community
Sparkplug™ B provides support for:
• Complex data types using templates.
• Richer metrics with the ability to add property metadata for each metric.
• Metric alias support to maintain rich metric naming while keeping bandwidth usage to a minimum.
• Historical data.
• File data.
Sparkplug™ B definition creates a bandwidth efficient data transport for real time device data. For WAN based
SCADA/IIoT infrastructures this equates to lower latency data updates while minimizing the amount of traffic and
therefore cellular and/or VSAT bandwidth required. In situations where bandwidth savings is not the primary
concern, the efficient use enables higher throughput of more and interesting data eliminating sensor data that
have been left stranded in the field. It is also ideal for LAN based SCADA infrastructures equating to higher
throughput of real time data to consumer applications without requiring extreme networking topologies and/or
There are many data encoding technologies available that can all be used in conjunction with MQTT. Sparkplug™
B selected an existing, open, and highly available encoding scheme that efficiently encodes register based process
variables. The encoding technology selected for Sparkplug™ B is Google Protocol Buffers also referred to as
“Protocol Buffers are a way of encoding structured data in an efficient yet extensible format.”
Google Protocol Buffers, sometimes referred to as “Google Protobufs”, provide the efficiency of packed binary
data encoding while providing the structure required to make it easy to create, transmit, and parse register based
process variables using a standard set of tools while enabling emerging IIoT requirements around richer metadata.
Google Protocol Buffers development tools are available for: