Kommunikation mit zwei S7 200 im PPi-Netz

benz_de

Level-1
Beiträge
15
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo, ich hoffe hier kann mir wer weiter helfen!
Ich habe zwei S7 200 über ein PPI Netz mit zwei Master vernetzt.
Wie funktioniert das, daß die zwei mittels eines programmes miteinander kommunizieren? Ein kleines Testprogramm würde mir sehr helfen um das alles zu verstehen.
Ich bedanke mich schon mal in voraus.

MFG
benz_de
 
Hallo
Da gibts viele Arten der S7-Kommunikation die wiederum vom Netzaufbau abhängig sind. Beispiele der Datenübertragung stehen in den Siemens Tipps und Tricks. Ob ein Master/ Master "Netzwerk" nur mit 200-ern möglich ist würde ich erstmal anzweifeln - wenn aber sowieso nur zwei SPSsen verbunden sind ist das der Mechanik jedoch weitgehend egal. Wenn du über NETW/ NETR Telegramme überträgst (das ist 'ne Art Unterart der Globaldaten Kommunikation) gehts e.g. nach dem Prinzip:

Schaltende SPS: // also die wo der Motor dranhängt

U MW 20
= AW 20

Eingabe SPS //die mit dem "Schalter"

U EW 22
= MW 22
NETW MW 22
Das sollte natürlich der S7-200 AWL angeglichen und mit passenden Bytes versehen sein. Die Konfiguration "wohin" das MW 22 geschrieben wird erledigt z.Bsp. der Assistent in MicroWin. Oder aber du musst die empfangene SPS so hinkonfigurieren das diese MW 20 überschreibt (NETR) und die sendende SPS eben an die PPI-Adresse der Empfangsstation die Daten verpackt. Wenns richtig aufgebaut ist hat man damit nichts zu tun - sagt zumindest die Hilfe dazu ... und so wars glaub ich auch. :?:
mfg
tobias
 
Hallo
"Irgendwo" habe ich den Aufbau meines Test_Netzes aus einigen 216, 214, 'ner 226 und mehreren 31x notiert. Da mittlerweile alles über (PC) TS Adapter vernippelt - wobei auch die Adressenzuordnung der 200-er in STEP7 konfiguriert wird - und es schon lange her ist kann ich jetzt nicht 100%-ig sagen ob die reine 200-er Kommunikation noch vorhanden ist.

Ich suche das mal raus; was aber gute 2 Tage dauern kann da etwas ausserhalb.

Deswegen beschreibe ich mal stichwörtlich in Etwa wie ichs anfing (da auch ewig gesucht). Ich nahm 'ne 214 und 216, die über ProfibusStecker/ (Klingeldraht) verbunden sind. (Eigentlich reicht PIN 3 an PIN 3 und 8 an 8). In den Tipps und Tricks gabs ein Beispiel - dieses lief allerdings nur mit den 21x wie abgedruckt !!!
Die Konfiguration der Schnittstelle muss an die wirkliche Geschwindigkeit angepasst werden !, die nicht identisch mit eingestellter Programmiergeschwindigkeit des PPI Kabels sein muss. Bei den 21x sinds max.19200Bd bei den 22x 187,5kBd. Mit den Sondermerkern lässt sichs auch zur Laufzeit konfigurieren - am Anfang reichen aber die festen Werte der Grundeinstellung (SystemDatenBaustein). Beiden SPSsen müssen unterschiedliche MPI/PPI Adressen zugewiesen sein.
Jede CPU lässt sich damit sowohl vom PG als auch anderen CPUs über den selben Kabelbaum ansprechen. :roll:
Der einfachste Weg war das Merker(Variablen)Wort/byte - welches überschrieben oder abgefragt wird. Wichtig ist die zu allen CPUs passende Geschwindigkeit der PPI Verbindung.
(KGV:= KleinstesGemeinsamesVielfaches).
Mit etwas Geduld lässt sichs lösen -
Gruss FreePort
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ich danke ihnen für ihre Bemühungen.
Ich habe die 2 SPSens so verbunden wie sie es gesagt hatten, so schien mir das auch am logischsten. Die Baudraten stimmen überein und die Adressen sind auch zugewiesen.
Ich bin gespannt auf ihre Antwort.
DANKE!
 
Hallo
Ich habs eben hier noch mal nachgebaut:
Das PPI Kabel ist gejumpert auf:= 010000 (9600Bd - alles andere 0);
MicroWin:= 3.1 SPK2;
CPU:= 2 x CPU214 Rel:214 01.11; ADr:= 4 &
Einstellung der Kom:= COM1; PPI_Kabel_Adresse 0; MultiMasterNetzwerk _NICHT_ angehakt !!! Netzbezogene_Bd:= 9600Bd;
SystemDatenbaustein Bd:= Port0/ 9600;
//======================================================

In CPU2_ADR.3 steht nur:= //empfangende Station
LD MB22
= AB0
//======================================================
In CPU1_Adr.4 ists ein ElTako:= //SENDE_Station (NETW)
LD E0.0
EU
LPS //erstellt in KOP
UN A0.0
S M0.0, 1
LPP // --dto --
U A0.0
R M0.0, 1

NETWORK 2
LD SM0.0
MOVB MB0, AB0
Beide CPUs verkabelt und zur Sicherheit stellte ich die Uhrzeit noch auf 'wie PC'.

Was noch fehlt ist die Konfiguration der Schnittstellen. Diese übernimmt neuerdings wohl ein Assistent in MicroWin - oder in Step7 die NetzConfig. Von "Hand" sieht die SparConfig so aus:=
Alles sendende CPU bei NETW:=
Network 3
LD SM0.1 //erster Zyklus
MOVB 2, SMB30 //setzt PPI Kommunikation
Network 4
LD SM0.0
MOVB 3, VB21 // 3:= Adresse Empfangs_CPU nach TBL_NETW
MOVD &MB22, VD22 // &MB22:= Ad. MB22 (=A0.0) in CPU_3
MOVB 1, VB26 // 1:= Länge der Daten; hier 1BYTE (MB22)
MOVB AB0, VB27 // zu sendende Daten - hier AB

NETWORK 6
LD SM0.0
NETW VB20, 0 // das wird im Bsp jeden Zyklus verschickt; //real würde ich natürlich nur auf Änderungen //reagieren. :p
Wenn an PPI_4 der Port A0.0 umgeschaltet wird geht PPI_3 mit. So läufts hier. (Hab ich nur vom Zettel abgeschrieben - sollten da jetzt Druckfehler drin sein kannste auch den Abdruck aus den CPUs haben).
mfg, tobias (FreePort:= hatte mich anfangs falsch eingeloggt, oder ging nicht)
 
Erst mal danke ich dir Tobiasfür deine Hilfe.
Die Ansätze hatte ich auch schon aber jetzt ist mir einiges klarer geworden. Ich werde es gleich mal ausprobieren ob es funktioniert.
DANKE
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Tobias.

Ich habe leider ein Problem mit den 2 ertsten Zeilen

LD MB, 22
= AB, 0

Der zeigt mir an, das was mit der Eingabe nicht stimmt.
Was hat das mit dem MB22 auf sich?
 
Hallo
...tja das issn (Schreib)Fehler.
Ich nahm hier zuerst nur A0.0 und M22.0.
Dann gehts mit:
LD M22.0
= A 0.0 // "=" BitOper.
Byteweises = gibts nicht,
Muss im Byte also heissen:
LD SM0.0
MOVB MB22, AB0

Ich schreibs immer in Step7 Synthax Steno - da rutscht solches durch. Der SM0.0 (//Immer_AN) muss im KOP vorangestellt werden, da MicroWin vor jeder Box einen Kontakt erwartet.

Mehr steht nicht in der CPU mit Adresse 3 (ich hatte hier ADR 4 mit EL_Takko & Adresse 3) - das nur weil die "3" im oberem Zettel verschwand. (steht nur 4& nix ).
mfg, tobias
 
Hallo Tobias.
Das Progamm funktioniert, was ich nicht verstehe warum der Ausgang bei der "Sende SPS" auch gesetzt wird.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo
Tja- der wird gesetzt weil der ElTako so programmiert ist.
Wird statt A0.0 ein Merker, Variable, L (Byte, Word,DW) eingesetzt schaltets nur den Empfänger.
(Ein Tako z.Bsp. nur aus Merkern, Variablen, L's sieht etwas anders aus :!: ).

Das Beispiel nahm ich nur damit sichtbar wird das da was passiert. Realistischer werden Variablen, oder vorhandene Lokaldaten, verwandt - und (sofern die Hardware dieses unterstützt) der/die Baustein(e) parametriert. Das vereinfacht die Schreiberei ungemein.

In MicroWin kann das Datenbit (Byte,W,DW) einigermassen beobachtet werden. Dort sieht man u.U. Wege den Pointer direkt ins AusgangsByte(W,DW) zu transferieren - das bedarf allerdings auch _immer_ eines zyklischen Hauptprogramms (und passender PointerFormate).

Ein zyklisches Hauptprogramm besteht (bei S7) aus minimal einer Zuweisung - weniger führt nicht zum Erfolg.
mfg, tobias
 
Zurück
Oben