TIA Array mit 420 Elementen in der Steuerung über ein Script in der HMI kopieren

Hekto

Level-1
Beiträge
3
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo, ich hab ein Problem und weiß nicht wie ich es lösen soll. Evtl. gibt es ja eine einfache Lösung da ich noch nicht so viel mit Scripten in der HMI gearbeitet hab.

Hier das Problem.
Ich haben ein OP 277 mit WinCC flexible Advanced Projekt (nicht von mir geschrieben und auch schon über 10 Jahre alt), dieses soll auf eine KP 700 Comfort Panel mit TIA WinCC Advanced hochgerüstet werden. Soweit funktioniert auch alles bis darauf das im alten Projekt ein Script läuft das nach dem hochrüsten einen Fehler bring da es den Befehl anscheinend nicht mehr bei TIA gibt. Im alten Projekt wird der Befehl:

SetValue SmartTags("Schw_Rez\Rez_Array_DB101"), SmartTags("Schw_Rez\Rez_Array_Edit")

verwendet. Soweit ich das verstehe wird hier das Array von einem DB in den anderen kopiert. Da es den Befehl ja nicht mehr gibt hab ich es mit einer Schleife versucht.

Dim i

For i=0 To i=419
SmartTags("Schw_Rez\Rez_Array_DB101")(i)= SmartTags("Schw_Rez\Rez_Array_Edit")(i)
Next

Hat jedoch nicht geklappt da "i" dann einen Overflow hat. Kann anscheinend nur 100 Werte annehmen. Wie gesagt hab nicht viel mit Scripten zu tun.
Danach hab ich das noch probiert. Wobei ich hier eine interne Variable angelegt hab die hochzählen soll.

SmartTags("Schw_Rez\Hilfszähler")=0

Do Until SmartTags("Schw_Rez\Hilfszähler")>419
SmartTags("Schw_Rez\Rez_Array_DB101")("Schw_Rez\Hilfszähler")= SmartTags("Schw_Rez\Rez_Array_Edit")("Schw_Rez\Hilfszähler")
SmartTags("Schw_Rez\Hilfszähler")=SmartTags("Schw_Rez\Hilfszähler")+1
Loop

Hat aber auch nicht funktioniert da hier der Fehler "typ mismatch" kommt. Vermutlich kann ich den Index des Arrays nicht mit der internen Variable belegen.

Kann mir hier evtl. einer weiter helfen. Stelle jetzt noch Bilder von dem alten Projekt wie auch vom hochgerüsteten Projekte reinOriginal Variablentabelle.PNGOriginal Script.PNGHochgerüstete Variablentabelle.PNGHochgerüstetes Script mit Versuchen.PNG
 
Moin Hekto,

ein Problem KANN das "\" in dem Variablennamen sein. Auf Sonderzeichen und Umlaute sollte man möglichst verzichten.

Die Frage "Warum machst Du das nicht in der Steuerung?" stelle ich mal nur der Vollständigkeit halber. Du willst ja eigentlich nichts ändern, sondern nur Funktionen nach dem Hochrüsten wieder "gangbar" machen.

Funktioniert vielleicht:
Code:
SmartTags("Schw_Rez\Rez_Array_DB101") = SmartTags("Schw_Rez\Rez_Array_Edit")
 
da es den Befehl anscheinend nicht mehr bei TIA gibt. Im alten Projekt wird der Befehl:

SetValue SmartTags("Schw_Rez\Rez_Array_DB101"), SmartTags("Schw_Rez\Rez_Array_Edit")

verwendet.
Hab auch gerade nicht viel Zeit. Versuche mal SmartTags("Schw_Rez\Rez_Array_DB101") = SmartTags("Schw_Rez\Rez_Array_Edit")

Möglicherweise ist da auch ein ganz anderes Problem wegen der Datenanbindung. Schau mal in die WinCC flexible Hilfe die Hilfe zu SetValue

Harald
 
Guten Morgen,

danke schon mal für die Hilfestellungen. Hab jetzt früh gleich mal alles ausprobiert.

ein Problem KANN das "\" in dem Variablennamen sein. Auf Sonderzeichen und Umlaute sollte man möglichst verzichten.
Hab die Variablen mal umbenannt, hat aber leider nichts gebracht.

"For i=0 To i=419"
mit
"For i=0 To 419"
Das war leider nur ein Schreibfehler von mir, hab schon einiges rumprobiert 🙁. Hatte eigentlich "For i=0 to 419" drin stehen. Danke trotzdem.

Hab auch gerade nicht viel Zeit. Versuche mal SmartTags("Schw_Rez\Rez_Array_DB101") = SmartTags("Schw_Rez\Rez_Array_Edit")
Auch das hab ich getestet. Hier bringt das Panel "Variable Schw_Rez\Rez_Array_DB101 Konvertierungsfehler", sowie "Type mismatch" in dem Script.

Die Frage "Warum machst Du das nicht in der Steuerung?" stelle ich mal nur der Vollständigkeit halber. Du willst ja eigentlich nichts ändern, sondern nur Funktionen nach dem Hochrüsten wieder "gangbar" machen.
So wie es aussieht werde ich das jetzt auch in der Steuerung machen müssen. Warum das der Hersteller im Panel gemacht hat ist mir auch ein Rätsel. Wollte es aber wie du wie du schon sagst einfach "gangbar" machen.

Danke nochmals für die Hilfe. Falls jemand aber noch eine Idee hat bin ich natürlich ganz Ohr.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Hekto,
SetValue SmartTags("Schw_Rez\Rez_Array_DB101"), SmartTags("Schw_Rez\Rez_Array_Edit")

verwendet. Soweit ich das verstehe wird hier das Array von einem DB in den anderen kopiert. Da es den Befehl ja nicht mehr gibt hab ich es mit einer Schleife versucht.
den Befehl gibt es noch, heißt jetzt "SetTag".
Ob er noch exakt das gleiche kann/tut, weiß ich nicht.


Gruß, Fred
 
Zurück
Oben