2 OP 270er über DP/DP Koppler steuern

Outrider

Level-1
Beiträge
745
Reaktionspunkte
5
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Freunde,
nach dem ich in mühsamer Arbeit meinen DP/DP Koppler zum Laufen gebracht habe und es geschaft habe einige Bytes zu übertragen kommt die nächste Hürde.

Ich möchte 2 OP 270 über den DP-Koppler laufen lassen.
Ich benutze auf beiden Seiten eine 314C-2DP CPU.

Beide Panels sind identisch , d.h. gleiche Bilder. Ich möchte in einem Panel eine Variable ändern und folglich soll in dem anderen Panel sich die gleich Variable entsprechend anpassen
UND UMGEKEHRT AUCH !!!!!! :icon_frown:

Es geht aber nicht !
Ich habe z.B einen Wert A =100 in beiden Panels und möchte ihn auf 90 ändern.
Tippe die 90 ein und einen Augenblick später springt der Wert wieder auf 100.
In dem anderen Panel hat sich nicht getan, der Wert blieb unverändert auf 100.
Ich vermute dass sich der Wert von hinten rum überschreibt.
Denn die Schreib und Lesebedinngung muß ja in beide Richtungen gelten.
Hier noch das Programmstück:

Panel A Panel B

L PEW 424 L DB50.DBD 34
T DB50.DBD 34 T PAW 424


L DB50.DBD 34 L PEW 424
T PAW 424 T DB50.DBD 34



Erläuterung:
DB50.dbd34 ist die Variable, sie wird in Panel B auf den DP-Koppler über PAW 424 überreicht, in Panel A kommt sie über PEW 424 rein und müßte den dortigen DB50.dbd34 überschreiben.
Jetzt geht das ganze aber auch genauso zurück, somit beißt sich die Katze in den Schwanz.

Wer kennt da eine Lösung
Danke für Antworten
 
Ich habe zwar keine Ahnung für was das gut sein soll, aber ein paar Punkte wären noch erfragenswert:
1. Der Koppler ist auf BEIDEN CPUs im P-Bereich?
2. Ist DAS Absicht?

Panel A Panel B

L PEW 424 // Lade Eingangswor. Soweit klar.
L DB50.DBD 34 // Lade Daten aus Panel. Eingangswort ist jetzt im AKKU2!
T DB50.DBD 34 // Transferiere wieder is Panel. Warum?
T PAW 424 // Transferiere an Ausgang.


L DB50.DBD 34 // Lade Daten von Panel.
L PEW 424 // Lade den Eingangswert.
T PAW 424 // Und gleich wieder raus.
T DB50.DBD 34 // Und ins Panel...

Ich würde mal sagen der Code, so wie ich ihn hier verstanden und dargelegt habe ist etwas überarbeitungsbedürftig.

Du must bei diesen Aktionen die zeitlichen Abfolgen beachten.

Ich würde den Wert nur bei Weränderung an die andere Steuerung schicken, das macht den Datenverkehr einfacher.

stehe für Rückfragen gerne zur Verfügung dtsclipper
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ich hab auch schon mal in diese Richtung gedacht, aber dann wegen zu kompliziert vertagt.

Dein Problem ist, das sich die OPs nicht einen "Speicherbereich" teilen, wie z.B. an 1 CPU, sondern dass die deiden "Speicherbereiche" immer über DP/DP umkopiert werden müssen.
Du müsstest eine Abfrage auf Wertänderung programmieren und in diesem Moment den einen als Master und den anderen als Slave bestimmen.

Wie gesagt ich hab nicht bis zum Schluss weitergedacht, vielleicht kennt jemand eine eleganter Lösung.
 
DP/DP die nächste

Hallo , sorry das listing war etwas zusammen gerückt, deshalb das konfuse, aber trotzdem erst mal danke für das Bemühen.
Ich versuch es noch mal:

Panel 2:
Netzwerk 1:

L DB50.DBD 34 // Variable im Panel 2, die an 1 übergben wird

T PAW 424 // Ausgabe der Variable über den DP Koppler


Netzwerk 2:

L PEW 424 // Einlesen der Änderung von Panel 1

T DB50.DBD 34 // Variable in Panel 2 schreiben


Panel 1:
Netzwerk 1:

L PEW 424 // Einlesen der Änderung von Panel 2

T DB50.DBD 34 // Variable in Panel 1 schreiben


Netzwerk 2:

L DB50.DBD 34 // Variable im Panel 1, die an 2 übergben wird

T PAW 424 // Ausgabe der Variable über den DP Koppler




Zur Frage wieso im P-Bereich:
Es sind viele Variablen im Panel , die übertragen werden sollen, der e/a -Bereich wäre zu klein ( 314er Steuerung )

Gruß
 
Zuletzt bearbeitet:
Ich würde das folgendermaßen versuchen (nicht getestet!):

1. Die Variable (DB50.DBD34) mit Hilfe einer lokalen Kopie auf Änderung überwachen (wurde hier schon vorgeschlagen)
2. Bei Änderung ein "Änderungsbit" setzen und mit rüberschicken
3. Das PEW nur übernehmen, wenn das Änderungsbit kommt
4. das Änderungsbit zurücksetzen, wenn PEW wieder übereinstimmt

Dass deine Variable ein Doppelwort und du über den Koppler nur ein Wort überträgst erwähne ich hier nur der Vollständigkeit halber.

Grüße von HaDi
 
Zurück
Oben