Sonstiges Bedienung DP per CP mit einem DB

vollmi

Level-3
Beiträge
5.436
Reaktionspunkte
1.410
Zuviel Werbung?
-> Hier kostenlos registrieren
Hi zusammen

Wenn ich Remote IO und dergleichen über die CPU interne Schnittstelle reinhole (PN und DP) dann lege ich diese üblicherweise Adressgleich auf einen DB mit dem ich dann im Programm weiterarbeite.
Adressgleich bedeutet "PEW248" kommt auf DB1.DBW248 und "PAW250" kommt dann auf DB1.DBW250, ich lege also eingänge und ausgänge in denselben DB.

Wenn ich aber Remotes per DP_SEND und DP_RECV hole was man ja machen muss auf einer CP. Dann habe ich bisher PEW zusammenhängend auf einen DB gelegt und PAW ebenfalls zusammenhängend auf einen zweiten.

Gibt es eine Möglichkeit das irgendwie direkt in einen DB zu mappen? Oder ist das die einzige Möglichkeit.

Und das Zweite wäre. Wenn ich DP_SEND/RECV benutze kann ich im Peripherieabbild lücken haben? Also RemoteID 1 hat PEW0-20 und 200-240 und RemoteID2 hat PEW40-60 und 300-340 und ich übertrage dann mit DP_RECV einfach 340 Byte


Code:
      CALL  DP_RECV
         CPLADDR  :=W#16#3E8
         RECV     :=P#DB1.DBX0.0 BYTE 340
         NDR      :="ND_RCV_USV"
         ERROR    :="Error_RCV_USV"
         STATUS   :="Stat_RCV_USV"
         DPSTATUS :="DPStat_RCV_USV"

Und da ist dann alles drin? Oder müssen die Eingangs und Ausgangsbereiche zwingend alle zusammenhängen?

mfG René
 
Hallo René,

.."PEW248" kommt auf DB1.DBW248 und "PAW250" kommt dann auf DB1.DBW250, ich lege also eingänge und ausgänge in denselben DB...
Was machst du denn wenn es noch ein PEW250 gibt oder später hinzu kommt? Ich würde unbedingt zwei DBs verwenden. Adressbereiche die es nicht gibt, würde ich auch nicht übertragen (geht das überhaupt?). Zusammenhängende Adressbereiche im DB zu einem STRUCT zusammenfassen. Die Peripherieadressen würde ich eventuell im Symbolkommentar einfügen.

Gruß, Onkel
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo René,

Was machst du denn wenn es noch ein PEW250 gibt oder später hinzu kommt?

Genau darum habe ich gerne Lücken dazwischen. Als reserveplatz ohne das ich danach alles verrücken muss.

Adressbereiche die es nicht gibt, würde ich auch nicht übertragen (geht das überhaupt?).

Ob das geht frage ich mich eben. Bisher habe ich die Adressbereiche immer Lückenlos in den Hardwareeinstellungen definiert. Mit dem Nachteil das man bei Änderungen wirklich alle darauffolgenden Adressen wieder anpassen muss und das ebenfalls im ZielDB alles entsprechend verschieben musste und im Programm anpassen musste, was oft das runterladen von diversen Bausteinen nach sich zog.

Aber das in Strukturen verpacken pro Unterstation ist ne gute Idee. Ich möchte den ganzen Ablauf eben gerne optimieren.

mfG René
 
Zuletzt bearbeitet:
Zurück
Oben