Datenaustausch zweiter S7-300

S7_Mich

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

ich möchte gerne über zwei S7-315 Daten austauschen. Ich habe mir gedacht, ich vernetzte sie einfach über MPI oder Profibus. Es sollen ungefähr 20 Bytes übertragen werden. Ich kenne eigentlich nur Kommunikation über Globaldaten und das funktioniert ja eigentlich auch wie ein DP-DP Koppler. Ich möchte aber gerne Daten gezielt hin und her schicken. Es müßte auch eine Verriegelung drin sein, d. h. wenn die eine sendet soll die andere nur empfangen und darf nicht senden.

Wie verbinde ich die beiden Steuerungen am besten und kann ich dann den AG-Send und AG-Receice verwenden?

Gruß
Michael
 
Hallo,

versuchs doch einfach mit fc1 / fc2 aus der Standard-Bibliothek "Communication-Blocks".

Gruß

Stephan
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Datenaustausch zweier S7-300

Hallo,

das habe ich mir auch schon gedacht. In der Beschreibung von dem FC1 steht aber, die Daten werden an die Baugruppe Profibus CP übergeben. Ich habe aber eine CPU mit integrierter DP Schnittstelle, kann ich da diesen Baustein auch nutzen?

Ich kann auch keine Verbindung projektieren im NetPro. Ich habe zwei CPU 316-2 DP einfügt. Wenn ich jetzt auf die CPU klicke und dann unten auf "Neue Verbindung", als PartnerStation die zweite eingetragene Station und als Verbindung S7-Verbindung wähle, dann kommt folgende Fehlermeldung. Remote Station unterstützt keine S7 Verbindung oder es liegt eine Resourcenengpaß vor??? Gibt es einen Baustein, der auch gezielt Daten über MPI verschicken kann? Denn Globaldaten der MPI Schnittstelle kann ich projektieren, das funktioniert!!

Gruß
Michael
 
Datenaustausch

Hallo

eine ganz einfache möglichkeit ist folgende

MPI Verbindung herstellen
dann mit SFC67 X_Get oder SFC68 X_Put daten lesen oder schreiben

uz
 
Datenaustausch zweier S7-300

Hallo,

vielen Dank für Deinen Tipp. Das ist wirklich ne einfachere Möglichkeit. Hab das ganze mal mit dem SFC probiert, konnte aber das noch nicht testen.

Ich habe jetzt nur noch ein grundsätzliches Problem.

Ich habe in der einen Station einen DB10 mit 10 Bytes. In der zweiten Station ebenfalls einen DB10 mit 10 Bytes. Es sollen in jedem Fall die zwei DB gleich sind (die Werte). Eigentlich sind nur zwei Zahlen abgelegt, der Rest ist Res. Errechnet die eine Station einen neuen Wert wird der in dem DB10 abelegt, und der Anstoß zum senden gesetzt, sodaß die beiden DBs wieder gleiche Zahlenwert haben. Nur muß ich das ganze ja noch irgendwie verriegeln, da angenommen die beiden cpus zeitlgleich ne berechnung durchführen, muß die eine erst den wert in die andere cpu schreiben und danach darf die andere erst weiter rechnen. meint ihr das es reicht, wenn ich das ganze verriegle mit dem "Busy" von diesen SFC´s.

Vielleicht denk ich ja auch zu kompliziert, aber was ist, wenn sich die beiden cpus im gleichen zyklus befinden, beiden möchten eine berechnung durchführen, es konnte aber daher das "busy" der anderen Station noch nicht per prozessabbild der eingänge eingelesen werden, dann würden ja beide cpus gleichzeit auf die andere station daten senden und dann würde ja das ergebnis das im db steht verfälscht. aber ob das vorkommt. das beide cpus im gleichen zyklus sind und vorallem ist ja das programm in den beiden cpus nicht identisch bis auf den fc der die berechnung machen soll. wie macht das ein profi?

was mir vielleicht noch einfällt, bevor man einen sendeauftrag anstößt und das busy signal der anderen Station nicht anliegt, könnte man noch eine zeit ablaufen lassen, z.b. die zykluszeit oder eine zeit die länger ist als die durchschnittliche zykluszeit.

ich sende das busyssignal an die andere station per globaldaten über mpi!

Was meint ihr dazu? Wenns euch hilf, kann ich auch mal mein testprogramm hier posten!

Gruß
Michael
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,

also ich hab das jetzt mal getesten. Funktioniert schon, aber ich hätte noch ein paar Fragen.

Ich habe in beiden Steuerungen einen DB10. In diesem DB ist ein DBD = Sollwert = Restwert

Wenn in der einen CPU alle Vorrausetzungen für eine Berechnung erfüllt sind, wird Restwert - Istwert = Restwert gerechnet. Jetzt soll der komplette DB10 an die andere CPU übertragen werden. Falls der Fall aller Fälle eintreten sollte, das in beiden CPU die Vorraussetzungen für eine Berechnung gleichzeitig erfüllt wären, darf natürlich erst die eine und danach die andere Daten in die andere CPU schieben. Also funktioniert das mit der SFC nicht so toll. Aber vielleicht denk ich auch zu kompliziert. Ist für mich das erste mal, das ich Daten zwischen zwei CPUs austauschen soll. Vorallem ist das Problem, das der Restwert wirklich stimmen muß.

Geht das nicht ein bißchen einfacher?

Gruß
Michael
 
Ich kann dir zwar nicht ganz folgen aber rechnen nicht beide das selbe? Somit ist dann auch das Ergeb. bei beiden gleich.

smoe
 
Zurück
Oben