WinCC E/A-Felder als Tabelle füllen

CBR-35

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

ich möchte aus einem größeren DB mit einem Array die Daten im WinCC darstellen.

Da ich noch keine größere Erfahrungen mit eigenen Skripte habe, möchte ich mir einfach einen Button mit einer kleinen For-Schleife im VBS programmieren und den entsprechenden E/A-Felder in der Schleife die dazugehörige Strukturvariable zuweisen.

Habt ihr eine Idee wie das ganze schöner und einfach zu realisieren ist?

Ansonsten habe ich aktuell das Problem das ich dem E/A-Feld keinen festen Ausgabewert zuweisen kann.
Als Direktverbindung kein Problem, im VBS passiert noch nichts.

Code:
Set Objekt = ScreenItems("EA-Feld1")
Objekt.OutputValue = 3

Gruß
 
Moin CBR-35,

sinnvoll oder sogar erforderlich ist dabei, die E/A-Felder, Button usw. mit einem laufenden Wert zu benamen.
Beispiel:

ioField09 ioField10 ioField11 ioField12
ioField05 ioField06 ioField07 ioField08
ioField01 ioField02 ioField03 ioField04

Dann kannst Du Dir in einer FOR-Schleife mit dem Schleifenindex den Objektnamen zusammenbauen und den passenden Wert eintragen.
Ein bisschen "Adressberechnung" ist für den Objektindex erforderlich, sollte aber kein Problem sein.

VG

MFreiberger
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Das habe ich bereits so vorbereitet.

Ich habe nur Probleme mit meinem Ansatz den Ausgabewert via VBS zu beschreiben.
Laut dem Systemhandbuch von Siemens für das WinCC Scripting, sollte es sich um den OutputValue handeln.
Allerdings funktionieren meine zwei Zeilen Code nicht so wie gewünscht, bzw. gar nicht.

Edit:// Ich hatte das Dim Objekt vergessen :rolleyes:
 
Zuletzt bearbeitet:
Moin CBR-35,

in einem anderen Thread hatte ich gelesen, dass Variablen, die ich als Arrayvariablen verwende und den Index dynamisch zur Laufzeit übergebe, zunächst irgendwo als Variable mit absoluten Indexen aufgerufen werden muss, damit sie dem System bekannt ist.

Beispiel:

Value array[0..9] of int

Damit SmartTags("Value") = 35 funktioniert, muss erst irgendwann einmal SmartTags("Value[0]"), SmartTags("Value[1]"), SmartTags("Value[2]") ... aufgerufen werden. Ich habe mir ein Initialisierungsskript geschrieben, dass beim Starten des Panels einmalig aufgerufen wird und in diesem steht:
SmartTags("Value[0]") = SmartTags("Value[0]")
SmartTags("Value[1]") = SmartTags("Value[1]")
.
.


Dann habe ich aus div. Gründen keine E/A-Felder, sondern Textfelder verwendet.
Dabei wird Textfeld.text verwendet.

Wozu verwendest Du "SET"? Ist das sinvoll oder guter Programmierstil?

Ich verwende .ScreenItems(Objekt).text

VG

MFreiberger
 
Moin CBR-35

Zuerst solltest Du eindeutig klarstellen, um welche WinCC-Runtime welcher Version auf welchem Gerät es bei Dir geht.

Sollte es sich um WinCC Comfort/Advanced handeln, dann gibt es das Problem, daß Variablen, deren Verwendung der RT nicht bekannt ist, gar nicht oder erst nach der Verwendung aktualisiert werden. Variablenwerte garantiert zu einem bestimmten Zeitpunkt aus der PLC in das HMI bringen oder zurück funktioniert nur mit Handshake - sprich: nur als Rezeptur oder mit selbstprogrammiertem Handshake.

Wie groß ist Dein Array? Bei überschaubar wenigen Werten ist meistens Variablen-Multiplexen einfacher und sicherer zu handeln als Skript-Gebastel.

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

danke für eure schnelle Antworten.
Nachdem ich die Variable für "Objekt" angelegt habe, lief meine For-Schleife sauber durch und hat die E/A-Felder mit den Strukturvariablen gefüllt.

Im WinCC selber habe ich mit dem Skript nicht direkt auf das Array zugegriffen, das ist wohl falsch rüber gekommen.
Ich habe die benötigte Daten aus dem Array mit einem UDT aus dem Datenbaustein mittels Strukturvariable in den Variablenhaushalt geladen und diese dann mittels einem Button dem E/A-Feld als Ausgabewert zugewiesen.

In der Zwischenzeit hat mir ein Kollege ein FlexGrid im VB vorbereitet sodass ich mittlerweile nicht einmal mehr meine E/A-Felder nutze.

Trotzdem vielen Dank für eure schnelle Hilfe.
 
Zurück
Oben