Bloque que realiza una copia de una sección de STR, almacenando el resultado 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 copia |
|
LEN |
BYTE |
Número de caracteres que serán copiados 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. DST recibe un número de caracteres de STR1, definido por LEN, a partir de la posición insertada en POS.
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, al finalizar la operación, el valor de DONE pasará al próximo bloque Ladder el valor de EN.
|
¡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 copiados de 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 copiados dos caracteres a partir de la posición 1 de STR1, y el resultado es enviado a DST_2. Finalizado el bloque exitosamente, será activada la salida DONE.

En el ejemplo de arriba, son copiados cero caracteres a partir de la posición 1 de STR1, y el resultado es enviado a DST_2. Finalizado el bloque exitosamente, será activada la salida DONE. Observe que, cuando LEN es cero, la salida es siempre construida como una STRING nula.

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

En el ejemplo de arriba, son copiados tres caracteres a partir de la posición 2 de STR1, y el resultado es enviado 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 := 2; LEN : BYTE := 3; DST_2 : STRING; END_VAR
DST_2 := FB_STR_COPY( EN:=DI1, STR:=STR1, POS:=POS, LEN:=LEN, Done=>DO1);
|
|---|