TIA DPWR_DAT / DPRD_DAT oder direkt auf die Peripherie Ein- bzw. Ausgänge?

sargan26

Level-2
Beiträge
102
Reaktionspunkte
5
Zuviel Werbung?
-> Hier kostenlos registrieren
Was ist der Unterschied zwischen den beiden Arten auf Ein- bzw. Ausgänge von Peripheriegeräten zu zugreifen?
DPRD_DAT: Konsistente Daten eines DP-Normslaves lesen
DPWR_DAT: Konsistente Daten eines DP-Normslaves schreiben
ODER
Ich greife direkt auf Peripherie Ein- bzw. Ausgänge zu.


Was sind Vor-/Nachteile? Wann wendet man was an? S7-1500
LG
 
Falls in der S7-300er Welt die Ein- bzw. Ausgänge auserhalb des Prozessabbildes liegen, nutzt man DPRD_DAT/DPWR_DAT.
In der S7-1x00er-Welt liegt ja alles im
Prozessabbild und man kann damit direkt drauf zu greifen.

DPRD_DAT/DPWR_DAT nutzen wir bei den 1500ern aktuell immer um EAs auf einen DB-Breich zu kopieren um dann mit dem DB zu arbeiten.
Weil du kannst zwar Stucturen auf EA-Bereiche legen, aber da funktioniert so einiges nicht, was mit nem DB-Bereich ohne weiteres geht.

 
Zuviel Werbung?
-> Hier kostenlos registrieren
PE* bzw. PA* geht ja nur bis P*D, also Doppelwort, also max 4 Byte konsistent.
Da viele Slaves, also Frequenzumrichter u.ä., nun aber mehr wie 4 Byte EA verwenden, ist eine Möglichkeit eben DPRD/DPWR_DAT.

Wobei das bei TIA und 1x00er, auch nicht mehr unbedingt das erste Mittel der Wahl sein sollte.
 
Wenn man mehr als 4 Bytes übertragen soll, und die Daten müssen konsistent sein, dann liegt man die E/A Adressen ausserhalb von Prozessabbild, und verwendet DPRD_DAT un DPWR_DAT.
Man verwendet es meistens für "intelligente" Peripherie wie FU's, CPUs als DP-Slaves, CPUs als I-Device, DP/DP Koppler, PN/PN Koppler.

Weil du kannst zwar Stucturen auf EA-Bereiche legen, aber da funktioniert so einiges nicht, was mit nem DB-Bereich ohne weiteres geht.
Wenn man E/A Daten als Typen anlegt, und an FC/FB übergibt, werden die E/A Daten dann konsistent übertragen ? Habe selber keine Erfahrung mit E/A Daten als Typen-Struktur.
 
Das gibt es bei den 1x00er ja in der Form nicht mehr. Alle E/As sind in einem Teilprozessabbild (TPA).
 
DPRD_DAT/DPWR_DAT nutzen wir bei den 1500ern aktuell immer um EAs auf einen DB-Breich zu kopieren um dann mit dem DB zu arbeiten.
Soll man aber eigentlich nicht. Um zwischen E/A im Prozessabbild und DB zu kopieren, kann man normale MOVE verwenden. Gerne auch MOVE von UDT.

DPRD_DAT/DPWR_DAT verwendet man nur um auf E/A-Bereiche zuzugreifen, die nicht automatisch aktualisiert werden. Standard-Einstellung bei der E/A-Gerätekonfiguration ist "Automatische Aktualisierung". Da braucht man DPRD_DAT/DPWR_DAT nicht und soll sie auch nicht verwenden.

Im OB1 DPRD_DAT/DPWR_DAT aufzurufen ist eigentlich nur unnötige Verkomplizierung des Programms und evtl. Zykluszeitverschwendung, weil für den OB1 eh schon die E/A-Adressen gelesen/geschrieben werden bei der "Automatischen Aktualisierung" der Prozessabbilder. Es sei denn die E/A-Adressen sind Teilprozessabbildern (TPA) zugeordnet - die muß man selber aktualisieren oder einlesen/schreiben. In dem Fall bin ich aber der Meinung, daß man ebenfalls nicht jedes einzelne Modul per DPRD_DAT/DPWR_DAT ansprechen muß, sondern nur einmal UPDAT_PI und einmal UPDAT_PO aufrufen muß. (korrigiert mich falls das falsch ist, ich habe keine Erfahrung mit S7-1500).

Hilfe zu DPWR_DAT: Konsistente Daten eines DP-Normslaves schreiben
Nutzen Sie beim Schreiben konsistenter Daten nicht beide Möglichkeiten gleichzeitig: Nutzen Sie entweder "DPWR_DAT" oder das Schreiben über das Prozessabbild der Ausgänge.

Vorsicht
Peripheriezugriff
Vermeiden Sie bei Verwendung von "DPWR_DAT" Zugriffe auf Peripheriebereiche, deren Teilprozessabbilder mit OB6x-Anbindung (Taktsynchronalarme) zugeordnet sind.

Harald
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Das gibt es bei den 1x00er ja in der Form nicht mehr. Alle E/As sind in einem Teilprozessabbild (TPA).
Es kann aber für jedes Modul einzeln projektiert sein, daß dessen E/A nicht "automatisch aktualisiert" werden - die muß man mit DPRD_DAT/DPWR_DAT lesen/schreiben oder das betreffende TPA mit UPDAT_PI/UPDAT_PO aktualisieren.

Harald
 
Ich sehe gerade dass die E/A per default auf "Automatischen Aktualisierung" (d.h. ist innerhalb von das Prozessabbild von MAIN).
Man kann anternative Prozessabbilder wählen oder sogar "keine" Prozessabbild wählen. In den letztere Fall nehme ich an dass man DPRD_DAT/DPWR_DAT verwenden muss.

edit: harald war (wie immer) nochmals schneller als Ich.
 
Das heißt ich muss meine 1000Byte von meinem Beckhoff-Slave gar nicht mehr mit DPRD_DAT lesen sondern kann einfach die 1000Byte vom PA kopieren? Oder bringt es was das PA zu verkleinern? Oder ist das irgendwie auch alles egal und nur wieder so ein komisches Kompatibiltätszeug? Mir kommen ja viele Sachen immer so anachronistisch vor aber man kann ja nicht alles hinterfragen.:cool:
 
Zurück
Oben