S7-DP versus DP-DP-Koppler

WL7001

Level-2
Beiträge
182
Reaktionspunkte
17
Zuviel Werbung?
-> Hier kostenlos registrieren
Juchu, endlich habe ich mal eine saubere Kommunikation hinbekommen.
Jaja, ich weiß, für euch hier nix besonderes, aber ich habe mich bisher halt noch nie live damit beschäftigt und somit ist es für mich eben neu.

Hardware: S7-314C-2 DP als DP-Slave konfiguriert.
Eingangsadressbereich E500, Länge 16 Worte , konsistent
Ausgangsadressbereich A500, Länge 16 Worte , konsistent

Daten aus PLS mit SFC 14 wie folgt abgeholt:

CALL SFC 14 // Lese Daten
LADDR :=W#16#1F4 // entspricht 1. PEW-Adresse - hier 500
RET_VAL:=DB2.DBW0 // Status der Übertragung
RECORD :=P#DB3.DBX0.0 BYTE 32 // in DB3 ab DBB0 - 32 Bytes (16 Worte ) übertragen

Daten zum PLS mit SFC 15 wie folgt geschickt:

CALL SFC 15 // Sende Daten
LADDR :=W#16#1F4 // entspricht 1. PAW-Adresse - hier 500
RECORD :=P#DB4.DBX0.0 BYTE 32 // aus DB4 ab DBB0 - 32 Bytes (16 Worte ) übertragen
RET_VAL:=DB2.DBW2 // Status der Übertragung

Alles bestens.


Jetzt kommt der nächste Kunde ( andere Anlage ) und schreibt vor, das alles über DP-DP Koppler laufen soll.

Hardware : DP-DP Koppler ( 6ES7158-0AD01-0XA0 )
"Steckplatz 1" : 64 Worte Eingang ( Adresse E500-627 )
"Steckplatz 2" : 64 Worte Ausgang ( Adresse A500-627 )

Jetzt die Frage : Kann ich diese Adressen auch wie oben ansprechen ?
Zum Beispiel so ?

Daten aus PLS mit SFC 14 wie folgt abholen:

CALL SFC 14 // Lese Daten
LADDR :=W#16#1F4 // entspricht 1. PEW-Adresse - hier 500
RET_VAL:=DB1.DBW350 // Status der Übertragung
RECORD :=P#DB3.DBX0.0 BYTE 256 // in DB3 ab DBB0 - 256 Bytes (64 Worte ) übertragen

zum Beispiel so ? Daten zum PLS mit SFC 15 wie folgt schicken:

CALL SFC 15 // Sende Daten
LADDR :=W#16#1F4 // entspricht 1. PAW-Adresse - hier 500
RECORD :=P#DB4.DBX0.0 BYTE 256 // aus DB4 ab DBB0 - 256 Bytes (64 Worte ) übertragen
RET_VAL:=DB1.DBW352 // Status der Übertragung

Danke fürs lesen und antworten

Gruß Wilhelm
 
der DP/DP-Koppler stellt dir ähnlich einer E/A-baugruppe am Profibus Adressen zur Verfügung die im besten Fall im Peripherieabbild liegen, im schlimmsten Fall per PEW(D)/PAW(D) adressiert werden muß.

Du definierst also auf beiden CPUs den DP/DP-Koppler und legst die Schnittstelle fest, die beidseitig zusammenpassen muß. Also von A auf E und kannst die in der HW-Konfig angegebenen Adressen direkt im Programm verwenden.

eigentlich ein schönes Ding, son DP/DP-Koppler :rolleyes:
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Ja, das habe ich verstanden.

Ich möchte die Daten vom/zum DP-DP-Koppler nicht als PEW / PAW im Programm verarbeiten sondern erstmal gesammelt in einen "Lese-DB" und einen "Schreib-DB" schieben um von dort aus mit den Werten zu operieren.

Ich weiß nur nicht, ob ich das mit den SFCs so machen kann wie ich es oben beschrieben habe. Kann ich?
 
Sfc20 wenn im prozessabbild

ansonsten mußte dir ne kleine kopierschleife bauen ...
 
Zuletzt bearbeitet:
So?

CALL SFC 20
SRCBLK :=P#DB4.DBX0.0 BYTE 256 // hier stehen meine zu übergebenden Werte drin, 64 Worte
RET_VAL:=MW200
DSTBLK :=????

Was soll denn an DSTBLK? PAW500 um bei meinem Beispiel zu bleiben?
Wie sage ich dem DSTBLK denn, das das für 64 A-Worte gilt?
 
Zuviel Werbung?
-> Hier kostenlos registrieren
CALL SFC 20
SRCBLK :=P#DB4.DBX0.0 BYTE 256 // hier stehen meine zu übergebenden Werte drin, 64 Worte
RET_VAL:=MW200
DSTBLK :=????

Was soll denn an DSTBLK? PAW500 um bei meinem Beispiel zu bleiben?
Wie sage ich dem DSTBLK denn, das das für 64 A-Worte gilt?

256 Byte sind kein 64 Worte, das sind 128 Worte

Und eine normale 315-2DP hatte folgens mich ein processabbild von 128byte , ein 315F-2DP geht bis 383.7 und es ist in der HW config nich mochlich die grosse der processabbild ein zu stellen.
Ein 315-2PN/DP had ein processabbild von max 2048 byte.
 
Zurück
Oben