V2020.1.56.3_ MQTT



Overview

As with all adapters, an existing https://unit040.atlassian.net/wiki/spaces/PUD/pages/280987237/Logic+Simulator#Overview is required.

Where to find the different Gateway Adapters.


Where to find

To find the MQTT adapter, go to the Inspector window of a https://unit040.atlassian.net/wiki/spaces/PUD/pages/280987237/Logic+Simulator#Overview component.
This https://unit040.atlassian.net/wiki/spaces/PUD/pages/280987237/Logic+Simulator#Overview can be added under Logic.


Feature overview

 

Only the settings between the lines refer to the MQTT Adapter.

Please check the documentation for the rest of the https://unit040.atlassian.net/wiki/spaces/PUD/pages/280987237/Logic+Simulator#Overview

Gateway settings

 

Gateway settings

 

Adapter Target

Select a different adapter, please see respective documentation for more information

Adapter Setting (MQTTServerSettings)

 

XmlFilePath

File path to the policy file

Warning : <Make sure to fill in a relative path to the Asset folder of the project and include .xml file extension>

ServerName

Is used as the an indicator in the XML policy file

IP Address

The address of the MQTT broker. This can be a be in IPv4 address or a hostname like localhost

Port

The port on which the MQTT broker is running,
the default port is 1883

use TLS

Should be turned on when the broker is using TLS authentication. (off by default)

Default port for MQTT over TLS is 8883, please check your broker for the correct port

UserName

Is passed to the server for authentication if the field is not empty (not used by default)

PassWord

Is passed to the server for authentication when the UserName field is not empty (not used by default)

QoS

(Quality Of Server) is an agreement between the broker and client that defines the guarantee of delivering a message:

0 : At most once => There is acknowledgement between broker and client other than regular TCP , fast, unreliable (packet loss))

1 : At least once => The sender buffers the value until a ‘PUBACK’ is returned by the broker. Message can be sent multiple times (, slower, reliable)

2 : Exactly once => The sender sends the message, the broker returns a ‘PUBREC’. The sender is returning a ‘PUBREL’ and the server again returns a ‘PUBCOMP’ command to finalize the sending process. (slow, very reliable)

See below for more detail.

Lifecycle settings

Not implemented for MQTT

QoS (Quality of Server) - Detailed agreements

QoS

known as

speed

reliability

remarks

QoS

known as

speed

reliability

remarks

0

fire & forget

fast

poor

Messages can get lost in unstable connections. Very suitable for wires local connection

1

single handshake

slower

good

No message is lost. Can lead to duplicate messages. but is much faster than QoS 2

2

double handshake

slowest

exact

If getting the message exactly once is more important than performance. Quite an overhead compared to the other 2 levels


How to use

Please see the https://unit040.atlassian.net/wiki/spaces/PUD/pages/280987237/Logic+Simulator#Overview documentation for further instructions on setting up your simulation.


Prerequisites for MQTT

MQTT can work with an online broker, but is more commonly used with a local broker. There are a lot of brokers available. An overview can be found at: https://en.wikipedia.org/wiki/Comparison_of_MQTT_implementations

ActiveMQ also has an MQTT broker when installed, but feel free to choose one to your liking.

For testing purposes we recommend using a client like i.e. MQTT.fx https://mqttfx.jensd.de/


Used Protocol

To communicate with the MQTT adapter in Prespective you need to apply the following protocol:

  • The structure for the message is:

<PLCADDRESS/<VALUE>

  • Topic to write is the address defined by the PLC address in the signal naming

  • Value is the value that is within the range of the specified type


Supported Types

  • BOOL

  • BYTE

  • SBYTE

  • WORD

  • DWORD

  • SHORT

  • USHORT

  • INT16

  • UINT16

  • INT32

  • UINT32

  • INT64

  • UINT64

  • REAL32

  • REAL64

  • BYTEARRAY

  • STRING

  • STRUCT

 


Naming Rules

Setting up the component works as like any other prelogic component. The thing you have to take into account is how the PLC Address Path Format (or implicit naming rule) is configured. The output of this Address is the topic to which the component is reading and/or writing.

WARNING : < Make sure both paths are unique >

Each defined input writes the value to the PLC address path topic.

Each defined output reads the value from the PLC address path topic.

The PLC path separator has to be '/'

< Spaces are allowed but not recommended >

A leading '/' is not recommended because it leads to an extra parent topic with id 0.

For an overview of all variables for signal naming, please go to the prelogic component page.