DPRD_DAT: Slave mit modularem Aufbau

Beiträge
9.189
Reaktionspunkte
2.936
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,
ich habe drei Profibus DP Slaves von denen ich einen etwas größeren Block lesen/schreiben will. Um die Daten konsistent zu lesen, will ich mit dem SFC14 "DPRD_DAT" und SFC15 arbeiten.
In der Hilfe steht dazu:
Bei einem DP-Normslave mit modularem Aufbau bzw. mit mehreren DP-Kennungen können Sie mit einem SFC 14-Aufruf jeweils nur auf die Daten einer Baugruppe/ DP-Kennung unter der projektierten Anfangsadresse zugreifen.
Was versteht man denn unter einem Modul?

Ich habe mal einen Screenshot von meinem Slave angehängt, in dem ich 11 Steckplätze (7 für E-Adressen, 4 für A-Adressen) belegt habe.
Heißt das, dass ich für einen Slave den DPRD_DAT sieben mal aufrufen muss? Oder nur zweimal, da ich in der Darstellung nur zwei verschiedene DP-Kennungen (223 und 211) sehe?

Gruß
Thomas
 

Anhänge

  • DP_Slaves_HW_Konfig.PNG
    DP_Slaves_HW_Konfig.PNG
    27,7 KB · Aufrufe: 41
Hallo,

Du liest mit diesem Baustein Daten konsistent (alle auf einmal, kein einzelner wortzugriff, asynchron) ein

Anfangsadresse zB. 256 Dez (100ex)

Code:
CALL  "DPRD_DAT"
       LADDR  :=W#16#100
       RET_VAL:="RET_VAL_READ"
       RECORD :=P#DB1.DBX 0.0 WORD 4

die Länge (hier word 4) musst du anhand deiner Eingangs-Module festlegen.

Also bei dir "100 Worte" ??? . Ab 512 (200 hex)
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Also wenn das mit einem Aufruf ginge wäre die Anmerkung mit der DP-Kennung in der Hilfe ja falsch.

Ich habe bisher in einem anderen Projekt einen anderen etwas größeren Slave mit zwei Eingangsmodulen gehabt, die jeweils eine andere DP-Kennung hatten. Dort habe ich dann für diesen Slave zwei DPRD_DAT Aufrufe benötigt. Mit einem ging es dort definitiv nicht.

Nur steht in der Hilfe auch was von "Modul", da bei mir einige Steckplätze ja die gleiche DP-Kennung besitzen.
 
Zusammenhängende Eingansmodule können ohne Prob. eingelesen werden.

AB Anfangsadresse - Ende. (Zusammenhängend) EW512-EW530 z.B.


Unterschiedliche DP-Kennung bedeutet ja auch, dass das dann Ausgangsdaten sein können -->SFC15
 
Für deine oben abgebildete Liste heißt das

Für den Eingangbereich:

CALL "DPRD_DAT"
LADDR :=W#16#200
RET_VAL:="RET_VAL_READ"
RECORD :=P#DB1.DBX 0.0 byte 224


Für den Ausgangsbereich:

CALL "DPWR_DAT"
LADDR :=W#16#200
RET_VAL:="RET_VAL_WRITE"
RECORD :=P#DB2.DBX 0.0 byte 128

Gruß
SKg
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Man kann an der DP Kennung erkennen welche Struktur und Datenkonsistenz das jeweilige Modul hat!
Deshalb ist der Hinweis darauf nicht falsch.

Beispiel:
Ein Eingabe Universal Modul mit 16 Byte und Konsistenz gesamt hat eine Kennung von : 159
Ein Eingabe Universal Modul mit 16 Byte und Konsistenz Einheit hat eine Kennung von : 31

Ein Ausgabe Universal Modul mit 16 Byte und Konsistenz gesamt hat eine Kennung von : 175
Ein Ausgabe Universal Modul mit 16 Byte und Konsistenz Einheit hat eine Kennung von : 47

Gruß
SKg
 
Zuletzt bearbeitet:
Man kann an der DP Kennung erkennen welche Struktur und Datenkonsistenz das jeweilige Modul hat!
Deshalb ist der Hinweis darauf nicht falsch.

Das meine ich ja, ich habe bei meinen Eingangsdaten zwei verschiedene DP-Kennungen. Die ersten 6 Blöcke sind jeweils 16 Worte lang, der 7. Block ist 4 Worte lang.
An der Größe und Konsitzenz kann ich nichts mehr umstellen, das kommt automatisch mit der Konfiguration des Slaves mit wenn ich das Modul in die Konfiguration ziehe.

Also ihr meint ich kann alle Eingangsdaten in einem Rutsch lesen? Warum habe ich das denn damals anders gemacht, hmm...
 
Zuviel Werbung?
-> Hier kostenlos registrieren
:eek:ÄHH da Steckt ja noch ein kleineres Modul drin ! Dann mußt du natürlich erst die Module 1-6 einlesen dann das 7. Modul einzeln und dann den rest wieder in einem rutsch!

Sorry

Gruß
 
:eek:ÄHH da Steckt ja noch ein kleineres Modul drin ! Dann mußt du natürlich erst die Module 1-6 einlesen dann das 7. Modul einzeln und dann den rest wieder in einem rutsch!

Ja, genau das meinte ich (sieht man durch die Kursivschrift nicht so gut).
Adress-technisch liegen die alle schön hintereinander, dann sollte es so gehen.
 
Das was du vieleicht meinst ist wenn man einen CP nimmt dann kann mann
mit dem DP_SEND und DP_RECV arbeiten!
Man gibt dann aber die Anfangsadresse des CP an!

Gruß
SKg
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Nur der Vollständigkeit halber:

Ich habe die Geschichte die letzten Tage in Betrieb genommen
Nun habe ich doch insgesamt 11 Aufrufe (7 Read und 4 Write) benötigt.
Bei der Konstellation die ich wie oben beschrieben geplant hatte, erhielt ich bei den SFC-Aufrufen immer eine Fehlermeldung.

Bei meinem DP-Slave kann ich an der Konsistenz auch nichts mehr umstellen. Ich kann aber ausgegraut ein "über gesamte Länge" erkennen. Anscheinend ist diese Länge nur ein Modul.
 
Zurück
Oben