2x S7 300 MPI Verbindung, verschiede Projekte

blackedition

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

ich möchte über MPI einen DB von einer S7-300 (seperates Projekt) zu einer anderen 300 schicken (ebenfalls seperates Projekt).
Da das eine Client/Client Lösung darstellt wollte ich den SFC65 und SFC66 benutzen.
Die eine Station ist MPI: 2 und die andere MPI: 4.

Muss ich dazu irgendwas in NetPro konfigurieren? Ich dachte an unspezifizierten Partner...? Wie funktioniert das genau, vielleicht hat jemand ein Beispielprojekt?
Globaldaten kommen nicht weiter in Frage...


Bisher waren meine Bemühungen leider nur von wenig Erfolg gekrönt.

Grüße,
Thomas
 
Anbei mein bisheriger Code:

Program CPU 1
U M 0.7 //Taktmerker zum Aktivieren
FP M 1.2
= L 20.0
BLD 103
U M 1.1
= L 20.1
BLD 103
CALL "X_SEND"
REQ :=L20.0
CONT :=L20.1
DEST_ID:=W#16#2
REQ_ID :=DW#16#4
SD :=P#DB1.DBX0.0 BYTE 1
RET_VAL:=MW4
BUSY :=M1.0
NOP 0


Programm CPU 2
U M 0.7 //Taktmerker zum Aktivieren
FP M 1.4
= L 20.0
BLD 103
CALL "X_RCV"
EN_DT :=L20.0
RET_VAL:=MW30
REQ_ID :=MD114
NDA :=M118.0
RD :=P#DB2.DBX0.0 BYTE 1
NOP 0
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Verbindungen der S7-Basiskommunikation werden nicht in NetPro projektiert. Die Verbindungen werden von den SFC aufgebaut und nach der Datenübertragung wieder abgebaut oder bleiben bestehen (je nach Bausteinparameter CONT).

Zu einem Kommunikationspartner kann nur maximal eine Verbindung aufgebaut sein. Senden und empfangen geht also nicht gleichzeitig! Soll gesendet und empfangen werden, dann ist die abwechselnde Nutzung dieser einen Verbindung einfacher mit X_PUT und X_GET auf nur einer CPU zu realisieren.

Schau Dir mal die Step7 Hilfe zu Systemfunktionen/-funktionsbausteinen das Kapitel "Übersicht über die Bausteine der S7-Basiskommunikation" an.

Wenn Sie einen Auftrag angestoßen haben, dann kann die dafür aufgebaute Verbindung momentan nur für diesen einen Auftrag benutzt werden. Andere Aufträge zu demselben Kommunikationspartner können erst dann wieder abgewickelt werden, wenn der laufende Auftrag beendet ist. Beachten Sie daher folgenden Hinweis:

Hinweis
Wenn Ihr Programm mehrere Aufträge zu demselben Kommunikationspartner enthält, müssen Sie dafür Sorge tragen, daß Sie diejenigen SFCs, bei denen W#16#80C0 in RET_VAL angezeigt wird, zu einem geeigneten späteren Zeitpunkt erneut aufrufen.
Durchführung von Programmänderungen

Alle Teile Ihres Programms, die auf Aufrufe von SFCs der S7-Basiskommunikation unmittelbar Auswirkungen haben, dürfen Sie nur im Betriebszustand STOP verändern. Dazu gehört insbesondere das Löschen von FCs, FBs oder OBs, die Aufrufe von der S7-Basiskommunikation enthalten.

Anschließend müssen Sie einen Neustart (Warmstart) oder Kaltstart durchführen.

Falls Sie dies nicht beachten, können Verbindungsressourcen belegt bleiben, und das Automatisierungssystem befindet sich anschließend in einem nicht definierten Zustand.

Harald
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Eine Frage habe ich noch, derzeit hängt an jedem CPU noch ein OP per MPI,
diese Verbindungsressourcen bleiben aber unberührt bei Aktivierung von SFC67/68 oder nicht?

Die Verbindung zwischen CPUs wollte ich permanent bestehen belassen.
 
Ja.
In HW Konfig kann man bei den "Eigenschaften der CPU > Reiter Kommunikation" Kommunikationsressourcen reservieren. Da ist normalerweise mindestens 1 Ressource für OP-Verbindungen reserviert. Die Anzahl Reservierungen für S7-Basiskommunikation könntest Du ja vorsichtshalber etwas verringern und die für OP erhöhen. Solange noch nicht alle unreservierten Verbindungsressourcen in Benutzung sind ist das aber egal.
Aktuell benutzte Anzahl Verbindungsressourcen siehe "Zielsystem > Baugruppenzustand > Reiter Kommunikation"

Harald
 
Zuletzt bearbeitet:
Hinweis
Wenn Ihr Programm mehrere Aufträge zu demselben Kommunikationspartner enthält, müssen Sie dafür Sorge tragen, daß Sie diejenigen SFCs, bei denen W#16#80C0 in RET_VAL angezeigt wird, zu einem geeigneten späteren Zeitpunkt erneut aufrufen.

Reicht auch ein einmaliges aufrufen???
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Was meinst Du mit "einmaliges aufrufen"?
Nach einem Aufruf mit REQ=1 muß die SFC solange immer wieder aufgerufen werden bis BUSY=0 ist. (Bei den Folgeaufrufen ist der Wert von REQ egal, der wird ignoriert).

Harald
 
Ist es den sichergestellt, dass wenn BUSY=0 ist die Verbindung wieder abgebaut ist? Also ich mache das so, nachdem busy den Wert "0" hat springe ich auf die X_PUT Funktion zurück und die läuft dann das letzte Mal durch. Oder müsste ich das nicht machen?
 
Zurück
Oben