sporadisches Anlaufproblem mit FT_AVG's

Begonnen von Quasi, 05. Dezember 2010, 11:09:19

Vorheriges Thema - Nächstes Thema

0 Mitglieder und 1 Gast betrachten dieses Thema.

Quasi

Hi,
ich bin dabei ein kleines Projekt mit Verwendung der FT_AVG-Funktion (V3.11) zur Mittelwertbildung zu erstellen. Es sind 5 Meßwerte, die z.T. auch negativ werden können. In einem FB werden nacheinander - mit ein bischen Logik dazwischen -  5x der FB23 aufgerufen, jeder mit eigenem DB. Funktioniert soweit auch ganz gut - aber eben nicht zuverlässig.
Ein Problem ist das bei Änderung der Anzahl "n" diese nicht richtig in die Funktionen übernommen werden, d.h. der betreffende Ausgang gibt dann dauerhaft falsche Werte aus. Stelle ich "n" wieder auf den vorherigen Wert zurück, stimmt der Ausgang wieder. Das habe ich damit behoben, das ich mit externer Logik bei Änderung der Anzahl "n" einen kurzer Resetimpuls an "RST" gebe.

Zweites, größeres Problem: Manchmal - nach dem Einschalten der SPS (313C) - gibt der eine oder andere FT_AVG "nan" aus. Selbst bei Verwendung eines Anlauf-Timers, der den Reset-Eingang für 2s aktiviert, passiert das manchmal. Habe ich hier einen Denkfehler bei der Verwendung der Funktion?
Oder muß ich die 5x FT-AVG-Fkt. im Anlauf-OB initialisieren?
Den Eingang "E" wird dabei über einen einstellb. Taktgeber mit pos. Flanke getriggert (derzeit 5Hz) und bei Systemstart mit dem o.g. Anlauftimer für 2s aktiviert.
Ich habe auch schon versucht die FT_AVG's zeitlich versetzt nacheinander und mit 100ms Abstand über ein Schieberegister-Bit an "RST"  zu initialisieren.
Selbes unzuverlässiges Anlaufproblem... :(
Ich könnte jetzt zwar zeitgesteuert einen zusätzlichen Resetimpuls erzeugen um so die sporadischen Anlaufprobleme zu beseitigen aber ich denke das muß auch anders gehen.
Hat jemand den entscheidenden Tipp für mich?

Nachtrag: in der Online-Beobachtung des gestörten, zugehörigen IDBs sieht man schön wie die Meßwerte nach Takt eingelagert werden, n-Zähler läuft durch, Ausgang AVG zeigt jedoch DW#16#FFFFFFFF
Gruß, Quasi

dalbi

Hi,

das muss an der Programmierung liegen, der Baustein arbeitet tadellos.
Da es ein FB mit zugehörigen Instanz-DB ist bleiben die Werte bei einem Neustart der SPS erhalten.

Gruss Daniel

Quasi

Hallo Dalbi,
Problem ist gelöst... Ich wollte mit meiner Fragerei auch nicht sagen , das dein(?) FB fehlerhaft ist - sondern ich habe nach einer Lösung für mein Problem gesucht...
Erst hatte ich versucht mit einem Multiinstanz-DB die Anzahl der verschiedenen DB-Aufrufe in meinem FB zu reduzieren, selbes Ergebnis. Daran lag es schon mal nicht.
Lösung bzw. die eigentliche Ursache war, daß bei Systemstart sporadisch ein Meßwert noch null war (oder Wert sehr nahe an null) und bei den nachfolgenden Berechnungsschritten eine Division erfolgte. Das gab dann ab und zu ein nan oder auch ein Überlauf des 32bit-Zahlenbereichs. Mit "...nan" oder "...inf" am Eingang kann das FT_AVG-Modul irgenwie nicht umgehen... ;)

Gruß, Quasi