Anzahl Variablen in WinCCflex2007 gering halten

HarryH

Level-1
Beiträge
142
Reaktionspunkte
4
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo zusammen,

an einer Maschine in welcher ein Produkt nach Gewicht abgefüllt wird, nehme ich zu einer bestimmten Zeit während des Befüllvorgangs gleichzeitig 6 Messwerte (Real) auf, die ich in einem DB speichere. Diese 6 Messwerte speichere ich für die 20 letzten Befüllungen (FIFO-Speicher). D.h. ich habe in diesem DB 6x20=120 Messwerte gespeichert. Diese 120 Messwerte möchte ich in einer Tabelle auf einem MP377B auf einem Bild darstellen. Ich könnte für alle 120 Werte in der Tabelle eine eigene Variable anlegen und in dazugehörigen Ausgabefeldern in der Tabelle anzeigen. Das geht sicherlich, finde ich aber irgendwie zu "aufgebläht".

Nun meine Frage:
- Gibt es irgend eine Möglichkeit die Variablenanzahl zu verringern?
- Kann ich irgendwie auf WinCCflex-Seite mit sowas wie Pointer arbeiten?
- Da die Daten wie in einem Ringspeicher gespeichert werden, würde es reichen, das immer nur die aktuellen (6) Messwerte aus der CPU eingelesen werden, und die älteren Werte nur (WinCCflex intern) weitergeschoben werden. Kann man sich so etwas vorstellen?

Bin für jeden Hinweis dankbar!

Gruß HarryH
 
Sie dir mal das Thema Multiplexvariablen in der Flexible-Hilfe an, das wäre genau das Richtige dafür, denke ich mal.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hier ist einmal ein Programmbeispiel für einen FIFO-Speicher in WinCC flexible:

Zwei Messwerte werden als externe Variablen in WinCC flexible eingelesen und in zwei FIFO-Speichern als interne Variablen gespeichert.

Die Funktion der zwei FIFO-Speicher wird durch das folgende VBScript in WinCC flexible nachgebildet.

Ein Trigger als externe Variable ruft das VBScript auf.

Code:
Dim i
 
If SmartTags("Trigger") = True Then
 
    For i = 3 To 0 Step - 1 
 
        SmartTags("Speicher_1")(i + 1) = SmartTags("Speicher_1")(i)
 
        SmartTags("Speicher_2")(i + 1) = SmartTags("Speicher_2")(i)
 
    Next
 
    SmartTags("Speicher_1")(0) = SmartTags("Messwert_1")
 
    SmartTags("Speicher_2")(0) = SmartTags("Messwert_2")
 
End If

Gruß Kai
 

Anhänge

  • MP370_Bilder_1.jpg
    MP370_Bilder_1.jpg
    579,2 KB · Aufrufe: 190
  • MP370_Bilder_2.jpg
    MP370_Bilder_2.jpg
    577,7 KB · Aufrufe: 126
  • MP370_Bilder_3.jpg
    MP370_Bilder_3.jpg
    579,2 KB · Aufrufe: 97
  • MP370_Bilder_4.jpg
    MP370_Bilder_4.jpg
    577,8 KB · Aufrufe: 87
  • MP370_Bilder_5.jpg
    MP370_Bilder_5.jpg
    583,3 KB · Aufrufe: 98
Und noch ein paar Bilder.

Gruß Kai
 

Anhänge

  • MP370_Variablen.jpg
    MP370_Variablen.jpg
    386,6 KB · Aufrufe: 111
  • MP370_Skripte.jpg
    MP370_Skripte.jpg
    413,6 KB · Aufrufe: 105
  • MP370_Runtime_1.jpg
    MP370_Runtime_1.jpg
    191,4 KB · Aufrufe: 101
  • MP370_Runtime_2.jpg
    MP370_Runtime_2.jpg
    198,6 KB · Aufrufe: 80
Das mit dem Skript gefällt mir gut und ich habe es auch so realisiert. Nur wird das Skript nicht abgearbeitet. Es passiert nichts.
So hab ichs gemacht:

Code:
Dim i
 
If SmartTags("VV1_MP_Data.Befuellzeiten_speichern") = True Then
  
    For i = 19 To 1 Step - 1 
 
        SmartTags("Befüllzeiten.Befuellzeit")(i + 1) = SmartTags("Befüllzeiten.Befuellzeit")(i)
        SmartTags("Befüllzeiten.Gewicht_Sollwert")(i + 1) = SmartTags("Befüllzeiten.Gewicht_Sollwert")(i)
        SmartTags("Befüllzeiten.Gewicht_Istwert")(i + 1) = SmartTags("Befüllzeiten.Gewicht_Istwert")(i)
        SmartTags("Befüllzeiten.Behaelter")(i + 1) = SmartTags("Befüllzeiten.Behaelter")(i)
        SmartTags("Befüllzeiten.Leitung")(i + 1) = SmartTags("Befüllzeiten.Leitung")(i)
        SmartTags("Befüllzeiten.Stutzen")(i + 1) = SmartTags("Befüllzeiten.Stutzen")(i)
 
    Next
 
    SmartTags("Befüllzeiten.Befuellzeit")(1)       = SmartTags("VV1_Befüllzeiten.Sack01.Befuellzeit")
    SmartTags("Befüllzeiten.Gewicht_Sollwert")(1)  = SmartTags("VV1_Befüllzeiten.Sack01.Gewicht_Sollwert")
    SmartTags("Befüllzeiten.Gewicht_Istwert")(1)   = SmartTags("VV1_Befüllzeiten.Sack01.Gewicht_Istwert")
    SmartTags("Befüllzeiten.Behaelter")(1)   = SmartTags("VV1_Befüllzeiten.Behaelter")
    SmartTags("Befüllzeiten.Leitung")(1) = SmartTags("VV1_Befüllzeiten.Leitung")
    SmartTags("Befüllzeiten.Stutzen")(1)     = SmartTags("VV1_Befüllzeiten.Stutzen")
  
' Zum Testen ob Skript abgearbeitet wird
    SmartTags("Befüllzeiten.Stutzen")(10)     = 10.0

 
End If
Muss ich irgend eine generelle "Freigabe" für das Skript noch geben?
 
Zuviel Werbung?
-> Hier kostenlos registrieren
In meinem Programmbeispiel wird das Skript Speichern bei einer Wertänderung von False/True oder True/False der Variablen Trigger aufgerufen.

Durch die Abfrage der Bedingung Trigger = True in der ersten Zeile des Skriptes werden die folgenden Anweisungen im Skript jedoch nur bei einer Wertänderung von False/True ausgeführt.

Gruß Kai
 

Anhänge

  • MP370_Variablen.jpg
    MP370_Variablen.jpg
    378 KB · Aufrufe: 94
@Kai

genau das hat mir gefehlt. Ich hatte das Skript keiner Variablen zum Ausführen zugewiesen. Nun funktioniert alles. Danke an alle!

Gruß HarryH
 
Zurück
Oben