Kleine Fragen zu DP_RECV.

Beiträge
8.337
Reaktionspunkte
1.902
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo.

Beispiel:
CP342-5 ist DP Master in S7-300 Station.
I/O-Adressen in verwendung in S7-300 Station: Bytes 0-19
I/O-Adressen in verwendung in ET200M Station: Byes 20-39
DP_RECV liest alle Eingangsbytes von 0-39.
Werden die Bytes 0-19 dadurch mit Nullen überschrieben ?

DP_SEND und DP_RECV startet immer mit byte 0, so habe ich es verstanden.

Soll man beim lesen von Eingangsdaten mit DP_RECV immer ein DB als Ziel verwenden ?
So habe ich getan einzigste mal das ich ein CP342-5 verwendete.

Oder, soll man es so umtauschen ?:
I/O-Adressen in verwendung in S7-300 Station: Bytes 20-39
I/O-Adressen in verwendung in ET200M Station: Byes 0-19
DP_RECV liest alle Eingangsbytes von 0-19.

Danke im voraus.
 
Hallo,

du kannst den FCs vorgeben, ab welchem Byte sie anfangen sollen zu lesen, bzw. zu schreiben.

Code:
CALL  "DP_RECV"
       CPLADDR :=W#16#100
       RECV    :=P#E 0.0 BYTE 16
       NDR     :=M56.0
       ERROR   :=M56.0
       STATUS  :=MW56
       DPSTATUS:=MB56
      NOP   0
Code:
CALL  "DP_SEND"
       CPLADDR:=W#16#100
       SEND   :=P#A 0.0 BYTE 7
       DONE   :=M56.1
       ERROR  :=M56.0
       STATUS :=MW56
      NOP   0
wenn ich jetzt richtig liege, dann müsstest Du unter

Code:
SEND: P#A 20.0 Byte 20
und unter

Code:
RECV: P#E 20.0 Byte 20
eintragen.



Und immer dran denken, dass erst RECV und dann SEND kommen muß!

-------------------------------------------
Nachtrag.

Die I/O, die über den Bus kommen kannst du dann genauso verwenden, wie die normalen.
-------------------------------------------
Gruß,

dia
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Ich glaube das es passt nicht.

Es gibt 2 getrennte Prozessimages, einer in S7 CPU und der andere in CP342-5.
Wenn ich es richtig verstanden habe, dann wird immer von Byte 0 im CP342-5 angefangen.
Daher kommt es: Als Ziel, entweder von Byte 0 in der Prozessimage in der S7 CPU, oder ein DB, verwenden.

Oder, ich habe es komplett falsch verstanden.
 
Ich würde einen DB dafür nehmen.
Sonst blockierst du dir damit einen E/A-Bereich der CPU.
Wenn du dann an der CPU zusätzliche Baugruppen montierst
bekommst du Probleme mit den Adressen (Adressüberlagerung).
 
@crash.

Es ist das 'lustige' damit.

Das E/A das über CP342-5 verbunden ist, hat nicht direktes mit der PI des S7 CPU zu tun.
Aber trotzdem muss man in HW Konfig adressen nehmen das nicht mit der E/A im S7 Station überlappt.
(* Nein - ist falsch. Siehe unten. )
Mit ein onboard DP Schnittstelle hat man nicht dieses Problem. Dann gehört all E/A Adressen zu den PI des CPU.

Ein weitere verfahren konnte z.B. sein:
CP342-5 ist DP Master in S7-300 Station.
I/O-Adressen in verwendung in S7-300 Station: Bytes 0-19
I/O-Adressen in verwendung in ET200M Station: Byes 20-39
DP_RECV liest alle Eingangsbytes von 0-39 und zerlegt sie in ein Zwisschen-DB.
Mit BLKMOV werden Eingangsbytes 20-39 von Zwisschen-DB in PI übertragen.
Dann sind die E/A Adressen 'synkronisiert' sozusagen.
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
oder:

I/O-Adressen in verwendung in S7-300 Station: Bytes 0-19
I/O-Adressen in verwendung in ET200M Station: Bytes 0-19 (im CP342-5) --> übertragen nach Bytes 20-32 in CPU
 
Aha !
Da hatte ich es Falsch verstanden !
Man kann tatsäglich dieselbe Adressen in die zwei Systeme wählen. Habe ich gerade ausprobiert.
Dann ist dein letzte Vorschlag den beste Verfahren.
Danke.
 
genau
die E/A-Adressen von CPU und CP haben nix miteinander zu tun.
Das sind zwei separate Bereiche.
 
Zurück
Oben