菜单

FTPClient 操作手册

概述

FTP(File Transfer Protocol,文件传输协议)是一种用于在网络上在客户端与服务器之间传输文件的标准网络协议,属于TCP/IP协议族中的应用层协议。核心功能:实现文件的上传(Client->Server)和下载(Server->Client),支持目录操作(列出、创建、删除等)。

使用场景

  • 同一台设备实时域与非实时域的文件传出。

  • 不同设备非实时域与设备实时域的文件传出。

整体架构

  • 注: 本手册中用到的中科时代的软件包,均可以从官网的子页面获取。官网提供的版本可能比本手册中提到的版本更高,一般情况下这不会影响您按照本手册的例子执行相应的操作

  • 下表概述了各个产品组件

产品组件 描述说明
Client SF4201_FtpClient_1.0.4_amd64.deb FTP Client RTE组件
ftpClient.library FTP Client Master Metafacture 库文件

安装卸载

安装要求

  • 中科时代出厂的工智机;

  • 安装DeviceManager.exe (0.0.2.4)软件

安装过程

工智机端安装FTP Client RTE组件

  • 运行DeviceManager.exe 软件

  • 安装ACP 服务(以工智机IP(192.168.105.20)为例),选择“在线安装”

  • 选择工智机(192.168.105.20),点击“本地”,进入本地安装界面;

  • 进入工智机设备管理器界面,点击"软件”下拉选择“组件管理”,进入“浏览页面”,选择"FTPClient"查看安装版本并点击“安装”;

  • 传输完成,弹窗选择确定安装;安装完成后,选择确认重启组件;

  • 安装完成后,本地新增1.0.1版本的"FTPClient"组件,

Metafacture安装library

  • 打开Metafacture,点击“工具” -- “库存储”

  • 点击“安装” -- 选中modbus master的库文件,点击“打开”

  • 工程中点击“库管理器” -- “添加库” -- 选中FTPClient库点击“确定”

卸载过程

工智机端卸载FTPClient RTE组件

  • 进入工智机设备管理器->“组件管理界面”->"本地”,选择组件"FTPClient" 点击“卸载”;

  • 确认卸载组件且确定重新加载;

  • 加载完成后,"FTPClient" 组件被删除;

卸载MetaFacture侧的FTPClient library

  • MetaFacture界面点击“工具” -- “库存储”

  • 对话框中选中安装的FTPClient的库,点击“卸载”

技术说明

快速启动

本例软、硬件配置

硬件:
1.SX21工智机
2.Win10 PC

软件:
1.MetaFacutre V1.0.7.1

本例实验要求及原理

实验要求:按照“安装卸载”部分中的“安装过程”配置完成FTPClient环境

实验环境

按照“概述”部分中的“使用场景”搭建测试环境。

本例实验操作步骤

FTP 连接测试

FTP 连接

实验步骤如下:

  • POU中声明区域调用FB_FtpConnect
shell 复制代码
Connect   	:TMP.FB_FtpConnect ;
ip1 			: STRING(15):='192.168.105.44';   //FTP Server IP_addr
user 		        : STRING(15):='sinsegye';             //FTP Server username
pwd			: STRING(15):='1';		              //FTP Server password
bFTPConnect : BOOL;
handle 		: UINT;
  • POU中程序区域调用ReadCoils
shell 复制代码
Connect(
sIp:=ip, 
sUser:=user, 
sPwd:=pwd, 
bExecute:=bFTPConnect,
tTimeout:=, 
uHandle=>handle4,
 bError=>, bBusy=>, uErrorId=>);
  • 工程运行后触发Connect中的bExecute上升沿执行连接FTPServer;
  • MetaFacture配置程序暂停并重新运行,获取结果如下:

FTP 断开连接

实验步骤如下:

  • POU中声明区域调用FB_FtpDisConnect
shell 复制代码
DisConnect             : TMP.FB_FtpDisconnect;
bDisConnExe	       :BOOL;
  • POU中程序区域调用disConnect
shell 复制代码
DisConnect(
uHandle:=handle , 
bExecute:=bDisConnExe , 
tTimeout:= , 
bError=> , bBusy=> , uErrorId=> , bIsSuccess=> );
  • 工程运行后触发disConnect中的bExecute上升沿执行断开FTP Server连接;

  • MetaFacture配置程序暂停并重新运行,获取结果如下:

FTP 文件夹操作

创建文件夹

实验步骤如下:

  • POU中声明区域调用FB_FtpDirCreate
shell 复制代码
bDirCreatExe	:BOOL;
DirCreate	        : TMP.FB_FtpDirCreate;
sDirectory		: STRING(80);
  • POU中程序区域调用FB_FtpDirCreate
shell 复制代码
sDirectory		:='Debug';   
DirCreate(
uHandle:=handle, 
sDirectory:=sDirectory, 
bExecute:=bDirCreatExe,
tTimeout:=);
  • 工程运行后触发dirCreate中的bExecute上升沿执行创建文件夹操作;

  • MetaFacture配置程序暂停并重新运行,获取结果如下

检测文件夹

实验步骤如下:

  • POU中声明区域调用FB_FtpDirExists
shell 复制代码
bDirExistsExe	:BOOL;
DirExists	        : TMP.FB_FtpDirExists;
sDirectory		: STRING(80);
  • POU中程序区域调用FB_FtpDirExists
shell 复制代码
sDirectory		:='Debug';   
DirExists(
uHandle:= handle,
       sDirectory:=sDirectory, 
bExecute:= bDirExistsExe, 
tTimeout:= , 
bError=> , bBusy=> , uErrorId=> , bIsSuccess=> );
  • 工程运行后触发dirExistse中的bExecute上升沿执行检测文件夹操作;

  • MetaFacture配置程序暂停并重新运行,获取结果如下:

文件夹重命名

实验步骤如下:

  • POU中声明区域调用FB_FtpDirRename
shell 复制代码
bDirRenamesExe	:BOOL;
DirRename 	        : TMP.FB_FtpDirRename;
sDirectory		        : STRING(80);
sNewDirName		: STRING(80);
  • POU中程序区域调用FB_FtpDirRename
shell 复制代码
sDirectory		:='Debug';   
sNewDirName  :='Debug_NewName';
DirRename(
uHandle:=handle, 
sDirectory:=sDirectory, 
sNewName:=sNewDirName,
bExecute:=bDirRenamesExe,
tTimeout:= , 
bError=> , bBusy=> , uErrorId=> , bIsSuccess=> );
  • 工程运行后触发dirRename中的bExecute上升沿执行重命名文件夹操作;

  • MetaFacture配置程序暂停并重新运行,获取结果如下:

文件夹移动

实验步骤如下:

  • POU中声明区域调用FB_FtpDirMove
shell 复制代码
bDirMoveExe		:BOOL;
DirMove 	                 : TMP.FB_FtpDirMove;
sDirectory		        : STRING(80);
sDirectory	2		: STRING(80);
  • POU中程序区域调用FB_FtpDirRename
shell 复制代码
sDirectory		:='Debug';   
sDirectory2	:='Debug_01';
DirMove(
uHandle:=handle , 
sDirectory:=sDirectory , 
sTargetDirectory:=sDirectory2 , 
bExecute:=bDirMoveExe ,
tTimeout:= , 
bError=> , bBusy=> , uErrorId=> , bIsSuccess=> );
  • 工程运行后触发dirMove中的bExecute上升沿执行移动文件夹操作;

  • MetaFacture配置程序暂停并重新运行,获取结果如下:

删除文件夹

实验步骤如下:

  • POU中声明区域调用FB_FtpDirMove
shell 复制代码
bDirRemoveExe	:BOOL;
DirRemove 	        : TMP.FB_FtpDirRemove;
sDirectory		        : STRING(80);
  • POU中程序区域调用FB_FtpDirRename
shell 复制代码
sDirectory		:='Debug';   
DirRemove(
uHandle:=handle , 
sDirectory:=sDirectory , 
bExecute:=bDirRemoveExe ,
tTimeout:= , 
bError=> , bBusy=> , uErrorId=> , bIsSuccess=> );
  • 工程运行后触发dirRemove中的bExecute上升沿执行删除文件夹操作;

  • MetaFacture配置程序暂停并重新运行,获取结果如下:

FTP 文件操作

检测文件

实验步骤如下:

  • POU中声明区域调用FB_FtpFileExists
shell 复制代码
bFileExistsExe	       :BOOL;
FileExists 	               : TMP.FB_FtpFileExists;
FileSourcePath	: STRING(80);
  • POU中程序区域调用FB_FtpDirExists
shell 复制代码
FileSourcePath 	:='Debug/test.txt';  
FileExists(
uHandle:= handle,
       sFilePath:=FileSourcePath, 
bExecute:= bFileExistsExe, 
tTimeout:= , 
bError=> , bBusy=> , uErrorId=> , bIsSuccess=> );
  • 工程运行后触发fileExists中的bExecute上升沿执行检测文件操作;

  • MetaFacture配置程序暂停并重新运行,获取结果如下:

文件重命名

实验步骤如下:

  • POU中声明区域调用FB_FtpFileRename
shell 复制代码
bFileRenamesExe	:BOOL;
FileRename 	: TMP.FB_FtpFileRename;
FileSourcePath	: STRING(80);
FileNewName		: STRING(80);
  • POU中程序区域调用FB_FtpDirRename
shell 复制代码
FileSourcePath 	:='Debug/test.txt';  
FileNewName		:='File_newname.text';
FileRename(
uHandle:=handle, 
sFilePath:=FileSourcePath, 
sNewName:=FileNewName, 
bExecute:=bFileRenamesExe,
tTimeout:= , 
bError=> , bBusy=> , uErrorId=> , bIsSuccess=> );
  • 工程运行后触发fileRename中的bExecute上升沿执行重命名文件夹操作;

  • MetaFacture配置程序暂停并重新运行,获取结果如下:

文件移动

实验步骤如下:

  • POU中声明区域调用FB_FtpFileMove
shell 复制代码
bFileMoveExe	        :BOOL;
FileMove 	                : TMP.FB_FtpFileMove;
FileSourcePath 	:STRING(80); 
TargetDirectory		: STRING(80);
  • POU中程序区域调用FB_FtpDirRename
shell 复制代码
FileSourcePath 	:='Debug/test.txt';  
TargetDirectory		:='/Debug_01'; 
FileMove(
uHandle:=handle, 
sFilePath:=FileSourcePath, 
sTargetDirectory:=TargetDirectory, 
bExecute:=bFileMoveExe ,
tTimeout:= , 
bError=> , bBusy=> , uErrorId=> , bIsSuccess=> );
  • 工程运行后触发fileMove中的bExecute上升沿执行移动文件操作;

  • MetaFacture配置程序暂停并重新运行,获取结果如下:

删除文件

实验步骤如下:

  • POU中声明区域调用FB_FtpFileRemove
shell 复制代码
bFileRemoveExe	:BOOL;
FileRemove 	        : TMP.FB_FtpFileRemove;
FileSourcePath 	:STRING(80); 
  • POU中程序区域调用FB_FtpDirRename
shell 复制代码
FileSourcePath 	        :='Debug/test.txt';  
LocalTargetDirectory 	:='/home/sinsegye/test'; // RTE本地文件夹
Download(
uHandle:=handle,
sServerSourcePath:=FileSourcePath, sLocalTargetDirectory:=localTargetDirectory, bExecute:=bdownloadExe,
tTimeout:= , 
bError=> , 
bBusy=> , 
uErrorId=> , 
bIsSuccess=> );
  • 工程运行后触发fileRemove中的bExecute上升沿执行删除文件夹操作;
  • MetaFacture配置程序暂停并重新运行,获取结果如下:

文件下载

实验步骤如下:

  • POU中声明区域调用FB_FtpDownload
shell 复制代码
bdownloadExe  	         :BOOL;
Download 	                 : TMP.FB_FtpDownload;
FileSourcePath 	         :STRING(80); 
LocalTargetDirectory 	: STRING(80);
  • POU中程序区域调用FB_FtpDirRename
shell 复制代码
FileSourcePath 	        :='Debug/test.txt';  
LocalTargetDirectory 	:='/home/sinsegye/test'; // RTE本地文件夹
Download(
uHandle:=handle,
sServerSourcePath:=FileSourcePath, sLocalTargetDirectory:=localTargetDirectory, bExecute:=bdownloadExe,
tTimeout:= , 
bError=> , 
bBusy=> , 
uErrorId=> , 
bIsSuccess=> );
  • 工程运行后触发download中的bExecute上升沿执行文件下载操作;

  • MetaFacture配置程序暂停并重新运行,获取结果如下:

文件上传

实验步骤如下:

  • POU中声明区域调用FB_FtpUpload
shell 复制代码
bdownloadExe  	         :BOOL;
Upload 		                 : TMP.FB_FtpUpload;
TargetDirectory 	         :STRING(80); 
LocalTargetDirectory 	: STRING(80);
  • POU中程序区域调用FB_FtpDirRename
shell 复制代码
TargetDirectory			:='/Debug_01'; 
LocalTargetDirectory 	:='/home/sinsegye/test'; // RTE本地文件夹
Upload(
uHandle:=handle,
sLocalSourcePath:=LocalTargetDirectory, sServerTargetDirectory:=TargetDirectory, 
bExecute:=bUploadExe,
tTimeout:= , 
bError=> , 
bBusy=> , 
uErrorId=> , 
bIsSuccess=> );
  • 工程运行后触发download中的bExecute上升沿执行文件下载操作;

  • MetaFacture配置程序暂停并重新运行,获取结果如下:


功能介绍

FTP连接功能块介绍

功能块图形

参数介绍

  • 输入参数
参数名称 参数类型 描述
sIP string FTP 服务IP
sUser UINT FTP 服务用户名
sPwd BYTE FTP 服务用户密码
bExecute BOOL 上升沿触发执行
tTimeout Time 超时
  • 输出参数
参数名称 参数类型 描述
uHandle UNIT
bBUSY BOOL 功能块激活时设置,直到确认接收
bError BOOL 如果命令在传输过程中出现错误,则设置true直到bBusy输出被重置
nErrId UDINT 当bError输出被设置,提供错误号
bIsSuccess BOOL 功能成功返回True

FTP断开连接功能块介绍

功能块图形

参数介绍

  • 输入参数
参数名称 参数类型 描述
uHandle UNIT
bExecute BOOL 上升沿触发执行
tTimeout Time 超时
  • 输出参数
参数名称 参数类型 描述
bBUSY BOOL 功能块激活时设置,直到确认接收
bError BOOL 如果命令在传输过程中出现错误,则设置true直到bBusy输出被重置
nErrId UDINT 当bError输出被设置,提供错误号
bIsSuccess BOOL 功能成功返回True

FTP创建文件夹功能块介绍

功能块图形

参数介绍

  • 输入参数
参数名称 参数类型 描述
uHandle UNIT
sDirectory STRING 文件夹名称
bExecute BOOL 上升沿触发执行
tTimeout Time 超时
  • 输出参数
参数名称 参数类型 描述
bBUSY BOOL 功能块激活时设置,直到确认接收
bError BOOL 如果命令在传输过程中出现错误,则设置true直到bBusy输出被重置
nErrId UDINT 当bError输出被设置,提供错误号
bIsSuccess BOOL 功能成功返回True

FTP文件夹检查功能块介绍

功能块图形

参数介绍

  • 输入参数
参数名称 参数类型 描述
uHandle UNIT
sDirectory STRING 文件夹名称
bExecute BOOL 上升沿触发执行
tTimeout Time 超时
  • 输出参数
参数名称 参数类型 描述
bBUSY BOOL 功能块激活时设置,直到确认接收
bError BOOL 如果命令在传输过程中出现错误,则设置true直到bBusy输出被重置
nErrId UDINT 当bError输出被设置,提供错误号
bIsSuccess BOOL True表示存在,False 表示不存在

FTP文件夹重命名功能块介绍

功能块图形

参数介绍

  • 输入参数
参数名称 参数类型 描述
uHandle UNIT
sDirectory STRING 文件夹名称
sNewName STRING 新文件夹名称
bExecute BOOL 上升沿触发执行
tTimeout Time 超时
  • 输出参数
参数名称 参数类型 描述
bBUSY BOOL 功能块激活时设置,直到确认接收
bError BOOL 如果命令在传输过程中出现错误,则设置true直到bBusy输出被重置
nErrId UDINT 当bError输出被设置,提供错误号
bIsSuccess BOOL 功能成功返回True

FTP文件夹移动功能块介绍

功能块图形

参数介绍

  • 输入参数
参数名称 参数类型 描述
uHandle UNIT
sDirectory STRING 文件夹名称
sTargetDirectory STRING 目标文件夹
bExecute BOOL 上升沿触发执行
tTimeout Time 超时
  • 输出参数
参数名称 参数类型 描述
bBUSY BOOL 功能块激活时设置,直到确认接收
bError BOOL 如果命令在传输过程中出现错误,则设置true直到bBusy输出被重置
nErrId UDINT 当bError输出被设置,提供错误号
bIsSuccess BOOL 功能成功返回True

FTP文件夹移除功能块介绍

功能块图形

参数介绍

  • 输入参数
参数名称 参数类型 描述
uHandle UNIT
sDirectory STRING 文件夹名称
bExecute BOOL 上升沿触发执行
tTimeout Time 超时
  • 输出参数
参数名称 参数类型 描述
bBUSY BOOL 功能块激活时设置,直到确认接收
bError BOOL 如果命令在传输过程中出现错误,则设置true直到bBusy输出被重置
nErrId UDINT 当bError输出被设置,提供错误号
bIsSuccess BOOL 功能成功返回True

FTP文件检查功能块介绍

功能块图形

参数介绍

  • 输入参数
参数名称 参数类型 描述
uHandle UNIT
SFilePath STRING 文件路径+文件名
bExecute BOOL 上升沿触发执行
tTimeout Time 超时
  • 输出参数
参数名称 参数类型 描述
bBUSY BOOL 功能块激活时设置,直到确认接收
bError BOOL 如果命令在传输过程中出现错误,则设置true直到bBusy输出被重置
nErrId UDINT 当bError输出被设置,提供错误号
bIsSuccess BOOL True表示存在,False 表示不存在

FTP文件重命名功能块介绍

功能块图形

参数介绍

  • 输入参数
参数名称 参数类型 描述
uHandle UNIT
sFilePath STRING 文件路径+文件名
sNewName STRING 新文件名称
bExecute BOOL 上升沿触发执行
tTimeout Time 超时
  • 输出参数
参数名称 参数类型 描述
bBUSY BOOL 功能块激活时设置,直到确认接收
bError BOOL 如果命令在传输过程中出现错误,则设置true直到bBusy输出被重置
nErrId UDINT 当bError输出被设置,提供错误号
bIsSuccess BOOL 功能成功返回True

FTP文件移动功能块介绍

功能块图形

参数介绍

  • 输入参数
参数名称 参数类型 描述
uHandle UNIT
sFilePath STRING 文件路径+文件名
sTargetDirectory STRING 目标文件夹
bExecute BOOL 上升沿触发执行
tTimeout Time 超时
  • 输出参数
参数名称 参数类型 描述
bBUSY BOOL 功能块激活时设置,直到确认接收
bError BOOL 如果命令在传输过程中出现错误,则设置true直到bBusy输出被重置
nErrId UDINT 当bError输出被设置,提供错误号
bIsSuccess BOOL 功能成功返回True

FTP文件移除功能块介绍

功能块图形

参数介绍

  • 输入参数
参数名称 参数类型 描述
uHandle UNIT
sFilePath STRING 文件路径+文件名
bExecute BOOL 上升沿触发执行
tTimeout Time 超时
  • 输出参数
参数名称 参数类型 描述
bBUSY BOOL 功能块激活时设置,直到确认接收
bError BOOL 如果命令在传输过程中出现错误,则设置true直到bBusy输出被重置
nErrId UDINT 当bError输出被设置,提供错误号
bIsSuccess BOOL 功能成功返回True

FTP文件下载功能块介绍

功能块图形

参数介绍

  • 输入参数
参数名称 参数类型 描述
uHandle UNIT
sServerSourcePath STRING 服务端源路径
sLocalTargetDirectory STRING 本地目标路径
bExecute BOOL 上升沿触发执行
tTimeout Time 超时
  • 输出参数
参数名称 参数类型 描述
bBUSY BOOL 功能块激活时设置,直到确认接收
bError BOOL 如果命令在传输过程中出现错误,则设置true直到bBusy输出被重置
nErrId UDINT 当bError输出被设置,提供错误号
bIsSuccess BOOL 功能成功返回True

FTP文件上传功能块介绍

功能块图形

参数介绍

  • 输入参数
参数名称 参数类型 描述
uHandle UNIT
sLocalSourcePath STRING 本地源路径
sServerTargetDirectory STRING 服务端目标路径
bExecute BOOL 上升沿触发执行
tTimeout Time 超时
  • 输出参数
参数名称 参数类型 描述
bBUSY BOOL 功能块激活时设置,直到确认接收
bError BOOL 如果命令在传输过程中出现错误,则设置true直到bBusy输出被重置
nErrId UDINT 当bError输出被设置,提供错误号
bIsSuccess BOOL 功能成功返回True
最近修改: 2025-08-26