F353_FSORT

Ordinamento dei dati nella tabella dati numero reale (tabella dati a virgola mobile)

La funzione ordina i valori (con il segno +/-) di una tabella dati in ordine crescente o decrescente.

Parametri

Ingresso

s1_Start (REAL)

area iniziale della tabella dati da ordinare

s2_End (REAL)

area finale della tabella dati da ordinare

s3_Descending (INT)

specifica l'ordinamento:

  • 0 = crescente

  • 1 = decrescente

Note

  • Anziché utilizzare questa istruzione F, si consiglia di utilizzare l'istruzione FP7 corrispondente: FP_DATA_SORT Seleziona dati nella tabella dati

  • L'ingresso s1_Start specifica l'area iniziale della tabella dati, mentre s2_End specifica la fine. L'ordinamento è definito all'ingresso s3_Descending.

  • All'ingresso s3_Descending è possibile inserire i seguenti valori:

    0

    ordine crescente, ossia inizio dal valore più basso

    1

    ordine decrescente, ossia inizio dal valore più alto

  • I dati vengono ordinati tramite ordinamento a bolle nell'ordine specificato sulla base del valore inserito all'ingresso s1. Poiché il numero di confronti di word aumenta in proporzione al quadrato del numero di word, il processo di ordinamento può richiedere del tempo in presenza di un numero di word elevato. Quando il valore agli ingressi s1_Start=s2_End, non avviene alcun ordinamento.

Flag di errore

sys_bIsOperationErrorHold (passa a TRUE e resta TRUE)
  • se l'indirizzo della variabile all'ingresso s1_Start > s2_End.

  • se le aree indirizzi dei valori agli ingressi s1_Start e s2_End sono diverse

  • se i valori a virgola mobile eccedono l'intervallo di elaborazione di programma.

sys_bIsOperationErrorNonHold (passa a TRUE per una scansione)
  • se l'indirizzo della variabile all'ingresso s1_Start > s2_End.

  • se le aree indirizzi dei valori agli ingressi s1_Start e s2_End sono diverse

  • se i valori a virgola mobile eccedono l'intervallo di elaborazione di programma.

Esempio

Intestazione del POU

Tutte le variabili di ingresso e uscita utilizzate per programmare questa funzione sono state dichiarate nell'intestazione del POU. La stessa intestazione del POU è utilizzata per tutti i linguaggi di programmazione.

	VAR
		CalculateY: BOOL:=FALSE;
		xValue: REAL:=4.0;
		yValue: REAL:=0.0;
		xyValues: XY_DUT;
	END_VAR
	VAR
		CalculateY: BOOL:=FALSE;
		xValue: REAL:=4.0;
		yValue: REAL:=0.0;
		xyValues: XY_DUT;
	END_VAR

In questo esempio viene dichiarata la variabile di ingresso sort_order. Potete tuttavia scrivere una costante (p.es. 1 per un ordinamento decrescente) direttamente nel contatto di ingresso della funzione nel corpo.

Corpo del POU

La variabile sort_order viene specificata con il valore 1.

Quando la variabile start è impostata su TRUE, la funzione viene eseguita.

Ordina gli elementi dell'ARRAY data_field in ordine decrescente.

Corpo LD

BODY
    WORKSPACE
        NETWORK_LIST_TYPE := NWTYPELD ;
        ACTIVE_NETWORK := 0 ;
    END_WORKSPACE
    NET_WORK
        NETWORK_TYPE := NWTYPELD ;
        NETWORK_LABEL :=  ;
        NETWORK_TITLE :=  ;
        NETWORK_HEIGHT := 3 ;
        NETWORK_BODY
B(B_VAROUT,,sort_order,9,0,11,2,);
B(B_VARIN,,1,7,0,9,2,);
L(1,0,1,3);
        END_NETWORK_BODY
    END_NET_WORK
    NET_WORK
        NETWORK_TYPE := NWTYPELD ;
        NETWORK_LABEL :=  ;
        NETWORK_TITLE :=  ;
        NETWORK_HEIGHT := 9 ;
        NETWORK_BODY
B(B_VARIN,,output,8,1,10,3,);
B(B_F,F353_FSORT,,10,0,19,6,,?DEN?D@'s1'?Ds2?Ds3?AENO);
B(B_VARIN,,sort_order,8,4,10,6,);
B(B_VARIN,,data field[0],8,2,10,4,);
B(B_VARIN,,data field[4],8,3,10,5,);
B(B_COMMENT,,sorting order:ø^s3 = 0:ascending~ 1:descending,11,6,26,8,);
L(1,0,1,9);
        END_NETWORK_BODY
    END_NET_WORK
END_BODY

Corpo ST

sort_order:=1;
IF start then
    F353_FSORT( s1_Start:= data_field[0],
         s2_End:= data_field[4],
         s3_Descending:= sort_order);
END_IF;

Corpo IL

L'ultima revisione: 2021-06-29Feedback su questa paginaPanasonic hotline