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

Ergebnis 1 bis 9 von 9

Thema: Spitzenwerte eines Analogsignals herausfiltern

  1. #1
    Registriert seit
    23.10.2008
    Beiträge
    23
    Danke
    0
    Erhielt 1 Danke für 1 Beitrag

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo zusammen,

    vielleicht kann mir jemand von euch weiter helfen!? Ich arbeitete zur Zeit an einer Regelungsaufgabe, bei der der größte Wert eines Sensor während einer Wellenumdrehung herausgefiltert werden soll. Ich bekomme einen Eingangsimpuls je Umdrehung (Initiator). Darüber wird also der Zeitraum definiert, in dem ich den größten Wert des Sensors herausbekommen und speichern möchte. Meine ersten Denkansätze gehen in die Richtung, das ich immer dann den Istwert des Sensors in einen Puffer DB schreibe, wenn die Steigung des Sensorsignals "0" ist (Wendepunkt). Ich wollte 2 Puffer DB´s erzeugen und sie immer im Wechsel mit den Spitzenwerten der jeweiligen Umdrehung beschreiben. Nach einer Umdrehung sollten dann die gespeicherten Spitzenwerte verglichen und der größte Wert als Sollwert für die Regelung verwendet werden. Hat jemand von euch vielleicht schon einmal eine ähnliche Aufgabe in S7 realisiert oder hat wer vielleicht sogar eine bessere Lösung für das Problem? Freue mich über weitere Ideen und Denkanstöße. Meine zur Verfügung stehenden Komponenten lauten wie folgt:

    Software: S7 V5.4 + SP3
    Hardware: CPU 315-2DP (6ES7 315 2AG10-0AB0)

    Schönen Tag noch.

    Gruß, Alex
    Zitieren Zitieren Spitzenwerte eines Analogsignals herausfiltern  

  2. #2
    Registriert seit
    27.12.2009
    Beiträge
    93
    Danke
    4
    Erhielt 20 Danke für 18 Beiträge

    Standard

    Hallo,

    Ich würde hier den Analog-wert immer in bestimmten Abständen einlesen,
    hier eigent sich der OB34. Die Zeit zwischen den Alarmen kannst Du in der Hardwarekonfiguration festlegen.
    Bei jedem Einlesen/Skalieren würde ich den Maximumwert von aktuellem Analogwert und (letzten) Maximumwert ermitteln und diesen Wert wieder als Maximumwert speichern.
    Bei jeder Flanke des Initiators würde ich den Maximumwert dann als Maximum für letze Umdrehung ablegen den Maximumwert zum Einlesen würde ich entwerden mit "0" oder mit "-31767" oder mit "2exp-31" vorbelegen/Löschen.

    Das wars.


    Viel Erfolg

    S7_Programmer

  3. #3
    Registriert seit
    23.04.2009
    Ort
    Allgäu
    Beiträge
    3.042
    Danke
    241
    Erhielt 863 Danke für 617 Beiträge

    Standard

    Hallo Alex,

    ich würde mir immer nur den höchsten Wert in eine Hilfswort schreiben, dieses Hilfswort beim Start auf Nullsetzen.
    So etwa:
    Code:
         U #Start
         FP #Flanke_Start
         SPBN GO
         L 0
         T #Höchster_Wert
    GO:  L #Ist_Wert
         L #Höchster_Wert
         <I
         SPB NEIN
         TAK
         T #Höchster_Wert
    NEIN:NOP 0
    Gruß
    Paule
    ----------------------------------------------------------------------------
    > manchmal verliert man und manchmal gewinnen die anderen <

  4. #4
    Alex vs. SPS ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    23.10.2008
    Beiträge
    23
    Danke
    0
    Erhielt 1 Danke für 1 Beitrag

    Standard

    Hallo S7_Programmer,

    das war auch mein erster Ansatz, die Werte des Sensors in definierten Zeitabständen einlesen. Die Gefahr dabei ist lediglich, das ich gewisse Spitzen, auf die ich eigentlich unbedingt reagieren müsste, nicht mitbekomme. Die Wahrscheinlichkeit ist eher gering (OB34 alle 200ms), ausschließen kann ich es aber so nicht. Deshalb bin ich auch erst zu dem Ansatz mit der Ermittlung der Wendepunkte übergegangen. Im ersten Beitrag habe ich übrigens einen nicht ganz unwichtigen Punkt vergessen: Sollte der Istwert während der aktuellen Umdrehung den maximalen Istwert der vorherigen Umdrehung überschreiten, muss der Sollwert des Reglers unbedingt auf den neuen Istwert angepasst werde.

    @Paule
    Werde deinen Vorschlag gleich mal ausprobieren, hört sich ganz gut an.

    Vielen Dank schonmal für eure Antworten.

    Gruß,
    Alex
    Geändert von Alex vs. SPS (17.01.2010 um 17:03 Uhr)

  5. #5
    Registriert seit
    18.10.2007
    Beiträge
    127
    Danke
    1
    Erhielt 15 Danke für 13 Beiträge

    Standard

    Wenn Du noch keinen Impuls hast, dann bilde dir einen mit dem [P] Befehl, mit dem Ergebnis legst Du den aktuell vorliegenden Istwert des Sensors in einen Speicher. Nun vergleichst Du in jedem Zyklus diesen gespeicherten mit dem neuen Istwert. ISt dieser größer als der vorhergehende speicherst Du ihn erneut ab. Beim nächsten Initiatorsignal legst Du den max-Speicher in eine weitere Speicherzelle. die Du zu Regelung verwenden kannst, anschleißend wiederholt sich alles.

    EDIT: Paule hts ja schon geschrieben, ich war wohl zu langsam

    Gruß Rolf
    Geändert von R.Blum (17.01.2010 um 17:10 Uhr)

  6. #6
    Registriert seit
    27.12.2009
    Beiträge
    93
    Danke
    4
    Erhielt 20 Danke für 18 Beiträge

    Standard

    Hallo,

    ich denke, wenn noch nichts im OB34 steht, dass die Aufrufzeit des OB34 bei deinem Problem auf 2ms vielleicht sogar auf 1ms gesetzt werden kann. Hier würde ich auch die Wandlungszeit deiner Analogkarte ansetzen. Schau doch einamal in der Hardwarekonfig auf die Aufrufzeit des OB34.

    Es kann dann durchaus sein, dass bei einer entsprechend kurzen Alarmzeit der OB34 mehrmals den OB1 unterbricht, die OB1-Zykluszeit erhöt sich entsprechend. NaJa einenTod musst du halt sterben....

    Weiterhin viel Erfolg!

    S7_Programmer

  7. #7
    Registriert seit
    28.01.2009
    Ort
    Hamburg
    Beiträge
    199
    Danke
    52
    Erhielt 54 Danke für 34 Beiträge

    Standard

    Folgender Ansatz:
    Wenn ein neuer Messwert größer ist als sein Altwert,wird er als Maxwert gespeichert.Ist der Ini bedämpft startet eine neue Maxwerterfassun

    AWL Quellencode
    Code:
    FUNCTION_BLOCK "Spitzenwert"
    TITLE =
    VERSION : 0.1
    
    
    VAR_INPUT
      Neue_Umdrehung : BOOL ;    
      Analogwert : REAL ;    
    END_VAR
    VAR_OUTPUT
      Max_Analog : REAL ;    
    END_VAR
    VAR
      FLME : BOOL ;    //Flankenmerker
      Altwert_Analog : REAL ;    
    END_VAR
    BEGIN
    NETWORK
    TITLE =
    
          U     #Neue_Umdrehung; //Neue Umdrehung
          FP    #FLME; 
          SPBN  m001; 
          L     0.000000e+000; //rücksetzen des Altwertes bei Neumessung
          T     #Altwert_Analog; 
    m001: CLR   ; 
    
          L     #Analogwert; //Vergleich ob Neuwert > Altwert
          L     #Altwert_Analog; 
          >R    ; 
          SPBN  m002; 
          TAK   ; //wenn Neuwert> Alwert
          T     #Altwert_Analog; 
    m002: L     #Altwert_Analog; //Maxwertausgabe pro Umdrehung
          T     #Max_Analog; 
    END_FUNCTION_BLOCK
    Zitieren Zitieren Spitzenwerte eines Analogsignals herausfiltern  

  8. #8
    Registriert seit
    28.01.2009
    Ort
    Hamburg
    Beiträge
    199
    Danke
    52
    Erhielt 54 Danke für 34 Beiträge

    Standard

    Zwei Menschen ein Gedanke.

    Bin leider etwas zu Spät.Ist ja auch egal

    Übrigens Die angegebene SPS kennt keinen OB34,sonder nur OB 35.

    Viele Grüße Bernard
    Zitieren Zitieren Hallo Paul  

  9. #9
    Alex vs. SPS ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    23.10.2008
    Beiträge
    23
    Danke
    0
    Erhielt 1 Danke für 1 Beitrag

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo zusammen,

    vielen Dank für die Flut an Antworten. Jetzt muss ich ersteinmal filtern und ausprobieren.

    Gruß,
    Alex

Ähnliche Themen

  1. KNOW-HOW Schutz eines FC
    Von Kleissler im Forum Simatic
    Antworten: 39
    Letzter Beitrag: 17.03.2016, 17:51
  2. Konfiguration eines PG
    Von Magni im Forum Simatic
    Antworten: 8
    Letzter Beitrag: 01.08.2010, 14:47
  3. Aufruf eines Date_and_Time eines DB's
    Von hank12 im Forum Simatic
    Antworten: 5
    Letzter Beitrag: 08.07.2009, 10:33
  4. Flankenauswertung eines Analogsignals
    Von Homer1290 im Forum Simatic
    Antworten: 10
    Letzter Beitrag: 05.06.2008, 11:56
  5. Laufzeitmessung eines FBs
    Von TonyMono im Forum Simatic
    Antworten: 6
    Letzter Beitrag: 05.07.2006, 17:53

Lesezeichen

Berechtigungen

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