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

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

Thema: Lineare Skalierung in Flexible

  1. #1
    Registriert seit
    04.04.2008
    Beiträge
    389
    Danke
    85
    Erhielt 39 Danke für 24 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo,
    ich will gleichzeitig (zu Kontrollzwecken) den Analogrohwert aus dem PEW754 (0-27648, WORD) und den zugehörigen normierten Wert (0-7500, INT) in je einem EA-Feld darstellen.
    Was ist der einfachste Weg?
    Ich will nach Möglichkeit nicht schon in der S7-CPU das PEW754 normiert in einen anderen Speicher schreiben, sondern erst in Flexible.
    Ich versuche in Flexible den Wert der Prozessvariablen (PEW754) normiert in eine interne Flexible-Variable zu übergeben, finde aber keine Möglichkeit, außer vielleicht mit einem Skript.

    Gruß
    Earny
    Zitieren Zitieren Lineare Skalierung in Flexible  

  2. #2
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.726
    Danke
    398
    Erhielt 2.401 Danke für 2.001 Beiträge

    Standard

    Hallo Earny,
    da sind mir 2 Dinge aufgefallen :
    - du willst das PEW in einem EA-Feld darstellen. Möchtest du (wenn es ginge) auch den Wert des PEW über dieses Feld ändern ?
    - du lies ein WORD ein und willst als INT darstellen. Das kann bei unterschiedlich Var-Typen zu Problemen führen. Besser hier immer den gleichen Var-Typ verwenden ...

    Gruß
    LL

  3. Folgender Benutzer sagt Danke zu Larry Laffer für den nützlichen Beitrag:

    Earny (15.08.2008)

  4. #3
    Earny ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    04.04.2008
    Beiträge
    389
    Danke
    85
    Erhielt 39 Danke für 24 Beiträge

    Standard

    Hallo Larry,
    das Schreiben ins PEW... aus Flexible heraus ist nicht erforderlich.
    Am Besten wäre es wenn ich das PEW... im WORD-Format einlesen könnte und dann normiert in eine andere interne Flexible-Variable mit Datentyp INT schreiben könnte. Das hätte den Vorteil, dass ein Minus-Wert im PEW... (Werte zwischen 32768 und 65536) dann in Flexible als Integerwert (mit Vorzeichen) dargestellt werden könnte.
    Wenn das mit dem Integertyp aber Probleme bereitet, dann kann ich auch beim Datentyp WORD bleiben.
    In S7 wäre die Lösung ganz einfach: Ich kopiere den Wert aus dem PEW... in z.B. ein Merkerwort und stelle für dieses Merkerwort in der Symboltabelle den Datentyp INT ein. Aber ich wollte das nach Möglichkeit nicht in der S7-CPU machen, sondern in Flexible.

    Gruß
    Earny

  5. #4
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.726
    Danke
    398
    Erhielt 2.401 Danke für 2.001 Beiträge

    Standard

    ... was spricht denn gegen die Sache mit der Zwischen-Variablen ...?

    Die Lineare Skalierung versteckt sich übrigens unter :
    Ereignisse-Aktivieren-Berechnung-Lineare Skalierung

    Gruß
    LL

  6. Folgender Benutzer sagt Danke zu Larry Laffer für den nützlichen Beitrag:

    Earny (15.08.2008)

  7. #5
    Earny ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    04.04.2008
    Beiträge
    389
    Danke
    85
    Erhielt 39 Danke für 24 Beiträge

    Standard

    Hallo Larry,
    ich habe dank Deiner Hilfe die Stelle gefunden, wo man die Skalierung einstellen kann. Es gibt aber eine Fehlermeldung beim Generieren.

    Ich habe folgende Variablen:
    F101AnalogE, Flex-Name für PEW754 (Word)
    F101AnalogENormiert "interne Flex-Variable" (INT - es gibt kein WORD)

    Dann habe ich für die Variable F101AnalogE in Eigenschaften in Ereignisse-Wertänderung eingestellt:
    X= F101AnalogE
    a=0,271267 (7500/2764
    Y=F101AnalogeENormiert
    b=0

    Beim Generieren gibt es die Fehlermeldung: "Bei Systemfunktion Lineare Skalierung fehlt ein Paramater oder hat einen unzulässigen Typ (Trigger F101AnalogENormiert)"

    Gruß
    Earny

  8. #6
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.726
    Danke
    398
    Erhielt 2.401 Danke für 2.001 Beiträge

    Standard

    ... ich kann das jetzt leider nicht nachstellen ...
    Aber für mich hast du da gleich 3 elementare Fehler im System :
    - dein Quellwert ist ein WORD
    - dein Zielwert soll ein INT sein
    - dein Faktor ist vom Typ REAL

    Ich wiederhole jetzt noch einmal eine Passage aus dem Beitrag #2 :
    du liest ein WORD ein und willst als INT darstellen. Das kann bei unterschiedlich Var-Typen zu Problemen führen. Besser hier immer den gleichen Var-Typ verwenden ...
    Vielleicht probierst du das einfach mal : Typ Quell-Var = Typ Ziel-Var = Typ Faktor.
    Oder du normierst in der SPS (was mir persönlich noch am Besten gefällt).

    Gruß
    LL

  9. Folgender Benutzer sagt Danke zu Larry Laffer für den nützlichen Beitrag:

    Earny (16.08.2008)

  10. #7
    Registriert seit
    27.05.2004
    Ort
    Thüringen/Berlin
    Beiträge
    12.222
    Danke
    533
    Erhielt 2.698 Danke für 1.950 Beiträge

    Standard

    @Larry

    Oder zumindest sollte man "F101AnalogeENormiert" mal als Real testen, ob es angenommen wird und wenn ja, ob das Ergebnis plausibel ist.
    Gruß
    Ralle

    ... there\'re 10 kinds of people ... those who understand binaries and those who don\'t …
    and the third kinds of people … those who love TIA-Portal

  11. #8
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.726
    Danke
    398
    Erhielt 2.401 Danke für 2.001 Beiträge

    Standard

    Vielleicht noch einmal ganz grundsätzlich zu dem Thema (auch weil ich mich erinnere, dass wir das so ähnlich schon mal hatten ...) :

    Ich versuche Messwerte (und Zahlenwerte ganz generell) innerhalb der SPS immer sinnvoll darzustellen. Einen Analogwert, der sich in seiner Ursprungsform durch das Programm hangelt, wirst du bei mir nicht finden. Hierbei bediene ich mich gerne der gültigen Einheiten (m , Grad Celsius , Grad (Winkel) , N , Nm usw.) oder der zugehörigen Untereinheiten. Das macht das Programm insgesamt auch lesbarer und verständlicher ... und beim darstellen auf der Visu muss man dann auch nicht mehr lange überlegen (oder Skalieren).
    Das ist aber vielleicht Ansichtssache ...

    Gruß
    LL

  12. #9
    Earny ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    04.04.2008
    Beiträge
    389
    Danke
    85
    Erhielt 39 Danke für 24 Beiträge

    Standard

    Hallo Larry,
    hallo Ralle,
    meinen eigentlichen Fehler habe ich gefunden:
    Wenn man die lineare Skalierung bei Wertänderung benutzt, dann muss man eine X-Variable, eine Y-Variable, die Steigung a und den Ordinatenwert b angeben. Die lineare Skalierung wird für die Variable eingestellt, die den Wert aus dem PEW darstellt. Wenn sich der Wert im PEW ändert, wird die Skalierung ausgelöst (Trigger durch Wertänderung im PEW).
    Es kam ja die Fehlermeldung (hatte ich beschrieben), dass sinngemäß etwas an einem Parameter der Skalierung nicht stimmen würde. Ich konnte aber nichts finden.
    Mein Problem war, ich habe an der falschen Stelle gesucht.
    Der Fehler lag an der Zielvariablen, die den normierten Wert aufnehmen soll. Hier hatte ich dann irgendwann in meiner Verzweiflung auch mal unter linearer Skalierung nachgesehen, und hier war von Flexible alles rot gemarkert!!! Ich musste nur die fälschlicherweise eingetragene Skalierung löschen und die Sache lief ab dann problemlos.

    Jetzt zu den Berechnungen mit WORD, INT, REAL usw.:
    Ich habe mal ein paar Testnormierungen gemacht:
    Ich ließ FAnalogE (PEW...) beim Datentyp WORD.
    Der Steigungswert war 0,271267361 (7500/2764.
    Der Wert ging in die interne Flexvariable FAnalogENormiert mit INT.

    Es gab folgende Ergebnisse:
    PEW------Taschenrechner----Flexible (als INT-Zahl im EA-Feld)
    5000-----1356,3------------1357
    10000----2712,7------------2714
    20000----5425,3------------5426
    30000----8138,0------------8139

    Seltsamerweise ist der Fehler bei 10000 am größten.
    Ich habe mal zu Testzwecken den Datentyp der internen Zielvariable FAnalogENormiert auf Float (entspricht vermutlich Real bei S7) gestellt, wie von Ralle vorgeschlagen.
    Es ergibt sich beim PEW-Wert 10000 keine Änderung. Wenn man diesen Floatwert auf das EA-Feld gibt, wird wieder 2714 angezeigt. Der Wert 2713 wäre der nächstgelegene Ganzzahlwert.
    Es ist mir nicht klar, mit welchem Datentyp Flexible eigentlich rechnet.
    Ich vermute, es ist der Datentyp Variant. Zumindest steht in der Hilfe zu VB-Skript, dass Flexible nur einen Datentyp kennt, und das ist der Datentyp Variant, oder habe ich da etwas falsch verstanden?
    Bei VB6.0 ist Variant der Datentyp, der alle anderen Datentypen aufnehmen kann.
    Ich kann mir aber trotzdem nicht erklären, weshalb sich Flexible bei dieser einfachen Rechnung verrechnet.

    Gruß
    Earny

  13. #10
    Registriert seit
    27.05.2004
    Ort
    Thüringen/Berlin
    Beiträge
    12.222
    Danke
    533
    Erhielt 2.698 Danke für 1.950 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hast du mit diesem langen Wert im Taschenrechner gerechnet?

    Der Steigungswert war 0,271267361

    Könnte durchaus sein, das WinCCFlex nicht so viele Stellen nutzt, also durch das Abschneiden von Stellen deine Egebnisse so abweichen. Das wäre meine erste Vermutung dazu.

    PS: Ne, habs mal nachgerechnet, das kann es eigentlich auch nicht sein.
    Geändert von Ralle (17.08.2008 um 01:24 Uhr)
    Gruß
    Ralle

    ... there\'re 10 kinds of people ... those who understand binaries and those who don\'t …
    and the third kinds of people … those who love TIA-Portal

Ähnliche Themen

  1. Lineare Funktion
    Von emilio20 im Forum HMI
    Antworten: 0
    Letzter Beitrag: 09.07.2011, 20:15
  2. Lineare Skalierung mit WinCC flexible
    Von Earny im Forum HMI
    Antworten: 8
    Letzter Beitrag: 23.07.2008, 08:45
  3. Antworten: 1
    Letzter Beitrag: 23.05.2008, 13:56
  4. WinCC Flexible lineare Umrechnung
    Von Lars Weiß im Forum HMI
    Antworten: 11
    Letzter Beitrag: 26.03.2007, 15:31
  5. Baustein in einer lineare Interpolation
    Von alexus im Forum Simatic
    Antworten: 2
    Letzter Beitrag: 07.03.2004, 22:43

Lesezeichen

Berechtigungen

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