Datenaustausch SPS - Runtime

Larry Laffer

Super-Moderator , User des Jahres 2008-2009
Teammitglied
Beiträge
14.426
Reaktionspunkte
3.282
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo zusammen,
bei meiner letzten Visu habe ich es wohl endlich mal geschafft, die Runtime und deren Kommunikation zur SPS in die Enge zu treiben (Runtime = ProTool , SPS = CPU 317-2DP , Kommunikation via MPI).
Der Hintergrund ist, dass das Haupt-Statusbild sehr viele animierte Info's enthält und das so nebenher auch noch ein paar Kurven aktualisiert werden und die Produktionsdaten ständig gespeichert werden.

Nun die Frage :
Ist es erfolgversprechend, den Datenaustausch statt über MPI z.B. mit IE oder Profibus zu machen und dabei die Performance zu erhöhen ? Vielleicht hat da ja schon einer mal so ein Problem gehabt und es ähnlich (oder auch ganz anders) gelöst.

Gruß
der Larry
 
ich hatte da auch mal so ein Ding, wo ich neben vielem Kleinkram auch noch eine Art Trickfilm über eine symbolische Grafikausgabe laufen hatte, die dann anfing, hakelig zu laufen, als dann immer mehr dazu kam. Weiß nicht, ob und was ich damals dagegen getan hab - ist schon rund fünf Jahre her. Aber, da ja MPI=187,5kBaud und DP bis zu 12MBaud, würd ich mal DP versuchen (z.B. bei PG-Status geht es dann wie Feuerwehr). IE eher nicht, da ich durch TCP/IP keinen so hohen Gewinn erwarten würde (aber da hab gerade erst allererste Erfahrung).

Ein Indiz hab ich Dir: neulich hab ich ein Panel extra von MPI auf DP12 umgestellt, um die Übertragung der Projektierung (initial, mit den diversen Extra-Files, Flex2007) zu beschleunigen - da macht die Übertragung danach fast Freude:cool: Aber - nur ein reines Bauchgefühl von mir - weil die Visu ja trotzdem auch über DP wohl mit irgend einem langsamen, azyklischen Dienst(protokoll) kommuniziert:confused: Teste ich aber nicht - Mach Du mal:ROFLMAO: (ich hab kein PT-Runtime - immer nur Panel, und das auch nicht am langen WE)
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ein Indiz hab ich Dir: neulich hab ich ein Panel extra von MPI auf DP12 umgestellt, um die Übertragung der Projektierung (initial, mit den diversen Extra-Files, Flex2007) zu beschleunigen - da macht die Übertragung danach fast Freude:cool: Aber - nur ein reines Bauchgefühl von mir - weil die Visu ja trotzdem auch über DP wohl mit irgend einem langsamen, azyklischen Dienst(protokoll) kommuniziert:confused: Teste ich aber nicht - Mach Du mal:ROFLMAO: (ich hab kein PT-Runtime - immer nur Panel, und das auch nicht am langen WE)

Ist schon OK ...
Es geht mir dabei in erster Linie um Erfahrungen ...
Ich würde mir dann auch ggf. einen seperaten PB-Strang nur für die Visu aufmachen ...
 
Für die Visu weiß ich es nicht, wenn ich mich bei einer Vipa Speed7 oder Siemens 319 direkt per Netzwerk an die CPU hänge geht Laden und Vergleichen von Bausteinen ruckzuck.
 
Hallo Larry Laffer

Bei größeren Projekten arbeite ich nur noch über Ethernet – Kopplung (HMI). Wichtig für die Geschwindigkeit ist es, dass man eine CPU mit Integrierter PN Schnittstelle nimmt. Bei einem CP muss ja die Kommunikation des CP’s auch noch über denn langsamen Rückwandbus. Hier mal eine Auflistung der Kommunikationsleistung von meinen letzten Projekt:
Kopplung über PN: 2x OP177B 1x PC - Runtime
Kopplung über DP: 2x Wago 750-333 ca.260EA 3x 750-650 RS323C 1x 750-461 NI1000
3x SEW Movidrive Compact 41 je 10-Worte
1x Mitsubishi MR-MG30 28-Worte
CPU: S7 317 PN/DP CP343-2 ASi (Kopplung von 3 ASi-Sicherheitsmonitore)

In den Pulten werden mit einen Zyklus von 200ms ca. 40 Worte gelesen. (Triggervariabeln von Fehlerworten, 5 Kurvenschreiber usw.)
In der PC – Runtime sind zusätzlich zu den 40 Worten, wie in OP177, ca. 90 Real-Zahlen und 10 Zeichenketten von einer Länge von 12 Stellen zu lesen. Die Real-Zahlen sowie die Zeichenketten werden mithilfe der Aktualisierungskennung innerhalb von 400ms gelesen und an eine SQL-Datenbank geschrieben. Die Zykluszeit der CPU beträgt ca.4-5ms. Die Kommunikationsbelastung in der CPU steht auf 20%.
Ich hoffe mit diesen angaben kannst du dir ein Bild von der möglichen Kommunikationsleistung machen.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
... ich glaube, ich präzisiere das mal ein bißchen ...

Meine RunTime hat aktuell ca. 800 Powertags - das ist eigentlich nicht viel ...
Die Anlage produziert im 3-Sekunden-Takt ein neues Teil, von dem die Messdaten, die die SPS erfasst hat, abgespeichert werden. Dazu gehört auch die Kraft-Weg-Messung einer Feder mit ca. 150 Werte-Paaren (Typ INT).
Weiterhin läuft noch 2 Trend-Erfassungen mit (nicht in der Visu sondern in der SPS, da aus den Werten eine Tendenz berechnet wird, die zu eigenständigen Alarmen führen kann). Diese Kurve wird zwar nicht kontinuierlich an die Visu übertragen, schon aber wenn man auf der entsprechenden Anzeigeseite ist.

In diesem Konstruct kann es zu Spitzen kommen, die die Visu Sekundenlang totlegen können. Für mich ist hier das Nadelöhr die MPI-Verbindung - an der Datenmenge kann und will ich nichts machen ...

In diesem Zusammenhang ist in der Visu für mich nutzbar : Onboard-Ethernet und eine CP5611 mit der ich MPI mache, aber auch DP machen kann ...

Gruß
LL
 
Hallo Larry,
ich denke deine Anwendung ist bestimmt nicht die kleinste. Wenn wir etwas anspruchsvollere Anwendungen hatten die schnell gehen sollten auch bei der Visualisierung sind wir auf PC Technik umgestiegen. Selbst bei kleinen PC (Siemens Panel PC 477 mit RTX / Flexible) sind wir wesentlich schneller als eine Standard CPU 317. Die Komunikation RTX -> Flexible läuft über den internen Bus und ist wirklich sehr schnell, das hält den PB Strang frei.
 
So,
an der Sache habe ich jetzt noch mal ein bißchen herumgebastelt.

Mein Versuch war, den Panel-PC an den Profibus (mit 12 MBit) zu hängen. Klappte toll - brachte gar nichts. Nett war, hier zu sehen, dass der 12 MBit Profibus (mit einer eigenen Schicht für die B & B-Dienste) nicht annähernd die Leistung im Datenaustausch brachte, wie der 187,5 kBit (schwache) MPI. Ich bin jetzt wieder auf MPI, habe aber meine Scripte extrem überarbeitet um ein brauchbares Lauf-Verhalten der Visu auch weiterhin gewährleisten zu können.

Was ich auch ausprobiert habe war der ominöse FC625 von Siemens - war schon mal ein Thema in einem anderen Thread. Der brachte gar nichts, war aber vielleicht auch für diese Angelegenheit nicht gedacht. Auch das Umstellen der Resourcen für den Daten-Austausch in der CPU-HW-Konfig hat m.E. nichts gebracht.

Nett war auch, dass auch Super-WinCC-Flex 2007 hier NICHTS besser hinbekommt wie ProTool.

OK, das eigentlich nur zur Vervollständigung dieses Beitrages ...
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo.

Hab ne WinAc Rtx und Wcf zusammen auf nem BoxPc 627B. Seit dem Dual Core flutscht die Sache... Kommt echt drauf an wieviele Tags permanent aufgefrischt werden und was die Rtx Windoof noch übrig lässt.
 
Kann nicht sogar MPI bei dieser CPU 12 Mbit?

Einen echten, spürbaren Geschwindigkeitsvorteil bekommt man aber eh nur, wenn die zu lesenden / schreibenden Daten einigermaßen zusammenhägend gelesen / geschrieben werden. Ich hab's mal mit Rezepturdaten (mehrere kb je Transfer je ein DB) gemacht - der Unterschied war sehr wohl spürbar und schneller als mit CP (wie schon beschrieben: Flaschenhals Rückwandbus).
 
Kann nicht sogar MPI bei dieser CPU 12 Mbit?

Das habe ich durch Zufall auch mal zwischendurch angewählt gehabt. In der Konsequenz ist der MPI dann nicht mehr ansprechbar. Ich hatte das aber zunächst für meinen Fehler gehalten - so gesehen also gut, dass du das hier ansprichst. Dann werde ich doch mal parallel die Hotline dazu befragen ...
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo.

Hab ne WinAc Rtx und Wcf zusammen auf nem BoxPc 627B. Seit dem Dual Core flutscht die Sache... Kommt echt drauf an wieviele Tags permanent aufgefrischt werden und was die Rtx Windoof noch übrig lässt.

Die Rechner-Leistung spielt bei der Angelegenheit (nach meinen Erkenntnissen) eine untergeordnete Rolle. Das Betriebssystem schon eher. Mit Win2000 beispielsweise läuft die Sache sicherer aber auch langsamer. Hier ist interessant zu beobachten, dass zu aktualisierende Variablen unterschiedlich gepollt werden. Das macht WinXP interessanterweise nicht. Hier kann es einem dann nur passieren, dass eine zeitlang gar nichts passiert.
Dieses Thema wäre aber für die Siemens-Hotline sicherlich eine Nummer zu hoch ...

Gruß
LL
 
@Larray

Du kannst gerne vorbeikommen und dich davon überzeugen!!!
Hab ich beide Rechner mit identischer Software drauf 627 und 627B. Das "B" macht die Musik (Dual Core).
Bei der B Version muss ich interne Skripte die mit externen Variablen arbeiten mit ner Schleife "schlafen legen" damit es nicht zur Variablenüberlast kommt. Auch interne Skripte werden mit dem Faktor 50 schneller abgearbeitet. Ist ja auch logisch - arbeitet beim 627 RTX und Wcf auf einem Core hat beim 627B jede Anwendung ihren eigenen Core.

Gruß
 
@xhasx:
Heh , heh , heh ...
Ist schon OK, Vielleicht habe ich mich da falsch ausgedrückt ...
Die Rechner, die ich im Augenblick so am Start habe sind nicht gerade Schlafmützen ... und Dual-Core haben die, die ich vergleiche alle. Ich habe allerdings nicht unbedingt den Eindruck, dass das vom System genutzt wird ...

Aber ...
Bei der B Version muss ich interne Skripte die mit externen Variablen arbeiten mit ner Schleife "schlafen legen" damit es nicht zur Variablenüberlast kommt.
Variablen- und Scripte-Überlast ist genau mein Thema ... Schreib mir doch mal mehr zu dem, was du da machst ...

Gruß
LL
 
Telefon können wir machen, aber ich kann mir auch vorstellen, dass dieses Thema irgendwann auch für Andere interessant ist - zumal es anscheinend von der verwendeten Visu relativ unabhängig ist.

Also konkret:
Wie verhinderst du eine Überlast ?
 
Vorab. Ich übertrage meine Rezepturdaten an die Steuerung per Skript. Der Vorteil - ich kann auswählen in welchen Db die Daten geschoben werden und zu welchem Zeitpunkt...
Das heißt ich muss meine "Internen Variablen" (ca. 3700 Werte) den "Externen Zuweisen"... Ich hab auch Array's mit bis zu 500 Reals drin die dann Indiziert in ner Schleife zugewiesen werden. Wfc überträgt dann aber bei nem Array immer alles und nicht nur den Index! Hab da auch schon nen SR bei Siemens aufgemacht... Ist eben so. Ein "Internes Array" auf ein "Externes Array" zweisen geht eben nicht direkt sondern nur indiziert. Bei der Zuweisung kommt es dann eben zur Überlast. Zu erkennen wann es soweit ist gibt es laut Siemens nicht.

An den Stellen im Skript wo es kritisch wird (ausprobieren - das Skript meldet ja die Stelle wo es nicht mehr mag) Einfach ne FOR NEXT Schleife platzieren die nichts macht. Wie hoch der Schleifenendwert ist hab ich als Eingabewert gemacht. Hängt eben vom PC ab!!!
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Diesen Fall habe ich so nicht ...
Bei mir kam es zu einer Überlast (hin und wieder) beim Abspeichern der Produktionsdaten. Hierbei habe ich per Handshake zur SPS sichergestellt, dass kein neuer Datensatz kommen kann, während der letzte noch in Bearbeitung ist. Angestossen wird das Script von einer Wert-Änderung eines DW's, das ich bei jedem neuen Datensatz um 1 inkrementiere. Diese DW wird ständig gelesen. Hier ist ganz nett zu beobachten, dass dieses DW trotz hohem Aktualisierungs-Intervall manchmal erst nach Sekunden gelesen wird (Vergleich SPS-Status und Anzeige des DW in der Visu).
Das hat sich jetzt verbessert, wo ich wieder auf MPI und WinXP bin, aber auftauchen tut das Problem immer noch sporadisch ...

An dieser Stelle war dein Ansatz mit dem "schlafen legen" interessant. Ich sehe da im Augenblick aber noch keine Realisierungs-Möglichkeit für mich ...
 
nee - nee,
jetzt nicht aufgeben ... so solltest du das nicht verstehen ...
In der Sache besteht bei mir ja immer noch eine Vakanz ...
 
Zurück
Oben