S7-Verbindung - Senden/Empfangen auf selben Datenbereich?

HarryH

Level-1
Beiträge
142
Reaktionspunkte
4
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo zusammen,

ich habe eine CPU's 315-PN/DP und eine CPU 319-PN/DP mit je einem Panel MP377. In der CPU319 habe ich eine S7-Verbindung zur 315 eingereichtet. Der aktive Verbindungsaufbau wird durch die 319 realisiert. In beiden CPU's gibt es je einen Sende-/ und Empfangs-DB. Mit dem FB12_BSEND und dem FB13_BRCV in der CPU319 werden die Daten zur CPU315 gesendet/gelesen. Das funktioniert einwandfrei.

Nun habe ich folgende Situation, wie ich nicht weiß wie ich das realisieren soll:

Ich habe auf dem Panel der CPU319 ein Integer Ein-/Ausgabefeld in die Adresse DB1.dbw0. Diese Variable ist ein Parameter der Maschine mit der CPU319. (--> ist jetzt nur ein konstruiertes Beispiel für mein Problem). Diese Variable wird durch den Bediener am Panel der CPU319 als auch von der CPU319 geändert und am Panel319 angezeigt.
Nun erfordert es die Aufgabenstellung das man auch vom Panel der CPU315 diesen Parameter Adresse DB1.dbw0 der CPU319 in einem Ein-/Ausgabefeld ändern kann. Und andersherum muss auch der Aktualwert dieses Parameters (Adresse DB1.dbw0 der CPU319) am Panel der CPU315 angezeigt werden. Also sozusagen ist das Panel315 eine Fernanzeige/Ferneingabe für eine Variable in der CPU319.
Wie kann ich das realisieren?

Meine erste Idee war, noch eine zweite S7 Verbindung einzurichten und dann auch mit dem FB12_BSEND und dem FB13_BRCV für die neue Variable zu arbeiten. Das geht aber nicht, da hier die Kommunikationswege für Senden/Empfangen getrennt sind und nicht auf den selben Datenbereich zugreifen können.

Ich hoffe ihr habt mich verstanden und habt eine Idee. Bin für jeden Hinweis dankbar.

Gruß
HarryH
 
Hallo HarryH,

Ich gehe jetzt einfach mal davon aus, das auf den Paneln WinCCflexible Läuft.
Wenn du in flexible ein E/A Feld anlegst wird es auch auf dem Bild immer nur gelesen, Erst wenn du eine Eingabe machst wird das Write Ereignis ausgelöst und der Wert wird in die Steuerung geschrieben.
Ich hatte mal so einen ähnlichen fall, wo über WEB-Connectoren Werte von einer SPS über eine Andere angezeigt und geändert werden sollen.

Ich hatte das Problem damals so gelöst, dass ich den Wert in einem Ausgabefeld angezeigt habe und über dieses Ausgabefeld ein unsichtbaren Button gelegt habe als Ereignis beim Klicken habe ich eine binäre Variable negiert und diese hat wiederum ein Popupfenster Sichtbar geschaltet, wo man dann den gewunschten Wert in ein E/A Feld eingetragen hat ( welches mit einer Zwischenspeichervariable in der Steuerung verknüpft ist).
Mit einem "Enter" Button hat man dann in der Steuerung ein bit gesetzt und das Popup wieder unsichtbar geschaltet.
Die Zwischenspeichervariable und das bit habe ichZyklisch in die Steuerung übertragen, wo der Wert her kommt und mit dem bit dann den Überschreibebefehl für die Variable ausgelöst.
Danach das bit wieder Kaputtgeschrieben, also auf false gesetzt.
Somit stellst du sicher dass die Daten sicher geschrieben werden.

Ich hoffe ich habe es einigermaßen verständlich geschrieben
vieleicht hilft es dir ja

Gruß
burns848
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Na das ist doch recht einfach ;)
Das ganze muss erstmal etwas aufgesplittet werden.
Du hast letztendlich die zwei EA-Variablen (Felder) auf den CPUs ich nenne sie mal EA319 und EA315. Darüber hinaus wird eine weitere Variable benötigt wo diese beiden Wert hin sollen. Ich nenne sie mal ZielDW.
Wie Du die Daten(EA319 oder EA315) zwischen den SPSen tauschst weist Du bereits. Daher werde ich auf diesen weg nicht eingehen.
Letztendlich bleiben somit zwei Variablen(EA-Felder) und ein ZielDW übrig.
Um in das ZielDW immer den aktuell neuesten Wert zu schreiben, wird ein Alt-/Neuwertvergleich benötigt.
->Immer wenn der Altwert von EA319 nicht dem Neuwert(von EA319) entspricht, wird dieser Neuwert in EA315, ZielDW und in den Altwert geschrieben.
->Immer wenn der Altwert von EA315 nicht dem Neuwert(von EA315) entspricht, wird dieser Neuwert in EA319, ZielDW und in den Altwert geschrieben.
Fertig.
Hoffe es noch halbwegs verständlich hinbekommen zu haben. Wenn nicht einfach nachfragen ;)
 
Zuletzt bearbeitet:
Hi,
wenn das alles über Ethernet verbunden ist, also das Panel der 315er auch die 319er erreichen kann, dann ist es am einfachsten im Panelprojekt der 315er ne Verbindung zur 319er zu projektieren.
Variable und EA Feld wären dann gleich wie im 319er Panelprojekt.
 
Danke für eure Antworten!

@SPSKILLER
JA das ist es! Gute Idee! So müßte es gehen! Bin ich garnicht drauf gekommen! Es stimmt, das alle CPU's und Panels über Ethernet verbunden sind, und damit jeder jeden kennt.

Habe dazu aber nochmal ne Frage:
Reicht es aus im 315er-Projekt NUR die CPU319 (ohne Programmbausteine) mit anzulegen und im NetPro mit dem Ethernet-Netz zu verbinden? Vielleicht kann jemand noch etwas dazu sagen.

Meiner Meinung nach müsste das gehen, weil man damit dann in WinCCflex die zweite Verbindung zur 319 einrichten kann. Man kann dann zwar nicht die Variablen direkt aus dem DB der 319 anwählen/anlegen, sondern muss die Variablen von Hand anlegen. Aber das wäre OK.

Gruß HarryH
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hei,

ich denke du musst im NetPro gar nix machen.

Es sollte ausreichen im 315er Projekt eine zweite Verbindung anzulegen.
Knoten und Partner usw. bleibt leer.

Unten im Bildchen der Steuerung trägst du die IP Adresse ein.
Variablen kannst dann halt nur absolut anlegen.

Micha
 
Zurück
Oben