WinCC 200 Kreise dynamisch anlegen

mike1988

Level-2
Beiträge
19
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo, für eine Anlage müssen wir auf dem HMI darstellen welche Stellen bei einem Gerät bearbeitet wurden und welche Stellen noch nicht. Die Positionen wo die Bearbeitung stattfindet kriegen wir dynamisch vom Server und sind bei unterschiedlichen Produkten unterschiedlich. Die Positionen bekommen wir in mm diese könnten umgerechnet werden in Pixel fürs Wincc (x und y). Jede Position muss zweimal bearbeitet werden. Die Kreise sollen folgende Farben haben:

Grau = noch nicht bearbeitet
Gelb = 1. Runde Gut bearbeitet
Grün = 2. Runde Gut bearbeitet
Rot = in 1. oder 2. Runde schlecht bearbeitet.

Wir würden gerne die Kreise dynamisch erzeugen anhand eines DB auf der PLC. Je nach Farbe, die wir darstellen wollen, dachten wir an einen Integerwert den wir je nach Bearbeitungsstatus ändern. Wir sind uns leider nicht sicher ob dies überhaupt geht? Gibt es eine Möglichkeit einen Kreis dynamisch zu erzeugen und ihn an die Position zu "moven". Gibt es vielleicht einen besseren Trick als 200 Kreise zu erzeugen und die zu verschieben?
 
Dynamisch in der Runtime erzeugen lassen sich die Objekte nicht, du kannst nur per VBS in der Entwicklung Objekte im Bild erzeugen lassen. Das Duplizieren der Objekte geht eigentlich relativ schnell, ich glaube nicht dass sich das mit VBS lohnt.

Vom Grundsatz her gibt es aber zwei Varianten. Die erste wäre jeden Kreis mit einer "statischen" Animation mit der entsprechenden Variable zu animieren (z.B. Attribut Left mit einer SPS-Variable für PosX und Top mit einer SPS-Variable für PosY zuverbinden), die zweite wäre die Animation über VBS oder ein C-Script auszuführen.

Bei der ersten Variante würde ich auf jeden Fall ein Faceplate einmal je Objekt erstellen, damit du später bei einer Änderung nur an einer Stelle etwas ändern musst.

Bei der zweiten Variante über ein VBS/C-Skript kannst du normale Kreis-Objekte verwenden, und durch Anpassen des Skriptes quasi beliebig die Objekte modifizieren (einfärben, sichtbar/unsichtbar, Verschieben etc.), in dem du alle in einer Schleife durchgehst. Die 200 bzw. 200 mal x SPS-Variablen sollten dafür auf jeden Fall passend nummeriert sein damit sie einfach in einer Schleife verarbeitet werden können.
Auch wenn die Objektanimation in VBS schneller ist als in C-Script, würde ich trotzdem C verwenden und dann die Variablen mit GetTagMulti() gruppiert lesen, andernfalls kann es sein, dass das erste Lesen der gesamten Daten sehr lange dauert, weil der Datenmanager sich bei "normalen" Lesebefehlen in einer Schleife aus einem Skript etwas unschön verhält.
 
Im .Net-Umfeld (also nicht Siemens) wäre es möglich solche Controls zu erzeugen, die so etwas können und bei denen man sich nur ein Mal die Arbeit nmachen muss.
Ich habe so etwas für einen Rundschalttisch schon mal gemacht. Leider liessen sich diese Controls aber nicht im Siemens-Umfeld betreiben ...

Gruß
Larry
 
Danke schonmal für die Antworten.

Als Wincc ist folgende Version verwendet: WinCC RT Advanced, Läuft auf dem Open Controller.

Wahrscheinlich ist die Version 1 vom Thomas_V2.1 die beste. Sozusagen 200 Kreise einmalig erzeugen, die außerhalb des Bildes parken und dann an die passende Position moven?
 
Zurück
Oben