Zuviel Werbung? - > Hier kostenlos beim SPS-Forum registrieren

Ergebnis 1 bis 6 von 6

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

  1. #1
    Registriert seit
    11.02.2010
    Beiträge
    9
    Danke
    1
    Erhielt 0 Danke für 0 Beiträge

    Standard


    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
    Geändert von dariyos (15.06.2016 um 11:43 Uhr)
    Zitieren Zitieren TP 1200 Array mit einer Schleife auslesen und Farbe eines Rechtecks animieren  

  2. #2
    Registriert seit
    22.06.2009
    Ort
    Sassnitz
    Beiträge
    11.163
    Danke
    921
    Erhielt 3.286 Danke für 2.655 Beiträge

    Standard

    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
    Es ist immer wieder überraschend, wie etwas plötzlich funktioniert, sobald man alles richtig macht.

    FAQ: Linkliste SIMATIC-Kommunikation über Ethernet

  3. #3
    ebene10 ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    11.02.2010
    Beiträge
    9
    Danke
    1
    Erhielt 0 Danke für 0 Beiträge

    Standard

    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

  4. #4
    Registriert seit
    27.06.2009
    Ort
    am Nordharz
    Beiträge
    3.713
    Danke
    443
    Erhielt 914 Danke für 739 Beiträge

    Standard

    Das kann man doch aber mit den Farbanimationen eines Objektes meist viel einfacher erledigen.

  5. #5
    Registriert seit
    22.06.2009
    Ort
    Sassnitz
    Beiträge
    11.163
    Danke
    921
    Erhielt 3.286 Danke für 2.655 Beiträge

    Standard

    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
    Es ist immer wieder überraschend, wie etwas plötzlich funktioniert, sobald man alles richtig macht.

    FAQ: Linkliste SIMATIC-Kommunikation über Ethernet

  6. #6
    ebene10 ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    11.02.2010
    Beiträge
    9
    Danke
    1
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hi, anscheinend funzt das ganze in Wincc flexible, im Tia WinCC V13 geht es leider nicht.
    Warum auch immer!

    Danke für die Beiträge.

Ähnliche Themen

  1. Antworten: 2
    Letzter Beitrag: 07.01.2016, 15:07
  2. Antworten: 6
    Letzter Beitrag: 16.12.2015, 15:57
  3. Antworten: 7
    Letzter Beitrag: 02.12.2015, 14:34
  4. Step 7 Array in einer For-Schleife
    Von Mattes im Forum Simatic
    Antworten: 1
    Letzter Beitrag: 23.09.2013, 09:39
  5. Antworten: 5
    Letzter Beitrag: 11.06.2008, 16:08

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •