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

Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 19

Thema: WinCC Flexible - Array-Variable über Skript in Textdatei schreiben

  1. #1
    Registriert seit
    15.01.2008
    Beiträge
    56
    Danke
    6
    Erhielt 1 Danke für 1 Beitrag

    Reden


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo Leute!

    Würde folgende Funktion gerne über ein WinCC Flexible Skript umsetzen =>

    Aus einem Array (DB) sollen die einzelnen Werte über eine For-Schleife in eine Textdatei geschrieben werden.

    Meine Variablen haben folgenden Aufbau: "MES\DB_ST1_DATEN.Messwert[1].Bezeichnung"; "MES\DB_ST1_DATEN.Messwert[1].Einheit"; "MES\DB_ST1_DATEN.Messwert[1].Max"

    Hab das Ganze mal auf diese Art und Weise probiert, funzt aber nicht!!

    For i = 1 To 10 Step 1
    MeineDatei.WriteLine (SmartTags ("MES\DB_ST1_DATEN.Messwert[i].Bezeichnung") & "; " & SmartTags ("MES\DB_ST1_DATEN.Messwert[i].Einheit")
    Next

    Vielleicht kann mir jemand helfen bzw. mir einen Tipp geben?! Danke!!

    lg heri
    Zitieren Zitieren WinCC Flexible - Array-Variable über Skript in Textdatei schreiben  

  2. #2
    Registriert seit
    06.10.2004
    Ort
    Kopenhagen.
    Beiträge
    4.622
    Danke
    377
    Erhielt 799 Danke für 642 Beiträge

    Standard

    Am anfang einfügen:
    Code:
    ON ERROR RESUME NEXT
    Nach jeden 'verdächtigen' Code-Zeile:
    Code:
    IF Err.Number <> 0 THEN
      ShowSystemAlarm ("Error in code ! " & CStr(Err.Number) & ", " & Err.Description)
      Err.Clear
    END IF

    Jesper M. Pedersen

  3. #3
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.712
    Danke
    398
    Erhielt 2.397 Danke für 1.997 Beiträge

    Standard

    Hallo,
    ist die von dir dort genannte Variable denn ein ARRAY oder ein Einzelelement inhalb von Flex.
    Ich denke mal, das du da ein ARRAY of STRUCT in der SPS hast. Das kann Flex nicht als ARRAY auflösen.
    Der Zugriff auf Array-Elemente im Script ginge wie folgt :
    Code:
    For i = 1 To 10 Step 1
        MeineDatei.WriteLine SmartTags ("MES\DB_ST1_DATEN.Messwert")(i)
    Next
    in diesem Sinne kannst du so nur auf Elemente zugreifen, bei denen in der variablen-Deklaration unter "Array-Elemente" eine Zahl > 1 steht.

    Gruß
    Larry

  4. #4
    Registriert seit
    15.01.2008
    Beiträge
    56
    Danke
    6
    Erhielt 1 Danke für 1 Beitrag

    Standard

    @Larry

    Du hast recht, ich habe ein Array of Struct... schätze mal, dass ich die Variablen "zu Fuss" schreiben muss.... liege ich da richtig?!

    MeineDatei.WriteLine (SmartTags ("MES\DB_ST1_DATEN.Messwert[1].Bezeichnung")
    MeineDatei.WriteLine (SmartTags ("MES\DB_ST1_DATEN.Messwert[2].Bezeichnung")
    MeineDatei.WriteLine (SmartTags ("MES\DB_ST1_DATEN.Messwert[3].Bezeichnung") usw.

    @Jesper - Mir ist schon klar, dass man eine Abbruchbedingung bzw. Fehlerbeschreibung ins Skript einbinden sollte - Danke für die Info!!

    LG heri

  5. #5
    Registriert seit
    06.10.2004
    Ort
    Kopenhagen.
    Beiträge
    4.622
    Danke
    377
    Erhielt 799 Danke für 642 Beiträge

    Standard

    Als Ergänzung zu Larrys Beitrag:

    Selbst wenn man den STRUCT umarrangiere, so das man ein ARRAY von STRINGs hat, dann hilft es nicht.
    WinCC Flex kann STRINGs nur als Einzel-Tags addressieren.
    Jesper M. Pedersen

  6. #6
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.712
    Danke
    398
    Erhielt 2.397 Danke für 1.997 Beiträge

    Standard

    Naja ... du hast noch die Möglichkeit, das du dir den Tag-Namen der Variablen als String selbst zusammen bastelst und so die Variable adressierst. Der Haken dabei ist nur, dass dadurch die Variable unter Umständen nicht mit dem in der Steuerung aktuellen Zustand gespeichert wird sondern mit dem, der irgendwann einmal darein geladen wurde. Wenn die Variablen allerdings in dem aktuellen Bild (z.B.) direkt verwendet werden, so ginge es dann trotzdem. Es ginge auch, wenn sie zyklisch fortlaufend aktualisiert werden. das macht aber eigentlich nur Sinn, wenn es sich hierbei um nur einige wenige Variablen handelt.

    Wie auch immer - den Variablen-Namen selbst zusammenbauen ginge dann so :
    Code:
    Dim myString
    
    myString = "MES\DB_ST1_DATEN.Messwert[" + trim(cstr(i)) + "].Bezeichnung"
    MeineDatei.WriteLine SmartTags (myString)
    ... z.B.

    Gruß
    Larry

  7. Folgende 2 Benutzer sagen Danke zu Larry Laffer für den nützlichen Beitrag:

    Accused (28.01.2016),heri1980 (06.12.2011)

  8. #7
    Registriert seit
    06.02.2012
    Beiträge
    102
    Danke
    4
    Erhielt 2 Danke für 2 Beiträge

    Standard

    Hallo Larry,

    ich habe dein Beispiel probiert, aber bei mir macht er es irgendwie nicht
    Code:
    Dim i, max, myvar
    i= 1
    max = 10
    For i = 1 To max
     myvar = "06_RECIPE\PRG_WORK\PRG_REQ_KEY_" + Trim(CStr(i)) 
     
     If (i = StoveNumber) Then
      SetValue SmartTags(myvar), StoveNumber 'statements
     Else
      SetValue SmartTags(myvar), 0   'statements
     End If
    Next
    Habe ich was übersehen??

  9. #8
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.712
    Danke
    398
    Erhielt 2.397 Danke für 1.997 Beiträge

    Standard

    Hallo,
    ich habe auch deinen anderen Beitrag gelesen - antworte aber jetzt mal hier.
    Was genau geht denn nicht ?
    Bekommst du eine Fehlermeldung vom System ?
    Hast du in den Einstellungen von Flex die Option "Namensinformationen transferieren" angehakt ?

    Gruß
    Larry

  10. #9
    Registriert seit
    06.02.2012
    Beiträge
    102
    Danke
    4
    Erhielt 2 Danke für 2 Beiträge

    Standard

    Wenn ich die Variable myvar über als Smarttag angebe:
    Code:
    SmartTags(myvar) 'so klappt es nicht
    SmartTags("myvar") 'klappt auch nicht
    In den Einstellungen ist der Haken eingestellt.

    WinCC Flex unterstreicht mir die Variable immer und gibt aus, dass kein Objekt Variable mit dem Namen myvar gefunden wird.

  11. #10
    Registriert seit
    06.10.2004
    Ort
    Kopenhagen.
    Beiträge
    4.622
    Danke
    377
    Erhielt 799 Danke für 642 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hast du ein Variabel myvar ?

    Probier einmal ein "Alles neugenerieren".
    Jesper M. Pedersen

Ähnliche Themen

  1. Antworten: 11
    Letzter Beitrag: 01.09.2011, 20:24
  2. Antworten: 0
    Letzter Beitrag: 12.11.2010, 12:17
  3. Antworten: 2
    Letzter Beitrag: 25.02.2009, 22:07
  4. Antworten: 4
    Letzter Beitrag: 27.08.2007, 18:12
  5. Antworten: 3
    Letzter Beitrag: 13.10.2005, 11:53

Lesezeichen

Berechtigungen

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