DataFileCopy: Comandos para copiar archivos
Descripción de bloques de funciones
Esta función permite copiar los datos de la memoria en un archivo y viceversa. El archivo se encuentra en el sistema interno o el sistema externo (llave USB) de archivos.
El bloque de funciones DataFileCopy puede:
oleer datos de un archivo formateado, o
ocopiar datos del búfer de memoria a un archivo formateado. Para obtener más información, consulte Organización de la memoria Flash.
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 incluye automáticamente). Utilice solamente caracteres alfanuméricos (mayúsculas, minúsculas o números). |
xRead |
BOOL |
TRUE: copiar datos del archivo identificado por sFileName a la memoria interna del controlador. FALSE: copiar datos de la memoria interna del controlador al archivo identificado por sFileName. |
xSecure |
BOOL |
TRUE: La dirección MAC se almacena siempre en el archivo. Sólo un controlador con la misma dirección MAC podrá leer el archivo. FALSE: Otro controlador con el mismo tipo de memoria puede leer el archivo. |
iLocation |
INT |
0: la ubicación del archivo en el sistema interno de archivos es /usr/DTA. 1: la ubicación del archivo en el sistema externo de archivos (llave USB) 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 conforme a 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 conforme a IEC 61131-3 (variables, matrices, estructuras), por ejemplo: Variable : int; dwAdd := ADR (Variable); |
|
FUNCIONAMIENTO IMPREVISTO DEL EQUIPO |
Compruebe que el tamaño de la ubicación de la memoria es el adecuado y que el tipo de archivo es el correcto antes de copiar el archivo a la memoria. |
El incumplimiento de estas instrucciones puede causar la muerte, lesiones serias o daño al 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 se está ejecutando. |
xError |
BOOL |
TRUE indica que se ha detectado un error y que el bloque de funciones ha anulado la acción. |
eError |
Indica el tipo de error de copia de archivo de datos que se ha detectado. |
NOTA: Si escribe en la variable de memoria dentro del área de escritura del archivo, se producirá un error de integridad de CRC.
En este ejemplo se describe cómo copiar comandos de archivos:
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=> );