Establecer el modo de transferencia FTP
Esta instrucción FP guarda los ajustes de transferencia de cliente FTP de sOperation, sPLCFullFileNameOrDataFormat y sFTPServerFullFileName en el área de ajustes de transferencia especificada por nTransferID.
Entrada
Establecer el ID de ajuste de transferencia.
Valores: 0–15 (los valores deben introducirse en orden ascendente)
Establecer los parámetros del método de transferencia.
Dirección del servidor (parámetro requerido)
Palabra clave: SV
Sintaxis: 'SVx'
Valores: SV0–SV3 (Servidor 0–Servidor 3)
Destino y método de transferencia (parámetro requerido)
Cadena del parámetro |
Destino |
Método de transferencia |
---|---|---|
|
File |
Enviar a los servidores (Método de sobrescritura) |
|
Enviar a los servidores (Método de sobrescritura) |
|
|
Enviar a los servidores (Método de renombrado) |
|
|
Obtener de los servidores |
|
|
Área de memoria |
Enviar a los servidores (Método de sobrescritura) |
|
Enviar a los servidores (Método de sobrescritura) |
|
|
Enviar a los servidores (Método de renombrado) |
|
|
Obtener de los servidores |
Gestión de los archivos después de la transferencia (parámetro requerido)
DEL
: borrar el archivo
NON
: no borrar el archivo
Enviar el archivo al servidor FPT 1 utilizando el método de sobrescritura, no borrar el archivo después de la transferencia: 'SV1,PUTFILE-OVW,NON'
Enviar el archivo al servidor FTP 0 utilizando el método de renombrado, borrar el archivo después de la transferencia: 'SV0,PUTFILE-REN,DEL'
Obtener el archivo del servidor FTP 2, borrar el archivo después de la transferencia: 'SV2,GETFILE,DEL'
Realizar los ajustes en función del destino de la transferencia (archivo o datos del área de memoria) y del método de transferencia (PUT o GET).
La transferencia de datos de una variable puede realizarse mediante la instrucción FP_FTP_GET_DATA_FORMAT. La salida de esa instrucción se conectará a sPLCFullFileNameOrDataFormat para leer la cadena que especifica el formato de datos de la variable (área de memoria, tamaño y tipo de datos). Los datos transmitidos se escriben o se leen de un archivo csv de acuerdo con el tipo de datos de la variable.
Destino de la transferencia: archivo
Establecer el nombre del archivo origen.
Para PUTFILE
: Especificar el nombre de un archivo guardado en una tarjeta SD con una ruta relativa. Ejemplo: '\LOG\MyData.csv'
Para GETFILE
: Especificar un nombre de archivo del directorio origen de un usuario que inicia sesión en servidores FTP con una ruta relativa. Ejemplo: '\LOG\MyData.csv'
Destino de la transferencia: datos del área de memoria
Para PUTDATA
: Los datos guardados en la variable conectada a la entrada de FP_FTP_GET_DATA_FORMAT se escriben en el archivo csv especificado por sFTPServerFullFileName. Para este método de transferencia, es posible añadir una marca de tiempo en formato yymmdd_hhmmss al nombre de archivo. Usar las palabras clave 'TOP'
y 'END'
para especificar si se añade la marca de tiempo antes o después del nombre de archivo.
Para GETDATA
: Los datos del archivo csv especificado por sFTPServerFullFileName se escriben en la variable conectada a la entrada Var de FP_FTP_GET_DATA_FORMAT.
Realizar los ajustes en función del destino de la transferencia (archivo o datos del área de memoria) y del método de transferencia (PUT o GET).
Destino de la transferencia: archivo
Para PUTFILE
: Especificar un nombre de carpeta con su ruta relativa desde el directorio origen del usuario que inicia sesión en el servidor FTP. Para especificar el directorio origen, introducir "/" o "\" solamente.
Para GETFILE
: Especificar un nombre de carpeta de almacenamiento en una tarjeta SD con una ruta relativa.
Destino de la transferencia: datos del área de memoria
Para PUTDATA
: Especificar un nombre de archivo csv de destino en el que escribir los datos. Para este método de transferencia, es posible añadir una marca de tiempo en formato yymmdd_hhmmss al nombre de archivo. Usar las palabras clave 'TOP'
y 'END'
para especificar si se añade la marca de tiempo antes o después del nombre de archivo.
Ejemplos:
Transferir los datos al archivo destino "PutData1.bin" ubicado en el directorio "\FTP", no añadir una marca de tiempo: '\FTP\PutData1.bin'
Transferir los datos al archivo destino "PutData2.bin" ubicado en el directorio "\FTP", añadir una marca de tiempo al principio del nombre de archivo: '\FTP\PutData2.bin,TOP'
Transferir los datos al archivo destino "PutData3.bin" ubicado en el directorio "\FTP", añadir una marca de tiempo al final del nombre de archivo: '\FTP\PutData3.bin,END'
Para GETDATA
: Especificar un nombre de archivo csv de origen donde leer los datos. Especificar un nombre de archivo y un nombre de carpeta con su ruta relativa desde el directorio origen del usuario que inicia sesión en el servidor FTP.
Salida
Pasa a TRUE bajo las siguientes condiciones:
si se supera el tiempo de espera de la conexión
si la dirección IP no es válida
Cuando se produce un error, consulte la variable del sistema sys_iEthernetConnectionErrorCode para conocer el número de código de error.
El número de caracteres de los datos de cadena no debe superar los 256.
Esta instrucción no está disponible en los programas de interrupción.
Antes de ejecutar la instrucción, es necesario especificar el servidor FTP utilizando FP_FTP_SET_CONNECTION o el diálogo de configuración del cliente FTP.
Antes de ejecutar la instrucción, asegurarse de que sys_bIsEthernetInitializing es FALSE. sys_bIsEthernetInitializing pasa a TRUE cuando se ejecuta la instrucción. Cuando ejecuta la instrucción mientras sys_bIsEthernetInitializing es TRUE, se produce un error.
La instrucción solo puede ejecutarse cuando la bandera de solicitud de transferencia para el ajuste de transferencia o el número nLogID especificado es FALSE. Cuando la bandera de solicitud de transferencia es TRUE, se produce un error de operación.
Cuando esta instrucción se ha ejecutado con éxito, las variables del sistema sys_bIsCarry y sys_iEthernetConnectionErrorCode se reinician.
Una vez completada la configuración de transferencia del cliente FTP, los datos se envían a archivos o se obtienen de ellos cuando se ejecuta FP_FTP_TRANSFER_REQUEST.
Cuando se produce un error, consulte la variable del sistema sys_iEthernetConnectionErrorCode para conocer el número de código de error.
Si el valor especificado para un parámetro está fuera del rango permitido.
Si los ID de transferencia no se han especificado en orden ascendente.
si la instrucción se ejecuta en un programa de interrupción
Si el número de caracteres de los datos de cadena supera los 256.
Si se especifica un servidor FTP que no ha sido configurado con la instrucción FP_FTP_SET_CONNECTION o con el diálogo de configuración del cliente FTP.
Si la bandera de solicitud de transferencia para la configuración de transferencia especificada es "TRUE: Transferencia solicitada" cuando se ejecuta la instrucción.
Si la bandera de solicitud de transferencia para un número nLogID especificado es TRUE, p. ej., si sys_blsLog0DataRecordingActive es TRUE.
Si el valor especificado para un parámetro está fuera del rango permitido.
Si los ID de transferencia no se han especificado en orden ascendente.
si la instrucción se ejecuta en un programa de interrupción
Si el número de caracteres de los datos de cadena supera los 256.
Si se especifica un servidor FTP que no ha sido configurado con la instrucción FP_FTP_SET_CONNECTION o con el diálogo de configuración del cliente FTP.
Si la bandera de solicitud de transferencia para la configuración de transferencia especificada es "TRUE: Transferencia solicitada" cuando se ejecuta la instrucción.
Si la bandera de solicitud de transferencia para un número nLogID especificado es TRUE, p. ej., si sys_blsLog0DataRecordingActive es TRUE.
si la instrucción se ejecuta durante la inicialización de Ethernet, sys_iEthernetConnectionErrorCode pasa a "11: Ethernet se está inicializando".
Todas las variables de entrada y de salida utilizadas para la programación de esta función han sido declaradas en la Cabecera de la POU. Se utiliza la misma cabecera de la POU para todos los lenguajes de programación.
VAR
bSetModeFileError: BOOL:=FALSE;
bSetModeFileOK: BOOL:=FALSE;
iID10: INT:=10;
bSetModeFile: BOOL:=FALSE;
wErrorCode: WORD:=0;
END_VAR
Si bSetModeFile cambia de FALSE a TRUE y sys_bIsEthernetInitializing está a FALSE, se ejecuta la instrucción.
BODY
WORKSPACE
NETWORK_LIST_TYPE := NWTYPELD ;
ACTIVE_NETWORK := 0 ;
END_WORKSPACE
NET_WORK
NETWORK_TYPE := NWTYPELD ;
NETWORK_LABEL := ;
NETWORK_TITLE := ;
NETWORK_HEIGHT := 5 ;
NETWORK_BODY
B(B_COMMENT,, ^Set mode to transfer file located on SD card of FP7 PLC,4,1,34,4,);
L(1,0,1,5);
END_NETWORK_BODY
END_NET_WORK
NET_WORK
NETWORK_TYPE := NWTYPELD ;
NETWORK_LABEL := ;
NETWORK_TITLE := ;
NETWORK_HEIGHT := 7 ;
NETWORK_BODY
B(B_CONTACT,,bSetModeFile,5,1,7,3,R);
B(B_VARIN,,'SV0~PUTDATA-OVW~NON',23,3,25,5,);
B(B_VARIN,,'\CSV_FILES\Data1.csv',23,4,25,6,);
B(B_VAROUT,,bSetModeFileError,43,2,45,4,);
B(B_VARIN,,'\B:\LOG\MyData.csv~END',23,5,25,7,);
B(B_VARIN,,iID10,23,2,25,4,);
B(B_CONTACT,,sys_bIsEthernetInitializing,16,1,18,3,N);
B(B_F,FP_FTP_SET_MODE!,,25,0,41,7,,?DEN?DnTransferID?DsOperation?DsPLCFullFileNameOrDataFormat?DsFTPServerFullFileName?AENO?CbError);
L(1,2,5,2);
L(7,2,16,2);
L(18,2,25,2);
L(1,0,1,7);
L(41,3,43,3);
END_NETWORK_BODY
END_NET_WORK
NET_WORK
NETWORK_TYPE := NWTYPELD ;
NETWORK_LABEL := ;
NETWORK_TITLE := ;
NETWORK_HEIGHT := 4 ;
NETWORK_BODY
B(B_CONTACT,,bSetModeFileError,5,1,7,3,);
B(B_F,E_MOVE!,,25,0,31,4,,?DEN?D?AENO?C);
B(B_VARIN,,sys_iEthernetConnectionErrorCode,23,2,25,4,);
B(B_VAROUT,,wErrorCode,31,2,33,4,);
L(7,2,25,2);
L(1,2,5,2);
L(1,0,1,4);
END_NETWORK_BODY
END_NET_WORK
NET_WORK
NETWORK_TYPE := NWTYPELD ;
NETWORK_LABEL := ;
NETWORK_TITLE := ;
NETWORK_HEIGHT := 3 ;
NETWORK_BODY
B(B_CONTACT,,bSetModeFileError,5,1,7,3,N);
B(B_COIL,,bSetModeFileOK,28,1,30,3,);
L(7,2,28,2);
L(1,2,5,2);
L(1,0,1,3);
END_NETWORK_BODY
END_NET_WORK
END_BODY
If DF(bSetModeFile) AND NOT sys_bIsEthernetInitializing then
FP_FTP_SET_MODE(nTransferID := iID10,
sOperation := 'SV0,PUTDATA-OVW,NON',
sPLCFullFileNameOrDataFormat := FP_FTP_GET_DATA_FORMAT(Var := arrayValues,
nSize := Size_Of_Var(arrayValues),
nColumns := 8),
sFTPServerFullFileName := '\B:\LOG\MyData.csv,END',
bError => bSetModePlcDataError);
End_if;
If (bSetModePlcDataError) then
wErrorCode := sys_iEthernetConnectionErrorCode;
Else
bSetModePlcDataOK := True;
End_If;