TIA DB Array of String aus WinCC Script beschreiben

PENT89

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

ich versuche gerade aus einem WinCC advanced Script ein String array zu beschreiben. leider ohne erfolg

Angedacht hatte ich das so:

For i = 1 To 31


SmartTags("Kalender_Februar{i}") = .Cells(1, Spalte).value

Leider wird dieser Ausdruck nicht zugelassen.

Wenn ich das so schreibe ist alles Ok.

For i = 1 To 31


SmartTags("Kalender_Februar{1}") = .Cells(1, Spalte).value

kann mir einer helfen?

Danke
 
Ich habe die letzten Tage auch mit Skripten für WinCC verbracht. Bei mir funktioniert es und sieht so aus:

For i = 0 To 31
SmartTags("DeineVariable")(i) = SmartTags("DeineZweiteVariable")
Next
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Leider funktioniert das nicht.
Dann bekomme ich die Meldung ungültige Array Verwendung.

Ich Erklär nochmal was ich vorhabe.

Ich möchte aus einer Excel tabelle eine Zeichenkette in meine S71200 einlesen. Da ich natürlich nicht das Excel sheet direkt aus der SPS aufrufen kann, verwende ich dazu das Wincc Skript.
Ein direkter Zugriff auf die Variable funktioniert, da ich aber die Daten des gesamten Monats in eine Variable schreiben möchte, habe ich eine ein Array of String in einem DB angelegt.

Egal was ich auch Versuche Tia akzeptiert das i nicht.

Eine Einzel zuweisung geht natürlich auch ist aber viel Arbeit und nicht gerade elegant.
Ich denke das Problem ist das Array of String.
 
Tas Problem ist das du keine echte Array-Variable hast, sondern einzel Variablen aus einem Array...
egal...
Flogendes sollte helfen:
Der Variablenname im SmartTag wird als String interpretiert. Also kann man den VAriablenname aus Stringelementen zusammenbasteln:
SmartTags("Kalender_Februar{" & i & "}") = ...

Erklärung:
"Kalender_Februar{" =Zeichenkette (zwischen "")
& =verbindet zwei Zeichenketten
i = Der Wert von i wird als Zeichenkette eingefügt.

Gruß
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Flogendes sollte helfen:
Der Variablenname im SmartTag wird als String interpretiert. Also kann man den VAriablenname aus Stringelementen zusammenbasteln:
SmartTags("Kalender_Februar{" & i & "}") = ...
Sorry, dass ich nochmal die Suppe aufwärmen muss...

Ich möchte das String_Array aus dem DB Materialnummer_Hänger schlussendlich in eine csv exportieren.

Mit dieser Notation ist der Fehler "ungültige Array-Verwendung" weg:
Code:
Materialnummer(i) = SmartTags("DB Materialnummer_Hänger{"& i &"}")

Allerdings bleibt Materialnummer(i) in der csv leer.

Alles andere in der Schleife funktioniert und wird in eine csv exportiert:
Code:
For i=71 To 141
                Haengernummer(i) = (i)
                Materialnummer(i) = SmartTags("DB Materialnummer_Hänger{"& i &"}")
                Auftrag_1(i) = SmartTags("DB Auftrag 1_Hänger")(i)
                Auftrag_2(i) = SmartTags("DB Auftrag 2_Hänger")(i)
                Dip_Soll(i) = SmartTags("DB Dip Soll_Hänger")(i)
                Dip_Ist(i) = SmartTags("DB Dip Ist_Hänger")(i)
                Datum_Uhrzeit_letzter_Ueberzug(i) = SmartTags("DB Datum Uhrzeit letzter Überzug_Hänger")(i)
                Datum_Uhrzeit_naechster_Ueberzug(i) = SmartTags("DB Datum Uhrzeit nächster Überzug_Hänger")(i)
                Haengernr_im_Roboter(i) = SmartTags("DB Hängerdaten_Anzeige_Hängernummer")
            Next
 
Code:
Materialnummer(i) = SmartTags("DB Materialnummer_Hänger{"& i &"}")
Funktioniert denn ...
Code:
Materialnummer(i) = SmartTags("""DB Materialnummer_Hänger""{"& i &"}")
... ?
Der VariablenName enthält ja (leider) ein Leerzeichen und müsste in Gänsebeinchen eingeschlossen werden.

Oder evtl. ...
Code:
Materialnummer(i) = SmartTags("""DB Materialnummer_Hänger{"& i &"}""")
... ?
 
Zuletzt bearbeitet:
Ahh, das klingt logisch und wäre ein Versuch wert...

Aber ich habe es nun mit einem zusätzlichen vbs Skript (Function) gelöst.

Danke und Grüße
wayne
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Meine Lösung sieht ungefähr dann so aus:
Code:
...
Materialnummer(i) = Export_Belegung_TA_Materialnummer(i)
...

Neue Function:
Code:
Function Export_Belegung_TA_Materialnummer(ByVal i)
Dim Ausgabe

Select Case i
    Case 71                      
        Ausgabe = SmartTags("DB Materialnummer_Hänger[71]")                  
    Case 72                      
        Ausgabe = SmartTags("DB Materialnummer_Hänger[72]")                  
    Case 73                      
        Ausgabe = SmartTags("DB Materialnummer_Hänger[73]")                  
    ...                  
   
End Select

'Rückgabewert zuweisen
Export_Belegung_TA_Materialnummer = Ausgabe

End Function
 
Aha, die geschweiften Klammern waren wohl ein zusätzliches Problem?
Code:
Materialnummer(i) = SmartTags("""DB Materialnummer_Hänger["& i &"]""")
... sollte dann auch funktionieren.
 
Wie umständlich man Tippfehler korrigieren kann ;)

Materialnummer(i) = SmartTags("DB Materialnummer_Hänger{"& i &"}")
korrigieren zu
Materialnummer(i) = SmartTags("DB Materialnummer_Hänger["& i &"]")
hätte auch gereicht... Schau genau hin, wie die vielen HMI-Variablen in Deinem Projekt heißen bzw. die Namen exakt geschrieben sind.

PS: Heinrich war schneller

Kommen in Deiner csv-Datei auch die richtigen aktuellen Werte an? Wenn Variablennamen erst im Skript zusammengebastelt werden, dann weiß die WinCC RT nichts von der Verwendung der Variable und liest den Wert erst nach der Verwendung im Skript aus der SPS.

Harald
 
Zuletzt bearbeitet:
Zurück
Oben