Bloque que borra parte de una sección de STR, almacenando el restante en DST.
Representación Ladder

Estructura del Bloque
Tipo de Variable |
Nombre |
Tipo de Dato |
Descripción |
VAR_INPUT |
EN |
BOOL |
Habilitación del bloque |
STR |
STRING |
STRING original |
|
POS |
BYTE |
Posición a partir de la cual se iniciará la retirada |
|
LEN |
BYTE |
Número de caracteres que serán retirados a partir de POS |
|
VAR_OUTPUT |
DONE |
BOOL |
Habilitación de salida |
DST |
BYTE |
Variable que recibe la nueva STRING |
Operación
Este bloque permanece activo mientras EN está en nivel TRUE, actualizando el valor de DST de acuerdo con los parámetros de entrada. Es retirada de STR una sección definida por la posición inicial POS y un tamaño LEN, y el resultado final es almacenado en DST.
En caso de que POS esté fuera del rango de valores permitido (entre 1 y el tamaño de STR), DONE recibirá FALSE y DST permanecerá inalterada.
En caso de éxito, el valor de DONE pasa al próximo bloque Ladder el valor de EN, al finalizar la operación.
|
¡NOTA! POS es tratada con índice "base uno". O sea, POS = 1 referencia la primera posición de STR. |
|
¡NOTA! En caso de que el tamaño de DST sea menor que el número de caracteres restantes en STR, el valor resultante será truncado. |
Compatibilidad
Equipo |
Versión |
PLC300 |
2.10 o superior |
Diagrama de Flujo del Bloque

Ejemplo en Ladder

En el ejemplo de arriba, como el valor de POS es inválido, el bloque no es finalizado exitosamente, y la salida DONE es desactivada.

En el ejemplo de arriba, son borrados dos caracteres a partir de la posición 2 de STR1, y los caracteres remanentes son enviados a DST_6. Finalizado el bloque exitosamente, será activada la salida.

En el ejemplo de arriba, son borrados dos caracteres a partir de la posición 4 de STR1, y los caracteres remanentes son enviados a DST_6. Finalizado el bloque exitosamente, será activada la salida DONE. Observe que, si POS + LEN es mayor que el tamaño de STR1, son borrados solamente los caracteres restantes de STR1, sin generar error.

En el ejemplo de arriba, son borrados cinco caracteres a partir de la posición 3 de STR1, y los caracteres remanentes son enviados a DST_6. Finalizado el bloque exitosamente, es activada la salida DONE. Observe que, si POS + LEN es mayor que el tamaño de STR1, son borrados solamente los caracteres restantes de STR1, sin generar error.

En el ejemplo de arriba, es borrado un carácter a partir de la posición 1 de STR1, y los caracteres remanentes son enviados a DST_2. Como el tamaño de DST_2 es 2, el último carácter copiado es descartado. Finalizado exitosamente el bloque, será activada la salida DONE.
Ejemplo en ST
El siguiente ejemplo muestra las instrucciones para aplicar el ejemplo anterior en el lenguaje ST.
VAR STR1 : STRING := 'ABCD'; POS : BYTE := 1; LEN : BYTE := 1; DST_2 : STRING; END_VAR
DST_2 := FB_STR_DELETE( EN:=DI1, STR:=STR1, POS:=POS, LEN:=LEN, Done=>DO1);
|
|---|