TIA TP 1200 Array mit einer Schleife auslesen und Farbe eines Rechtecks animieren

ebene10

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

ich versuche mich seit Stunden an einem Script. Bin am verzweifeln.
Ich bin absoluter Abfänger......
Hoffentlich kann mir jemand von euch weiterhelfen.

Ich versuche in einem Script ein Array 0..999 typ Byte ("DB_Test_Byte"),
in einer Schleife Byteweise, mit einer Maske bestimmte Bit´s auszuwerten.

Dementsprechend möchte ich die Farbe eines Rechtecks beeinflussen.
Ich habe (später) 330 Rechtecke auf einem Bildschirm liegen die animiert werden sollen.

20 Rechtecke (Rechteck_0 - Rechteck_20) sind am Grundbild angelegt.
PLC SIM läuft. RT bringt keinen Fehler. Leider ändert sich die Farbe nicht, wenn ich das Script ausführe.
Im DB sind einige Byte auf 00000001 gesetzt (im Bereich Array Byte 0-20).

Hier mein Versuch:

Sub Test()


Dim Zaehler
Dim maske

Dim Rechteck_


Zaehler = 0

maske = 1

For Zaehler = 0 To 20 Step 1
If (DB_Test_Byte(Zaehler)) And maske Then
HmiRuntime.Screens ("Grundbild").ScreenItems("Rechteck_"&Zaehler).backcolor = vbGreen
Zaehler = Zaehler + 1
End If

Next


End Sub

Ich denke, dass ich das Array falsch anspreche (DB_Test_Byte(Zaehler)).


Danke
ebene10
 
Zuletzt bearbeitet von einem Moderator:
Deine Schleife für 20 Rechtecke würde ich so formulieren:
Code:
For Zaehler = 0 To 19
    If (SmartTags("DB_Test_Byte")(Zaehler) And maske) <> 0 Then
        HmiRuntime.Screens("Grundbild").ScreenItems("Rechteck_" & Zaehler).backcolor = vbGreen
    End If
Next

Mit WinCC TIA kenne ich mich nicht genug aus, doch ich vermute mal, daß man Objekte auf dem Grundbild nicht per HmiRuntime.Screens("Grundbild").ScreenItems ansprechen kann, weil man nur Objekte ansprechen kann auf dem Bild, welches das gerade aktive (angezeigte) Bild ist.

Mache Dir mal eine Meldeanzeige für Meldeereignisse der Meldeklasse "System" in ein Bild, damit Du die Runtimerrors sehen und in Ruhe lesen kannst. Zusätzlich ein Meldefenster im Grundbild ist auch hilfreich.

Hast Du auch die Namensinformationen der Bildobjekte mit auf das TP1200 transferiert (irgendwo in den Geräteeinstellungen aktivieren)?

Wenn Du ein Array aus der PLC in einem Skript mehrmals ansprechen willst, dann solltest Du zuerst das komplette PLC-Array in ein Skript-internes Array umkopieren und dann nur mit der Kopie arbeiten, weil jeder Zugriff auf das PLC-Array das komplette Array liest/schreibt, was bei Deinen hunderten Objekten zu Kommunikationsüberlastung führen kann.
Code:
Dim intArray(19), i

'ich weiß nicht, ob in WinCC TIA dieses funktioniert:
intArray = SmartTags("extArray")

'alternativ das Array so einlesen:
For i = 0 To 19
    intArray(i) = SmartTags("extArray")(i)
Next
Überhaupt finde ich Deine Idee, hunderte Bildobjekte per Skripts zu dynamisieren/manipulieren für nicht im Sinne des Erfinders. Das funktioniert erstens nur bei Objekten auf gerade angezeigten Bildern und hält zweitens nur bis zum nächsten Bildaufbau und drittens sind solche indirekten Zugriffe nicht in den Querverweisen zu finden. Vermutlich ist auch das TP1200 nicht leistungsfähig genug für Skripterei solchen Ausmaßes.

Warum willst Du Deine Aufgabe per Skript lösen?

Harald
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ich will mir ein Bildschirm generieren, der mir Daten aus einem großen DB anzeigt. Hier werden Informationen aus einem Interrupt irgendwann, irgendwo
abgespeichert. Um es mir und später den Bediener etwas leichter zu machen, will ich farblich darstellen wo ein entsprechender Eintrag ist.
Der Screen wird dann manuell aufgerufen. Ist nur ein Hilfsmittel.

Ich teste es mal.

Vielen Dank
 
So ist das ja vorgesehen und funktioniert dann auch effizient, aber dann muß man planvoll vorgehen ... ;)
Sprich: zuerst ein Rechteck komplett animiert projektieren und erst nach zufriedenstellendem Test 329 mal kopieren und 329 Animationsvariablen anpassen.
Bei seiner Skripterei muß er zwar auch 329 mal kopieren und 329 Objektnamen anpassen, wenn ihm aber später einfällt, daß das ganze nicht so doll funktioniert, dann braucht er nur das Skript ändern.

Harald
 
Zurück
Oben