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:](Images/png/12221598475__Web.png)
Aktivieren Sie den Multi-Master Betrieb:
![FDL-Interface 2:](Images/png/12221592075__Web.png)
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 | Bedeutung |
---|---|
0x224C | Invalid Indexgroup |
0x224D | Invalid Indexoffset |
0x224E | Anzahl der zu lesenden Bytes zu gering |
0x224F | Die Firmware konnte den ADS-Speicher nicht zuweisen. |
Fehlercode | Bedeutung |
---|---|
0x224C | Invalid Indexgroup |
0x224D | Invalid Indexoffset |
0x224E | Anzahl der zu schreibenden ADS - Byte zu groß (> 0x4000) |
0x224F | Ungültiger Cmd (1. Daten Byte), |
0x2250 | Ungültiger Request-wert (2. Daten Byte), |
0x2251 | Ungültiger Wert im 5. Daten Byte (FC) wenn bei 1.Daten Byte (Cmd) = 1, erlaubt sind: • SDA LOW - 0x03 |
0x2252 | Ungültiger Wert im 5. Daten Byte (FC) wenn bei 1.Daten Byte (Cmd) = 3, erlaubt sind: • RR - 0x02 |
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, |