WinCC-flexible Handling von Arrays in Scripten

Norbert.N

Level-1
Beiträge
11
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,
ich habe folgendes Problem:
Ich habe Fünf Variablen vom Typ Byte mit 8 Arrayelementen konfiguriert.
Diese sind mit einer S7 414 verbunden und auf einen DB-Bereich adressiert.
Die Werte in den Bytes bezeichnen den Betriebszustand einer Maschine.
In einem Bild, das nur eine von 5 Maschinen zeigt möchte ich zyklisch einen Teil des Arrays der anzuzeigenden Anlage in die Interne Byt- Variable kopieren, welche an Steuerelemente auf einem Bild gekoppelt ist.
Alle Versuche scheitern an einem Typenkonflikt.
Z.B:

If SmartTags("bol_Modulbild_Aktiv") = False Then
Exit Sub
End If

Select Case SmartTags("int_Modulnummer")
Case 1
SmartTags("byt_MEV_Modul_Upstacker_SSh") = SmartTags("byt_Arr_M1_Upstacker_SSh[1]")
Case 2
SmartTags("byt_MEV_Modul_Upstacker_SSh") = SmartTags("byt_Arr_M2_Upstacker_SSh[1]")
Case 3
SmartTags("byt_MEV_Modul_Upstacker_SSh") = SmartTags("byt_Arr_M3_Upstacker_SSh[1]")
Case 4
SmartTags("byt_MEV_Modul_Upstacker_SSh") = SmartTags("byt_Arr_M4_Upstacker_SSh[1]")
Case 5
SmartTags("byt_MEV_Modul_Upstacker_SSh") = SmartTags("byt_Arr_M5_Upstacker_SSh[1]")
End Select

Call Refresh_Time()


Ein weiterer bizarrer Fefler ist, dass bie der Case-Abfrage die "1" rot unterschlängelt ist (hat Siemens heimlich die 1 aus der Menge der Integerzahen entfernt???).

Auch dies funktioniert nicht:

Dim Testarray(7)

Testarray = SmartTags("byt_Arr_M1_Upstacker_SSh") 'Testarray ist rot unterschlängelt. Grund ?????


Dim Testarray

Testarray = SmartTags("byt_Arr_M1_Upstacker_SSh[1]")'Hier ist der andere Teil unterschlängelt: Grund ??????

So langsam verzweifle ich an WinCC-flexible.:(

Danke schon mal für eure Mühe.
Gruß,
Norbert
 
Hallo,

wie das mit dem Skript funktioniert, weiß ich im Moment auch nicht,
aber für dein Bild gibt es auch eine andere Möglichkeit.

Es gibt in WinCC flexible die Möglichkeit Multiplexvariablen zu parametrieren
dazu legst du eine neue Interne Variable an, gehst bei den Eigenschaften
dieser Variable auf Multiplexen und setzt den Hacken.
Dann kannst du dein Array auf der rechten Seite eintragen und zusätzlich
noch eine Indexvariable eingeben.
Jetzt kannst du in deinem Bild die jeweilige Multiplexvariable verwenden
und über den Index greifst du dann auf das jeweilige Arrayelement zu.

Wenn man die Multiplexvariable projektiert sieht man schon wie es
funktionieren soll.

Gruß
Nico
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,

In Wincc/Flex muss man die Array tags in Scripte so schreiben :
z.B
SmartTags("byt_MEV_Modul_Upstacker_SSh")(1) = SmartTags("byt_Arr_M1_Upstacker_SSh")(1)

oder wenn byt_MEV_Modul_Upstacker_SSh nicht array ist

SmartTags("byt_MEV_Modul_Upstacker_SSh") = SmartTags("byt_Arr_M1_Upstacker_SSh")(1)

Gruess

Bashier W-G
 
Und

wenn
Dim Testarray(7)

nicht
Testarray = SmartTags("byt_Arr_M1_Upstacker_SSh") 'Testarray ist rot unterschlängelt. Grund ?????

sondern

Testarray(INDEX) = SmartTags("byt_Arr_M1_Upstacker_SSh")

INDEX = 0-7
 
Danke für eure Hilfe!!!!!!!!

Mein Dank kommt zwar etwas spät.
Ich war etwas länger im Urlaub.

Und auch einen besonderen Dank an Siemens, die dafür Sorge tragen, dass solche Fragen nicht mit der Hilfedatei zu lösen sind. :ROFLMAO:

Gruss Norbert
 
Zurück
Oben