Adressierung

ssound1de

Level-2
Beiträge
351
Reaktionspunkte
27
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Kollegen,

hab da mal ne Verständnis-Frage zum Profibus mit einer CP 342-5.

Ich betreibe an der CP einen Profibus Geber mit folgenden Parametern ...
4 Byte Eingangsdaten (Geber-Istwert)
4 Byte Ausgangsdaten (Geber-Sollwert - Preset setzen)

Die Eingangsdaten liegen auf Peripherie-Adresse 100-103
Die Ausgangsdaten liegen auf Peripherie-Adresse 200-203

Verstehe ich das folgende richtig ...
Ich muss bei der Übertragung zwischen CPU und CP immer
(mit FC2 DP_RECV) 104 Bytes (0-103) von der CP holen und
(mit FC1 DP-SEND) 204 Bytes (0-203) an die CP senden.

Besser wäre es den Geber auf Peripherie-Adresse 0 (Ein- und Ausgangsdaten) einzustellen, dann bräuchte ich nur 4 Bytes (0-3) von der CP holen bzw. an sie senden.

Ist das richtig so?
Oder ist die Transferzeit zwischen CPU und CP so kurz, dass das nicht relevant ist?

Danke für Eure Hilfe.

Gruß
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Du hast das m.E. richtig verstanden. Über die Transferzeit habe ich mir, ehrlich gesagt, an der Stelle noch keine Gedanken gemacht, ich würde es aber vermeiden wollen, dass unnötig viele Nullen transportiert werden müssen.

Grüße von HaDi
 
bei den Bausteinen gibst du doch bei den Parametern CPLADDR die jeweilige Adresse der CP an. da brauchst du doch nur 100 als hex, bzw 200 als hex angeben.
 
Ich bleib dabei, ssound1de hat es richtig verstanden.
CPLADDR ist die Hardwareadresse des CP, da kann man übrigens für Ein- bzw. Ausgangsadresse gar keine unterschiedlichen Werte eintragen, probiers doch mal aus.
Wir reden aber über die am CP angeschlossenen Slaves und deren Abbild im CP wird mit den Anypointern SEND (FC1) bzw. RECV (FC2) von/zur CPU übertragen.

Grüße von HaDi
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Danke für Eure Hilfe.

Wollte nur mal kurz eine Rückinfo geben.
Habe heute das Ganze mal im Versuch aufgebaut.
Es ist tatsächlich so.
CPLADDR ist die CP Adresse unter welcher der CP für die CPU erreichbar ist.
Der CP hat an seinem Profibus-Segment seine eigene Peripherie (unabhängig von der CPU-Peripherie).
Bei den FC's 1+2 kann man keine Startadressen vergeben - lediglich den Quell-/Zielbereich und die Anzahl der Bytes, die gelesen/geschrieben werden
sollen (z.B. P#DB10.DBX0.0 Byte 512).
Dabei ist das erste Byte im Block immer das Byte 0 in der CP-Peripherie.
Gebe ich z.B. als Pointer DBX10.0 an, entspricht das DBB10 dem Byte 0 im CP.

Ich werde im aktuellen Projekt am CP ein AS-i Gateway, mehrere Drehgeber und Waagen haben.
Da kommt schon was an E/A-Daten zusammen.

Habe in meinen Versuchsaufbau mal 2 Bytes und 300 Bytes (zyklisch mit FC1+2) vom/zum CP transferiert (also insgesamt 4 bzw. 600).
Zykluszeit-Differenz war zwischen den beiden Versuchen ca. 5ms (CPU315-2DP).
Es ist also auf jeden Fall sinnvoll, die ganze Peripherie am CP möglichst niedrig zu adressieren.

Danke nochmal.
Gruß
 
hi,
nochmal ne Frage. was meinst du mit "Es ist also auf jeden Fall sinnvoll, die ganze Peripherie am CP möglichst niedrig zu adressieren."?
du gibst beim lesen/schreiben die Adresse des CP an und die Länge der Daten.
da ist es doch egal, welche Adressen die CP nutzt. oder versteh ich was falsch?
 
Die Adresse des CP ist für diese Betrachtung unerheblich, die braucht FC1 und FC2, damit sie wissen, mit welchem CP sie sprechen sollen (es könnten ja mehrere drin stecken). Aber die verwendeten Peripheriedressen, die für die Slaves am CP verwendet werden, bestimmen die Länge der zu übertragenden Daten. Wenn nur ein Ausgangsbyte mit Adresse 200 benutzt wird, müssen trotzdem 201 Bytes übertragen werden, ist das Modul auf Adresse 0 konfiguriert, muss nur 1 Byte übertragen werden.

Grüße von HaDi
 
Zurück
Oben