TIA Zugriff auf Array of UDT mittels VB-Skript

M0077227

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

ich bingrade dabei eine Rezept verwaltung zu erstellen, die auf einem externen Netzlaufwerk gespeichet werden soll, dafür möchte ich gerne die VB-Skripts verwenden.

Nun habe ich aber flgendes Problem:

Meine Rezepturen sind in einem DB als Array of UDT abgelegt. Ich habe das gesamte Array in die HMI-Variablen inplementiert. Nun habe ich aber das Problem, dass ich anscheinend nicht auf diese Daten zugreifen darf, denn in dem Textdokument wird der Inhalt der Variablen nicht angezeigt.

Momentan läuft der Zugriff wie folgt ab:
For i=1 To 10
fo.LinePrint(Now & delimiter & SmartTags("DB_shoporder_Order[" & i &"].Ordernumber") & gap & delimiter & SmartTags("DB_shoporder_Order[" & i &"].Order_Quantity" ) & delimiter & SmartTags("DB_shoporder_Order[" & i &"].Ordertype" ) & delimiter)
Next

hat jemand von Euch eine Lösung für das Thema?
 
Mit dem "[" & i &"]" bastelst Du zwar den Name einer HMI-Variable zusammen (die es bei Dir vermutlich gar nicht gibt), greifst aber nicht auf ein Array zu. Auf Arrays greift man so zu:
SmartTags("DB_shoporder_Order")(i)
Das geht aber nicht auf verschachtelte Arrays. :sad:

Dein Vorgehen würde nur funktionieren, wenn Du jede einzelne Variable (bzw. gewünschte Zugriffsvariante) der Arrays als einzelne HMI-Variable anlegst, die dann den Name genau so haben muß wie Du zusammenbasteln willst. Nur weil man vermeintlich den Name einer PLC-Variable zusammenbasteln kann, kann man nicht auf die PLC-Variable zugreifen. Man kann nur auf HMI-Variablen zugreifen, und auch nur auf die, die es auch gibt.

Harald
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ich habe das gesamte Array in die HMI-Variablen inplementiert.
Wie genau? Als Array oder als einzelne HMI-Variablen?

Nun habe ich aber das Problem, dass ich anscheinend nicht auf diese Daten zugreifen darf, denn in dem Textdokument wird der Inhalt der Variablen nicht angezeigt.
Wenn Du diese 30 HMI-Variablen anlegst:
DB_shoporder_Order[1].Ordernumber
DB_shoporder_Order[1].Order_Quantity
DB_shoporder_Order[1].Ordertype
DB_shoporder_Order[2].Ordernumber
DB_shoporder_Order[2].Order_Quantity
DB_shoporder_Order[2].Ordertype
..
DB_shoporder_Order[10].Ordernumber
DB_shoporder_Order[10].Order_Quantity
DB_shoporder_Order[10].Ordertype

dann könnte Dein VBS-Code schon mal deren Name zusammenbasteln. Doch dann bekommst Du das nächste Problem: Variablen, deren Name zusammengebastelt wird, werden erst irgendwann nach dem Zugriff aktualisiert (die Werte aus der PLC gelesen), weil die WinCC RT nicht vorher von deren Verwendung weiß. Das VBS-Skript wartet aber nicht auf die Aktualisierung! und Dein Skript schreibt 0 oder ältere Daten von der letzten Aktualisierung in die Textdatei.

Werte garantiert in das HMI eingelesen mit Fertigmeldung bekommt man nur als Rezeptur oder mit selbstgeschriebenem Handshake. Das Problem wurde hier schon unzählige Male behandelt. Verwende die Forumssuche mit dem Suchbegriff "GetDataRecordTagsFromPLC"

Hast Du auch die Möglichkeit, die Werte mit einem externen PC-Programm aus der PLC zu lesen? Das funktioniert viel einfacher und sicherer als mit der WinCC RT, z.B. mit Excel und Libnodave (wenn man das Auslesen nur gelegentlich manuell machen will). Es gibt auch andere Kommunikationsbibliotheken zu S7 und fertige automatisierbare Tools.

Harald
 
Zurück
Oben