Function code

The function code (FC) in the telegram header identifies the telegram type, such as Request telegram (Request or Send/Request) and Acknowledgement or Response telegram (Acknowledgement frame, Response frame). In addition the function code contains the actual transmission function and control information that prevent loss and duplication of messages, or the station type with FDL status.

7 6 5 4 3 2 1 0 FC: Function Code Request
  1             Request Telegramm
      X         FCV = Alternating bit switched on
    X           href=»http://profibus.felser.ch/en/funktionscode.htm#aufruffolgebit»>FCB = Alternating bit (from frame count)
1       0 (0x0) CV = Clock Value (Clock synchronization)
1       other Reserved
0       0 (0x0) TE = Time Event (Clock synchronization)
0       3 (0x3) SDA_LOW = Send Data Acknowledged — low priority
0       4 (0x4) SDN_LOW = Send Data Not acknowledged — low priority
0       5 (0x5) SDA_HIGH = Send Data Acknowledged — high priority
0       6 (0x6) SDN_HIGH = Send Data Not acknowledged
0       7 (0x7) MSRD = Send Request Data with Multicast Reply
0       9 (0x9) Request FDL Status
0       12(0xC) SRD low = Send and Request Data
0       13(0xD) SRD high = Send and Request Data
0       14(0xE) Request Ident with reply
0       15 (0xF) Request LSAP Status with reply 1)
0       other Reserved

1) this value is in the last version of the standard not defined anymore but only reserved

7 6 5 4 3 2 1 0 FC : Function Code Response
  0             Response telegram
0               Reserved
    0 0         Slave
    0 1         Master not ready
    1 0         Master ready, without token
    1 1         Master ready, in token ring
        0 (0x0) OK
        1 (0x1) UE = User Error
        2 (0x2) RR = No resources
        3 (0x3) RS = SAP not enabled
        8 (0x8) DL = Data Low (normal case with DP)
        9 (0x9) NR = No response data ready
        10(0xA) DH = Data High (DP diagnosis pending)
        12(0xC) RDL = Data not received and Data Low
        13(0xD) RDH = Data not received and Data High
        other Reserved

Frame Count Bit The frame count bit FCB (b5) prevents message duplication by the acknowledging or responding station(responder) and any loss by the calling station (initiator). Excluded from this are requests without acknowledgement (SDN) and FDL Status, Ident and LSAP Status requests.

For the security sequence, the initiator must carry an FCB for each responder. When a Request telegram (Request or Send/Request) is sent to a responder for the first time, or if it is re-sent to a responder currently marked as non-operational, the FCB must be set as defined in the responder. The initiator achieves this in a Request telegram with FCV=0 and FCB=1. The responder must assess a telegram of this kind as the first message cycle and store the FCB=1 together with the initiator’s address (SA) (see following table). This message cycle will not be repeated by the initiator. In subsequent Request telegrams to the same responder, the initiator must set FCV=1 and change the FCB with each new Request telegram. Any responder that receives a Request telegram addressed to it with FCV=1 must evaluate the FCB. If the FCB has changed when compared with the last Request telegram from the same initiator (same SA), this is valid confirmation that the preceding message cycle was concluded properly. If the Request telegram originates from a different initiator (different SA), evaluation of the FCB is no longer necessary. In both cases, the responder must save the FCB with the source SA until receipt of a new telegram addressed to it. In the case of a lost or impaired acknowledgement or response telegram, the FCB must not be changed by the initiator in the request retry: this will indicate that the previous message cycle was faulty. If the responder receives a Request telegram with FCV=1 and the same FCB as the last Request telegram from the same initiator (same SA), this will indicate a request retry. The responder must in turn retransmit the acknowledgement or response telegram held in readiness. Until the above-mentioned confirmation or receipt of a telegram with a different address (SA or DA) that is not acknowledged (Send Data with No Acknowledge, SDN) the responder must hold the last acknowledgement or response telegram in readiness for any possible request retry. In the case of Request telegrams that are not acknowledged and with Request FDL Status, Ident, and LSAP Status, FCV=0 and FCB=0; evaluation by the responder is no longer necessary.

b5 b4 Bit position
FCB FCV Condition Meaning Action
0 0 DA = TS/127 Request without acknowledgement
Request FDL Status/ Ident/ LSAP Status
Delete last acknowledgement
0/1 0/1 DA # TS Request to another responder Delete last acknowledgement / response
1 0 DA = TS First request FCBM := 1
SAM := SA
Delete last acknowledgement / response
0/1 1 DA = TS
SA = SAM
FCB # FCBM
New Request Delete last acknowledgement / response
FCBM := FCB
Hold acknowledgement / response in readiness for retry
0/1 1 DA = TS
SA = SAM
FCB = FCBM
Retry Request FCBM := FCB
Repeat acknowledgement / response and continue to hold in readiness
0/1 1 DA = TS
SA # SAM
New initiator FCBM := FCB
SAM := SA Hold acknowledgement / response in readiness for retry

FCBM stored FCB in memory SAM stored SA in memory

×

Length information

The two equivalent length bytes in the telegram header of the variable format contain the number of information bytes in the body of the telegram. These include: DA, SA, FC and the PDU. The value ranges from 4 to 249, so that no more than 246 bytes can be transferred to the PDU of a telegram. No value <4 is allowed, because a telegram must comprise at least one DA, SA ,FC and a data byte. The longest telegram therefore comprises 255 bytes overall.

7 6 5 4 3 2 1 0 LE and LEr: length byte
4  to 249 Length byte
×

Checksum

The FCS (Frame Check Sequence) checksum required in the telegram for Hamming distance 4 is always located directly in front of the end delimiter (ED) and has the following configuration:

7 6 5 4 3 2 1 0  
0 to 255 Checksum

For the without-data format (SD1) the checksum must be formed by the arithmetical sum of DA, SA, and FC without start delimiter (SD) or end delimiter (ED) and disregarding sums carried over. For the fixed length format with data (SD3) and the variable length format (SD2) the checksum must also include the payload (PDU). Example of bytes added together in the FCS:

SD2 LE LEr SD2 DA SA FC DSAP SSAP PDU FCS ED

See also the section on Error handling.

×

In the PROFIBUS DP-V2 version clocks in a PROFIBUS network can also be synchronized. For this purpose, a station is defined as the time master which then distributes the time within its network. This time master must be a master and is designated as a class 3 master.

Clock synchronization

Clock synchronization

The time master reads its current time and starts an internal timer. As soon as the time event (TE) telegram (see FC: Function Code Request) is sent with the read time, this internal time is stopped. In a subsequent  counter value (CV) telegram, the time difference between the read time and the sent time is transmitted.

 

On receipt of the TE telegram, the receiving station also starts its own internal timer. The value of this internal timer plus the current value from the TE telegram and the correction value from the counter value (CV) telegram give the time to be set.

Sequence of telegrams for clock synchronization

Sequence of telegrams for clock  synchronization

 

This clock synchronization service must always require the support of hardware to start and stop the timers. Not all modules (ASIC) available on the market can support this service.

×

Address byte

The two address bytes in the telegram header of telegrams (Request, Confirmation and Response telegrams) contain the station’s destination address (DA) and source address (SA).

7 6 5 4 3 2 1 0 DA: Destination address
  0 — 127 (0x7F) Destination address
0
1
              no DSAP (SAP = NIL)
DSAP present
7 6 5 4 3 2 1 0 SA : Source address
  0 – 126 (0x7E) Source address
0
1
              no SSAP (SAP = NIL)
SSAP present

Address 127 is reserved as a global address for broadcast or multicast messages (telegrams to all bus users or user groups selected via service access point; only allowed with Send Data with No Acknowledge, SDN). The address byte of the Request telegram should be reflected in the Response telegram in reverse, i.e. the SA byte of the Response telegram contains the destination station address and the DA byte the source station address of the Request. For formats with a PDU, the address extension serves to identify a destination and/or source address extension in the form of a Service Access Point (SAP) that immediately follows the FC byte in the PDU. The address extensions of a Request telegram must be reflected in the Response telegram in reverse. If the address extension bit has not been set, it is the special SAP = NIL. This Service Access Point has the advantage that its telegram is 2 bytes shorter and is therefore used for cyclic data exchange.

×