TIA 2 x 1500er BSend, BRcv

volker

Supermoderator
Teammitglied
Beiträge
5.891
Reaktionspunkte
1.063
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo

Ich versuche eine Kommunikation zwischen 2 1516 via BSend, BRcv aufzubauen was mir nicht gelingt.
Habe es mit tcp-verbindung und isoontcp versucht.
Die Verbindungen werden auch aufgebaut.

Ich bekommen an den Bausteinen aber direkt einen Error.
Status ist immer 1 egal ob die Verbindung aufgebaut ist oder nicht (Netzwerkkabel von einer CPU getrennt)

Verwunderlich finde ich auch das wenn ich am Baustein Req auf 0 setze der Error nicht weggeht.
 

Anhänge

  • Zwischenablage02.jpg
    Zwischenablage02.jpg
    167,2 KB · Aufrufe: 82
Zuviel Werbung?
-> Hier kostenlos registrieren
ok. dann hatte ich da wohl was falsch interpretiert.
welche bausteine muss ich denn verwenden?
tcp-verbindung habe ich schon mal mit den t-bausteinen erfolgreich verwendet.

mal zum hintergrund.
ich habe eine 1518 cpu (server) auf der diverse artikeldaten gespeichert werden sollen.
ich habe einige "clients" die sich dort daten aus der 'artikeldatenbank' daten holen sollen.
(client fordert an... server stellt daten bereit....daten im client empfangen ('schrittkette'))
clients sind cp343-1 Lean und 1500er cpu's

zuerst dachte ich an put/get. das wäre einfacher da ich auf dem server nicht jedes mal eine neue verbindung hätte einrichten müssen (neustart der 1500er)
das kann die lean aber nicht als s7-verbindung.

also dachte ich mir ich mache das über IsoOnTcp. Ich dachte das würde dann mit bsend,brcv klappen.

i-device möchte ich nicht verwenden da die anforderung der clients ehr selten erfolgt.
ausserdem müsste ich die alle client in das serverprojekt integrieren.

nebenfrage:
wenn ich im server jetzt direkt alle zukünftigen verbindungen projektiere habe ich ja erst mal etliche verbindungen die nicht aufgebaut werden können (da noch nicht verfügbar)
kann ich diese irgendwie über die software deaktivieren? um wenn sie denn online gehen einfach zu aktivieren ohne die cpu neu starten zu müssen?
 
also wenn die an der 1518 keinen CPU-Stop nach Neuanlegen einer Verbindung haben darfst, dann bleibt nur TCON/TSEND/TRCV...

Beim 343-1LEAN ist das dann aber AGSEND AGRCV, wobei ich das noch nie gemacht habe...

Dein Problem ist die LEAN, die schränkt Dich extrem ein...

BSEND/BRCV geht m.M. mit der LEAN nicht.

Und PUT/GET musst Du in der 1518 projektieren, nicht in der 300er...

https://support.industry.siemens.com/cs/de/de/view/78028908

Seite 98

Gruß.

Also lange Rede kurzer Sinn:

entweder PUT/GET ind der 1518, dann musst Du aber Verbindungen anlegen (CPU-Stop), ausserdem bin ich kein Freund von PUT, da Deine 300er nicht mitkrigt, dass Du in irgend nen DB schreibst...

oder TCON/TSEND/TRCV bzw. AGSEND/AGRCV dann musst Du garkeine Verbindung anlegen, also kein CPU-Stop. Aber das hab ich zw. 1500 und 343-1LEAN noch nie probiert...
 
Zuletzt bearbeitet:
nebenfrage:
wenn ich im server jetzt direkt alle zukünftigen verbindungen projektiere habe ich ja erst mal etliche verbindungen die nicht aufgebaut werden können (da noch nicht verfügbar)
kann ich diese irgendwie über die software deaktivieren? um wenn sie denn online gehen einfach zu aktivieren ohne die cpu neu starten zu müssen?

Du kannst in der 1518 schon alle Verbindungen anlegen, sofern Du die ganzen IP-Adressen schon kennst ;) Mach nix, wenn der Partner nicht erreichbar ist. Deaktivieren kannst Du die Verbindungen meines Wissens nicht...

Mit TCON bräuchtest Du aber im Vorfeld garkeine Verbindungen anlegen, das macht ja dann der TCON, somit kannst Du auch bei noch nicht bekannten IP-Adressen im laufenden Betrieb erweitern...

Gruß.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Wenn Du möglichst wenig selbst machen willst, gibt es als fertige Lösung die LCom-Bibliothek von Siemens (kostenlos). Habe ich selbst in gemischten Umgebungen (1515, 318) im Einsatz. Da ist alles drin, auch für Fehlererfassung usw. Da kannst Du, wenn Du wie immer notwendig, jeder Verbindung eine eigene Id gibst, im Rahmen der Möglichkeiten Verbindungen voreinrichten und dann bei Bedarf aufbauen.
Läuft ab Firmware V2.5 problemlos.
 
Ich hole das Thema nochmal hoch. Obiges Problem habe ich im Griff wenn ich bei IsoOnTCP TSend/TRcv verwenden

Etwas anderer Aufbau.
Kommunikation von S7-1516 <-> CPU315 (interne Schnittstelle)
In beiden Steuerungen habe ich eine S7-Verbindung angelegt.
Die Verbindung wird aufgebaut.
Für die Kommunikation verwende ich BSend und BRcv (ich denke das ist richtig).
Funktioniert leider nicht. Habe immer Error 3 am Send-Bautstein. Rcv hat immer Status 25.

Error 3 R_ID ist auf der durch ID vorgegebenen Kommunikationsverbindung nicht bekannt, oder der Empfangsbaustein wurde noch nie aufgerufen.

Verwende ich anstatt BSend/BRcv Put/Get funkioniert es egal auf welcher CPU ich Put/Get verwende.
Also kann es nicht an der Verbindung liegen.

jmd einen Tip?
 

Anhänge

  • Zwischenablage04.jpg
    Zwischenablage04.jpg
    253,7 KB · Aufrufe: 41
Zuletzt bearbeitet:
Die R_ID verpaart BSEND und BRECV die müssen also auf den entsprechenden Bausteinen auf beiden Seiten gleich sein.Also BSEND auf einer Seite R_ID w#16#1 muss auf der anderen seine BRECV R_ID ebenfalls w#16#1 sein.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Die R_ID verpaart BSEND und BRECV die müssen also auf den entsprechenden Bausteinen auf beiden Seiten gleich sein.Also BSEND auf einer Seite R_ID w#16#1 muss auf der anderen seine BRECV R_ID ebenfalls w#16#1 sein.
Sicher? Habe mal am RCV (TIA) bei ID 1 und bei R_ID 101 eingetragen. das erzeugt fehler 1. Eigentlich klar da es diese Verbindung nicht gibt.

Laut Hilfe ist ID die lokale ID der Verbindung. R_ID die des Partners.
Die 1500er hat ID 101 (kann man im Bild linke Seite oben sehen. Die 315er hat lokale ID 1 (Bild rechte Seite unten)
Am Baustein BRcv (TIA) ID 101 und R_ID 1. Am BSend (315er) ID 1 und R_ID 101.
 
Sehr sicher. An ID kommt die LOKALE id der verbindung hin. Und an r_ID muss auf beiden seiten die gleiche id hin und sie muss auf beiden seiten eindeutig sein (und hat überhaupt nichts mit der verbindungsid zu tun)
 
Zuletzt bearbeitet:
OK. Habe mal bei R_ID auf beiden Seite 1 eingetragen (auch mal 10). Leider keine Änderung :(
 
Auf dem Bild war so. Jetzt habe ich bei ID der 1500er id 101und bei der 300er id 1. Bei beiden bei rid 1. CPUs neu gestartet. Auch mal die Netzwerkverbindung getrennt.
 
Kannst du mal probieren den RECV immer auf TRUE zu lassen und einfach nur Errorstati auszuwerten? Und beim Send auch mal die Errorstati getrennt auswerten?Kommt denn überhaupt ein Error?
 
Zuviel Werbung?
-> Hier kostenlos registrieren
@ducati
Die Verbindungen sind auf beiden Seiten grün

@vollmi
dauerhaft true am rcv ändert nichts.

Komisch ist, dass wenn ich anstatt BSend/BRcv Put/Get verwende geht es.
Geiche ID. Natürlich nicht gleichzeitig. Nicht verwendeter wird mit false am EN blind geschaltet.

Ich habe mal andere Hardware aufgebaut.
Alle Subnetzmasken sind 255.255.255.0. Als ID immer die jeweilige lokale ID der Verbindung verwendet.
RID BSend(CPU1) und BRcv(CPU2) sind gleich. Und umgekehrt eine andere RID.

Verhalten vom Error bei Test 1-3.
Error kommt und beendet damit REQ. Error geht, also wird Req wieder gestartet. so in ca 1 Sek-Takt.

Test 1 (obiges Beispiel)
CPU 1516 (IP:..84.220) <-> CPU 315PN/DP (IP:..111.202) also geroutet
Fehler am Send: 3. Status am BRCV: permanent 25 (es tritt kein Error auf)

Test 2
CPU 1516 (IP:..111.200) <-> CPU 315PN/DP (IP:..111.202) hänge direkt am gleichen X208
Fehler am Send: 3. Status am BRCV: permanent 25 (es tritt kein Error auf)

Test 3 (Bild Zwischenablage02)
CPU 1516 (IP:..84.220) <-> CPU 1516 (IP:..111.200) also geroutet
Fehler am Send: 3. Status am BRCV: permanent 25 (es tritt kein Error auf)

Test 4 (Bild Zwischenablage04)
Wie Test 3 aber als spezifzierte Verbindung
Am Send taucht zwar auch immer wieder Error 3 auf aber die kommunikation läuft.

Was zum Teufel mache ich falsch? :sb6:
 

Anhänge

  • Zwischenablage02.jpg
    Zwischenablage02.jpg
    200,3 KB · Aufrufe: 25
  • Zwischenablage04.jpg
    Zwischenablage04.jpg
    196,7 KB · Aufrufe: 23
irgendwie komm ich zwar nicht ganz mit,

aber was hast Du am LEN dran und was am RD_1 bzw. SD_1 ?

an den RD_1 bzw. SD_1 sieh das bei mir normalerweise so aus: P#DB300.DBX0.0 BYTE 60
am LEN steht dann dementsprechend: 60 dez

In Deinen Scrennshots hast Du an den LEN immer 0 angetragen?

Gruß.

PS: ok in der Hilfe steht

Länge des zu sendenden Datenblocks in Byte.Bei LEN = "0" werden alle Daten von SD_1 gesendet.

LEN = 0 hab ich aber noch nie ausprobiert...
 
Zuletzt bearbeitet:
Zurück
Oben