# Vernetzen von 2 S7 315-2DP über Profibus



## CrazyCat (2 Februar 2006)

Es sollte doch möglich sein 2 315-2DP ohne Zusatzhardware miteinander über Profibus zu verbinden, oder?

Ich habe beide Steuerungen in einem Projekt angelegt und diese über Profibus vernetzt.

Wenn ich den Baustein GET_CPU aufrufe und dort die Verbindung erstellen will bekomme ich die Meldung 

"Zwischen dem lokalen Partner und dem Remote - Parnter konnte kein gültiger Verbindungsweg gefunden werden, z.B. wegen fehlender Vernetzung oder ausgeschöpfter Verbindungsresourcen"

Auf beiden ist eine Verbindung über MPI auf ein Panel eingerichtet, eine Steuerung verfügt über einen CP der Daten via Ethernet sendet.

Es sind außer den beiden Steuerungen keine weiteren Profibusteilnehmer angelegt.

Eigentlich sollten 8 Verbindungen möglich sein, also schließe ich die fehlenden Resourcen aus.

Wer kann mir sagen wi der Fehler liegt?


----------



## Rainer Hönle (2 Februar 2006)

Wie ist die Einstellung der reservierten Verbindungen in der Hardwarekonfig? Wie sind die Verbindungen parametriert? Um welche Ausgabestände der CPUs handelt es sich?


----------



## Anonymous (2 Februar 2006)

Es sind folgende Verbindungsresourcen resrviert:

PG - Kommunikation: 1
OP - Kommunikation: 1
S7 - Basiskommunikation: 8
S7 - Kommunikation: 0 (bereits projektiert)

Es handelt sich um Steuerungen mit der Bestellnummer 315-2AF03-0AB0 mit der Firmware V1.2

Beide Steuerungen sind als Slaves im Modus MS angelegt, Verbindungsgeschw. 1,5MBit, Adressen 4 und 6.

Fehlt noch etwas?


----------



## Rainer Hönle (2 Februar 2006)

Anonymous schrieb:
			
		

> Beide Steuerungen sind als Slaves im Modus MS angelegt, Verbindungsgeschw. 1,5MBit, Adressen 4 und 6.


D.h. Sie möchten über einen Slave eine Verbindung zu einem anderen Slave aufbauen? Meines Wissens nach kann der Verbindungsaufbau nur von einem Master aus erfolgen :roll:  
D.h. ich weiß momentan nicht weiter  werde aber noch etwas weitergraben


----------



## CrazyCat (2 Februar 2006)

Eigentlich sollten im MS - Modus die Steuerungen selbstständig nach Anforderung zwischen Master und Slave wechseln.

Ein System mit einem Master und einem Slave wäre auch kein Problem, nur wenn ich in NetPro auf dieses System umstelle kann ich die Verbindung trotzdem nicht anlegen.

(Gilt auch für 2 Master)


----------



## volker (2 Februar 2006)

also master slave ist die beste lösung.

lege eine cpu als master fest. in hw-konfig den dp-bus doppelklicken und als master definieren. die andere cpu genauso aber als slave.

dann fügst du dem master profibus diese cpu hinzu. dann doppelklick auf die slave-cpu. dort unter konfiguration deine e/a's die du austauschen willst hinzufügen.


----------



## guenni (2 Februar 2006)

Ich denke auch das das nur geht wenn ein Rechner der Master ist.

Wurden die beiden CPU unter Eigenschaften gekoppelt?

Wenn man in der Hardwarekonfiguration die Eigenschaften des Slaves aufruft sollte unter dem Register Kopplung  dieses leer sein.

Guenni


----------



## CrazyCat (2 Februar 2006)

Jetzt hab' ich eine Steuerung als Master und eine als Slave.

Die Master - CPU hab' ich als Mastersystem festgelegt, anschließend hab' ich die Slave - CPU vernetzt.

Nun erhalte ich folgenden Dialog, in dem ich eigentlich nichts einstellen kann.


----------



## guenni (2 Februar 2006)

so wie es aussieht ist noch kein Master vergeben.
Wenn die Rechner gekoppelt sind sollte die Maske so aussehen.


----------



## CrazyCat (2 Februar 2006)

Ich hab' einen Master und einen Slave festgelegt.

Mittlerweile hab' ich es auch über MPI versucht.....mit der gleichen Fehlermeldung!


----------



## guenni (2 Februar 2006)

Wie sieht die Hardwarekonfiguration aus? Ich kann den Fehler nachvollziehen. Er tritt bei mir auf wenn das Mastersystem getrennt wurde.
Die Hardwarekonfiguration sollte etwa so aussehen.


----------



## CrazyCat (2 Februar 2006)

Die Steuerung am Profibusnetz wird bei mir nicht angezeigt!

Scheint als wäre das der Fehler.


Müßte die nicht automatisch eingetragen werden?

Wie kann ich diese einfügen?


----------



## guenni (2 Februar 2006)

nein die muss man aus dem Katalog PROFIBUS-DP bereits projektierter Stationen das Objekt CP31X ans Profibusnetz anbinden. Die Profibusadresse wird erst mit dem Koppeln eingetragen
Dies macht man unter Eingenschaften des Slaves im Register Koppeln.

Guenni


----------



## volker (2 Februar 2006)

wie ich vorgehe.

1. master-cpu im s7manager anlegen
2. slave-cpu in s7-manager anlegen.
3. in hw-config master-cpu dp-bus hinzufügen und vernetzen
4. slave-cpu als slave einstellen.
5. an den profibus des master die slave-cpu hängen (nicht aus dem cpu-ordner, sonder aus dem profibusordner).
diesen slave konfgurieren und die eas hinzufügen.

leider kann ich hier keine attachments hinzufügen.

ich habe mal ein beispiel hier abgelegt.
wie lange der link klappt weiss ich nicht (habe ja nur  eine dynamische IP)
https://80.144.138.126/forum/wbb1/t...tyleid=1&sid=aed22b604703231b3bd67c8470e5d054

ansonsten findest du das auf meiner hompage im forum unter sps


----------



## CrazyCat (2 Februar 2006)

OK.

Die Teilnehmer wären jetzt soweit vernetzt, aber Daten kann ich noch immer nicht austauschen.

Wie lege ich eine Verbindung für den Datenaustausch an?

Es wird noch immer der gleiche Fehler gemeldet.


----------



## guenni (2 Februar 2006)

Unter Konfiguration projektiert man auf der Masterseite Ausgänge welche
beim Slave als Eingänge ankommen und umgekehrt. Beide Stationen übertragen und dann sollte es eigentlich laufen.


----------



## CrazyCat (2 Februar 2006)

Tut mir leid, das verstehe ich nicht ganz.

Ich will Teile eines Datenbausteins (bzw. einen ganzen Datenbaustein) vom Master senden und beim Slave empfangen.

Bezieht sich diese Vernetzung auf Ein- und Ausgänge von Ein- und Ausgangskarten an der SPS?


----------



## volker (2 Februar 2006)

sieht die hwconfig jettt so aus wie auf guennis letztem bild?

wenn ja einfach doppelklick auf den slave dort unter konfiguration

x byte out und x bytes in anlegen.
das wars schon

hardware natürlich in beide cpus übertragen.


----------



## guenni (2 Februar 2006)

Ja.
Um einen Datenbaustein übertragen zu können denke ich man muss ihn Bereichsweise  auf die Ausgänge übertragen und im Slave umkopieren.

Ich lasse mich aber gerne eines besseren belehren.


----------



## CrazyCat (2 Februar 2006)

Ja, die HW - Config sieht jetzt so aus.

Ich kann mur zwischen Ein- und Ausgängen umschalten.

Ist das so richtig?

Die Länge hab' ich mal mit 32 Bytes angegeben.

Wie transferiere ich jetzt die Daten aus dem Datenbaustein?


----------



## volker (2 Februar 2006)

genau.
die max länge für einen ea eintrag beträgt 32 byte. du kannst aber mehrere definieren

wenn du direkt den db kopieren willst, nimmts du die bausteine aus dem simatic-net cp-ordner.
das klappt aber nur wenn du cp's einsetzt.


----------



## volker (2 Februar 2006)

nimmst du sfc20

      CALL  SFC   20
       SRCBLK :=P#DB100.DBX0.0 BYTE 100
       RET_VAL:=MW0
       DSTBLK :=P#A 128.0 BYTE 100
      NOP   0


----------



## CrazyCat (2 Februar 2006)

Einen CP hab' ich, der ist allerdings nicht für Profibus gedacht, sondern für Ethernet.

Dort gibt es eine GET_CPU300BK mit dem ich angeblich Daten an eine Remote CPU senden kann.

Leider brauche ich hierfür eine Verbindung die ich nicht erstellen kann.

Oder gibt es hierfür auch andere Bausteine die ohne Verbindung funktionieren?


----------



## volker (2 Februar 2006)

habe so ein verbindung auch noch nicht gemacht.
aber ich glaube du brauchst auf beiden seiten eine cp.


----------



## CrazyCat (2 Februar 2006)

Wenn ich das richtig verstehe verschiebe ich die Daten bei dem Teilnehmer bei dem ich die Ausgänge definiert habe in diese und lese sie anschließend von dem anderen Teilnehmer aus den Eingängen.

Habe ich das richtig verstanden?


----------



## volker (2 Februar 2006)

genau so ist es. welche a's auf welche e's (und umgekehrt) gehen hast du ja im slave definiert.


----------



## guenni (2 Februar 2006)

Ja du schiebst die Daten in die Ausgänge und liest sie an der anderen SPS an den Eingängen wieder aus. 

Eine andere Möglichkeit wäre vielleicht der Austausch über MPI mit
X-PUT und X-GET. Jedoch muss man dort selber kontrollien ob die Verbindung aufgebaut wurde.


----------



## volker (2 Februar 2006)

über mpi gehts ganz einfach über globaldaten. dp ist aber besser.

ich muss mich teils korrigieren.
die sfc 20 kann nicht in die peripherie schreiben.(also ab byte 127)

dafür musst du sfc14/15 nehmen

      L     256                         //anfangsadresse wo's hin soll
      T     #PAW_Addr_temp
      CALL  SFC   15
       LADDR  :=#PAW_Addr_temp
       RECORD :=P#DB10.DBX 0.0 BYTE 100
       RET_VAL:=#Ret_Val_SFC15


----------



## CrazyCat (3 Februar 2006)

Wenn ich die Hilfe richtig verstehe, dann schiebe ich Daten der SPS 1 von dem Datenbaustein in die Ausgänge.

An der 2. SPS muss ich mit der gleichen Methode die Eingänge wieder auslesen, wenn die Daten dort über Adresse 127 liegen, oder?

Gibt es irgendetwas das bei der Vergabe der Adressen zu beachten ist?

Oder kann ich die Daten in jeden Bereich der SPS schreiben, unabhängig vom Programm und den verwendeten Baugruppen?


----------



## volker (3 Februar 2006)

du bist nur an die vorgaben der cpu gebunden.

normale e/a's bei der 315er gehen bis 127. die pew/paw bis 766.

der vorteil wenn du den bereich bis 127 benutzt ist der, das du die bits in deinem programm direkt (z.b. u E 120.0) ansprechen kannst. darüber musst du diese in merker bzw datenworte transferieren.

der nachteil ist, das du bei 100 byte nicht mehr viel platz für normale e/a's hast.


----------



## CrazyCat (3 Februar 2006)

Danke für eure Hilfe und eure Geduld!

Das ist wohl der längste Thread, den ich in diesem Forum erstellt habe.

Soweit funktioniert alles, den SFC15 hab' ich noch nicht getestet. Ich denke ich werde mich auf den Bereich von 0-126 beschränken, das sollte eigentlich ausreichen.


----------



## JesperMP (3 Februar 2006)

*Nur ein kommentar.*

Es funktioniert mit datenaustauch über E/A peripherie.

Aber Datenaustauch wird nicht funktionieren über PUT/GET befehle.
Der Grund ist, die 315-2DP kann ein Server im DP Netz nur sein, nicht client. 
Das bedeutet: Die 315 können nicht eine Datenübertragung selber einleiten. Der ist auch der Grund, warum Sie nicht einen Verbindung in Netpro zwischen zwei 315s einbinden können.
Um PUT/GET zu verwenden, müssen Sie mindestens ein S7-400 oder ein CP Modul in einem des S7-300's benutzen.


----------



## CrazyCat (10 Februar 2006)

Das Problem ist das keine neue Hardware zugekauft werden soll, deshalb muss ich mich mit den beiden 315-2DP SPSen begnügen.

Mit einem Profibus - CP oder einer S7 - 400 würde das ganze wahrscheinlich einfacher gehen, aber diese stehen leider nicht zur Verfügung.

Das sollte in der Beschreibung der PUT/GET Befehle stehen, das man die Daten nicht ohne Zusatzhardware über diese Befehle austauschen kann.

In der Beschreibung steht nur "liest Daten aus einem definierten Bereich einer Remote - CPU", weshalb ich annahm das dies für alle CPUs gilt.


Beim Datenaustausch über die EA - Peripherie benötige ich an jeder SPS eine freie Eingangs- und eine freie Ausgangskarte, damit die Daten in beide Richtungen übertragen werden können, oder?


----------



## Ralle (10 Februar 2006)

@CrazyCat

Nein, du brauchst keine freihen EA-Karten, die für den Datenaustausch festgelegten EA-Bereiche werden von den Profibus-CP (denen in der CPU selbst) direkt beschrieben und können auch direkt ausgelesen werden.


----------



## CrazyCat (10 Februar 2006)

Blöde Frage, sind das nicht die Bereiche 0-126 und von 127 - Ende der CPU E/As wie sie bereits eingesetzt werden?


----------



## Ralle (10 Februar 2006)

Du kannst in den Prozessabbild-Bereich gehen, bis 127, dann kannst du die E/A direkt lesen und schreiben, oder in den Bereich oberhalb des PA, dann mußt du die Daten erst in einen DB (oder Merkerbereich) einlesen und am Ende des OB1 wieder zurückschreiben (Ich glaube SFC14/15?).


----------



## CrazyCat (10 Februar 2006)

Ja, die SFC14/15 und die FC14/15 kenne ich bereits.

Die sind für den Bereich oberhalb von der Adresse 127.


----------



## Werner54 (16 Februar 2006)

*Darf's auch gemächlicher sein?*

Datenbaustein (hier DB121) mit SFC67 in die eigene CPU kopieren:

ORGANIZATION_BLOCK OB 35
TITLE = "Cyclic Interrupt"
AUTHOR : Werner54
VERSION : 0.1

VAR_TEMP
OB35_EV_CLASS : BYTE ; //Bits 0-3 = 1 (Coming event), Bits 4-7 = 1 (Event class 1)
OB35_STRT_INF : BYTE ; //16#36 (OB 35 has started)
OB35_PRIORITY : BYTE ; //Priority of OB Execution
OB35_OB_NUMBR : BYTE ; //35 (Organization block 35, OB35)
OB35_RESERVED_1 : BYTE ; //Reserved for system
OB35_RESERVED_2 : BYTE ; //Reserved for system
OB35_PHASE_OFFSET : WORD ; //Phase offset (msec)
OB35_RESERVED_3 : INT ; //Reserved for system
OB35_EXC_FREQ : INT ; //Frequency of execution (msec)
OB35_DATE_TIME : DATE_AND_TIME ; //Date and time OB35 started
SFC67_RET_VAL : INT ; //Rückgabewert aus SFC 67 
RET_VALUE : INT ; 
SFC67_BUSY : BOOL ; //Empfangen abgeschlossen/läuft
RETURN : BOOL ; 
END_VAR
BEGIN
NETWORK
TITLE =Kommunikation mit Kommunikationspartner über MPI-Bus
//DB121 wird von DBB0 bis DBB55 übertragen)
//Im Kommunikationspartner sind für die Übertragung KEINE Eingriffe erforderlich!
CALL SFC 67 (//Aufruf des Bausteins X_GET
REQ := TRUE,//Übertrage Daten (Ja/Nein)?
CONT := TRUE,//Verbindung aufrecht erhalten (Ja/Nein)?
DEST_ID := W#16#3,//MPI-Adresse des Kommunikationspartners
VAR_ADDR := P#DB121.DBX0.0 BYTE 56,//Pointer auf die Variablenadresse im Kommunikationspartner
RET_VAL := #SFC67_RET_VAL,//Statusanzeige, negativ wenn ein Fehler auftritt
BUSY := #SFC67_BUSY,//SFC aktiv?
RD := P#DB121.DBX0.0 BYTE 56);//Pointer auf die Adresse, in die die Empfangsdaten geschrieben werden
NETWORK
TITLE =Kommunikation mit Kommunikationspartner beendet ?
//Nach erfolreicher Ausführung der SFC67 enthält #SFC67_RET_VAL die Anzahl der 
//richtig übertragenen Bytes
U( ; 
L #SFC67_RET_VAL; 
L 56; // 38 HEX
<>I ; 
) ; 
L S5T#200MS; 
SE T 0; // Timer 0
NOP 0; 
NOP 0; 
NOP 0; 
U T 0; 
= #RETURN; 
END_ORGANIZATION_BLOCK


----------



## CrazyCat (13 April 2006)

Ich habe nochmals eine Frage:

Ich habe 2 SPSen, eine 315-2DP (Slave) und eine 313C-2DP (Master), gemäß eurer Anleitung miteinander vernetzt.

Wenn ich nun an der Master - SPS Daten in das AW 0 schreibe, so sollten diese gemäß Projektierung an die Slave - SPS ins EW 0 geschrieben werden, von wo aus diese gelesen werden.

Leider erhalte ich am EW0 ausschließlich Nullen.

Das Lesen und Schreiben der Profibusdaten erfolgt ausschließlich im OB1.

Kann mir jemand verraten wo ich (erneut) mit der Fehlersuche beginnen soll?   


€dit: Bei der Verwendung des Befehls SFC15, um die Daten auf diese Art und Weise an die andere Steuerung zu bringen, kann maximal Double - Werte angeben und ich erhalte die Fehlermeldung "Beim Zugriff auf die Peripherie wurde ein (Zugriffs)Fehler erkannt".
Was hat das zu bedeuten? 
Die Siemens - Doku verrät leider nichts außer diesem Satz.


----------



## Taddy (24 April 2006)

Hallo
Wenn du möchtest schicke ich dir ein Beispielprogramm, das seit 6 Monaten in Betrieb ist (DP Bus 2XCPU 315 2DP).


----------

