Author: Ralf Banning, June 2020, updated in November 2021

flecsimo uses the MQTT protocol for public cross-component communication, i.e. all control, status and operation data is send as an MQTT message. This document describes the general message (protocol) architecture. For details on the implementation see the info section at the end of the document. This documentation provides an overview on the architecture and protocol details of communication.

Communication architecture on component level

The flecsimo system use two types of communication:

  • a public, message and event driven channel, provided by mqtt
  • a "private" (local) data exchange based on shared databases

On each level of the Manufacturing Data Model, at least two components will be active: a controller and an agent. The controller is the interaction point of user or station driven events and interacts with the assigned database or publish messages to a mqqt channel, whereas an agent is a event-driven program (without direct user or station interaction), receiving events from mqtt messages and reacts by publishing new messages or changing the state of the assigned database. This is shown in the following diagram:


In summary, the main difference between controller and agent interaction and communication is:


controlleragent
Interaction with user(Plus)

(Minus)

Interaction with station(Plus)(Minus)
mqtt publish(Plus)(Plus)
mqtt subscribe

(Minus)

(Plus)
Communication via data base(Plus)(Plus)

Overview on public communication protocol

The following table describes the messages intention in more detail

Message typeNameDescriptionNote
logdtaLogging dataThis message type is intended to be used for logging all types of data to a time series database (e, g, KAFKA), This message type is currently neither defined nor the use case.(Warnung)
scmdtaSupply Chain and vertical integration dataThis message type is symbolic placeholder for inbound data from B2B communication and internal integration use cases. Both, message tpye(s) and use cases or not defined in deatail(Warnung)

For the messages inside the Area and Cell Operation Control reference fragment and Operation State and Reading reference fragment, see the subsequent section.

Operation control

Operation control is responsible for requesting operation service from next level entities, collect quotes for operations and finally to assign an operation to an area or cell. The protocol structure of site-to-area and area-to-cell is quite similar and differs only in some optional negotiations (which may change in future releases).


The following table describes the messages intention in more detail

Message typeNameDescriptionNote
enrolEnrollmentIndicates that unit was placed in higher level unit, i.e. either a cell was placed in an area or an area is attached to a site. The message will contain information on the name and type of the enrolled unit, the timestamp when this happened and the location inside the higher level unit, where the enroled unit may be found and accessed for material flows.
rfqrequest for QuotationThis message issues a request for quotation for executing an operation on the next lower level, i.e. either a request to handle an SFCU on area level or to handle a specific task on cell level.
quoteQuotationIndicated the willingness and ability to execute a requested operation.
asgmtAssignmentCommunicates the opbligation to execute an operation to a lower level unit. The message is also used to announce the subsequent transfer of the operation data in detail (opdta)
opdtaOperation DataThis message contains the datailed data of the operation request.
opcfmOperation ConfirmationThis message indicates, that the operation data was received and approved.
quitQuit OperationAn unit signals that it will stop operations at the given location.

Operation state and readings

(New version of 2021-11-19)

The following table describes the messages intention in more detail

Message typeNameDescriptionNote
opstatOperation StateWith this message a unit communicates its current state (change) to higher level units
readingReadingsThis message contains various readings from station level.
statusStatusStatus information of active components (controller or agents)

Topic and subscription list

In flecsimo, the all topic elements before a message type indicated the sender of message, the part after the message type indicates a dedicated (unicast) receiver. In general, MQTT messages are understood to be multicast messages. Using the "trailing" receiver identifier allows focused subscription and reduces data transfer load. See updated DD_7 MQTT Topic-Structure for details.

Process related messages

(Info) In the following table, terms in italic are placeholders for real topic identifiers whereas terms printed in bold letters should be used as they are. Compare the following examples:

  • site/opdta/area could be replaced by FUAS/opdata/area-1 or FUAS/opdta/area-2
  • site/area/asgmt could be replaced by FUAS/area-1/asgmt or H_DA/area-4/asgmt


TopicPublished bySubscription by


siteareacell
site/rfqsite
site/rfq
site/asgmtsite
site/asgmt
site/opdta/areasite
site/opdata/area
site/area/enrolareasite/+/enrol

site/area/quitareasite/+/quit

site/area/quoteareasite/+/quote

site/area/opcfmareasite/+/opcfm

site/area/rfqarea

site/area/rfq
site/area/asgmtarea

site/area/asgmt
site/area/opdta/cellarea

site/area/opdta/cell
site/area/cell/enrolcell
site/area/+/enrol
site/area/cell/quitcell
site/area/+/quit
site/area/cell/quote

cell


site/area/+/quote
site/area/cell/opcfmcell
site/area/+/opcfm
site/area/cell/opstatcell
site/area/+/opstat
site/area/cell/readingcell
site/area/+/reading

Status messages

(New in version of 2011-11-20)

Messages of type status are published by active components of a flecsimo lab and will not be subscribed by the standard agents. These messages are used for monitoring the lab (e. g. with an mqtt-explorer). To be able to distinguish different status messages issued at the same level (site, area, cell) the flecsimo msg library will define topics as shown in the following table:

TopicAgent typeDescription
site/status/AGTsite agentSite agent status messages.
site/status/CTLsite controllerSite controller status messages.
site/area/status/AGTarea agentArea agent status messages.
site/area/control/status/CTLarea controllerArea controller status messages.
site/area/cell/status/AGTcell agentCell agent status messages.
site/area/cell/status/CTLcell controllerCell controller status messages
site/area/cell/station/status/STNstation controllerStation status messages (do not mix up with opstat messages).



Details on MQTT implementation for flecsimo may be found in




  • Keine Stichwörter