Messaging between Layer N and Layer N-1

Detailed description of the message structure between Layer N and Layer N-1, the MFC and the data concentrators.

Data Types

TransportUnit ID (T_TUID)

Alphanumeric case-sensitive string with the length of n characters, where n is defined per project.

Examples: S0000004711

LocationGroup (T_LGRP)

Alphanumeric case-insensitive string with the length of n characters, where n is defined per project. Additional allowed character symbols: _-

Examples: SHIPPING_AREA, errorZone4

Location (T_LOC)

Alphanumeric case-insensitive string with the length of n characters, where n is defined per project. Additional allowed character symbols: _-

Examples: RCV0001003400000000

Error code (T_ERROR)

Numeric value with the length of n digits, where n is defined per project. This numeric value can either express a decimal error code or a binary error bitmap. Depends on the project requirements.

Examples: 0000090

Date with time (T_DATETIME)

Numeric value with the length of 15 digits that follows the format YYYYMMDDHHMISS

Examples: 20150330140159

General Message Structure

A telegram message has always an unique identifiable message type. It always starts with a message header that includes a synchronisation character sequence, the sender and receiver of the message as well as the telegram length and the sequence number, that serves as a tracking number for both communication partners. All telegrams types have the same length defined, that is determined by the project. The length of the payload (without header) is specified in the telegram itself. Fields that are not used at all, or not used completely, must be padded with a padding character (specific to the field: An asterisk '*' or '_').

Message Header

Message Payload

Message Types Layer N

Between Layer N <-> N-1 the following message types are defined:

Error Telegram (ERR_)

An Error Telegram is sent bidirectionally from one system to the other, in case a previously received telegram is syntactically incorrect or of unknown type. The reason for the error is encoded in the ERROR field. The LocationGroup may be passed as well assign the error to an area respectively context it has occurred.

An examples how an Error Telegram looks like:

###00160SPS01MFR__00001ERR_SHIPPING_AREA*******0000005020131123225959*************************************** ****************************************************

Time Synchronisation Request Telegram (SYNQ)

A time synchronisation can be requested from both communication partners. The sender side requests for the current time. Keeping the time synchronised between systems is often a requirement when it comes to debugging situations or whenever a precise handling of expiration dates or timeouts becomes necessary. Because the usage of this telegram type is more of technical nature, the Information about the requester is taken from the telegram header (sender field) instead of a LocationGroup.

An example looks like:

###00140RAS10MFC__00001SYNQ20131123225959********************************************** ****************************************************************************

Time Synchronisation Response Telegram (SYNC)

A time synchronisation response telegram is the reply to a SYNQ telegram and carries the current time of the requested system. Information about the responder is taken from the telegram header (sender field).

An example looks like:

###00140MFC__RAS1000002SYNC2013112322595820131123225959******************************** ****************************************************************************

Messages from Layer N-1 to Layer N

Messages (telegrams) from layer N-1 to layer N are expected to be of the following type and content. Notice, that all listed message types are uni-directional only.

Request Telegram (REQ_)

A Request Telegram is sent from subsystems to ask for a target Location or target LocationGroup to where to transport the TransportUnit TUID to. The requester may provide a TARGETLOC field that is the current stored target of the TransportUnit to move.

An example how a Request Telegram looks like:

###00140RAS10MFC__00001REQ_000000000S0000004711RECV0000000100010001????????????????????0000009020131123225959******************************************************

Explanation: The sender with the ID 'RAS10' requests the receiver the with ID 'MFC__' for a target Location for a given TransportUnit with the ID '000000000S0000004711'. The error code is '00000090', because the TransportUnit didn't pass a contour control station (the TU was just to high. This all happened on the 23nd. Nov. 2013, at 22:59:59 (24HRS).

Update Telegram (UPD_)

An Update Telegram is sent to update the current Location of a specific TransportUnit. It does not require any acknowledgement.

An example looks like:

###00140RAS10MFC__00002UPD_000000000S0000004711RECV0000000100010001********20131123225958 **************************************************************************

Acknowledged Update Telegram (UPDX)

The acknowledged version of the Update Telegram requires the responder on layer N to send an acknowledgement back to the sender on layer N-1 when the telegram has been processed – doesn't matter if processing was successful or not.

An example looks like:

###00140RAS10MFC__00002UPDX000000000S0000004711RECV0000000100010001********20131123225958 **************************************************************************

Location Update Telegram (LOCU)

This type of telegram is sent from the subsystem to the upper system to inform the communication partner about the state of a LocationGroup or a certain Location. If both fields (LOCGROUP & LOC) are set, an update of the Location happens only – the LocationGroup is not been updated. The ERROR field is used to express the state of the Location or LocationGroup.

An example looks like:

###00160RAS10MFC__00002LOCU********************SL__CONV0001000100010000001120131123225958**** *******************************************************************

Acknowledged Location Update Telegram (LOCX)

The acknowledged version of the Location Update telegram (LOCU) requires an acknowledgement from the receiver side. If both fields (LOCGROUP & LOC) are set, an update of the Location happens only, not of the LocationGroup.

An example looks like:

System Update Telegram (SYSU)

###00160RAS10MFC__00002LOCX********************SL__CONV0001000100010000001120131123225958**** *******************************************************************

Like a Location Update Telegram updates the state of a Location, the System Update Telegram is used to update the state of a system expressed by its LocationGroup name. The sender field in the telegram header does not correspond to the logical LocationGroup name.

An example looks like:

###00140RAS10MFC__00002SYSUSHIPPING_AREA000000002013112322595820131123225959****** ******************************************************************************************************

Messages from Layer N to Layer N-1

Response Telegram (RES_)

The Response Telegram is responding to a previously sent Request Telegram (REQ_) to return a target Location or LocationGroup for a requested TransportUnit. The TARGETLOC Location could be interpreted as an as-next Location or as the final target Location. The same is true for the TARGETLOCGROUP field.

An example looks like:

###00140MFC__RAS1000002RES_000000000S0000004711RECV0000000100010001******************** SHIPPING_AREA********20131123225959*************************************************

Acknowledge Telegram (ACK_)

An acknowledge Telegram is sent as a response to a telegram that requires an acknowledgement before the subsystem can proceed with anything else. This mechanism is used when a subsystem depends on the decision from the system on layer N before it can proceed.

The sequenceNo in the telegram header is the one of the origin request telegram header. The subsystem can map the sequenceNo and set the telegram as acknowledged internally.

An examples how an Error Telegram could looks like:

###00140MFC__RAS1000002ACK_********20131123225958************************************ ******************************************************************************

Restart Telegram (REST)

A Restart Telegram is sent from a system on layer N to subsystems to notify about a system's restart. Usually communication partners evict any internal cache and start processing from a defined starting point.

An examples how an Error Telegram could looks like:

###00140MFC__RAS1000002REST********20131123225958************************************ ******************************************************************************

General Communication Scenarios

tbd. Describe some general flows, sequence of telegrams by example.

Last updated