FDL-Interface

Das FDL-Protokoll ist das Basisprotokoll, auf dem jedes PROFIBUS Protokoll aufbaut. FDL ist die Layer 2 Implementierung von PROFIBUS.
Über das FDL-Interface können per ADS FDL-Telegramme gesendet und empfangene FDL-Telegramme abgeholt werden. Diese Funktionalität wird von der FC31xx ab V02.66 und von der EL6731 ab V01.06 unterstützt.

Um das FDL Interface zu nutzen, muss im Master der Multi-Master Betrieb aktiviert werden.

Klicken sie dazu auf „Bus-Parameter (DP)“:

FDL-Interface 1:
Karteireiter EL6731, Bus-Parameter (DP)

Aktivieren Sie den Multi-Master Betrieb:

FDL-Interface 2:
Multi-Master Betrieb aktivieren

Aktivieren Sie nun per ADS-Write das FDL Interface:

ADS-Write Parameter

Bedeutung

Net-ID

Net-ID des Masters (s. Karteireiter ADS des Devices)

Port

200

IndexGroup

0xF400

IndexOffset 

0

Length

1

Data

0xFF (oder die PB eigene Adresse)

Data: 0xFF, es werden alle Daten empfangen, wie auch das Global-Control-Telegramm. Mit der Angabe der eigenen PB Adresse werden nur Daten der eigenen PB Adresse in den Buffer kopiert.

FDL Receive

Mit ADS-Read werden FDL-Indications, die von einem anderen Master empfangen wurden, oder lokal generierte FDL-Confirmations abgeholt, entsprechend ihrer Länge. Für jeden gesendeten FDL-Request wird eine FDL-Confirmation zurückgegeben.

Der Buffer muss per ADS READ gepollt werden, um Daten zu lesen. Wenn die Datenlänge 1 beträgt und der Dateninhalt 0x00 ist, liegen keine Daten im Buffer vor. Der Buffer hat eine Größe von 0x4000 Byte. Wenn mehr Daten empfangen werden, gehen diese verloren.

Beispiel: um Daten zu schreiben (hier werden 8 Byte Daten vom Master 01 zu Master 02 verschickt):

FDL_DataSend: ARRAY[0..15] OF BYTE := [16#01,16#00,16#82,16#81,16#0C,16#0A,16#21,16#20,16#01,16#02,16#03,16#04,16#05,16#06,16#07,16#08];

FDL_DataSend[0]     

0x01

Cmd: Request 

FDL_DataSend[1]     

0x00

Request 

FDL_DataSend[2]     

0x82

Ziel PB Adresse hier Master Adresse 2 (+ 0x80)

FDL_DataSend[3]     

0x81

Quelle PB Adresse hier Master Adresse 1 (+ 0x80)

FDL_DataSend[4]   

0x0C

SRD low (Send and Request data)

FDL_DataSend[5]    

0x0A

Länge der Daten, ab folgenden Byte gezählt, hier 10 Byte

FDL_DataSend[6]    

0x21

DSAP

FDL_DataSend[7]     

0x20

SSAP

FDL_DataSend[8..15] 

0x01,..0x08

Daten

FDL Daten senden:

ADS-Write Parameter

Bedeutung

Net-ID

Net-ID des Masters (s. Karteireiter ADS des Devices)

Port

200

IndexGroup

0xF400

IndexOffset

0

Length

Länge der Datenbytes des ADS-Write-Komandos

Data

FDL + Daten

Hinweis: Die Länge des ADS muss immer gerade sein. Wenn das PB-Telegramm eine ungerade Länge hat, setzen Sie die Länge des ADS auf +1, um eine gerade Länge zu erhalten.

FDL Daten lesen:

ADS-Write Parameter

Bedeutung

Net-ID

Net-ID des Masters (s. Karteireiter ADS des Devices)

Port

200

IndexGroup

0xF400

IndexOffset 

 

Length

X – Länge des Buffer

Data

 

Die FDL-Daten sollten per ADS Read abgefragt werden. Wenn die Datenlänge 1 beträgt, sind keine Daten angekommen. Wenn langsamer abgefragt wird als die Daten eintreffen, können mehrere FDL-Telegramme im Puffer stehen, die dann ausgelesen werden müssen.

Es wird empfohlen, die Leselänge immer größer zu wählen als das eigentliche FDL-Telegramm, um eventuell mehrere FDL-Telegramme aus dem Puffer zu entnehmen. Die tatsächliche Datenlänge wird beim ADSREADEX über die Variable COUNT_R angezeigt.

FDL-Error-Codes (0x22xx)

Fehlercode
ADS READ

Bedeutung

0x224C

Invalid Indexgroup
(die oberen 16 Bit der Indexgroup sind ungleich Null)

0x224D

Invalid Indexoffset
(ungleich Null)

0x224E

Anzahl der zu lesenden Bytes zu gering

0x224F

Die Firmware konnte den ADS-Speicher nicht zuweisen.

Fehlercode
ADS READ

Bedeutung

0x224C

Invalid Indexgroup
(die oberen 16 Bit der Indexgroup sind ungleich Null)

0x224D

Invalid Indexoffset
(ungleich Null)

0x224E

Anzahl der zu schreibenden ADS - Byte zu groß (> 0x4000)

0x224F

Ungültiger Cmd (1. Daten Byte),
erlaubt sind 0x1, 0x3, 0x103

0x2250

Ungültiger Request-wert (2. Daten Byte),
erlaubt ist 0x0

0x2251

Ungültiger Wert im 5. Daten Byte (FC) wenn bei 1.Daten Byte (Cmd) = 1, erlaubt sind:

• SDA LOW - 0x03
• SDN LOW - 0x04
• SDA HIGH - 0x05
• SDN HIGH - 0x06
• SRD LOW - 0x0C
• SRD HIGH - 0x0D

0x2252

Ungültiger Wert im 5. Daten Byte (FC) wenn bei 1.Daten Byte (Cmd) = 3, erlaubt sind:

• RR - 0x02
• RS - 0x03
• DL - 0x08
• DH - 0x0A
• NR – 0x80

0x2253

dsap (7. Daten Byte) > 63

0x2254

ssap (8. Daten Byte) > 63  

0x2255

Ziel Adresse (3.Daten Byte) = eigene Stations-Adresse

0x2256

Länge der Daten > 246 (6. Daten Byte)

0x2258

Device hat nicht genügend Speicher

0x2259

Ungültiger Wert beim Aktivieren des FDL Interfaces,
erlaubt sind: 0xFF, eigene PB-Adresse, 0x00