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
Field
Datatype
Values
Description
SYNC
3 digits character
###
A synchronisation header used to signal the start of a new message
LEN
Numeric 5-digit value
02048
Length of message data in bytes without SYNC, SEND, RECV, SEQ fields
SEND
Alphanumeric 5-digit value
SUBS1
An unique identifier of the message sender.
RECV
Alphanumeric 5-digit value
MFC__
An unique identifier of the message receiver
SEQ
Numeric 5-digit value
00000-99999
A sequence number of the telegram that is sent. A responding telegram has always the number of the telegram where it responds to.
Message Payload
Field
Datatype
Values
Description
TYPE
Alphanumeric 4-digit value
e.g. REQ_
The telegram type is used to determine the type of telegram.
TUID
T_TUID
e.g. S0000004711
The TransportUnit ID is the identifier of the physical bin that is transported through the system. Usually the TUID is a barcode or RFID of that bin. How the TUID looks like is specific to each project.
LOCATION
T_LOC
Any kind of location used in the telegram to identify a unique location in the subsystem area
ERROR
T_ERROR
00000012
An error code that is exchanged and well known by both communication partners
TIMESTAMP
T_DATETIME
e.g. 20150330140159
Date and time when the telegram was created on the sender side
LOCGROUP
T_LGRP
INFEED
The unique identifier of an existing LocationGroup
Message Types Layer N
Between Layer N <-> N-1 the following message types are defined:
TYPE
Description
REQ_
Request telegram. Used to request a target Location for a certain TransportUnit with a given TUID. The target Location can be the final target Location or an as-next Location where the TransportUnit should be moved to.
RES_
Response telegram. Usually sent as an answer of a preceding REQ_ telegram. A response determines a target Location for a given TransportUnit with the TUID identifier. Important telegram fields on receiver side are TUID and TARGET.
UPD_
Update telegram. Is used to update the state of a TransportUnit on receiver side. No response is expected. An update telegram carries at least information about the actual Location for a given TUID.
UPDX
Update telegram with acknowledgement. In contrast to an UPD_ this telegram has to be acknowledged from the receiving side.
ACK_
The ACK_ telegram is used to acknowledge any kind of telegram that requires acknowledgement. The telegram sequence number matches to the sequence number of the telegram that needs to be acknowledged.
LOCU
Location update is used to update the state of a Location.
LOCX
Location update telegram that requires an acknowledgement.
SYSU
A system update telegram is sent to inform the receiver about the logical or physical state of a system.
REST
A restart (or cold-start) telegram signals a restart of the sending system and usually forces the receiving side to evict any conversation state.
SYNQ
A time synchronisation request is sent to get the current timestamp from the communication partner.
SYNC
The time synchronisation telegram is used to send the current time to the communication partner and to force a timestamp update on the opposite.
ERR_
An error telegram is used to signal error messages according to the communication protocol, like an unexpected telegram structure.
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.
Field name
Datatype
Optional
Description
ERR_
CHAR(4)
Error telegram type
LOCGROUP
T_LGRP
The LocationGroup the error occurred
ERROR
T_ERROR
An error code to describe the fault.
TIMESTAMP
T_DATETIME
Date and time when the telegram was created on sender side
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.
Field name
Datatype
Optional
Description
SYNQ
CHAR(4)
Telegram type
TIMESTAMP
T_DATETIME
Date and time when the telegram was created on sender side
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).
Field name
Datatype
Optional
Description
SYNC
CHAR(4)
Telegram type
CURRTIME
T_DATETIME
The current time of the responding system
TIMESTAMP
T_DATETIME
Date and time when the telegram was created on sender side
An example looks like:
###00140MFC__RAS1000002SYNC2013112322595820131123225959********************************
****************************************************************************