设置FTP传输模式
此FP指令将sOperation的FTP客户端传输设置、sPLCFullFileNameOrDataFormat和sFTPServerFullFileName存储在由nTransferID指定的传输设置区域中。
输入
设置传输设置ID。
值:0–15(值必须按升序输入)
设置传输方法参数。
服务器地址(须输入参数)
关键字: SV
语法:“SVx”
值:SV0–SV3(服务器0–服务器3)
传输目标及方法(须输入参数)
参数字符串 |
目标 |
传输方法 |
---|---|---|
|
文件 |
发送至服务器(覆盖方法) |
|
发送至服务器(覆盖方法) |
|
|
发送至服务器(重命名方法) |
|
|
获取自服务器 |
|
|
内存区 |
发送至服务器(覆盖方法) |
|
发送至服务器(覆盖方法) |
|
|
发送至服务器(重命名方法) |
|
|
获取自服务器 |
传输后的文件处理(须输入参数)
DEL
:删除文件
NON
:不要删除文件
使用覆盖方法将文件发送到FTP服务器1,不要在传输后删除文件:'SV1,PUTFILE-OVW,NON'
使用重命名方法将文件发送到FTP服务器0,传输后删除文件:'SV0,PUTFILE-REN,DEL'
从FTP服务器2获取文件,传输后删除文件:'SV2,GETFILE,DEL'
根据您的传输目标(来自内存区的文件或数据)和传输方法(PUT或GET)进行设置。
可通过指令FP_FTP_GET_DATA_FORMAT完成变量数据的传输。该指令的输出将连接到sPLCFullFileNameOrDataFormat以读取指定变量(内存区、大小和数据类型)数据格式字符串的字符串。根据变量的数据类型,传输的数据将被写入csv文件或从csv文件读取。
传输目标:文件
设置源文件名。
对于PUTFILE
:通过相对路径指定存储在SD卡上文件的文件名。示例:'\LOG\MyData.csv'
对于GETFILE
:从通过相对路径登录FTP服务器的用户的原点目录中指定文件名。示例:'\LOG\MyData.csv'
传输目标:内存区的数据
对于PUTDATA
:存储在连接到FP_FTP_GET_DATA_FORMAT输出的变量中的数据被写入由sFTPServerFullFileName指定的csv文件。对于此传输方法,可以将格式为yymmdd_hhmmss的时间戳添加到文件名。使用关键字'TOP'
和'END'
指定是在文件名之前还是之后添加时间戳。
对于GETDATA
:由sFTPServerFullFileName指定的csv文件的数据被写入连接到FP_FTP_GET_DATA_FORMAT输入Var的变量。
根据您的传输目标(来自内存区的文件或数据)和传输方法(PUT或GET)进行设置。
传输目标:文件
对于PUTFILE
:从用户登录到FTP服务器的原点目录中通过其相对路径指定文件夹名称。对于指定原点目录,请仅指定"/"或"\"。
对于GETFILE
:通过相对路径指定SD卡中的存储文件夹名。
传输目标:内存区的数据
对于PUTDATA
:指定写入数据的目标csv文件名。对于此传输方法,可以将格式为yymmdd_hhmmss的时间戳添加到文件名。使用关键字'TOP'
和'END'
指定是在文件名之前还是之后添加时间戳。
示例:
将数据传输到位于目录“\FTP”中的目标文件“PutData1.bin”,请勿添加时间戳:'\FTP\PutData1.bin'
将数据传输到位于目录“\FTP”中的目标文件“PutData2.bin”,在文件名的开头添加时间戳:'\FTP\PutData2.bin,TOP'
将数据传输到位于目录“\FTP”中的目标文件“PutData3.bin”,在文件名的末尾添加时间戳:'\FTP\PutData3.bin,END'
对于GETDATA
:指定要从中读取数据的源csv文件名。从用户登录到FTP服务器的原点目录中通过其相对路径指定文件名和文件夹名称。
输出
在以下情况下将变为TRUE:
如果超过连接超时
如果 IP 地址无效
当发生错误时,针对错误代码编号检查系统变量sys_iEthernetConnectionErrorCode。
字符串数据的字符数不得超过256。
此指令不可用于中断程序。
执行此指令前,需使用FP_FTP_SET_CONNECTION或FTP客户端的设置对话框指定FTP服务器。
执行此指令前,确保sys_bIsEthernetInitializing为FALSE。sys_bIsEthernetInitializing在执行指令后将变为TRUE。sys_bIsEthernetInitializing为TRUE时,执行指令将发生错误。
仅当指定传输设置的传输请求标志或指定的nLogID编号为FALSE时,才能执行该指令。当传输请求标志为TRUE时,将发生运算错误。
成功执行此指令后,会重置系统变量sys_bIsCarry和sys_iEthernetConnectionErrorCode。
完成FTP客户端传输设置后,数据将发送到文件中,或者在执行FP_FTP_TRANSFER_REQUEST时从文件中获取。
当发生错误时,针对错误代码编号检查系统变量sys_iEthernetConnectionErrorCode。
如果为参数指定的值超出允许的范围。
如果未按升序指定传输ID。
如果指令是在中断程序中执行的。
如果字符串数据的字符数超过256。
如果未使用指令FP_FTP_SET_CONNECTION或FTP客户端的设置对话框配置FTP服务器。
在执行指令后,如果指定传输设置的传输请求标志为“TRUE:请求传输”。
如果指定nLogID编号的传输请求标志为TRUE,例如,如果sys_blsLog0DataRecordingActive为TRUE。
如果为参数指定的值超出允许的范围。
如果未按升序指定传输ID。
如果指令是在中断程序中执行的。
如果字符串数据的字符数超过256。
如果未使用指令FP_FTP_SET_CONNECTION或FTP客户端的设置对话框配置FTP服务器。
在执行指令后,如果指定传输设置的传输请求标志为“TRUE:请求传输”。
如果指定nLogID编号的传输请求标志为TRUE,例如,如果sys_blsLog0DataRecordingActive为TRUE。
如果指令是在以太网初始化期间执行的,则sys_iEthernetConnectionErrorCode设置为“11:以太网正在初始化”。
所有用于编程此函数的输入和输出变量已在POU头中声明。所有编程语言使用相同的POU头。
VAR
bSetModeFileError: BOOL:=FALSE;
bSetModeFileOK: BOOL:=FALSE;
iID10: INT:=10;
bSetModeFile: BOOL:=FALSE;
wErrorCode: WORD:=0;
END_VAR
如果bSetModeFile从FALSE更改为TRUE且sys_bIsEthernetInitializing为FALSE,则执行指令。
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;