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

Seite 2 von 3 ErsteErste 123 LetzteLetzte
Ergebnis 11 bis 20 von 25

Thema: Stützpunkt Kurve

  1. #11
    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
    Schon gefunden:

    Code:
    FUNCTION "SCALE_ANALOG_SIMPLE" : VOID
    TITLE =Scaling of values InPMin..InPMax / SclMin..SclMaxOutput INT
    AUTHOR : JMP
    FAMILY : STD
    VERSION : 0.1
    
    VAR_INPUT
      iInput : INT ; //Raw input value.
      iInpMIN : INT ; //Input minimum definition point.
      iInpMAX : INT ; //Input minimum definition point.
      iSclMIN : INT ; //Scaled minimum definition point.
      iSclMAX : INT ; //Scaled maximum definition point.
    END_VAR
    VAR_OUTPUT
      iOutput : INT ; //Scaled Output
    END_VAR
    VAR_TEMP
      Dummy : BOOL ; 
      rInput : REAL ; 
      rInpMIN : REAL ; 
      rInpMAX : REAL ; 
      rSclMIN : REAL ; 
      rSclMAX : REAL ; 
      rRate : REAL ; //Rate of conversion
      rOffset : REAL ; //Offset of conversion.
      rDiffInp : REAL ; 
      rDiffScl : REAL ; 
    END_VAR
    BEGIN
    NETWORK
    TITLE =Convert input values from INT to REAL
          L     #iInput; 
          ITD   ; 
          DTR   ; 
          T     #rInput; 
          L     #iInpMIN; 
          ITD   ; 
          DTR   ; 
          T     #rInpMIN; 
          L     #iInpMAX; 
          ITD   ; 
          DTR   ; 
          T     #rInpMAX; 
          L     #iSclMIN; 
          ITD   ; 
          DTR   ; 
          T     #rSclMIN; 
          L     #iSclMAX; 
          ITD   ; 
          DTR   ; 
          T     #rSclMAX; 
    NETWORK
    TITLE =Calculate the Differences for conversion
          L     #rSclMAX; 
          L     #rSclMIN; 
          -R    ; 
          T     #rDiffScl; 
          L     #rInpMAX; 
          L     #rInpMIN; 
          -R    ; 
          T     #rDiffInp; 
    NETWORK
    TITLE =Trap error: Input values are same.
          L     #rDiffInp; 
          L     0; 
          ==R   ; 
          BEC   ; 
    NETWORK
    TITLE =Calculate the RATE for conversion
    
          L     #rDiffScl; 
          L     #rDiffInp; 
          /R    ; 
          T     #rRate; 
    NETWORK
    TITLE =Calculate the OFFSET for conversion
          L     #rInpMIN; 
          L     #rRate; 
          *R    ; 
          L     #rSclMIN; 
          TAK   ; 
          -R    ; 
          T     #rOffset; 
    NETWORK
    TITLE =Calculate scaled value (INT)
          L     #rInput; 
          L     #rRate; 
          *R    ; 
          L     #rOffset; 
          +R    ; 
          RND   ; 
          T     #iOutput; 
    END_FUNCTION
    Ist halt für INTs, aber um für REALs kann man es sehr einfach modifizieren.
    Jesper M. Pedersen

  2. #12
    paula23 ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    14.06.2005
    Beiträge
    223
    Danke
    9
    Erhielt 15 Danke für 15 Beiträge

    Standard

    Naja ich würde auch nur hergehen und einen FB anlegen mit ca. 20 ScaleMin und 20 ScaleMax Werten, eine Auswahl treffen wie du beschrieben hast und die Formel hinterlegen.

    Servus.

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

    Standard

    (gelöscht - hatte dein Eintrag falsch verstanden)

    Mit festen Werten kannst du die Stützpunkte nicht auf ein HMI einstellen.
    Ich kann mir schon vorstellen das es wäre ein Vorteil wenn es handelt um ein FU zu steuern.
    Geändert von JesperMP (25.01.2011 um 11:54 Uhr)
    Jesper M. Pedersen

  4. #14
    Registriert seit
    22.06.2009
    Ort
    Sassnitz
    Beiträge
    11.166
    Danke
    921
    Erhielt 3.286 Danke für 2.655 Beiträge

    Standard

    Du kannst auch mal die Datentabelle in Excel eingeben, als Diagramm anzeigen und die Formel für eine Trendlinie ermitteln lassen. Die Formel kommt oft genau genug hin.

    Harald
    Es ist immer wieder überraschend, wie etwas plötzlich funktioniert, sobald man alles richtig macht.

    FAQ: Linkliste SIMATIC-Kommunikation über Ethernet

  5. #15
    paula23 ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    14.06.2005
    Beiträge
    223
    Danke
    9
    Erhielt 15 Danke für 15 Beiträge

    Standard

    Zitat Zitat von JesperMP Beitrag anzeigen

    Mit festen Werten kannst du die Stützpunkte nicht auf ein HMI einstellen.
    Ich kann mir schon vorstellen das es wäre ein Vorteil wenn es handelt um ein FU zu steuern.

    Verstehe ich jetzt nicht, wenn ich 20 Werte nehme, z.b. in 5er schritten von 0..100% ? Ok, ich kann ja nicht scalemix und scalemax anzeigen.

    aber da verstehe ich nicht was dein baustein da macht.

  6. #16
    Registriert seit
    08.02.2007
    Ort
    A-2320
    Beiträge
    2.252
    Danke
    244
    Erhielt 332 Danke für 303 Beiträge

    Standard

    In der PCS7 APC Bibliothek gibts den FC271 POLYG_P!
    Der kann 8 Stützpunkte.

  7. #17
    Registriert seit
    22.06.2009
    Ort
    Sassnitz
    Beiträge
    11.166
    Danke
    921
    Erhielt 3.286 Danke für 2.655 Beiträge

    Standard

    Oder suche mal nach LINEAR_INT aus der oscat, der kann 20 Wertepaare (ist allerdings ein fetter Baustein von knapp 2kB, weil in SCL geschrieben).

    Harald
    Es ist immer wieder überraschend, wie etwas plötzlich funktioniert, sobald man alles richtig macht.

    FAQ: Linkliste SIMATIC-Kommunikation über Ethernet

  8. #18
    Registriert seit
    28.02.2006
    Ort
    Ostsee 5 min zum Strand
    Beiträge
    780
    Danke
    92
    Erhielt 110 Danke für 98 Beiträge

    Standard

    In der BIB Technology gibt es den FB436 damit kann man Kurveninterpolation mit Stützpunkten errechnen lassen. Weiß jetzt nicht ob es bei dir funktionieren würde, aber die Werte werden aus einem DB gelesen und in einem DB abgelegt. Mit X und Y Position. Könnte man doch evtl um funktionieren
    Gruß von der Ostsee

    Nordischerjung
    _____________________

    Wenn man seinem Paßbild ähnlich zu sehen beginnt, sollte man schleunigst Urlaub machen. (Vico Torriani, schw. Entertainer)

    Ich habe eine Diät gemacht und fettem Essen und Alkohol abgeschworen - in zwei Wochen verlor ich 14 Tage. (Joe E. Lewis)

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

    Standard

    Zitat Zitat von paula23 Beitrag anzeigen
    Verstehe ich jetzt nicht, wenn ich 20 Werte nehme, z.b. in 5er schritten von 0..100% ? Ok, ich kann ja nicht scalemix und scalemax anzeigen.

    aber da verstehe ich nicht was dein baustein da macht.
    Der Baustein skaliert zwischen zwei Stützpunkte.
    Vielleicht erklärt diesen Bild es besser:
    Angehängte Grafiken Angehängte Grafiken
    Jesper M. Pedersen

  10. #20
    Registriert seit
    08.08.2007
    Ort
    Dresden
    Beiträge
    9.648
    Danke
    1.059
    Erhielt 2.046 Danke für 1.627 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    mal schnell für den positiven bereich mit DB-ablage

    Code:
    *
    DATA_BLOCK DB 6
    TITLE =
    VERSION : 0.1
    
    STRUCT     
       DB_VAR : ARRAY  [0 .. 20, 0 .. 1 ] OF REAL ;    
    END_STRUCT ; 
       
    BEGIN
       DB_VAR[0, 0] := 0.000000e+000; 
       DB_VAR[0, 1] := 0.200000e+000; 
       DB_VAR[1, 0] := 1.000000e+000; 
       DB_VAR[1, 1] := 1.200000e+000; 
       DB_VAR[2, 0] := 2.000000e+000; 
       DB_VAR[2, 1] := 2.200000e+000; 
       DB_VAR[3, 0] := 3.000000e+000; 
       DB_VAR[3, 1] := 3.200000e+000; 
       DB_VAR[4, 0] := 4.000000e+000; 
       DB_VAR[4, 1] := 4.200000e+000; 
       DB_VAR[5, 0] := 5.000000e+000; 
       DB_VAR[5, 1] := 5.200000e+000; 
       DB_VAR[6, 0] := 6.000000e+000; 
       DB_VAR[6, 1] := 6.200000e+000; 
       DB_VAR[7, 0] := 7.000000e+000; 
       DB_VAR[7, 1] := 7.200000e+000; 
       DB_VAR[8, 0] := 8.000000e+000; 
       DB_VAR[8, 1] := 8.200000e+000; 
       DB_VAR[9, 0] := 9.000000e+000; 
       DB_VAR[9, 1] := 9.200000e+000; 
       DB_VAR[10, 0] := 0.000000e+000; 
       DB_VAR[10, 1] := 0.000000e+000; 
       DB_VAR[11, 0] := 0.000000e+000; 
       DB_VAR[11, 1] := 0.000000e+000; 
       DB_VAR[12, 0] := 0.000000e+000; 
       DB_VAR[12, 1] := 0.000000e+000; 
       DB_VAR[13, 0] := 0.000000e+000; 
       DB_VAR[13, 1] := 0.000000e+000; 
       DB_VAR[14, 0] := 0.000000e+000; 
       DB_VAR[14, 1] := 0.000000e+000; 
       DB_VAR[15, 0] := 0.000000e+000; 
       DB_VAR[15, 1] := 0.000000e+000; 
       DB_VAR[16, 0] := 0.000000e+000; 
       DB_VAR[16, 1] := 0.000000e+000; 
       DB_VAR[17, 0] := 0.000000e+000; 
       DB_VAR[17, 1] := 0.000000e+000; 
       DB_VAR[18, 0] := 0.000000e+000; 
       DB_VAR[18, 1] := 0.000000e+000; 
       DB_VAR[19, 0] := 0.000000e+000; 
       DB_VAR[19, 1] := 0.000000e+000; 
       DB_VAR[20, 0] := 0.000000e+000; 
       DB_VAR[20, 1] := 0.000000e+000; 
    END_DATA_BLOCK
    
    
    FUNCTION FC7 : REAL
    
    VAR_INPUT
       rXValue : REAL; 
    END_VAR
    
    VAR_TEMP
       rValue : REAL;
       i : INT;
    END_VAR
    
        FOR i := 0 TO 20 DO
            IF DB6.DB_VAR[i,0] >= rXValue THEN
                rValue := DB6.DB_VAR[i,1];
                EXIT;
            END_IF;    
        END_FOR;
        FC7 := rValue;
    END_FUNCTION
    is natürlich ausbaufähig
    [SIGNATUR]
    Ironie setzt Intelligenz beim Empfänger voraus.
    [/SIGNATUR]

Ähnliche Themen

  1. Durchfluss berechnen mit Qh Kurve
    Von omit im Forum Simatic
    Antworten: 30
    Letzter Beitrag: 21.09.2014, 22:10
  2. Baustein für nichtlineare Kurve
    Von williwuff im Forum Simatic
    Antworten: 5
    Letzter Beitrag: 21.09.2011, 19:39
  3. WinCCFlex2008 SP1- Kurve anzeigen...
    Von AndreK im Forum HMI
    Antworten: 7
    Letzter Beitrag: 19.01.2011, 13:41
  4. Kurve als Sollwert...
    Von AndreK im Forum Simatic
    Antworten: 6
    Letzter Beitrag: 05.04.2010, 20:55
  5. Kurve als CSV speichern
    Von Steff_F im Forum HMI
    Antworten: 17
    Letzter Beitrag: 13.01.2009, 15:25

Lesezeichen

Berechtigungen

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