Frage zu Master/Slave zweier CPU 315-2DP

S7_Mich

Well-known member
Beiträge
208
Punkte Reaktionen
3
Zuviel Werbung?
->Hier kostenlos registrieren
Hallo,

bin dabei einen Master CPU315-2DP mit zwei Slaves CPU315-2DP zu verbinden. Dabei sollen jeweils zwei Bytes übertragen werden Also EB0 und EB1 --> AB0 und AB1 und umgekehrt. Der zweite Slave sollte auch zwei Bytes übertragen nur mit dem Adressbereich 10. Soweit konnte ich das projektieren. In der Anleitung von Siemens schreibt was von konsistene Verbindung und nicht konsistente Verbindung. Aber wo ist der Unterschied. Eigentlich gleicht ja meine Projektierung einer einfachen Verbindung wie z. B. MPI mit Globaldaten. So sollte es auch sein. Der Vorteil, wenn man es über Profibus macht, sollte ja die Sicherheit der Übertragung sein, oder? Ich gehe davon mal aus, das ich eine konsistente Übertragung benötige, oder?

Siemens schreibt weiter: Wenn mehr als 3 oder 4 Byte konsistent übertragen werden sollen, sollte man im Ob1 die SFC14 und SFC15 aufrufen.

Auch ist mir der Reiter: Kosistent Gesamt oder Einheit nicht ganz klar. Habe mal die Einstellung Gesamt gewählt.

Was meint Ihr, geht das ganze in die richtige Richtung?

Gruß
Michael
 

plc_tippser

Well-known member
Beiträge
2.500
Punkte Reaktionen
301
Die Variablen sollten konsitent sein, wenn sie zusammenhängend übertragen werden müssen. Z.B. ein Analogwert der mit einem anderen Wert verglichen wird. Die Werte sollten konsitent übertragen werden, damit kein Fehler auftritt.

Der Bus überträgt die Daten hintereinander weg, ohne unterbrechung von anderen Daten.

Ich hoffe, dass war irgendwie klar.

pt
 

Taddy

Well-known member
Beiträge
288
Punkte Reaktionen
34
Zuviel Werbung?
->Hier kostenlos registrieren
Hallo

Manche Bussysteme übertragen nicht ganze projektierte Datenpackete auf ein Mal, sondern teilen die Übertragung auf kleine Stücke. Stell dir vor, was passieren würde, wenn man nur ein Teil von einem Analogistwert kriegt und später Teil 2. Aus diesem Grund soll man immer konsistente Daten wählen.
In dem Fall bist du sicher, daß die Daten wirklich relevant sind. Man kann konsistente Datem mit dem Befehl L PEB, L PEW bzw. L PED (identisch T PAB usw.) laden oder transferieren. Leider bis 4 Byte maximum. Auf manche Slaves kann man nur mit SFC 14 und 15 zugreifen.
Prinzipiel nutzt man die SFC um alle Daten auf einem Schlag in die SPS zu holen. Es gibt Bussysteme, die übertragen die Daten im "Hintergrund" d.h. asynchron (z.B. L1 bei S5). Die beste Methode ist am Zykluszeitanfang alle Daten vom Kommunikatiospartner auf anderen DB übertragen und den zweiten DB im Programm nutzen.

:D
 

Znarf

Well-known member
Beiträge
328
Punkte Reaktionen
21
Hallo S7-Mich
Wie Taddy schon schreibt, werden Byte, Word und Doppelword über PEB,PEW und PED übertragen. Braucht der Slave zb 3 oder mehr als 4Byte als Information greifen die PEB usw nicht mehr als Befehl. Ich könnte diese Daten zum einen in viele kleine PEB packen und sie nach und nach laden. Während dieser Ladezeit könnten sich aber Inhalte der PEBs ändern und die Daten währen inkonsistent. Wenn die benötigten Daten zb drei Analogwerte wären so stelle ich mir vor das ich als Konsistents Einheit wähle (3x2Worte). Brauche ich alle Daten auf einmal, so würde ich Gesamt wählen. Da deine zwei Byte hin und her gut mit PEW und PAW zu lösen sind ist die Konsistenz ja gegeben.

Gruß

Andreas
 
OP
S

S7_Mich

Well-known member
Beiträge
208
Punkte Reaktionen
3
Erstmal vielen Dank für eure Antworten.

Also wenn ich das jetzt richtig verstanden habe, muß ich auf Datenkosistenz achten, wenn ich ein Byte als ganzes im Slave abfragen möchte. Wenn ich aber jetzt in meinem Fall eigentlich nur einzelne Bits der 2 Bytes im Slave abfrage, ist es eigentlich ja egal, außer es werden die zwei Bits genau zur gleichen Zeit im Slave benötige? Wenn es aber egal wäre, könnte ich jetzt auch z. B. 20 Bytes übertragen. Versteh ich das jetzt richtig.

Stell ich jetzt in meinem Fall die Konsistenz auf Einheit oder Gesamt? Wenn ich überlege und das beachte, was ihr geschrieben habt. vermute ich jetzt mal auf Einheit. Also würden jetzt Byte für Byte konsistent übertragen. Wenn ich auf Gesamt stellen würde, würden mit die 2 Bytes komplett konsistent übertragen werden.

Wenn ich jetzt aber 10 Bytes konsistent übertragen möchte, muß ich die SFC´s verwenden (Ab dem 5. Byte). Wenn ich diesem Fall auf Gesamt gestellt hätte. Hätte ich aber auf Einheit gestellt hätte es funktioniert, hätte aber immer nur 1 Byte konsistent übertragen, oder?

Gruß und vielen Dank
Michael
 

Znarf

Well-known member
Beiträge
328
Punkte Reaktionen
21
Zuviel Werbung?
->Hier kostenlos registrieren
Yo, so habe ich es auch verstanden. Außer, wenn du 3Byte Konsistent übertragen willst, brauchst du auch die SFCs, da es ja kein PE... für 3byte gibt.

Bei der HWKonfig könntest du die Einheit auch auf Word stellen, um somit wordweise Konsistent zu übertragen. Aber mit der Einstellung gesamt bist du auf der sicheren Seite.

Gruß

Andreas
 
A

Anonymous

Guest
Eine Sache sollte noch engemerkt werden:

Solange nur die Eingangs- und Ausgangsadressen 0-127 angesprochen werden
(Sprich: Die Adressen liegen innerhalb des Prozessabbildes)
kümmert sich das Betriebssystem selbständig um die Konsistenz!

Die Eingänge werden am Zyklusanfang konsistent eingelesen
und die Ausgänge am Zyklusende konsistenz auf die Peripherie geschrieben.
 
Oben