Min, Max Werte von einem Array in TwinCat3

StefanOe

Level-1
Beiträge
19
Reaktionspunkte
1
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,
Ich möchte in meinen Programm gerne aus zwei Arrays die Min und Max Werte herausfinden.
Hab es schon mit dem MIN und MAX Baustein versucht dieser nimmt es jedoch nicht an wenn er ein Array zugewiesen bekommt.

Hat zufällig jemand eine Idee wie ich trotzdem die Werte bekommen könnte?

Schöne Grüße,
Stefan
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Harald,
hätte das ganze schon in einer Schleife probiert hat aber leider nicht funktioniert.

Zur Zeit hab ich einmal eine Größe von 20 Werten genommen ist aber nur Beispielhaft, in Echt werden dann von meinem Sensor um die 1500 Werte eingelesen werden.
 
Da würde ich aber, sofern möglich, gleich beim Einlesen des jeweiligen Wertes prüfen, ob dieser größer/kleiner als der aktuelle größte/kleinste Wert ist. Geht natürlich nicht bei einem Ringpuffer.

hätte das ganze schon in einer Schleife probiert hat aber leider nicht funktioniert.

Code bitte
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hier die paar Zeilen, falls es noch wer braucht.
Danke, dass Du Dich nochmal zum Thema gemeldet hast! Viele halten es ja leider gar nicht für "nötig", ihren Thread mit einer ErfolgsMeldung oder sonstwie informativ zum Abschluss zu bringen, damit auch künftige Hilfesuchende etwas damit anfangen können.

Was sich mir aber leider nicht erschliesst, ist ...
- einerseits, wozu der Vergleich arrDiffS1[x] > arrDiffS1 [ i ] mit x := i - 1 dient und
- andererseits, wie/wann Du die Variable minDiff vorbesetzt.
 
Zuletzt bearbeitet:
Also
minDiff : REAL; //hat also gar keine Belegung am Anfang

und der Vergleich arrDiffS1[x] > arrDiffS1 dient dazu dass ich immer die vorherigen Werte des Arrays vergleiche. Ist der neue Wert kleiner als der davor wird minDiff neu deklariert. Ist er größer ist die IF-Bedingung False und der Wert bleibt unverändert.

So kann man einfach das ganze Array vergleichen.

Hoffe so versteht man das Ganze.
 
Hast Du die Aufgabenstellung geändert? Willst Du den kleinsten Wert im Array ermitteln oder den kleinsten jemals aufgetretenen Wert?
Wann und wie ändert sich Dein i ?

Harald
 
Zuviel Werbung?
-> Hier kostenlos registrieren
minDiff : REAL; //hat also gar keine Belegung am Anfang ...
Hmmm. Der Anfangswert von minDiff hat aber einen grossen Einfluss darauf, ob die Ermittlung des Minimums funktionieren kann. Und "gar keine Belegung am Anfang" ist vermutlich WunschDenken. Gar keine Belegung gibt's nicht.
Falls Du fest damit rechnen kannst, dass negative Werte auftreten können, dann wird es vielleicht wunschgemäss funktionieren.
Aber das sollte man nicht dem Zufall überlassen!
... und der Vergleich arrDiffS1[x] > arrDiffS1 dient dazu dass ich immer die vorherigen Werte des Arrays vergleiche. Ist der neue Wert kleiner als der davor wird minDiff neu deklariert. Ist er größer ist die IF-Bedingung False und der Wert bleibt unverändert.
Hmmm. Das hört sich so an, als wolltest Du der ach so überarbeiteten CPU den Verleich minDiff < arrDiffS1 [ i ] ersparen, wenn durch die Abfrage
arrDiffS1[x] > arrDiffS1 [ i ] schon "vorab" geklärt werden kann, dass in arrDiffS1 [ i ] nichts stehen kann, was sich als Minimum erweisen könnte.
Aber: die CPU arbeitet immer beide Vergleiche ab und der zweite allein ohne den ersten sagt schon das aus, was Du wissen/berücksichtigen willst!
Doppelt gemoppelt, ohne gelegentlich einen Vorteil zu bringen, jedoch regelmässig einen Nachteil!

Anm.:
Irgendwie steckt der KursivTeufel in diesem Editor, der die Zeichenfolge "eckige Klammer auf, i, eckige Klammer zu" plattmacht und gleichzeitig auf kursiv umschaltet.
 
Zuletzt bearbeitet:
Zurück
Oben