TIA S7 Kommunikation PUT/GET/i-Device

itsdarkdownhere

Level-2
Beiträge
36
Reaktionspunkte
6
Zuviel Werbung?
-> Hier kostenlos registrieren
Guten Morgen

Ich versuche mich gerade an einer CPU-CPU Kommunikation in TIA V19.
Leider komme ich hier nicht so richtig weiter und hoffe auf eure Tipps.

Grundsätzlich möchte ich verschiedene boolsche Merker, welche durch eine HMI in der Master-CPU gesetzt werden, an eine Remote CPU weitergeben, damit dort die Ausgänge (Ventile) beschaltet werden können. Für die Übertragung wollte ich die PUT-Anweisung verwenden. Ich denke es gibt bestimmt noch elegantere Methoden dazu. Ein zusätzlicher FB steuert dann die Ventile an.

Ich versuche mich an dieser Anleitung von Siemens, komme aber nicht weiter:

Ich habe nun die S7-Verbindung in der Topologie+Netzsicht angelegt, in meiner Master-CPU einen Global-DB "gDB_PUT" mit den Variablen aus dem Handbuch angelegt. Dann habe ich eine Funktion erstellt, in welcher der PUT-Befehl instanziertn und der Status für Done/Error übergeben werden. In meiner Remote-CPU habe ich einen Global-DB "RecvData" mit der Variablen "testValue" erstellt.

In der PUT-Anweisung ist die Verbindung ebenfalls hinterlegt, allerdings kann ich den "RecvData"-DB mit Variable "testValue" nicht an ADDR_1 angeben.
Könnt ihr mir bitte weiterhelfen?
Ich stehe auf dem Schlauch, bin aber noch Anfänger.

Bei allen DB habe ich "Optimierter Bausteinzugriff" deaktiviert. "PUT/GET" Zugriff ist ebenso aktiviert.

Vielen Dank!
 

Anhänge

  • 2024-11-28_12-07.png
    2024-11-28_12-07.png
    85,2 KB · Aufrufe: 40
  • 2024-11-28_12-08.png
    2024-11-28_12-08.png
    9 KB · Aufrufe: 40
  • 2024-11-28_12-09.png
    2024-11-28_12-09.png
    8,8 KB · Aufrufe: 41
Zuletzt bearbeitet von einem Moderator:
Zuviel Werbung?
-> Hier kostenlos registrieren
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Okay danke schonmal euch allen.
Ich bin das Handbuch zum Thema I-Device nun durchgegangen und habe alles dementsprechend projektiert.
Mir erschließt sich aber nun noch nicht ganz, wie ich mit den Transferbereichen umgehen muss, bzw. wie ich mir diese Vorstellen kann.

Welche Adressen/Bereiche sind das? Sind das nun meine physischen Adressen, also die Eingangsbytes/Ausgangsbytes oder sind das Adressen im Speicher? Wie kann ich nun auf einen DB, eine Variable als Merker o.Ä. zugreifen?
 

Anhänge

  • 2024-11-28_14-40.png
    2024-11-28_14-40.png
    58,3 KB · Aufrufe: 21
Zuletzt bearbeitet:
Du definierst im Transferbereich den E/A Bereich in dem die Daten übergeben werden. Sinnvollerweise wählst du da einen Bereich der nicht im Bereich deiner physikalischen E/As liegt.
Entweder verwendest du dann im Programm deine projektierten E/As direkt oder du schiebst sie mit DPWR_DAT bzw. DPRD_DAT in einen passenden DB
 
Guten Morgen

ich steige da noch nicht so richtig durch. Die Transferbereiche sind definiert, Übertragungsrichtung, sowie die Länge in Bytes.
Aber wie/wo kann ich dann diesen allozierten Transferbereich ansprechen, bzw. mit Daten füttern?

Also Konkret Werte in diesen ablegen/auslegen?
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Aber wie/wo kann ich dann diesen allozierten Transferbereich ansprechen, bzw. mit Daten füttern?
Direkt über den projektierten E/A Bereich
1732871977812.png

Du schreibst auf Steuerung A z.B. auf QW100 irgendwas raus und dies kommt dann bei Steuerung B am z.B. IW100 an ( meine Adressen sind exemplarisch, du musst natürlich die von dir projektierten verwenden ).
 
Zuletzt bearbeitet:
Okay jetzt hab ich es verstanden. Ich kann dann einfach an einem Baustein im Controller als Ausgang Q1 nehmen und dann im I-Device am Baustein I1 als Eingang.

Gibt das dann aber keine Komplikation mit den physischen I/O? Wenn an einer I-Device eine I/O Baugruppe hängt und IX1.0 genutzt wird und die I-Device zusätzlich aus Transferbereich 1 ein Byte auf I1 empfängt?
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Gibt das dann aber keine Komplikation mit den physischen I/O? Wenn an einer I-Device eine I/O Baugruppe hängt und IX1.0 genutzt wird und die I-Device zusätzlich aus Transferbereich 1 ein Byte auf I1 empfängt?
Wenn du Hardware an der Steuerung mit dem Eingangsbereich z.B. E100 hast, dann kannst du den I-Device Eingangsbereich nicht auf E100 legen.
Das lässt TIA auch nicht zu ( Fehlermeldung ). Du musst natürlich einen eigenen, freien Bereich nutzen.
 
Jetzt funktioniert es, danke!

Mich interessiert nun trotzdem, wieso ich bei PUT/GET als Adresse keinen DB aus der Remote-CPU auswählen kann, sondern nur die Variablen und DB der sendenden CPU zur Verfügung stehen, bzw. bei Drag&Drop auch nicht funktioniert.
 
Zurück
Oben