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

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

Thema: [WinCC flex] Werte aus DB-Array in Datei schreiben

  1. #1
    Registriert seit
    27.03.2012
    Beiträge
    56
    Danke
    0
    Erhielt 1 Danke für 1 Beitrag

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Guten Morgen,

    ich verwende WinCC flexible, vorab.

    Ich hab in einem DB eine Array[1..25] mit 8 Einträgen. Über mulitplexen kann ich durch das Array blättern und sehe dementsprechend die Einträge auf dem Panel:

    IndexVariable wird gesetzt (z.B. 3)
    Aus der IndexVariable werden die Adressen innerhalb des DBs für die Einträge im Array berechnet
    z.B mit IndexVariable = 3
    Eintrag_1_index = 4
    Eintrag_2_index = 8
    Eintrag_3_index = 16
    Eintrag_4_index = 20
    z.B mit IndexVariable = 4
    Eintrag_1_index = 38
    Eintrag_2_index = 42
    Eintrag_3_index = 50
    Eintrag_4_index = 54

    und damit dann: DB ??? DBW [Eintrag_?_index]

    Denke das Prinzip wird deutlich.

    Ich möchte die Werte jetzt gerne in eine CSV-Datei schreiben. Schaltfäche ---> Skript.

    In WinCC möchte ich ungerne alle 200 (8*25) Variablen anlegen um diese dann in die Datei schreiben zu können. Gibt es die Möglichkeit innerhalb des Skriptes die IndexVariable in einer Schleife zu setzen (1...25) und dann dort die Werte aus dem DB auszulesen? Denke das Problem ist, dass der Wert für die IndexVariable erst am Ende des Skriptes in die Steuerung geschrieben wird, richtig?

    Danke für eure Hilfe!
    Zitieren Zitieren [WinCC flex] Werte aus DB-Array in Datei schreiben  

  2. #2
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.712
    Danke
    398
    Erhielt 2.398 Danke für 1.998 Beiträge

    Standard

    Hallo,
    du könntest das auch in Flex als Array anlegen (allerdings nur 1D). Dann kannst du es im Script auch wie gewünscht verwenden.

    Gruß
    Larry

  3. #3
    Registriert seit
    27.03.2012
    Beiträge
    56
    Danke
    0
    Erhielt 1 Danke für 1 Beitrag

    Standard

    Danke für die Idee, versteh aber noch nicht ganz wie ich das machen soll.
    Kannst du mir noch einen Tipp geben.

    Für jede Variable im DB-Array eine Array-Variable in Flex. Wie mache ich das denn mit der Datenlänge? Habe im DB-Array unterschiedliche Typen...

  4. #4
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.712
    Danke
    398
    Erhielt 2.398 Danke für 1.998 Beiträge

    Standard

    ... jetzt verstehe ich dich nicht ganz. Ein Array [1..25] of REAL (z.B.) kannst du auch genau so in Flex abbilden - du browst dich auf die Array-Variable und fertig ...
    Das funktioniert allerdings nur mit Reintyp-Array's - mit einem Array of Struct leider nicht.

    Gruß
    Larry

  5. #5
    Registriert seit
    27.03.2012
    Beiträge
    56
    Danke
    0
    Erhielt 1 Danke für 1 Beitrag

    Standard

    Genau das ist das Problem - hab ein Array of Struct. damn it. Hab ich Alternativen?

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

    Standard

    Da weiß ich jetzt (außer der Einzel-Variablen) kein Lösung. Ein Adress-Muxen zum Zweck des Abspeicherns geht ganz sicher "in die Hose".

    Vielleicht schreibst du doch mal etwas genauer über dein Vorhaben ...

  7. #7
    Registriert seit
    27.03.2012
    Beiträge
    56
    Danke
    0
    Erhielt 1 Danke für 1 Beitrag

    Standard

    Kann ich gerne machen: Ich ein "Array of Struct" mit acht Variablen (Datenlänge: 34). Das Array hat bislang eine Länge von 25.
    Diese Array of Struct würde ich gerne in eine Datei auf dem HMI schreiben. Bislang zeige ich mir auf dem HMI immer nur die Werte der Variablen zum entsprechenden Index an. Da das Array noch wachsen wird, will ich ungerne alle Variablen von Hand in WinCC eintragen...

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

    Standard

    - Brauchst du immer alle Variablen in der SPS ... oder ist das eine Art Rezeptur-Anwahl ?
    - Wenn du alle in der SPS brauchst ... ist es dann auch vorstellbar, mit Einzel-Array's zu arbeiten ?

  9. #9
    Registriert seit
    29.03.2004
    Beiträge
    5.735
    Danke
    143
    Erhielt 1.685 Danke für 1.225 Beiträge

    Standard

    Ich gehe mal davon aus dass es um die Struktur aus diesen Thread geht, oder?
    http://www.sps-forum.de/showthread.p...-bl%C3%A4ttern

    Prinzipiell ist es natürlich möglich den Multiplex-Index in einem Skript hochzählen zu lassen.
    Das Problem ist dann aber an anderer Stelle. Denn du musst in dem Skript wissen, wann die Variablenwerte in der Struktur den aktuellen Wert gültig zum angewählten Index haben.
    Das hängt zum einen von der Aktualisierungsrate der Variablen ab, zum anderen in welchen Abfragezyklus die Variablen einsortiert wurden. Denn man kann sich nur bei Array-Variablen sicher sein, dass diese in einem Rutsch abgeholt werden (und auch dann nur wenn sie in eine PDU passen). Das Array scheidet aber aus, da bei dir die Struktur veschiedene Datentypen beinhaltet.

    Du musst auf jeden Fall eine Koordinierung zwischen Runtime und SPS schaffen, sodass die Runtime weiß dass alle Werte aktuell sind. Ich glaube aber nicht dass es da eine Systemfunktion gibt mit der man das abfragen kann. Und z.B. nur auf Änderung einer Variable in der Struktur zu reagieren reicht wegen dem oben geschilderten Problem - man kann sich nicht sicher sein dass die anderen auch schon aktuell sind - nicht aus.

  10. #10
    Registriert seit
    27.03.2012
    Beiträge
    56
    Danke
    0
    Erhielt 1 Danke für 1 Beitrag

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Danke für die Anregungen, hab mal drüber nachgedacht.

    Das mit dem Array scheidet aus, es sei denn, ich zerlege meine Array of Struct in die Dtentypen (Bool, Real, Int, Date_Time). Wobei ich die Bool Variablen dann als Int nehme, vllt. käme ich anstelle des Integers auch mit nem Byte aus. Müsste ich mir anschauen. Dann hätte ich zwei bis drei Array (of Int, of Real, of Date_And_Time) und könnte dann loslegen. Dann hätte ich die Einzel-Arrays. Wobei das zu viel Aufwand ist, ich hab gerade alles fertig an der Stelle (Array löschen, Arrayeintrag löschen, Multiplexen aus WinCC)

    Für mich zum Verständis, da ich noch nie Skripte in WinCC flex verwendet:
    1. Während das Skript läuft kann ich jederzeit die Variablen von WinCC flex (und Wincc flex damm von der Steuerung abfragen), richtig?
    2. Ich kann aus dem Skript jederzeit Variable beschreiben und diese werden dann in die Steuerung geschrieben, richtig?
    3. Änderungen sind daher aus dem Laufendem Skript möglich.

    Ich ändere also die MutliplexIndex und der FC in der SPS schiebt dann irgendwann die Daten zur Steuerung.

    Mal angenommen ich schreibe den Index in den DBXX.DBW0.
    Der FC rechnet rum und packt den Index nochmal in den DBXX.DBW20.
    Die Daten landen im HMI und ich loope solange im Skript, bis ich meinen Index im DBW20 sehe. Danach lese ich die Daten und erhöhe meinen Index usw.

    Du schreibst von der Rezepter-Anwahl, hab ich noch nie mit gearbeitet. Es werdem Prozessdaten aufgezeichnet, berechnet und in mein Array geschrieben.
    Dies geschieht über bestimmte Triggerevents. Skriptbearbeitung nicht zu starten wenn die Daten aufgezeichnet werden, ist kein Problem.

    Entschuldige wenn ich etwas wirr geschrieben, ein langer Tag heute und das musste noch aus meinem Kopf

Ähnliche Themen

  1. WinCC Flex Werte in ein Array schreiben
    Von Neuling74 im Forum HMI
    Antworten: 15
    Letzter Beitrag: 30.12.2015, 00:14
  2. Antworten: 11
    Letzter Beitrag: 01.09.2011, 20:24
  3. Antworten: 0
    Letzter Beitrag: 25.02.2011, 12:29
  4. Antworten: 0
    Letzter Beitrag: 06.03.2008, 12:00
  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
  •