WinnCC Flex Strecke zur runtime generieren anhand ihrer Eckkoordinaten

thorsten

Level-1
Beiträge
105
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,

Stehe hier gerade vor nem kleinen Problem, möchte in meiner Visualisierung eine X/Y Kennlinie ausgeben, diese soll sich aus zusammengesetzten Streckenabschnitten zusammensetzen, deren Eckpunktkoordinaten ich in der SPS berechnet habe, nur wie kann ich daraus in der Visu Runtime eine Strecke erzeugen? Versuche einen Bildbaustein zu erzeugen und diesem die Koordinatenvariablen als Eigenschaft zu übergeben waren erfolglos, hier werden nur Konstanten akzeptiert.
Kann ich dies über ein Skript realisieren, kennt von euch jemand hier ein Beispiel zur realisierung?

Vielen Dank schonmal,

Thorsten
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Larry

Danke für deine Antwort, hab jedoch noch eine Frage dazu, wie bekomme ich das Active X in die WinnCC Umgebung intergriert? den Button eigene Controls habe bzw. Finde ich bei mir gar nicht.
 
Hallo,
bei deiner Anfrage "... in Runtime integriert ..." habe ich das als PC-Runtime interpretiert. Für ein TP / MP bin ich mir fast sicher, dass es da keine Möglichkeit gibt - weder mit noch ohne dem ActiveX.

Also ... was hast du genau für ein System / Applikation ?

Gruß
Larry
 
Wenn die Eckpunkte mit konstanten Abstand auf die X-Achse voneinander Liegen, dann kann man auch den "normalen" gepufferte Trendanzeige verwenden. Und das klappt auch bei Panele sowie als bei den Runtime.

Wenn die Eckpunkte beliebige X- und Y-werte haben kann, oder wenn die Punkte nicht auf eine Linie liegen sondern in einen Art "Streufeld", dann braucht man den ActiveX von Chestysoft.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo nochmal,

Ja du hast recht, habe hier eim MP Touch zu programmieren,
geht es damit etwa nicht?

Was ich vor habe, im grund muss ich nur einen Steigungsgraph für eine bestimmte Funktion ausgeben, also eigendlich was ganz primitives:
Eine Strecke ein Anfangspunkt (x/Y sowie ein Endpunkt bzw. Höhe / Breite) welche eben variieren können. Hab nun auch schon versucht über Skripte die Linieneigenschaften zu verändern, das haut aber nur für den Anfangspunkt hin, nicht für die Breite bzw. Höhe!

Kann das sein dass so ne primitive Funktion mit WinCC nicht realisierbar ist?
 
Also 1.) ja ... die Funktion kennt Flex nicht und 2.) ich denke nicht, dass das eine primitive Funktion ist.

Aber wie auch immer ... Flex kennt nur die f(t) und nicht die f(x). Du kannst also keine Wertepaare vergeben - das kann nur das von mir genannte ActiveX (ich setze das selber auch ein) und das halt auch nur in Verbindung mit ein bißchen Script und auch nur auf den PC's.

Ich hatte mir früher mal eine 2D-Kurve in eine 1D-Kurve mit festgelegter Werte-Anzahl umgerechnet. Das war aber auch nicht ohne und so richtig "schick" war es eigentlich auch nicht ... :rolleyes:

Was hast du nun vor ?
 
X/Y-Kurven mit "freien" X und Y Werteangabe sollte eine neue Funktion sein bei WinCC v11.
Wenn ich es richtig verstanden habe, dann werden die Punkte verbunden mittels Splines, und nicht mittels gerade Linien. Wenn das so ist, ist es für meinen Zweck unbrauchbar. Aber vielleciht ist es für Thorsten brauchbar.
 
@Thorsten:
Jesper meint TIA ...

@Jesper:
Ich hatte damit schon mal ein wenig herumgespielt (aber auch wirklich nicht mehr) und bin mir da nicht so sicher, ob das Ding bei TIA wirklich ein Ersatz für das ActiveX von Chestysoft ist.

Gruß
Larry
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Tja, leider steht mir hier beides nicht zur Verfügung, bin an das Touchpanel sowie an Wincc Flex 2008 gebunden .
Bin mitlerweile dazu übergegangen nur die Eckpunkte des Graphen sowie dazwischen interpolierte Punkte darzustellen, ist nicht die schönste Lösung aber wenns anders nicht geht!

Danke jedenfalls nochmal für eure Hilfestellung
 
Wie viele Punkte willst du denn zeichnen?

Ich habe das irgendwann schonmal über Skripte angefangen, aber jetzt mal etwas weiter ausgetestet.
Im Anhang ein Screenshot davon.
WinCCflex_XY_Diagram1.png

Was ich gemacht habe:
- 200 Linien-Objekte angelegt mit Namen Point_0 bis Point_199, Größe ein Pixel breit und ein Pixel hoch
- Über den Bresenham-Algorithmus werden die Pixel zwischen den Linienpunkten berechnet und die Linien Objekte entsprechend positioniert

Prinzipiell funktioniert das Ganze erstmal. Allerdings gibt es mehrere Dinge zu beachten:
Das Verschieben der Linien-Objekte über VBS ist nicht besonders schnell. Auf der PC Runtime dauert das Anordnen der 200 Objekte schon mal 1-2 Sekunden. Und bei jedem Bildaufruf müssen die Koordinaten neu gesetzt werden, da die Objekte ansonsten wieder die im ES projektierte Position einnehmen.

Die Anzahl der benötigten Punkt-Objekte hängt von der Linie ab die gezeichnet werden soll. Eine Zick-Zack Linie benötigt dementsprechend viele Objekte, und irgendwann ist dann bestimmt die Systemgrenze erreicht. Durch gruppieren der Objekte kann man hier zwar etwas tricksen, aber hab jetzt noch nicht getestet ob dann der Zugriff über ScreenItems noch funktioniert.

Wenn man mit einer entsprechend pixeligen bzw. lückenhaften Linie leben kann, könnte man hergehen und auf der X-Achse immer nur einen einzigen Punkt setzen (evtl. einen dickeren). Dann braucht man nur so viele Bildobjekte wie die X-Achse lang sein soll.

Wenn man bei einem Linien-Objekt den Anfangs- und Endpunkt setzen könnte wäre das alles viel einfacher, aber das geht ja leider nicht :(
 
Zurück
Oben