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

Ergebnis 1 bis 3 von 3

Thema: Datenbaustein auslesen

  1. #1
    Anonymous Gast

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Ich habe folgendes Problem:

    In einem DB werden kontinuierlich Daten abgelegt (Ringspeicherprinzip).
    Ich suche nun nach einer Möglichkeit den Durchschnittswert zu bestimmen.
    Gibt es eine Möglichkeit dies einfach zu verwirklichen? Der FC102 macht
    ja ähnliches nur das mir die mittlere Abweichung leider nicht weiterhilft.

    Gruss Mathias
    Zitieren Zitieren Datenbaustein auslesen  

  2. #2
    Registriert seit
    06.10.2003
    Beiträge
    3.412
    Danke
    451
    Erhielt 506 Danke für 408 Beiträge

    Standard

    Falls es sich um INT-Werte handelt , würde ich diese bereits beim Einlesen in einem DINT aufaddieren und durch die Anzahl der vorhandenen Einträge dividieren (/D). Wenn das Register voll ist, muss natürlich der herausfallende Wert vor der Divison von der Summe subtrahiert werden. Wenn der Ringspeicher bereits funktioniert, sollte diese Berechnung kein Problem sein.

    Gruss, Onkel

  3. #3
    Registriert seit
    20.06.2003
    Ort
    Sauerland.NRW.Deutschland
    Beiträge
    4.850
    Danke
    78
    Erhielt 800 Danke für 543 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    dieser baustein ermittelt anzahl, min, max, mittelwert, summe.

    wenn du nicht alle werte brauchst kannst den ja anpassen.

    awl-quelle
    Code:
    FUNCTION "DB-Bereich_Auswerten" : VOID
    TITLE =
    AUTHOR : Lischnew
    FAMILY : ARCHIV
    NAME : DB_Auswe
    VERSION : 1.0
    
    
    VAR_INPUT
      Datenbaustein : BLOCK_DB ;	//Datenbaustein der ausgewerten werden soll
      Datenanfang : INT ;	//erstes Datenwort
      Datenende : INT ;	//letztes Datenwort
    END_VAR
    VAR_OUTPUT
      Anzahl : INT ;	//Anzahl der Datenworte
      Min : INT ;	//Kleinster Wert aller Datenworte
      Max : INT ;	//Grösster Wert aller Datenworte
      Schnitt : INT ;	//Durchschnitt (Mittelwert) aller Datenworte
      Summe : DINT ;	//Summe aller Werte aller Datenworte
    END_VAR
    VAR_TEMP
      summe_temp : DINT ;	
      akt_dw : DINT ;	//aktuelles Datenwort
      akt_wert : INT ;	//Wert des akt_dw
    END_VAR
    BEGIN
    NETWORK
    TITLE =
    
          AUF   #Datenbaustein; 
    
          L     #Datenende; 
          L     #Datenanfang; 
          -I    ; 
          L     1; 
          +I    ; 
          T     #Anzahl; 
    
          NOP   0; 
    
          L     #Datenanfang; 
          T     #akt_dw; 
    
          L     #akt_dw; 
          SLD   3; 
          LAR1  ; 
    
          L     DBW [AR1,P#0.0]; 
          T     #Min; 
          T     #Max; 
          T     #Schnitt; 
          T     #Summe; 
          T     #summe_temp; 
    
    anf:  NOP   0; //schleifenanfang
    
          L     #akt_dw; 
          L     2; 
          +D    ; //nächstes dw
          T     #akt_dw; 
          L     #Datenende; 
          >D    ; 
          SPB   ende; //Schleifenende erreicht
    
          L     #akt_dw; 
          SLD   3; 
          LAR1  ; 
    
          L     DBW [AR1,P#0.0]; 
          T     #akt_wert; 
    
    // Auswertung kleinster Wert
          L     #Min; 
          L     #akt_wert; 
          <I    ; 
          SPB   min0; 
          L     #akt_wert; 
          T     #Min; 
    min0&#58; NOP   0; 
    
    // Auswertung grösster Wert
          L     #Max; 
          L     #akt_wert; 
          >I    ; 
          SPB   max0; 
          L     #akt_wert; 
          T     #Max; 
    max0&#58; NOP   0; 
    
    // Berechnen der Summe
          L     #summe_temp; 
          L     #akt_wert; 
          +D    ; 
          T     #summe_temp; 
    
          SPA   anf; //zum Schleifenanfang
    
    ende&#58; NOP   0; 
    
    // Berechnen des Durchschnitt
          L     #summe_temp; 
          T     #Summe; 
          L     #Anzahl; 
          /D    ; 
          T     #Schnitt; 
    
    
    END_FUNCTION
    .
    mfg Volker .......... .. alles wird gut ..

    =>Meine Homepage .. direkt zum Download

    Meine Definition von TIA: Total Inakzeptable Applikation

Ähnliche Themen

  1. Datenbaustein per TCP/IP auslesen mit C#
    Von Darkhobbit im Forum Simatic
    Antworten: 10
    Letzter Beitrag: 23.09.2009, 15:22
  2. Datenbaustein auslesen aber wie???
    Von Black Scorpion im Forum Simatic
    Antworten: 6
    Letzter Beitrag: 26.06.2009, 11:53
  3. Antworten: 7
    Letzter Beitrag: 30.07.2008, 13:13
  4. datenbaustein auslesen????
    Von Ibaxx im Forum Simatic
    Antworten: 1
    Letzter Beitrag: 26.09.2007, 13:48
  5. Datenbaustein teilweise auslesen ?
    Von Anonymous im Forum Simatic
    Antworten: 6
    Letzter Beitrag: 29.05.2005, 11:58

Lesezeichen

Berechtigungen

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