Kurvenanzeige bei drei gleichen Pulte und Projekten

Funky

Level-2
Beiträge
155
Reaktionspunkte
65
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Leute,

ich habe in einer Anlage drei Pulte IPC277 mit WinCC-flexible-Runtime am Laufen (2008 SP3Upd2).
Zur Einfachheit wird das gleiche Projekt auf die drei Pulte gespielt (verschiedene IP-Adressen).
Die Bedienung kann somit, auch gleichzeitig, von jedem Pult erfolgen.

Mein Problem sind die bitgetriggerten Kurvenanzeigen. Das Pult was zuerst die „Kurvenübertragungsvariabel“ liest setzt sie ja zurück und die anderen Pulte schreiben die Kurve nicht.
Ich könnte ja in der SPS für jedes Pult eine eigene Variabel anlegen, aber wie sage ich den Pulten auf welche Variabel zugegriffen werden soll.
Mutipexvariabeln, Indirekte Variabel oder interne Variabeln sind im Pult für die Bittriggerung nicht zugelasen.

Hat jemand eine Idee? Vielleicht über einen Skript.


Mfg Harald
 
Ich könnte ja in der SPS für jedes Pult eine eigene Variabel anlegen, aber wie sage ich den Pulten auf welche Variabel zugegriffen werden soll.

Hallo,
genau so mußt du es machen : für jedes Bediengerät die Variable Kurventrigger und Kurvenanforderung seperat anlegen.
Jedes Bediengerät verwendet dann jeweils seine - projektiert sind die ja ganz normal im Variablen-Editor.
Das SPS-Programm muß dann (vorsichtshalber oder überhaupt) alle 3 Kurventrigger setzen.
Alernativ könntest du noch im SPS-Programm deinen einen Kurventrigger-Bereich behalten und den dann auf die 3 Bediengerät-Bereiche übertragen.

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

vielen Dank für die schnelle Antwort.
Das mit den seperaten Variabeln ist nicht das Problem.
Mein Problem ist das ich nach Möglichkeit nur ein Flexible-Projekt, mit einen Pult, für alle drei Pulte haben will. Das ist einfach Wartungsfreundlicher als wenn ich drei Pultprojekte habe die sich nur von denn Kurventriggervariabeln unterscheiden. Ich muss sonst jede Änderung in drei Projekten durchführen.

Gruß
Harald
 
... gut gedacht ... aber in diesem Fall m.W. so nicht umsetzbar (oder mit den von dir beschriebenen Effekten).

Wer schön sein will muss leiden ... ;)

Damit will ich sagen : du mußt schon selbst wissen, was du haben willst ...

Gruß
Larry
 
1 Projekt für mehrere Bedienstationen

Damit man mit nur 1 Projekt für alle Bediengeräte auskommt, muß das Projekt alle Alternativ-Projektierungen enthalten. Wenn das nicht möglich ist, dann wird es leider nichts mit "1 Projekt für alle". Die Alternativ-Aufgaben verzweigen abhängig davon, auf welchem Bediengerät die Runtime dann läuft. Man muß "nur" irgendwie dafür sorgen, daß die Bediengeräte für die laufende Runtime unterscheidbar sind. Man muß ein Unterscheidungsmerkmal ausserhalb der Runtime finden oder schaffen, welches von der Runtime abgefragt werden kann.

Die Bediengeräte unterscheiden sich auf jeden Fall in der IP-Adresse und sollten sich auch im Devicename (Hostname) unterscheiden. Man kann auch im FLASH der Bediengeräte Dateien mit unterschiedlichem Inhalt anlegen, die beim Starten der Runtime ausgelesen werden.

Die IP-Adresse würde ich nicht als Unterscheidungsmerkmal benutzen, weil dann eine spätere Änderung der IP-Adresse eine Änderung der Runtime notwendig machen würde.
Die Variante mit dem lesen des Hostname erleichtert den Austausch der Bediengeräte durch Wartungspersonal ohne einen Projektierungsrechner, z.B. bei defekt. Der Hostname kann einfach im Control Panel eingestellt werden.
Meistens speichere ich aber auf den Bediengeräten eine INI-Datei (Textdatei), wo ich auch gleich andere Einstellwerte unabhängig von der Runtime speichern kann (z.B. welches der ansonsten identischen Bediengeräte welche Anlagenteile steuern darf). Außerdem sind Panel-Projekte so einfacher simulierbar.

Harald
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Harald,

das mit der INI-Datei ist eine gute Idee und problemlos über Skript auslesbar.
Aber wie bringe ich der Kurvenanzeige bei, dass sie ja bei jedem Pult eine andere „Kurvenübertragungsvariabel“ benutzen soll. Interne Variablen sowie Indirekte oder Multiplexvariablen sind ja nicht erlaubt.

Gruß
Harald (Funky)
 
3 Kurvenanzeigen voll ausprojektieren und auf jedem Bediengerät eine andere anzeigen, z.B. durch 3 verschiedene Bilder oder sichtbar/unsichtbar.

Ganz ohne interne Variablen wird es aber wohl nicht gehen (oder soll die INI-Datei immer wieder ausgelesen werden?). Wer hat sich denn diese Vorgabe ausgedacht? :rolleyes:

Harald
 
@PN/DP:
Die Variante mit den 3 Kurvenanzeigen, die über Sichtbarkeit "scharf" werden und dann auf 3 Geräten existieren ist zwar eine Möglichkeit (die mir auch nicht eingefallen ist) - ich finde sie dennoch sub-optimal. Beim Setzen des Triggerbits werden die Kurven vom Bediengerät abgeholt - ob benötigt oder nicht. Nun würden dann also an jedes der 3 Bediengeräte u.U. die 3 Kurven (weil 3 Anzeigen projektiert) übertragen werden. Wenn das jetzt noch häufiger passiert und die Kurven vielleicht auch noch einige hundert Werte beinhalten ist das für die Gesamt-Aktualisierung schon eine gewisse Belastung.

Gruß
Larry
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo

@ Larry Laffer
Bei den Kurvenanzeigen handelt es sich um „Echtzeit bitgetriggerte“ Kurven und nicht um „Puffer bitgetriggert“. Pro Bedienpult gibt es 4 „Echtzeit bitgetriggerte“-Kurvenanzeigen mit 8 Einzelkurven. Da ich die drei Pulte an einen eigenen Bus habe und als CPU einen IPC-477 mit RTX einsetzte habe ich keine alzu grossen Belastungsprobleme.

@PN/DP
Ich habe keine Vorgaben was ich für Variable einsetzte. Die Vorgabe kommt von Flexible. Für die alles entscheidende „Kurvenübertragungsvariabel“ kann man keine Mutipexvariable, Indirekte Variable oder interne Variablen verwenden.
Die Idee mit den drei Übereinandergelegten Kurvenanzeigen bringt ja auch nichts, weil die unsichtbaren Anzeigen ja auch die Bits in der „Kurvenübertragungsvariabel“ quittieren und dann die Triggerbits für die anderen Pulte gelöscht sind.

Wenn das Projekt nicht so groß wäre (ca. 34MB gepackt) könnte ich für jedes Pult ein eigenes Projekt aufbauen. Aber die dann entstehende Projektgröße (Mail) und die schlechtere Wartbarkeit (es muss jede Änderung drei Mal durchgeführt werden) sprechen eigentlich dagegen.

Harald
 
Anstelle von übereinandergelegten Kurvenanzeigen könntest du für diese Kurven jeweils ein separates Bild pro Panel erstellen. Je nach Panel-ID in der Ini-Datei wird dann das entsprechende Bild aufgerufen. Dann hat man zwar 2 zusätzliche Bilder, aber immer noch einfacher als drei Panelprojekte.
 
Hallo Thomas,

Danke für deine Antwort.

Da die Kurvenanzeigen ja richtigerweise die „Kurvenübertragungsvariabel“ immer Zyklisch liest und die Anzeigewerte per Handshake in den internen Speicher des Pultes ablegt, ist es uninteressant in welchem Bild sich die Kurvenanzeige befindet oder ob sie sichtbar ist.
Intersant währe ob man die „Kurvenübertragungsvariabel“ (siehe Bild) von Pult aus ändern kann (Skript?).
Bild1.jpg
Harald
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Harald

ich kenne mich jetzt nicht genug mit der gewünschten Kurvenanzeige-Funktion aus. Doch kann man nicht die 3 Kurvenanzeigen mit völlig getrennten Variablen projektieren? Und müssen die Kurvensteuerungsvariablen (einige) tatsächlich auf "ständig lesen" stehen?

Wie von Thomas_v2.1 präzisiert würde ich die 3 Kurvenanzeigen auf 3 verschiedene Bilder legen. Das kam aus meinem letzten kurzen (*) Beitrag wohl nicht so rüber. Das sichtbar/unsichtbar wollte ich nur der Vollständigkeit halber erwähnt haben.
PS: Ich kann mir im Moment noch nicht vorstellen, ob eine unsichtbar geschaltete Kurvenanzeige irgendwelche Aktionen ausführt. Doch bei Siemens kann man wohl nie sicher sein ...

Also bisher habe ich alles irgendwie so lösen können, daß es mit einem einzigen flexible-Projekt ging. Notfalls muß die CPU etwas mithelfen und dem flexible unter die Arme greifen. Das komplizierte bei so einem Projekt für mehrere Bedienstationen ist eigentlich nur das Erkennen, wofür gemeinsame Ressourcen verwendet werden können und wo man getrennte Ressourcen braucht.

Gruß Harald

(*) mit einem Tablet gestaltet sich das schreiben von längeren - womöglich formatierten - Beiträgen doch relativ unbequem
 
Hallo Leute, Hallo Harald

Zur Verdeutlichung von meinem Problem habe ich mal zwei Bilder gezeichnet.

„WinCCflex Proj1“ zeigt mein zurzeit aktuelles Projekt. Dies hat den Vorteil dass ich nur ein Projekt brauche. Der Nacheil ist das nicht alle Pulte jeden Kurvenpunkt schreiben. Es ist halt Zufall.


In „WinCCflex Proj2“ ist gezeichnet wie es richtig seien müsste. Aber es hat ja den Nachteil dass ich drei Projekte pflegen muss. Das ist wegen drei Variablen sehr Umständlich. Das Projekt hat jetzt schon über 100 Bilder und ca.1200 Fehlermeldung.

@Harald
Auch wenn die Kurvenanzeige unsichtbar ist wird die „Kurvenübertragungsvariabel“ gelesen und von Pult geschrieben. Das ist ja auch richtig so. Es macht kein Unterschied ob man die Eigenschaft der „Kurvenübertragungsvariabel“ auf „zyklisch lesen“ oder „bei Verwendung lesen“ stellt. Die Runtime liest die Variabel bei beiden Einstellungen.

Nur bei der Einstellung „auf Anforderung lesen“ wird das einlesen unterdrückt. Dies hat mich gerade auf folgende Idee gebracht.

Eigenschaft der „Kurvenübertragungsvariabel“ auf „auf Anforderung lesen“ Aktualisierungskennung=1

SPS schreibt in die „Kurvenübertragungsvariabel“ W#16#8001 und in eine neue „Pultauswahlvariable“ den Wert 1.

Pult liest über Skript die „Pultauswahlvariable“ und vergleicht sie mit dem Inhalt der Ini-Datei des Pultes. Bei Gleichheit wird in einer interner Variabel der Wert geändert. Die Wertänderung dieser Variable führt die Funktion „ AktualisiereVariable“ mit der Aktualisierungskennung von 1 aus. (Dieser Umweg macht sich Erforderlich, da im Skript die Funktion „ AktualisiereVariable“ nicht zu Verfügung steht). Dabei liest das Pult die Messwerte ein und setzt die „Kurvenübertragungsvariabel“ auf 0.

Nun wiederholt die SPS das Schreiben der Kurve mit den Werten 2 und 3 der „Pultauswahlvariable“

Ich werde es morgen testen

Harald
WinCCflex Proj1.jpgWinCCflex Proj2.jpg
 
Wie bereits geschrieben kenne ich mich mit der Kurvenanzeige-Funktion nicht genug aus. Aus Deiner Beschreibung sehe ich aber nur ein Problem, nämlich daß die flexible RT am Ende einer Kurvenübertragung als Handshake in die Kurvenübertragungs-Variable schreibt. Das darf nur 1 der 3 RT tun. Reicht es denn nicht, in den 3 Kurvenanzeigen auf 3 verschiedenen Bildern 3 verschiedene Kurvenanzeige-Variablen zu benutzen? Aus meiner Sicht muß doch "nur" verhindert werden, daß die RT auf Wertänderungen von auf gerade nicht angezeigten Bildern verwendeten Variablen reagiert. Das sollte doch mit der Einstellung "zyklisch bei Verwendung" erledigt sein. Oder liest die flexible RT wegen der Verwendung in einer Kurvenanzeige trotzdem automatisch "zyklisch fortlaufend"? (der WinCC flexible Simulator macht ähnlichen Scheixx, bei der RT weiß ich es nicht)

Hinweis: interne Variablen lösen bei Wertänderung keine Ereignisse aus (als Loop-Breaker)

Viel Erfolg beim Testen und berichte bitte weiter.

Harald
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Harald,

ich bin gerade mit meinen Test fertig. Die Kurvenübertragung läuft in wesentlichen so wie in meinen letzten Beitrag, von mir geschrieben.

Ich aktualisiere jetzt 4 Kurvenanzeigen mit je 8 Einzelkurven für alle drei Pulte so. Ich komme auch gerade so mit der Übertragungszeit hin. Ich muss die Kurven aller 0,9Sek. übertragen.


Bei mir lösen interne Variablen bei Wertänderung ein Ereignis aus!

Auch bei der Einstellung "zyklisch bei Verwendung" werden bei einer Kurvenanzeige zyklisch eingelesen. Das ist nicht abhängig ob das Bild geöffnet ist oder nicht. Damit blieb mir nur der Weg über die Aktualisierungskennung (auf Anforderung).

Noch mal allen vielen Dank
Harald
 
Zurück
Oben