Step 7 Zu wenig Bytes bei Master-Slave-Kopplung frei

zelle

Level-1
Beiträge
9
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,

ich brauche dringend Hilfe.
Ich soll in eine bestehende Anlage verschiedene Komponenten neu einbinden und habe nun bei der Kopplung zwischen Master und Slave nicht mehr so viele Bytes frei wie benötigt.
Master ist eine CPU 317-2 PN/DP und Slave eine IM151-7 CPU, die beiden sind über Profibus miteinander verbunden.
Frei sind nur noch 14 Byte in der MS Master-Slave-Konfiguration, ich brauche aber ca. 60 Byte.

Wie kann ich dieses Problem ohne Umbauten oder Austausch von Komponenten lösen?

Danke für eure Hilfe.

Gruß

Erika
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Danke für die schnelle Antwort.

Nun nochmals eine Frage. Muss ich die I_PUT/I_GET Bausteine im Master oder im Slave projektieren?
Ich habe leider noch nie mit Master-Slave-Kopplung zu tun gehabt. Immer nur eigenständige, kleine Steuerungen/CPU's.

Danke.
 
Im Master.

Weil ein normaler Profibus-Slave nicht von sich aus auf den Bus gehen kann und deshalb nur antwortet wenn er was gefragt wird, muß der Master der aktive Client sein und der Slave ist der passive Server.

Harald
 
Kannst du mir vielleicht ein Beispiel-Projekt zukommen lassen.... ich habs noch nicht ganz verstanden und mit dem Bsp. von Siemens komm ich auch nicht zurecht. :-(

Danke.
 
Muss ich für den Datenaustausch nur diesen FB in meinem Prg im Master anlegen/aufrufen und in der HW-Konfig bei der Master-Slave-Konfiguration 1 Byte E/A-Daten projektieren?
Natürlich noch die Bereiche in den DB's anlegen, aber das wars dann?
Wieviele Daten kann ich da hin- und herschicken?
Gibt es einen Grund warum man "im Normalfall" die SFC's14/15 benutzt statt I_PUT und I_GET?

Gruß

Erika
 
Zuletzt bearbeitet:
Muss ich für den Datenaustausch nur diesen FB in meinem Prg im Master anlegen/aufrufen und in der HW-Konfig bei der Master-Slave-Konfiguration 1 Byte E/A-Daten projektieren?
Ja.
Das eine Byte E/A braucht man, weil man keinen DP-Slave ohne E/A projektieren kann. Den Slave muß man projektieren, weil I_PUT/I_GET als Partneradresse keine Profibusadresse wollen, sondern eine LADDR (die Diagnoseadresse des Slave). I_PUT/I_GET muß man benutzen, weil zwischen Deinen CPU über Profibus keine S7-Kommunikation, sondern nur S7-Basiskommunikation möglich ist (siehe Kompendium Kapitel 22.3.2)

Natürlich noch die Bereiche in den DB's anlegen, aber das wars dann?
... und jeweils die gewünschten Partnerspeicherbereiche an VAR_ADDR anpassen, und die Speicherbereiche auf der eigenen CPU an SD und RD entsprechend. Dann am besten noch toggelnde Lifebits in den Datenbereichen einrichten und damit die Verbindung überwachen. Das wars dann schon.
Das letzte Netzwerk in meinem Beispielcode kannst Du weglassen. Das wird nicht benötigt, da wird nur die Kommunikationsgeschwindigkeit gemessen - rein informativ.

Wieviele Daten kann ich da hin- und herschicken?
Die Bausteinhilfe zu I_PUT/I_GET sagt jeweils max 76 Byte. Das Kompendium Kapitel 31.2 sagt max 84/94 Byte. --> also max 76 oder ausprobieren
Braucht man mehr, dann kann man mehrere I_PUT/I_GET-Aufträge mit verschiedenen VAR_ADDR programmieren.
(die Bausteinhilfe bekommt man, wenn man den Baustein markiert und dann F1 drückt)

Gibt es einen Grund warum man "im Normalfall" die SFC's14/15 benutzt statt I_PUT und I_GET?
Das kann man eigentlich nicht miteinander vergleichen. SFC14/SFC15 braucht man, wenn man E/A-Adressen außerhalb des Prozessabbilds mit einer Konsistenz > 4 Byte ansprechen muß. I_PUT/I_GET benutzt man, um globalen Speicher des Slaves anzusprechen.

CPU-CPU Kommunikation mit SIMATIC Controllern (Kompendium)

Harald
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Nachtrag:

Bei Auftragsende noch auswerten, ob RET_VAL eine fehlerfreie Ausführung anzeigt.
siehe die Bausteinhilfe zur Auswertung von BIE und RET_VAL

Auftragsende ist:
- fallenden Flanke (FN) von BUSY
- oder BUSY=0 und REQ=1


I_PUT/I_GET nimmt man normalerweise nicht, weil man diese Kommunikation extra programmieren muß und sie extra Verbindungsressourcen benötigt. Die zyklische DP-E/A-Kommunikation wird vom DP-Master selbständig gehandelt und ist außerdem schneller als I_PUT/I_GET.

Harald
 
Danke für deine Antwort.

Jetzt muss ich leider nochmal nachfragen:

In meiner Anlage gibt es bereits eine bestehende Master-Slave-Kommunikation.
In der Master-Slave-Konfiguration sind schon 230Byte Master-Ausgang/Slave-Eingang (A1500-1730) und 176Byte Master-Eingang/Slave-Ausgang (E1500-1676) konfiguriert/belegt. Die Daten werden hier über SFC13/14 übertragen.

Nun würde ich meine zusätzlichen Daten über I_PUT/I_GET schicken, wie schon besprochen. Wo muss ich dann das eine Byte hierfür konfigurieren?
Kann ich das Byte in der bestehenden Konfig. einfach hinten anschließen oder muss das Byte am Anfang stehen?
Wie weiß die Steuerung über welches Byte die Daten übertragen werden sollen?


Kann ich diese beiden Arten der Datenübertragung zwischen Master und Slave überhaupt mischen?

Danke.

Gruß

Erika
 
Nun würde ich meine zusätzlichen Daten über I_PUT/I_GET schicken, wie schon besprochen.
Genau.

Wo muss ich dann das eine Byte hierfür konfigurieren?
Du mußt nicht "dieses eine Byte" zusätzlich konfigurieren. Es muß nur überhaupt irgendein E/A-Byte konfiguriert sein. Die andere Station (IM151-7) muß einfach nur DP-Slave der Master-Station (317-2PN/DP) sein. Das ist sie bei Dir ja schon. Dann hat sie auch bereits eine Diagnoseadresse - diese Diagnoseadresse mußt Du als LADDR für I_PUT/I_GET angeben. In HW Konfig brauchst Du nichts tun.

Kann ich diese beiden Arten der Datenübertragung zwischen Master und Slave überhaupt mischen?
Ja, kannst Du mischen. Das war auch die Intention hinter meinem Vorschlag. Du mußt nur beachten, daß die Daten über I_PUT/I_GET nicht konsistent (synchron) zu den konfigurierten DP-E/A-Bytes sind, weil diese Kommunikation langsamer und asynchron ist. Ist aber normalerweise kein Problem.

Harald
 
Zurück
Oben