Auswertfunktion will einfach nicht funktionieren :(

DunkDream

Level-1
Beiträge
6
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo liebe Community,

ich habe momentan ein kleines Problem :(
Ich arbeite momentan an einem Projekt, inwelchem eine Prüfstandsüberwachung realisiert werden soll.

Dazu habe ich eine Funktion benötigt, welche mir einen Eingangswert auf eine bestimmte Zeitdauer auswertet und mir den Minimal und Maximalwert ausgibt.

Ich habe dann folgenden Programmiert:



Wenn man sich nun die Werte bei Min. und Max. anschaut kann dabei etwas nicht stimmen.

Es liegt an IN vom FB ein 0 Signal an und am Reset Eingang ein negiertes 0 Signal, also 1 Signal. Trotzdem gibt der Baustein mir diese komischen Werte aus.

Könnt ihr mir eventuell sagen was ich falsch gemacht habe?

liebe Grüße und Vielen Dank

DunkDream
 
Du hast Dir die Antwort doch schon selbst gegeben - es liegt ein negiertes 0-Signal am Reset Eingang an, also eine 1, sprich ein TRUE.

Und True am Reset Eingang von STATISTICS_REAL setzt nun mal die Min- und Max-Werte auf die zulässigen Werte für REAL: 1.175494351e-38F bis 3.402823466e+38F zurück.

Gruß SPS-Fuzzi
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,

leider funktioniert diese Funktion nicht, was an dem Funktionsblock Statistics_Real liegt.

Also für meinen Anwendungsfall leider gänzlich unbrauchbar.

Könnte nun also dennoch hilfe brauchen. Weiß leider überhaupt nicht wie ich mein Vorhaben, siehe oben, realisieren kann
icon_sad.gif


Ich würde mich freuen wenn Ihr mir dabei helfen würdet.

liebe Grüße

DunkDream
 
Wenn man sich nun die Werte bei Min. und Max. anschaut kann dabei etwas nicht stimmen.

Es liegt an IN vom FB ein 0 Signal an und am Reset Eingang ein negiertes 0 Signal, also 1 Signal. Trotzdem gibt der Baustein mir diese komischen Werte aus.

Könnt ihr mir eventuell sagen was ich falsch gemacht habe?
...

Die Werte sind nicht komisch und sie stimmen. Wenn Du Dir den Baustein in der Bibliothek anschaust wirst Du feststellen das er im Deklarationsteil folgendes stehen hat:

Code:
    MN: REAL:=3E+38;        (* minimum value*)
    MX: REAL:=1E-37;        (* maximum value*)

Kurz und knapp der Baustein passt nicht zu Deiner Aufgabe. Schreib Dir einen eigenen oder schau in die OSCAT (www.oscat.de) [hier ist der Vorteil das wenn der Baustein nicht gaaanz Deinen Wünschen enstpricht kann man ihn anpassen] oder erklär mal was der Baustein genau machen soll und wir sehen weiter. Wenn es nur darum geht den maximalen und den minimalenwert festzuhalten ist das ja keine Herausforderung.
 
Hallo,

danke dass du mir helfen möchtest.

Wie gesagt ich bin wirklich blutiger Anfänger in CoDeSys und dies ist mein erstes großes Projekt.

Also mein Baustein soll folgende Funktion erfüllen:

Ich gebe einen Wert als INT-Variable ein. Dieser Wert soll für eine einstellbare Zeitdauer (in der Visualisierung mittels Slider einstellbar) ausgewertet werden und der Maximal- sowie Minimalwert in jeweils einer INT-Variable ausgegeben werden.

Soviel zu der Theorie. Mir fehlen nun einfach die Mittel und Kenntnisse um diese Aus wertung zu realisieren :(

Würde das ganze gerne in CFC schreiben, da ich den Rest meines Programmes ebenfalls in CFC geschrieben habe und es möglichst standartisiert sein sollte.

Ich danke euch nochmal ganz herzlich für die bisherige Hilfe!

liebe Grüße

DunkDream
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ich hab Dir mal eine Min/Max Auswertung gemalt. Und zwar für INTEGER.
Die Timer Geschichte gehört dann an den ENABLE Eingang.
 

Anhänge

  • MinMax.GIF
    MinMax.GIF
    14,5 KB · Aufrufe: 30
Hallo zotos,

wow, das ging aber schnell, vielen lieben Dank!

Werde das ganze gleich programmieren und testen.

Wenn man sich es anschaut ergibt es aber schon wirklich Sinn, viel besser als meine Statistics Funktion :)

Danke für die Hilfe nochmal!!

liebe Grüße

DunkDream
 
Hallo,

habe leider noch ein kleines Problem mit der Auswertfunktion.

Undzwar wird mein Min Wert nicht verändert.
Dieser verharrt dauerhaft bei 0.

Also mein IN Signal ist beim einschalten z.B. 50. Dann ist 50 größer als Min=0, also ist die LT Bedingung nicht erfüllt und der MIN Wert wird nicht geschrieben weil eine 0 am EN Eingang des Move Bausteins anliegt.

Wie könnte ich das Problem wohl lösen?

liebe Grüße

DunkDream
 
Sichere Variante

Den Minwert und den Maxwert beim Start der Funktion mit dem aktuellen Wert belegen, dann stimmts auch, wenn keine neuen Werte mehr kommen, oder in einer anderen SPS Task auf den Wert zwischenzeitlich zugegriffen würde. Soweit ich weiss, ist in manchen CoDeSys Runtimes die Kommunikation zur Visu z.B. auch eine eigene Task :cool:
 
Zurück
Oben