DataFileCopy: copiar comandos de archivo

Descripción del bloque de funciones

Este bloque de funciones copia los datos de la memoria en un archivo y viceversa. El archivo se encuentra en el sistema de archivos interno o en un sistema de archivos externo (tarjeta SD).

El bloque de funciones DataFileCopy puede:

  • Leer datos de un archivo formateado.

  • Copiar los datos de la memoria en un archivo formateado. Para obtener más información, consulte Non-Volatile Memory Organization.

Biblioteca y espacio de nombres

Nombre de biblioteca: PLCSystemBase

Espacio de nombres: PLCSystemBase

Representación gráfica

Representación IL y ST

Para ver la representación general en lenguaje IL o ST, consulte el capítulo Representación de funciones y de bloques de funciones.

Descripción de variables de E/S

En esta tabla se describen las variables de entrada:

Entrada

Tipo

Comentario

xExecute

BOOL

En el flanco ascendente, inicia la ejecución del bloque de funciones.

En el flanco descendente, restablece las salidas del bloque de funciones cuando finaliza cualquier ejecución en curso.

NOTA: Con el flanco descendente, la función continúa hasta que concluye su ejecución y actualiza sus salidas. Las salidas se conservan durante un ciclo y se restablecen.

sFileName

STRING

Nombre de archivo sin extensión (la extensión .DTA se agrega automáticamente). Utilice solamente caracteres alfanuméricos (mayúsculas, minúsculas o números).

xRead

BOOL

TRUE: copiar datos del archivo identificado por sFileName en la memoria interna del controlador.

FALSE: copiar datos de la memoria interna del controlador en el archivo identificado por sFileName.

xSecure

BOOL

TRUE: la dirección MAC siempre se almacena en el archivo. Solo un controlador con la misma dirección MAC podrá leer el archivo.

FALSE: otro controlador con el mismo tipo de memoria puede leer desde el archivo.

iLocation

INT

0: la ubicación del archivo en el sistema de archivos interno es /usr/DTA.

1: la ubicación del archivo en el sistema de archivos externo (tarjeta SD) es /usr/DTA.

NOTA: Si el archivo no existe todavía en el directorio, se creará.

uiSize

UINT

Indica el tamaño en bytes. El máximo son 65 534 bytes.

Utilice solamente direcciones de variables conformes con IEC 61131-3 (variables, matrices, estructuras); por ejemplo:

Variable : int;

uiSize := SIZEOF (Variable);

dwAdd

DWORD

Indica la dirección de la memoria desde la que leerá o en la que escribirá la función.

Utilice solamente direcciones de variables conformes con IEC 61131-3 (variables, matrices, estructuras); por ejemplo:

Variable : int;

dwAdd := ADR (Variable);

 ADVERTENCIA
FUNCIONAMIENTO NO DESEADO DEL EQUIPO
Compruebe que el tamaño de la ubicación de la memoria sea el adecuado y que el tipo de archivo sea el correcto antes de copiar el archivo en la memoria.
Si no se siguen estas instrucciones, pueden producirse lesiones graves, muerte o daños en el equipo.

En esta tabla se describen las variables de salida:

Salida

Tipo

Comentario

xDone

BOOL

TRUE = indica que la acción se ha llevado a cabo correctamente.

xBusy

BOOL

TRUE = indica que el bloque de funciones está en ejecución.

xError

BOOL

TRUE = indica que se ha detectado un error y el bloque de funciones ha anulado la acción.

eError

DataFileCopyError

Indica el tipo de error de copia de archivo de datos que se ha detectado.

NOTA: Si modifica los datos de la memoria (variables, matrices, estructuras) que se utilizan para escribir el archivo, se producirá un error de integridad de CRC.

Ejemplo

En este ejemplo se describe cómo copiar comandos de archivo:

VAR
LocalArray : ARRAY [0..29] OF BYTE;
myFileName: STRING := 'exportfile';
EXEC_FLAG: BOOL;
DataFileCopy: DataFileCopy;
END_VAR
DataFileCopy(
xExecute:= EXEC_FLAG,
sFileName:= myFileName,
xRead:= FALSE,
xSecure:= FALSE,
iLocation:= DFCL_INTERNAL,
uiSize:= SIZEOF(LocalArray),
dwAdd:= ADR(LocalArray),
xDone=> ,
xBusy=> ,
xError=> ,
eError=> );