REAL in STRING
La funzione REAL_TO_STRING converte un valore del tipo di dato REAL in un valore del tipo di dato STRING[15] che presenta 7 spazi sia prima che dopo il punto decimale. La stringa risultante è giustificata a destra ed è compresa nell'intervallo da '-999999.0000000' a '9999999.0000000'. Nell'intervallo positivo il segno più viene omesso. Gli zeri iniziali vengono riempiti con spazi vuoti (p.es. partendo da -12.0 si avrà il valore STRING '-12.0').
Ingresso
Uscita
La funzione richiede all'incirca 160 passi di memoria programma. Per un utilizzo ripetuto, è consigliabile integrarla in una funzione definita dall'utente che sia memorizzata una volta sola nella memoria programma.
In caso di utilizzo del tipo di dato STRING con PLC piccoli come FP-e o FP0, assicuratevi che la lunghezza della stringa risultato sia uguale o maggiore della lunghezza della stringa di origine.
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
input_value: REAL:=-123.4560166;
result_string: STRING[15]:='';
END_VAR
La variabile di ingresso input_value del tipo di dato REAL è inizializzata dal valore -123,4560166. La variabile di uscita result_string presenta il tipo di dato STRING[15]. Può memorizzare un massimo di 15 caratteri. Anziché utilizzare la variabile input_value, potete inserire una costante direttamente nel contatto di ingresso della funzione nel corpo.
input_value del tipo di dato REAL viene convertito in STRING[15]. Il valore convertito viene scritto in result_string. Quando la variabile input_value = 123.4560166, result_string mostra ' -123.4560165'.
BODY
WORKSPACE</p>
NETWORK_LIST_TYPE := NWTYPELD ;
ACTIVE_NETWORK := 0 ;
END_WORKSPACE
NET_WORK
NETWORK_TYPE := NWTYPELD ;
NETWORK_LABEL := ;
NETWORK_TITLE := ;
NETWORK_HEIGHT := 5 ;
NETWORK_BODY
B(B_F,REAL_TO_STRING!,Instance,7,1,17,3,,?D?C);
B(B_VARIN,,input_value,5,1,7,3,);
B(B_VAROUT,,result_string,17,1,19,3,);
L(1,0,1,5);
END_NETWORK_BODY
END_NET_WORK
END_BODY
Questo esempio illustra come creare un valore STRING[7] con 4 posizioni prima e 2 posizioni dopo il punto decimale partendo dal tipo di dato REAL.
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
input_value: REAL:=-123.4560166;
(*example value*)
result_string: STRING[15]:='';
(*result: here ' -123.45'*)
END_VAR
In questo esempio sono dichiarate sia una variabile di ingresso input_value del tipo di dato REAL sia una variabile di uscita result_string del tipo di dato STRING[7].
Nell'esecuzione dell'operazione in questione, la funzione standard MID viene collegata alla funzione REAL_TO_STRING. MID crea un settore centrale nella stringa di caratteri partendo dalla posizione P (valore INT) con L (valore INT) caratteri.
Nell'esempio, la costante INT 7 viene inserita all'ingresso L di MID, il quale determina la lunghezza della stringa risultato. La costante INT 4 all'ingresso P determina la posizione in cui inizia il settore centrale. Partendo dalla variabile input_value = -123.4560166, il valore STRING ' -123.4560166' risulta dalla conversione del tipo di dato. La funzione MID tronca il valore STRING alla posizione 4 e restituisce result_string '-123.45'.
BODY
WORKSPACE
NETWORK_LIST_TYPE := NWTYPELD ;
ACTIVE_NETWORK := 0 ;
END_WORKSPACE
NET_WORK
NETWORK_TYPE := NWTYPELD ;
NETWORK_LABEL := ;
NETWORK_TITLE := ;
NETWORK_HEIGHT := 6 ;
NETWORK_BODY
B(B_F,REAL_TO_STRING!,Instance,7,2,17,4,,?D?C);
B(B_VARIN,,input_value,5,2,7,4,);
B(B_VAROUT,,result_string,24,2,26,4,);
B(B_F,MID!,Instance,19,1,24,6,,?DIN?DL?DP?C);
B(B_VARIN,,7,17,3,19,5,);
B(B_VARIN,,4,17,4,19,6,);
L(17,3,19,3);
L(1,0,1,6);
END_NETWORK_BODY
END_NET_WORK
END_BODY