Bloque que sustituyó una sección de una STRING por otra STRING, retornando la STRING resultante.
Representación Ladder

Estructura del Bloque
Tipo de Variable |
Nombre |
Tipo de Dato |
Descripción |
VAR_INPUT |
EN |
BOOL |
Habilitación del bloque |
STR1 |
STRING |
STRING donde será realizada la sustitución |
|
STR2 |
STRING |
STRING a ser insertada |
|
POS |
BYTE |
Posición donde STR2 será insertada |
|
LEN |
BYTE |
Número de caracteres a ser sustituidos por STR2 en STR1 |
|
VAR_OUTPUT |
DONE |
BOOL |
Habilitación de salida |
DST |
STRING |
STRING resultante |
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.
A partir de la posición definida en POS, es borrado un número de caracteres definidos por LEN. Luego de eso, en esta misma posición, es insertado el contenido de STR2.
En caso de que POS esté fuera del rango de valores permitido (entre 1 y el tamaño de STR más uno), 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 la suma del número de caracteres restantes de STR1 y STR2, 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, 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, es hecha una sustitución de cero caracteres a partir de la posición 5 de STR1 por el contenido de STR2, y el resultado es enviado a DST_10. Finalizado el bloque exitosamente, será activada la salida DONE. Observe que este bloque actuó como un STR_INSERT.

En el ejemplo de arriba, es hecha una sustitución de cero caracteres a partir de la posición 2 de STR1 por el contenido de STR2, y el resultado es enviado a DST_10. Finalizado el bloque exitosamente, será activada la salida DONE. Observe que este bloque actuó como un STR_INSERT.

En el ejemplo de arriba, es hecha una sustitución de un carácter a partir de la posición 3 de STR1 por el contenido de STR2, y el resultado es enviado a DST_10. Finalizado el bloque exitosamente, será activada la salida DONE.

En el ejemplo de arriba, es hecha una sustitución de ocho caracteres, a partir de la posición 2 de STR1, por el contenido de STR2, y el resultado es enviado a DST_10. Finalizado el bloque exitosamente, será activada la salida DONE. Observe que, si POS + LEN es mayor que el tamaño de STR1, son sustituidos solamente los caracteres restantes de STR1 sin generar error.
Ejemplo en ST
El siguiente ejemplo muestra las instrucciones para aplicar el ejemplo anterior en el lenguaje ST.
VAR STR1 : STRING := 'abcd'; STR2 : STRING := '1234'; POS : BYTE := 2; LEN : BYTE := 8; DST_10 : STRING; END_VAR
DST_10 := FB_STR_REPLACE( EN:=DI1, STR1:=STR1, STR2:=STR2, POS:=POS, LEN:=LEN, Done=>DO1);
|
|---|