TIA Dämpfung

Roosinhio

Level-1
Beiträge
2
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo zusammen,

ich habe ein Programm von meiner Kollegin übernommen die mittlerweile das Unternehmen verlassen hat.:oops:

Die gute hat eine gleitende Mittelwertbildung/Dämpfung programmiert, nur leider funktioniert diese nicht so richtig... da ich nicht allzu firm in SCL Programmierung bin wollte ich mal fragen ob hier jemand Ahnung hat...

Vielen Dank für eure Hilfe

Roosinhio
 

Anhänge

  • Dämpfung_1.jpg
    Dämpfung_1.jpg
    47,3 KB · Aufrufe: 87
Vielleicht übersehe ich was. Aber mich deucht sie wollte zyklisch takten mit der Taktrate t einen neuen Mittelwert bilden.

Allerdings wird dt(1) immer nur die Zykluslänge betragen und somit keine Mittelung auslösen da dt dann ja immer dt(1) in sekunden ist (welcher Zyklus dauert schon sekunden an).

Also es ist überhaupt ein Ziemliches Geschwurbel.

Kann man aber grundsätzlich so aufbauen. Ich persönlich ziehe aber einen internen Taktgeber mit TON oder von aussen zugeführtem Taktbit vor.
Mir ist auch die Formel dahinter nicht ganz klar.

Ich löse gleitende Mittelwerte etwa so.
Code:
FUNCTION Mittelwert: REAL(*Filteroperation*)
TITLE = 'Filter mit Auflösungsangabe'
VERSION : '1.1'
KNOW_HOW_PROTECT
AUTHOR  : VoR
NAME    : Mittel 
FAMILY  : data


{S7_tasklist:='false';
 S7_blockview:='small'}


VAR_INPUT
 Imp: BOOL;  // Impuls für Neuberechnung (muss an Flanke liegen)
   Z: REAL;  // Messwert
   N: REAL;  // Anzahl Messungen (Auflösung)
  END_VAR
  
VAR_IN_OUT
  LM: REAL;  // Letzter Mittelwert
END_VAR  


BEGIN
IF Imp = 1 THEN
    LM:=Mittelwert; // neuberechnung des Mittelwertes
END_IF;
    
Mittelwert:=LM+((Z-LM)/N);
END_FUNCTION
 
Nein das ist einfach ein Gleitender Mittelwert. Du brauchst dazu einfach den letzten mittelwert vom letzten impuls und die menge über die du die Mittelung machen willst. Die Formel ist übrigens auch hier aus dem Forum. Suche mal nach Mittelwert und Formel.

mfg René
 
Ich hab mal vor einiger Zeit mit einer Beckhoff Steuerung gearbeitet und da musste ich auch eine gedämpften Mittelwert erzeugen, ich hab das dann folgenderweise gemacht.

Code:
HVar:= Wert + HVar;             'HVar - Hilfsvariable
Hvar:= HVar-(HVar/100);       'Je größer der Nenner, desto stärker wird die Dämpfung
MW:= HVar/100;                  ' Hier muss dann natürlich auch die Zahl wie oben stehen

Funktioniert wunderbar.

Du kannst das ganze Zyklisch laufen lassen oder natürlich dann auch mit einer IF Bedingung über ein Takt laufen lassen.
Einfacher wirst du es nicht hinbekommen :ROFLMAO:
 
Zurück
Oben