TIA S7 Verbindung zwischen zwei getrennten Projekten via BSEND /BRCV klappt nicht

Jens Hörmann

Level-2
Beiträge
27
Reaktionspunkte
5
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Zusammen

ich sitze hier gerade vor einem Problem und sehe wahrscheinlich durch Projektblindheit gerade den Fehler nicht.
Ich mochte zwei CPU via S7 Verbindung zusammen kommunizieren lassen über BSend/BRcv. Da die Projekte getrennt sind, habe ich bei beiden CPU eine unspezifische S7 Verbindung ausgewählt (siehe Bild).
CPU1:
Screenshot 2025-01-03 225641.pngScreenshot 2025-01-03 225808.png

CPU2:
Screenshot 2025-01-03 230034.png
Screenshot 2025-01-03 230157.png

Obwohl beide Verbindungen Online "Grün" sind. Findet keine Kommunikation zwischen BSEND / BRCV DB´s statt. Es wird auch keine Verbindung bei BSEND aufgebaut, "Done" wird nicht gesetzt und es kommt auf keine Fehlermeldung.


CPU1 zu CPU2 // CPU2 zu CPU1
Screenshot 2025-01-03 231203.pngScreenshot 2025-01-03 231358.png Screenshot 2025-01-03 231424.pngScreenshot 2025-01-03 231412.png

Irgendwas übersehe ich wohl gerade. Da ich sonst immer nur Verbindungen zwischen CPU´s in einem Projekt anlege, finde ich wohl gerade den Fehler nicht.

Zwischen beiden CPU werden Daten via 2 DB hin und her versendet.

Würde mich freuen, wenn mir jemand kurz helfen könnte.

Gruß Jens
 
Zuletzt bearbeitet:
Bleibt ja noch die Möglichkeit, dass die Aufrufe und Beschaltung von den Kommunikationsbausteinen noch nicht korrekt ist.

Zur Hilfe:


Schon Erfahrung mit den Bausteinen vorher gesammelt?

Die Darstellung des Codes wäre sicherlich hilfreich.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Bleibt ja noch die Möglichkeit, dass die Aufrufe und Beschaltung von den Kommunikationsbausteinen noch nicht korrekt ist.

Zur Hilfe:


Schon Erfahrung mit den Bausteinen vorher gesammelt?

Die Darstellung des Codes wäre sicherlich hilfreich.
hab sie gerade mit oben eingefügt, sollte soweit passen. Verbindung 1 und 2 jeweils von der Sender und von der Gegenseite
 
So aus der Hüfte und sonst ohne Plan sehe ich da unten links ne Variable "...LEN" mit dem Onlinewert 0. Ist das so korrekt?

Und ansonsten würd ich statt mit 10Hz zum debuggen Singleshots bevorzugen.
 
Ich halte es nicht für clever die Bausteine mit einem Taktmerker zu aktivieren. Mach es am besten mal mit einer einzigen Flanke, dann bekommst du evtl auch Fehler oder Done raus.

Die Fehler oder Done stehen auch nur einen Zyklus lang an, also mal per Timer verlängern und den Fehlercode per Move abspeichern.

Die Dokumentation aus meinem verlinkten Beitrag ist auch durchaus hilfreich. Kann einen Blick riskieren nur empfehlen.
 
Ich halte es nicht für clever die Bausteine mit einem Taktmerker zu aktivieren. Mach es am besten mal mit einer einzigen Flanke, dann bekommst du evtl auch Fehler oder Done raus.

Die Fehler oder Done stehen auch nur einen Zyklus lang an, also mal per Timer verlängern und den Fehlercode per Move abspeichern.

Die Dokumentation aus meinem verlinkten Beitrag ist auch durchaus hilfreich. Kann einen Blick riskieren nur empfehlen.
Ich teste das mal kurz
 
So aus der Hüfte und sonst ohne Plan sehe ich da unten links ne Variable "...LEN" mit dem Onlinewert 0. Ist das so korrekt?

Und ansonsten würd ich statt mit 10Hz zum debuggen Singleshots bevorzugen.
LEN 0 bedeutet, dass die max. Anzahl an Byte versendet wird. Die Taktrate passe ich noch an, soll später nur gesendet werden, wenn ein Wert oder eine Flanke im DB sich ändert
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ich halte es nicht für clever die Bausteine mit einem Taktmerker zu aktivieren. Mach es am besten mal mit einer einzigen Flanke, dann bekommst du evtl auch Fehler oder Done raus.

Die Fehler oder Done stehen auch nur einen Zyklus lang an, also mal per Timer verlängern und den Fehlercode per Move abspeichern.

Die Dokumentation aus meinem verlinkten Beitrag ist auch durchaus hilfreich. Kann einen Blick riskieren nur empfehlen.

Ich hab´s, funktioniert. Mega ich danke dir. Ein kleiner Hacken beim Verbindungsaufbau den ich vergessen hatte. Nun steht die Verbindung
Screenshot 2025-01-03 234755.png
 
Die Taktrate passe ich noch an, soll später nur gesendet werden, wenn ein Wert oder eine Flanke im DB sich ändert
Sowas ist unüblich und macht nur Ärger... wenn warum auch immer ne Änderung nicht erkannt wird oder gesendete Daten nicht ankommen...
Also sekündlich senden und gut...
Kenn einige so ereignisgesteuerte Datenübertragungen, immer wurde dann nachträglich noch ne Angstzwangssendung alle x Minuten eingebaut.🤷‍♂️
 
Zurück
Oben