DataFileCopy: Comandos para copiar archivos
Descripción de bloques de funciones
Este bloque de funciones copia los datos de la memoria a un archivo y viceversa. El archivo se encuentra en el sistema interno o el sistema externo (tarjeta SD) de archivos.
El bloque de funciones DataFileCopy puede:
oleer datos de un archivo formateado, o
oCopiar datos de la memoria a un archivo formateado. Para obtener más información, consulte Flash Memory Organization.
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. |
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 (tarjeta SD) es /usr/DTA. NOTA: Si el archivo no existe en el directorio, se crea el archivo. |
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 en la memoria donde la función leerá o escribirá. 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 completado 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 produce 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=> );