Establecer el modo de transferencia HTTP
Esta instrucción FP guarda los ajustes de transferencia de cliente HTTP de sOperation, sPLCDataFormat y sHTTPServerURL 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
Palabra clave: SV
Valores: SV0–SV3 (Servidor 0–Servidor 3)
Especificar el área de memoria y el tipo de transferencia (envío u recepción de datos)
Usar la palabra clave UPLOAD
para enviar datos.
Usar la palabra clave DOWNLOAD
para recibir datos.
Usar la palabra clave UPDOWN
para enviar y recibir datos.
Especificar el comando a utilizar para la transferencia.
Utilizar la palabra clave POST
para el envío de datos (solo disponible para los tipos de transferencia UPLOAD y UPDOWN).
Usar la palabra clave GET
para recibir datos.
Ejemplo: Cargar datos desde el área de memoria al servidor HTTP 3: 'SV3,UPDOWN,POST'
Especificar los datos a transferir. O bien, utilizar la instrucción FP_HTTP_GET_DATA_FORMAT.
Ejemplo: Área de memoria: DT100000, número de bytes: 250 bytes, número máximo de adquisiciones: 250 bytes: 'DT100000,250,250'
Especificar la URL del servidor.
Ejemplo: '\data.csv'
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 HTTP utilizando FP_HTTP_SET_CONNECTION o el diálogo de configuración del cliente HTTP.
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 especificado es "FALSE: Ninguna solicitud de transferencia". Cuando la bandera de solicitud de transferencia es "TRUE: Transferencia solicitada", 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 configurados los ajustes de transferencia del cliente HTTP, los datos se envían o adquieren realmente cuando se ejecuta la instrucción FP_HTTP_TRANSFER_REQUEST.
El número de bytes que se pueden transferir simultáneamente es de 1MB para los 16 IDs de transferencia.
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 HTTP que no ha sido configurado con la instrucción FP_HTTP_SET_CONNECTION o con el diálogo de configuración del cliente HTTP.
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 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 HTTP que no ha sido configurado con la instrucción FP_HTTP_SET_CONNECTION o con el diálogo de configuración del cliente HTTP.
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 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
sDestURL: STRING[32]:='\data.csv';
sStringData: STRING[32767]:='';
iID5: INT:=5;
bSetModeAsciiDataArea: BOOL:=FALSE;
bSetModeStringData: BOOL:=FALSE;
bErrorModeStringData: BOOL:=FALSE;
bErrorModeAsciiDataArea: BOOL:=FALSE;
END_VAR
El primer ejemplo utiliza una cadena source que contiene un máximo de 32767 caracteres, el segundo ejemplo utiliza una dirección DT para almacenar la cadena source con más de 32767 caracteres.
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 HTTP data stored in string variable (strings can only contain max. of 32767 characters),4,1,45,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_VARIN,,iID5,40,2,42,4,);
B(B_VARIN,,'SV0~DOWNLOAD,GET',40,3,42,5,);
B(B_CONTACT,,bSetModeStringData,5,1,7,3,R);
B(B_VARIN,,'/data.csv',40,5,42,7,);
B(B_VAROUT,,bErrorModeStringData,53,2,55,4,);
B(B_VARIN,,sStringData,8,4,10,6,);
B(B_CONTACT,,sys_bIsEthernetInitializing,16,1,18,3,N);
B(B_F,MAX_LEN!,,10,5,16,7,,?D?C);
B(B_F,FP_HTTP_GET_DATA_FORMAT!,,16,3,31,7,,?D@'Var'?DnNumberOfCharacters?CsDataFormat);
B(B_F,FP_HTTP_SET_MODE!,,42,0,53,7,,?DEN?DnTransferID?DsOperation?DsPLCDataFormat?DsHTTPServerURL?AENO?CbError);
L(1,2,5,2);
L(7,2,16,2);
L(10,5,10,6);
L(10,5,16,5);
L(31,5,42,5);
L(18,2,42,2);
L(1,0,1,7);
END_NETWORK_BODY
END_NET_WORK
NET_WORK
NETWORK_TYPE := NWTYPELD ;
NETWORK_LABEL := ;
NETWORK_TITLE := ;
NETWORK_HEIGHT := 5 ;
NETWORK_BODY
B(B_COMMENT,, ^Set mode to transfer HTTP data stored in memory area > 32767 characters,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 := 8 ;
NETWORK_BODY
B(B_VARIN,,iID5,39,3,41,5,);
B(B_VARIN,,'SV0~UPDOWN,POST',39,4,41,6,);
B(B_VARIN,,'DT100000~102345~12345',39,5,41,7,);
B(B_CONTACT,,bSetModeAsciiDataArea,5,2,7,4,R);
B(B_VARIN,,sDestURL,39,6,41,8,);
B(B_VAROUT,,bErrorModeAsciiDataArea,52,3,54,5,);
B(B_CONTACT,,sys_bIsEthernetInitializing,16,2,18,4,N);
B(B_F,FP_HTTP_SET_MODE!,,41,1,52,8,,?DEN?DnTransferID?DsOperation?DsPLCDataFormat?DsHTTPServerURL?AENO?CbError);
L(1,3,5,3);
L(7,3,16,3);
L(18,3,41,3);
L(1,0,1,8);
END_NETWORK_BODY
END_NET_WORK
END_BODY
(* Set mode to transfer HTTP data stored in string variable (strings can only contain max. of 32767 characters) *)
If DF(bSetModeStringData) And not sys_bIsEthernetInitializing then
FP_HTTP_SET_MODE(nTransferID := iID5,
sOperation := 'SV0,DOWNLOAD,GET',
sPLCDataFormat := FP_HTTP_GET_DATA_FORMAT(sStringData, LEN(sStringData)),
sHTTPServerURL := '/data.csv',
bError => bErrorModeStringData);
End_if;
(* Set mode to transfer HTTP data stored in memory area > 32767 characters *)
If DF(bSetModeAsciiDataArea) And not sys_bIsEthernetInitializing then
FP_HTTP_SET_MODE(nTransferID := iID5,
sOperation := 'SV0,UPDOWN,POST',
sPLCDataFormat := 'DT100000,102345,12345',
sHTTPServerURL := sDestURL,
bError => bErrorModeAsciiDataArea);
End_if;