Show/Hide Toolbars

PROFIBUS Handbuch

Auf dieser MS1 Verbindung können zwei Dienste DPV1_Read und DPV1_Write für Daten ausgeführt werden:

DPV1_Read:

0x5E

Slot_Number

Index

ReqLength

 

Mehrere Pollzyklen ohne Daten, letzter Pollzylus mit Antwortdaten. Bei einer positiven Antwort:

0x5E

Slot_Number

Index

ResLength

Data

 

Bei einer negativen Antwort:

0xDE

Error_Decode

Error_Code1

Error_Code2

 

Als Resultat erhalten wir die Daten und die Länge zurück. Sie widerspiegelt die effektive Länge der zurückgegebenen Daten. Es ist auch erlaubt, nur den Anfang (z.B. Header) einer Information zu lesen. Es gibt einen Fehler, wenn das Objekt nicht existiert oder der Zugriff nicht erlaubt ist.

Hier ein Beispiel einer Telegramm-Sequenz zum azyklischen Lesen, wie diese auf einem Busmonitor erscheinen kann:

Addr

Msg type

Req Res

SAPS

Len

Data

1->22

DPV1_read_req

Req

51 -> 51

4

5E 01 10 FF

1<-22

Short acknowledge

Res

 

 

 

1->22

DPV1_Poll

Req

51 -> 51

 

 

1<-22

Short acknowledge

Res

 

 

 

1->22

DPV1_Poll

Req

51 -> 51

 

 

1<-22

DPV1_read_res

Res

51 <- 51

6

5E 01 10 02 01 02

 

In diesem Beispiel wird von der Steuerung mit der Adresse 1 im Feldgerät mit der Adresse 22 im Slot 1 der Index 16 (0x10) ausgelesen. Dabei wird die maximale Anzahl der Bytes (Länge > 240) angefordert. Der Slave antwortet sofort mit einer Kurzquittung. Im nächsten Zyklus pollt der Master den Slave um die Antwort abzufragen. Je nach Verarbeitungsgeschwindigkeit des Slaves muss dieses Pollen mehrmals wiederholt werden. In der Antwort steht nun die korrekte Länge der Daten gefolgt von den Werten.

DPV1_Write:

0x5F

Slot_Number

Index

ReqLength

Data

 

Mehrere Pollzyklen ohne Daten, letzter Pollzylus mit Antwortdaten. Bei einer positiven Antwort:

0x5F

Slot_Number

Index

ResLength

 

Bei einer negativen Antwort:

0xDF

Error_Decode

Error_Code1

Error_Code2

 

Als Resultat erhalten wir eine Bestätigung der Anzahl der geschriebenen Bytes. Es darf auch nur ein Teil des Objektes geschrieben werden. Ein ReqLength länger als das Objekt ist aber nicht erlaubt. Fehlermeldungen entstehen, wenn das Objekt nicht vorhanden oder der Zugriff nicht erlaubt ist.

Im Fehlerfall wird mit einem Fehlertelegramm geantwortet. Dabei wird die Funktion mit einem Error-Code zurückgegeben.