设置HTTP传输模式
此FP指令将sOperation的HTTP客户端传输设置、sPLCDataFormat和sHTTPServerURL存储在由nTransferID指定的传输设置区域中。
输入
设置传输设置ID。
值:0–15(值必须按升序输入)
设置传输方法参数。
服务器地址
关键字: SV
值:SV0–SV3(服务器0–服务器3)
指定内存区和传输类型(发送或获取数据)
使用关键字UPLOAD
发送数据。
使用关键字DOWNLOAD
获取数据。
使用关键字UPDOWN
发送和获取数据。
指定用于传输的命令。
使用关键字POST
发送数据(仅适用于传输类型UPLOAD和UPDOWN)。
使用关键字GET
获取数据。
示例:将数据从内存区上载到HTTP服务器3:'SV3,UPDOWN,POST'
指定要传输的数据。或者,使用指令FP_HTTP_GET_DATA_FORMAT.
示例:存储区:DT100000,字节数:250字节,最大获取数:250字节:'DT100000,250,250'
指定服务器URL。
示例:'\data.csv'
输出
在以下情况下将变为TRUE:
如果超过连接超时
如果 IP 地址无效
当发生错误时,针对错误代码编号检查系统变量sys_iEthernetConnectionErrorCode。
字符串数据的字符数不得超过256。
此指令不可用于中断程序。
执行此指令前,需使用FP_HTTP_SET_CONNECTION或HTTP客户端的设置对话框指定HTTP服务器。
执行此指令前,确保sys_bIsEthernetInitializing为FALSE。sys_bIsEthernetInitializing在执行指令后将变为TRUE。sys_bIsEthernetInitializing为TRUE时,执行指令将发生错误。
仅当指定传输设置的传输请求标志为“FALSE: No transfer request”时,可以执行该指令。当传输请求标志为“TRUE: Transfer requested”时,将出现操作错误。
成功执行此指令后,会重置系统变量sys_bIsCarry和sys_iEthernetConnectionErrorCode。
配置HTTP客户端传输设置后,执行FP_HTTP_TRANSFER_REQUEST指令时数据将实际发送或获取。
对于所有16个传输ID,可以同时传输的字节数为1MB。
当发生错误时,针对错误代码编号检查系统变量sys_iEthernetConnectionErrorCode。
如果为参数指定的值超出允许的范围。
如果未按升序指定传输ID。
如果指令是在中断程序中执行的。
如果字符串数据的字符数超过256。
如果未使用指令FP_HTTP_SET_CONNECTION或HTTP客户端的设置对话框指定HTTP服务器。
在执行指令后,如果指定传输设置的传输请求标志为“TRUE:请求传输”。
如果为参数指定的值超出允许的范围。
如果未按升序指定传输ID。
如果指令是在中断程序中执行的。
如果字符串数据的字符数超过256。
如果未使用指令FP_HTTP_SET_CONNECTION或HTTP客户端的设置对话框指定HTTP服务器。
在执行指令后,如果指定传输设置的传输请求标志为“TRUE:请求传输”。
如果指令是在以太网初始化期间执行的,则sys_iEthernetConnectionErrorCode设置为“11:以太网正在初始化”。
所有用于编程此函数的输入和输出变量已在POU头中声明。 所有编程语言使用相同的POU头。
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
第一个示例使用最多包含32767个字符的source字符串,第二个示例使用DT地址来存储包含超过32767个字符的source字符串。
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;