TIA S7-1500 RT Kommunikation mit zweiter S7-1500

HelixX23

Level-1
Beiträge
23
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hi miteinander,
ich habe da mal eine Frage...

Mein System ist wie folgt aufgebaut:
Ich habe 2x eine 1516-3 PN/DP CPU und das TIA Portal Professional V13 SP1 Upd7.
Die beiden CPUs sind per PN X1 Schnittstelle miteinander verbunden.
Dabei wird ja automatisch eine CPU zum IO Controller.

Den IO-Controller nenne ich im folgenden Master, die Andere CPU nenne ich Slave.

Ich möchte jetzt alle gesteckten IO Karten der Slave CPU in das Prozessabbild des Masters transferieren.

Jetzt werden einige schon sagen, kein Problem... nimm doch einfach die i-Slave Kopplung und transferiere es damit.
Wie einige von Euch bestimmt schon festgestellt haben funktioniert das aber im PLCSIM nicht :sad:

Die Frage ist nun: wie kann ich eine RealTime(RT oder IRT)-Kommunikation zwischen den beiden CPUs nutzen um die einzelnen Karten als Block in mein Prozessabbild zu laden?
Das ganze sollte dann auch noch im PLCSIM simulierbar sein.

Ich habe folgendes versucht:
- TSEND_C >> viel zu langsam und Pakete im falschen OSI Layer da ISOonTCP
- PUT/GET >> viel zu langsam und brauche mehr als einen Zyklus um Werte zu holen
- DPRD_DAT >> kann die HardwareIDs der IO Karten aus der Slave CPU nicht erreichen

Wie es aussieht wäre die Funktion DPRD_DAT die schnellste von allen.... aber in meinen Systemkonstanten wird nur die HWID der PN Schnittstelle der Slave CPU angezeigt.
Ob DPRD_DAT jetzt RealTime ist oder nicht steht auch nirgendwo.

Der Siemens Support kann mir dazu auch keine Aussage machen was jetzt davon RT IRT oder nonRT ist.

PUT/GET und TSEND_C TRCV_C verhalten sich eher wie nonRT

Ziel des ganzen ist:

Die gesteckten Karten in der Slave CPU sektionsweise in das Prozessabbild der Master CPU zu laden.
schnelle Karten jeden Zyklus und nicht priorisierte Karten nur alle 100ms.
Wäre schön wenn ich jeden Zyklus einen neuen Wert bekämt falls vorhanden.
Wäre noch schöner wenn das ganze dann auch im PLCSIM funktioniert.

P.S.:
Wenn ich die I-Slave Kopplung benutzte um alle IOs vom Slave zum Master zu transferieren bekomme ich inklusive der Programm Abarbeitung circa 1200 Zyklen pro Sekunde hin (0,8 ms pro Zyklus in beiden CPUs)
 
Hallo,

1.) es gibt keinen "Slave" in deiner beschriebenen Konfiguration, das ist einfach nur ein Controller-Controller Aufbau
2.) PLCSIM kann nur Put/Get und TSend/TRcv, IO geht nicht sprich keine PN Kommunikation und auch kein DPRD_dat
3.) TIA unterstützt keinen Transferslottyp "Peripherie", das geht aktuell nur in Classic
4.) jeder Kommunikation ohne IO wie PUT/GET; TSend/TRCV ist non- Profinet, also kein RT und kein IRT

Frage:
Was genau willst du eigentlich mit diesem Aufbau machen? Wer hat die Kontrolle über die IO ? Wenn die Module von PLC_2 in den Einflussbereich der PLC_1 wandern und beide schreiben was auf ein Ausgangsmodule, wer gewinnt da?
Braucht es wirklich 2x S7-1500 oder kann eine davon durch ET200MP/ET200SP ersetzt werden?
Warum dies Festlegung das es mit PLCSIM gehen muss? Alleine schon die mit PLCSIM ermittelten Zykluszeiten sind nicht wirklich auf reale HW übertragbar.

Gruß
Christoph
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Christoph,
viele Dank für deine Antwort.

Zu deiner Frage:
Was genau willst du eigentlich mit diesem Aufbau machen?
Dieser Ausbau steuert eine Maschine mit mehreren Regelstrecken.

Die erste CPU (Master) hat die Kontrolle über die Anlage (Sie besitzt einen eigenen Schrank im Kontrollraum).
Positionssignale aller beweglichen Achsen werden hier über den Rückwandbus eingespeist (meisst SSI Karten).
Des Weiteren sind über Profibus DP die verschiedenen Motorsteuerschränke gekoppelt welche ihre IOs direkt ins Prozessabbild schreiben.
Die Kontroll Pulte sind auch per Profibus am Master angebunden.
Das Hauptprogramm läuft also hier ab. (wer fährt wann wo hin, wie schnell darf es sein, wo geht die Reise hin... die alles bestimmt der Master)

Die zweite CPU (Slave) hat folgende Funktionen(meist ist diese am Antrieb der Maschine in 3-5meter Rittal Schränken platziert):
1. Alle zum eigentlichen Prozess gehörenden Aktoren und Sensoren erfassen und schalten
1. Stellwerte die von der ersten CPU (Master) vorgegeben werden über PID Regler umzusetzen (hier habe ich einen Arsch voll an Reglern platziert)
2. Sicherheitsaspekte im Auge behalten bzw die vom Master vorgegebenen Grenzen zu überwachen (Beispiel: 40 proportional regelbare Pumpen dürfen in der Summe einen maximal Druck nicht überschreiten etc...)
und 3. nicht zeitkritische Sensoren und Aktoren schalten (Ob jetzt ein MagnetVentil 20 oder 30ms später schaltet ist hier nicht schlimm... 100ms wären aber uncool)


Wer hat die Kontrolle über die IO ?
Die Kontrolle über die IOs ist aufgeteilt. Grundsätzlich kann man sagen, dass die Master CPU die Kontrolle über ALLE IOs hat. Ausnahme sind hier die AnalogOut Karten die an die proportional Stellglieder geht (Servo/Prop Ventile beispielsweise)
Da die Slave CPU diese Analogen Ausgänge beschreibt braucht die Master CPU da nicht ran. Sie gibt nur den Sollwert vor. Die Regelarbeit übernimmt dann die Slave CPU (damit hat die auch viel zu tun).

Wenn die Module von PLC_2 in den Einflussbereich der PLC_1 wandern und beide schreiben was auf ein Ausgangsmodule, wer gewinnt da?
Dass ich keine Ausgänge doppelt beschreiben kann/darf/sollte ist bekannt :)

Braucht es wirklich 2x S7-1500 oder kann eine davon durch ET200MP/ET200SP ersetzt werden?
Es muss gezwungener maßen Software performant im Slave laufen weil sonst die Rechenlast für eine CPU zu hoch ist und ich dann an die magische Grenze der 2ms(500hz) Zykluszeit ran komme.
Ab einer Zykluszeit von >2ms bekomme ich ein unrundes Feeling in meine Regelkreise. Als ich noch mit den 300er CPUs gearbeitet habe, habe ich als "Slave" immer eine schöne VIPA CPU genommen.
Habe das ganze schon mal mit nur einer CPU 319er versucht... Ging auch war aber glaube ich 500,-€ teurer als wenn ich zwei 317er genommen hätte...
Der Schrank mit der CPU drin war extram groß da dort alle kritischen IOs drin verdrahtet wurden... Nunja seit dem sparen wir lieber Kupferkabel und setzen die Schränke an die Hotspots.

Warum dies Festlegung das es mit PLCSIM gehen muss?
Joar, ganz einfach... Die Schränke sind jetzt ausgeliefert. Habe die Kommunikation getestet und der Prozessabbild-Austausch funktioniert wie erwartet.
Nun möchte ich die komplette Anlage simulieren um am Zusammenspiel der beiden CPUs zu tüfteln.
Habe beispielsweise alle angeschlossenen proportional Stellglieder simuliert (per Hand). Diese sind am Slave angeschlossen. Den IST Wert bekommt der Master zurück geschaufelt etc.
Ich kann sozusagen die Maschine mit meiner Simulationssoftware (damit ist nicht PLCSIM gemeint) produzieren lassen ohne dass nur ein Sensor angeschlossen ist.
Dies geht aber nur wenn ich beide CPUs physisch da hab... Jetzt sind die aber auffm Weg nach China und ich möchte an der Stelle weiter arbeiten bevor ich die weggeschickt hab :(
Da PLCSIM das nicht kann muss ich jetzt einen alternativen Transportweg nutzen... Evtl sogar einen der mir die Rückrüstung auf der Baustelle erspart und dabei noch performanter ist (Wunschvorstellung)

Alleine schon die mit PLCSIM ermittelten Zykluszeiten sind nicht wirklich auf reale HW übertragbar.
Die Zykluszeiten sind aus den realen CPUs welche ich hier im Hause hatte abgelesen worden :)


Gruß
HelixX23
 
Das was ich möchte ist:
Die Master CPU schickt am Ende des Zyklus die Kritischen Ausgänge an die zweite CPU

Beispiel DigOut32 Karte am Slave:
Also Ethernet Paket erstellen... Alle 32Bits für die Karte ins Päckchen und abschicken.
Code:
CALL SCHICKE_AN_PN_CPU
  Send: "true"
  Source: "P#A100.0 BYTE 4"
  Destination: "P#A100.0 BYTE 4"
  HWID: "SlaveCPUxyz.PN-Interface.X1"

Dann die nächste kritischen Karte...

Die Karten die nur alle 100ms aktualisiert werden sollen werden mit dem 100ms Flankenmerker angestoßen.
Code:
CALL SCHICKE_AN_PN_CPU
  Send: "flank100ms"
  Source: "P#A200.0 BYTE 4"
  Destination: "P#A200.0 BYTE 4"
  HWID: "SlaveCPUxyz.PN-Interface.X1"

Die Karten die nur alle 500ms aktualisiert werden sollen werden mit dem 500ms Flankenmerker angestoßen.
Code:
CALL SCHICKE_AN_PN_CPU
  Send: "flank500ms"
  Source: "P#A300.0 BYTE 4"
  Destination: "P#A300.0 BYTE 4"
  HWID: "SlaveCPUxyz.PN-Interface.X1"

etc...

und das mit der performance von RT oder besser IRT Kommunikation.

Also da gleiche was der IO-Controller mit seinen Transferbereichen macht. Nur per Hand und mit Verzögerungen drin.
Bidirektional und PLCSIM kompatibel

Wenn das gehen würde, dann könnte ich die "Slave" CPU splitten und noch größere Anlagen bauen
Die "Master" CPU wäre dann nur noch Dirigent im Orchester :D
 
Wie waere es damit: die Zeitkritischen Steuerungsaufgaben in der maschinennahen Slave CPU programmieren. Die Unkritischen uebergeordneten Verwaltungaufgaben in der Master CPU... Und "EchtZeit" ist immer ne Definitionsfrage...
 
Zuviel Werbung?
-> Hier kostenlos registrieren
So ist es ja eigentlich auch... Die Master CPU steht hinterm Operator und hat es am nächsten zu all den Positionssensoren der Maschine.
Die Master CPU weiss sozusagen als erstes wie sie auf den Prozess reagieren muss.
Alles was den Antrieb angeht, also alle Bewegungen werden von der Slave CPU gemanaged...

Beispiel: Eine Achse soll gefahren werden.
Die Master CPU liest die Position der Achse direkt am Rückwandbus aus und schiebt dem Slave einen Wert zum fahren rüber +100%
Damit die Achse in Plusrichtung fahren kann muss der Ausgang A100.0 am Slave angesteuert sein
Wenn die Achse fährt regelt der Master die Achse auf die gewünschte Beschleunigung/Geschwindigkeit/Kraft und so weiter

Bei der Slave CPU sieht das so aus:
Die Empfängt das Signal die digitalen Ausgänge zu schalten und leitet es einfach weiter.
Das Fahrsignal für die Achse (+100%) ist der Sollwert weiterer Regelstrecken.
Bis die Achse in der Realität fährt hat die Slave CPU an der Stelle noch viel Arbeit vor sich.
Diese Arbeit darf die Master CPU nicht stören.

Die Beschleunigung einer Achse von 0 auf 100% findet in 110ms statt (Mechanische Grenze)
Wobei die zu erreichende Geschwindigkeit bei 100% variabel ist.

bei einer Zykluszeit von 1ms habe ich also 110 Abtastpunkte für meinen PID übrig um keinen Überschwinger in den mechanischen Anschlag hinzulegen...

Die Slave CPU ist also gut beschäftigt.
 
Zur Vollständigkeit halber:
Zitat Siemens(ein wenig aussm Kontext gerissen):
Ab ca. Ende des Jahres wird es eine Advanced PLCSIM für die 1500 geben, die dann auch eine Simulations-Schnittstelle besitzt. Über diese Schnittstelle kann dann SIMIT auch diese „1500er“-PLCsim
ansprechen, so dass die reale CPU nicht mehr nötig ist. Ob diese PLCSIM alle von Ihnen benötigten Funktionen abbildet, kann ich Ihnen leider nicht beantworten.

mfg und schönes Wochenende
HelixX23
 
Zurück
Oben