Funzioni gestione stringa

List

Questa pagina fa parte del Manuale Programmazione IEC 61131-3. Vai all indice.

LogicLab supporta tutte le funzioni di gestione stringa richieste dalla norma CEI EN 61131-3 nella Parte 3: Linguaggi di programmazione. Di seguito un elenco delle funzioni supportate con esempio di utilizzo in linguaggio ST, Come utilizzare gli esempi

Le istruzioni che operano sulle stringhe ritornando l’indirizzo del buffer che contiene la stringa risultato DEVONO appoggiare i dati di ritorno su di un buffer di memoria, quindi hanno una dimensione massima predefinita della stringa di ritorno. Nei sistemi SlimLine potendo gestire le operazioni stringa su 3 diverse Tasks concorrenti abbiamo istanziato 3 diversi buffers di appoggio.
Task Back: Lunghezza massima stringa risultato a 511 caratteri + 1 carattere tappo.
Task Slow/Fast: Lunghezza massima stringa risultato a 127 caratteri + 1 carattere tappo.

Per permettere di operare su stringhe senza limiti di lunghezza abbiamo definito alcune funzioni che rimpiazzano le istruzioni standard ma che operando con puntatori permettono di utilizzare buffers di qualsiasi dimensione, tutte queste funzioni si trovano nella libreria eLLabStdLib.

CONCAT, eCONCAT

Concatena le stringhe SInA ed SInB. La stringa risultato ROut ha dimensione massima definita dal sistema.
STRING ROut CONCAT(STRING SInA, STRING SInB)

Concatena le stringhe SInA ed SInB. La stringa risultato ROut ha dimensione massima definita dal parametro RLgt. In caso di errore ritorna FALSE. La funzione permette di ritornare la stringa concatenata anche in una delle due stinghe da concatenare.
BOOL eCONCAT(@STRING SInA, @STRING SInB, @STRING ROut, UDINT RLgt)

LogicLab (Ptp115)
PROGRAM ST_CONCAT
VAR
    i : BOOL; (* Auxiliary variable *)
    AString : STRING[ 32 ]; (* (A) String *)
    BString : STRING[ 32 ]; (* (B) String *)
    CString : STRING[ 32 ]; (* (C) String *)
    DString : STRING[ 32 ]; (* (D) String *)
    EString : STRING[ 32 ]; (* (E) String *)
    FString : STRING[ 32 ]; (* (F) String *)
END_VAR

// *****************************************************************************
// PROGRAM "ST_CONCAT"
// *****************************************************************************
// An example of CONCAT statement and eCONCAT function.
// -----------------------------------------------------------------------------

    // String content definitions.

    AString:='Hello ';
    BString:='World !';

    // Examples using standard CONCAT statement.

    CString:=CONCAT(AString, BString); //CString is 'Hello World !'
    DString:=CONCAT(AString, 'World !'); //DString is 'Hello World !'

    // Examples using eCONCAT function.

    i:=eCONCAT(ADR(AString), ADR(BString), ADR(CString), SIZEOF(CString)); //CString is 'Hello World !'
    i:=eCONCAT(ADR(AString), ADR('World !'), ADR(DString), SIZEOF(DString)); //DString is 'Hello World !'

    // Example eCONCAT with result on string "A".

    EString:='Hello ';
    i:=eCONCAT(ADR(EString), ADR('World !'), ADR(EString), SIZEOF(EString)); //EString is 'Hello World !'

    // Example eCONCAT with result on string "B".

    FString:='World !';
    i:=eCONCAT(ADR('Hello '), ADR(FString), ADR(FString), SIZEOF(FString)); //FString is 'Hello World !'

// [End of file]]

DELETE, eDELETE

Cancella dalla stringa SIn, Length caratteri partendo dalla posizione Position (Position:=1 è il primo carattere di SIn). La stringa risultato ha dimensione massima definita dal sistema.
STRING DELETE(STRING SIn, UINT Length, UINT Position)

Cancella dalla stringa SIn, Length caratteri partendo dalla posizione Position (Position:=1 è il primo carattere di SIn). La stringa risultato viene trasferita in ROut per la dimensione massima definita da RLgt. In caso di errore ritorna FALSE.
BOOL eDELETE(STRING SIn, UDINT Length, UDINT Position, @STRING ROut, UDINT RLgt)

LogicLab (Ptp115)
PROGRAM ST_DELETE
VAR
    i : BOOL; (* Auxiliary variable *)
    AString : STRING[ 32 ]; (* (A) String *)
    BString : STRING[ 32 ]; (* (B) String *)
END_VAR

// *****************************************************************************
// PROGRAM "ST_DELETE"
// *****************************************************************************
// An example of DELETE statement and eDELETE function.
// -----------------------------------------------------------------------------

    AString:='Hello World !';

    BString:=DELETE(AString, 2, 3); //BString is 'Heo World !'
    i:=eDELETE(ADR(AString), 2, 3, ADR(BString), SIZEOF(BString)); //BString is 'Heo World !'

// [End of file]
Was this article helpful?