Funktion für Min bzw. Max-Werte

mrdarkside
2012-12-17
2012-12-17
  • mrdarkside - 2012-12-17

    Suche nach einer Funktion die den minimalen, sowie den maximalen Wert eines Integer-Arrays ausgibt. Ich codieren in ST mit CODESYS 3.5 SP1 Patch 2.

     
  • Schuero - 2012-12-17

    Moin.

    Guckst du:
    http://de.wikipedia.org/wiki/Bubblesort

    Man kann auch mit den Operatoren "min" oder "max" sowas bauen.

    Halt Geschmackssache.

    Gruß schuero

     
  • mrdarkside - 2012-12-17

    Besten Dank! Schade das es sowas nicht schon implementiert gibt..

     
  • Oberchefe - 2012-12-17

    eine einfache FOR-Schleife mit Min/Max reicht da. Wenn's ein FB sein soll (eine Funktion hat ja per Design nur einen Rückgabeparameter, würde also Maximal nur entweder Min oder nur Max liefern können)

    FUNCTION_BLOCK Get_Min_Max
    VAR_INPUT
       pArrayInt:   POINTER TO ARRAY[0..1] OF INT;
       dArraySize:   DINT;
    END_VAR
    VAR_OUTPUT
       Min_Wert:   INT;
       MAX_Wert: INT;
    END_VAR
    VAR
       i:DINT;
       pAbs: POINTER TO INT;
    END_VAR
    
    Min_Wert:=32767;
    Max_Wert:=-32768;
    FOR i:= 0 TO (dArraySize-1) DO
       pAbs:= pArrayInt+2*i;
       IF pAbs^ < Min_Wert THEN
          Min_Wert:=pAbs^;
       END_IF
       IF pAbs^  > Max_Wert THEN
          Max_Wert:=pAbs^;
       END_IF
    END_FOR
    
     

Log in to post a comment.