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

Seite 3 von 4 ErsteErste 1234 LetzteLetzte
Ergebnis 21 bis 30 von 35

Thema: Skript struktur auslesen

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

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo,
    dann könntest du es so machen, dass du die 8 Variablen der Struktur UDT_Mess in der Visu als Variablen anlegst und sie über die entsprechende Hilfsvariable(n) durchschaltest (im Prinzip indirekte Adressierung). Dann hast du aber immer nur einen Datensatz gleichzeitig ...

    Gruß
    Larry

  2. #22
    Registriert seit
    02.08.2012
    Beiträge
    30
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard

    hmm.. an sich wäre das ja egal, ich muss nur aufpassen dass er dann immer die richtigen Felder beschreibt.
    Mir ist da noch eine Idee gekommen beim rundoktern, aber ich weiß nciht ob das so überhaupt funktioniert. Ich müsste dafür via skript in einem Bildbaustein dynamisch in abhägigkeit von einem Wert den Prozesswert eines EA-Feldes ändern, jedoch glaube ich dass es da keinerlei möglichkeit gibt oder ? wenn das so funktionieren würde, könnte cih einfach meine bisherige Struktur beibehalten. das wäre dann am einfachsten.

  3. #23
    Registriert seit
    17.07.2009
    Ort
    Am Rande der Ostalb
    Beiträge
    5.476
    Danke
    1.138
    Erhielt 1.238 Danke für 971 Beiträge

    Standard

    Du kannst auch bei WinCC flex Variablen multiplexen / indirekt adressieren.
    Damit kannst du z.B. den DB oder das Startbyte der Variablen mit einer anderen Variablen (Zeiger) übergeben.
    Die Zeigervariablen lasse ich immer in der S7 berechnen. Ist meist weniger Aufwand als im Panel.

    Gruß
    Dieter

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

    Standard

    ... ich bleibe bei Confusing - Nomen est Omen ?

    Was willst du denn nun auf einmal anzeigen ? Alle 384 Werte oder nur die 8 Werte der jeweils angewählten Messung ? Das letzt genannte würdest du mit meinem Vorschlag (sogar relativ einfach) realisieren können. Etwas Anderes solltest du vielleicht doch noch mal beschreiben ...

    Gruß
    Larry

  5. #25
    Registriert seit
    02.08.2012
    Beiträge
    30
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Ok. Die 8 paramter sind zusammengenommen ein Messergebnis (typ, datum, wert, usw...). Davon werden insg 48 Gespeichert (FiFo) es werden pro Stunde etwa 20-30 Messungen durchgeführt. Meine Aufgabe ist es nun, diese Ergebnisse an zu zeigen. Da ich nicht alle 48 ergebnisse auf eine Seite quetschen möchte aber auch nicht "plump" 4 Seiten mit 12 Messergebnissen erstellen möchte, wollte ich eine Art dynamische tabelle machen, mit zwei knöpfen daneben, einer zum hoch und einer zum runterscrollen, d.h. immer 3 gespeicherte Werte weiterspringen. Z.B. Start steht ja der erste Messwert ganz oben. (also werden insg. die werte 1 - 10 angezeigt) Dann "scrolle ich runter, sodass ich nun die Werte 3-13 in meiner Tabelle eingetragen sehe.
    Meine "zeilen" meiner Tabelle sollen also immer entsprechend gefüllt werden. Hab mir eine Zeile mal als Bildbaustein angelegt, damit ist die Zuordnung von Feld und Prozessvariable ja recht einfach. Nun ist ja aber das Problem, dass ich nicht immer den gleichen Speicherbereich auslesen will, und da liegt das Problem.

  6. #26
    Registriert seit
    02.08.2012
    Beiträge
    30
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard

    @Blockmove: habe ich schon probiert, nur bekomme ich irgendwie nie den Wert rasu den ich haben will. Habe ja verschiedene Datentypen in dem DB gespeichert. Welchen Datentyp soll ich dann nun bei der Variablen Deklaration angeben? Weil egal was ich mach, er ließt mir nicht den von mir (vermeintlich) angegebenen Speicherbereich aus.

  7. #27
    Registriert seit
    17.07.2009
    Ort
    Am Rande der Ostalb
    Beiträge
    5.476
    Danke
    1.138
    Erhielt 1.238 Danke für 971 Beiträge

    Standard

    Tja die Strukturen in WinCC flex. sind leider etwas "unflexibel".

    Du legst dir im Prinzip für jedes Element / Variable deiner UDT eine Variable des entsprechenden Typs (int,real,...) und einen Zeiger (int) an.
    Der Zeiger muß auf eben auf das entsprechende Byte im DB zeigen.
    Damit klappt der Zugriff eigentlich problemlos.

    Gruß
    Dieter

  8. #28
    Registriert seit
    02.08.2012
    Beiträge
    30
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Rein theoretisch bräuchte ich dann aber nur einen Zieger, den ich modifiziere oder? Das müsste doch reichen.. Geht das auch mit einem im UDT enthaltenen String ? (20 zeichen, also 22 byte)

  9. #29
    Registriert seit
    02.08.2012
    Beiträge
    30
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Habs mal ausprobiert (so wie ich dich verstanden habe):
    Code:
    Dim DB, db_rating, bbyte, textfeld
    bbyte = 46
    SmartTags("DB_Measurement_info_curr_data") = bbyte
    Set db_rating = SmartTags("DB_measurement_info_Test")
    Set textfeld = HmiRuntime.Screens("0210_Z2_MasterMeasurement_Info").ScreenItems("Textfeld_2")
        textfeld.Text = db_rating    
    ShowSystemAlarm("Bereich DB_measurement_info_Test[" & bbyte & "] gelesen. Wert: " & db_rating)
    DB_Measurement_info_cur_data ist dei Variable in "[ ]" bei der DB-definition. Wird auch richtig umgestellt, jedoch ließt er mir den Speicherbereich nciht aus ( in dem Fall byte 46 [Integer]).
    Hab ich irgendwas falsch bedacht?

  10. #30
    Registriert seit
    17.07.2009
    Ort
    Am Rande der Ostalb
    Beiträge
    5.476
    Danke
    1.138
    Erhielt 1.238 Danke für 971 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Deine Variable DB_Measurement_info_curr_data muß in der Definition auf zyklisch aktualisieren stehen.
    Und selbst dann ist nicht sichergestellt, dass es zuverlässig funktioniert, da vor der Ausgabe im Textfeld 2 erst die Variable von der Steuerung gelesen werden muß.

    Ich berechne meine Zeiger meist (zyklisch) in der SPS. Somit stelle ich sicher, dass die Daten beim Zugriff konsistent sind.
    Wenn ich es dann doch mal in der Runtime mache, dann meist so, dass ich die Pointer mit dem Ereignis zum "Bildwechsel" (z.B. Taste gedrückt) und die Variablenwerte dann mit "Bild aufgebaut" ermittle. Das Zusammenspiel von Variablenzugriffen und Scripten birgt viele Stolperstellen Manchmal wäre es mir auch lieber, wenn man hier das vermeintliche Multitasking / Parallelverarbeitung der Runtime abschalten könnte und auf eine strikte sequentielle Verarbeitung umstellen könnte.

    Gruß
    Dieter

Ähnliche Themen

  1. Antworten: 0
    Letzter Beitrag: 12.11.2010, 12:17
  2. Antworten: 7
    Letzter Beitrag: 11.09.2009, 14:01
  3. Schrittketten Struktur
    Von MatMer im Forum Programmierstrategien
    Antworten: 25
    Letzter Beitrag: 18.09.2007, 15:13
  4. Aus einer FB Struktur ein Wort auslesen
    Von ottopaul im Forum Simatic
    Antworten: 18
    Letzter Beitrag: 11.07.2007, 00:39
  5. DB-struktur
    Von Pimsti im Forum Simatic
    Antworten: 4
    Letzter Beitrag: 13.06.2006, 12:48

Lesezeichen

Berechtigungen

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