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 连接测试
实验步骤如下:
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;
Connect(
sIp:=ip,
sUser:=user,
sPwd:=pwd,
bExecute:=bFTPConnect,
tTimeout:=,
uHandle=>handle4,
bError=>, bBusy=>, uErrorId=>);
实验步骤如下:
DisConnect : TMP.FB_FtpDisconnect;
bDisConnExe :BOOL;
DisConnect(
uHandle:=handle ,
bExecute:=bDisConnExe ,
tTimeout:= ,
bError=> , bBusy=> , uErrorId=> , bIsSuccess=> );
工程运行后触发disConnect中的bExecute上升沿执行断开FTP Server连接;
MetaFacture配置程序暂停并重新运行,获取结果如下:
创建文件夹
实验步骤如下:
bDirCreatExe :BOOL;
DirCreate : TMP.FB_FtpDirCreate;
sDirectory : STRING(80);
sDirectory :='Debug';
DirCreate(
uHandle:=handle,
sDirectory:=sDirectory,
bExecute:=bDirCreatExe,
tTimeout:=);
工程运行后触发dirCreate中的bExecute上升沿执行创建文件夹操作;
MetaFacture配置程序暂停并重新运行,获取结果如下
检测文件夹
实验步骤如下:
bDirExistsExe :BOOL;
DirExists : TMP.FB_FtpDirExists;
sDirectory : STRING(80);
sDirectory :='Debug';
DirExists(
uHandle:= handle,
sDirectory:=sDirectory,
bExecute:= bDirExistsExe,
tTimeout:= ,
bError=> , bBusy=> , uErrorId=> , bIsSuccess=> );
工程运行后触发dirExistse中的bExecute上升沿执行检测文件夹操作;
MetaFacture配置程序暂停并重新运行,获取结果如下:
文件夹重命名
实验步骤如下:
bDirRenamesExe :BOOL;
DirRename : TMP.FB_FtpDirRename;
sDirectory : STRING(80);
sNewDirName : STRING(80);
sDirectory :='Debug';
sNewDirName :='Debug_NewName';
DirRename(
uHandle:=handle,
sDirectory:=sDirectory,
sNewName:=sNewDirName,
bExecute:=bDirRenamesExe,
tTimeout:= ,
bError=> , bBusy=> , uErrorId=> , bIsSuccess=> );
工程运行后触发dirRename中的bExecute上升沿执行重命名文件夹操作;
MetaFacture配置程序暂停并重新运行,获取结果如下:
文件夹移动
实验步骤如下:
bDirMoveExe :BOOL;
DirMove : TMP.FB_FtpDirMove;
sDirectory : STRING(80);
sDirectory 2 : STRING(80);
sDirectory :='Debug';
sDirectory2 :='Debug_01';
DirMove(
uHandle:=handle ,
sDirectory:=sDirectory ,
sTargetDirectory:=sDirectory2 ,
bExecute:=bDirMoveExe ,
tTimeout:= ,
bError=> , bBusy=> , uErrorId=> , bIsSuccess=> );
工程运行后触发dirMove中的bExecute上升沿执行移动文件夹操作;
MetaFacture配置程序暂停并重新运行,获取结果如下:
删除文件夹
实验步骤如下:
bDirRemoveExe :BOOL;
DirRemove : TMP.FB_FtpDirRemove;
sDirectory : STRING(80);
sDirectory :='Debug';
DirRemove(
uHandle:=handle ,
sDirectory:=sDirectory ,
bExecute:=bDirRemoveExe ,
tTimeout:= ,
bError=> , bBusy=> , uErrorId=> , bIsSuccess=> );
工程运行后触发dirRemove中的bExecute上升沿执行删除文件夹操作;
MetaFacture配置程序暂停并重新运行,获取结果如下:
检测文件
实验步骤如下:
bFileExistsExe :BOOL;
FileExists : TMP.FB_FtpFileExists;
FileSourcePath : STRING(80);
FileSourcePath :='Debug/test.txt';
FileExists(
uHandle:= handle,
sFilePath:=FileSourcePath,
bExecute:= bFileExistsExe,
tTimeout:= ,
bError=> , bBusy=> , uErrorId=> , bIsSuccess=> );
工程运行后触发fileExists中的bExecute上升沿执行检测文件操作;
MetaFacture配置程序暂停并重新运行,获取结果如下:
文件重命名
实验步骤如下:
bFileRenamesExe :BOOL;
FileRename : TMP.FB_FtpFileRename;
FileSourcePath : STRING(80);
FileNewName : STRING(80);
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配置程序暂停并重新运行,获取结果如下:
文件移动
实验步骤如下:
bFileMoveExe :BOOL;
FileMove : TMP.FB_FtpFileMove;
FileSourcePath :STRING(80);
TargetDirectory : STRING(80);
FileSourcePath :='Debug/test.txt';
TargetDirectory :='/Debug_01';
FileMove(
uHandle:=handle,
sFilePath:=FileSourcePath,
sTargetDirectory:=TargetDirectory,
bExecute:=bFileMoveExe ,
tTimeout:= ,
bError=> , bBusy=> , uErrorId=> , bIsSuccess=> );
工程运行后触发fileMove中的bExecute上升沿执行移动文件操作;
MetaFacture配置程序暂停并重新运行,获取结果如下:
删除文件
实验步骤如下:
bFileRemoveExe :BOOL;
FileRemove : TMP.FB_FtpFileRemove;
FileSourcePath :STRING(80);
FileSourcePath :='Debug/test.txt';
LocalTargetDirectory :='/home/sinsegye/test'; // RTE本地文件夹
Download(
uHandle:=handle,
sServerSourcePath:=FileSourcePath, sLocalTargetDirectory:=localTargetDirectory, bExecute:=bdownloadExe,
tTimeout:= ,
bError=> ,
bBusy=> ,
uErrorId=> ,
bIsSuccess=> );
文件下载
实验步骤如下:
bdownloadExe :BOOL;
Download : TMP.FB_FtpDownload;
FileSourcePath :STRING(80);
LocalTargetDirectory : STRING(80);
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配置程序暂停并重新运行,获取结果如下:
文件上传
实验步骤如下:
bdownloadExe :BOOL;
Upload : TMP.FB_FtpUpload;
TargetDirectory :STRING(80);
LocalTargetDirectory : STRING(80);
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配置程序暂停并重新运行,获取结果如下:
功能块图形
参数介绍
参数名称 | 参数类型 | 描述 |
---|---|---|
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 |
功能块图形
参数介绍
参数名称 | 参数类型 | 描述 |
---|---|---|
uHandle | UNIT | |
bExecute | BOOL | 上升沿触发执行 |
tTimeout | Time | 超时 |
参数名称 | 参数类型 | 描述 |
---|---|---|
bBUSY | BOOL | 功能块激活时设置,直到确认接收 |
bError | BOOL | 如果命令在传输过程中出现错误,则设置true直到bBusy输出被重置 |
nErrId | UDINT | 当bError输出被设置,提供错误号 |
bIsSuccess | BOOL | 功能成功返回True |
功能块图形
参数介绍
参数名称 | 参数类型 | 描述 |
---|---|---|
uHandle | UNIT | |
sDirectory | STRING | 文件夹名称 |
bExecute | BOOL | 上升沿触发执行 |
tTimeout | Time | 超时 |
参数名称 | 参数类型 | 描述 |
---|---|---|
bBUSY | BOOL | 功能块激活时设置,直到确认接收 |
bError | BOOL | 如果命令在传输过程中出现错误,则设置true直到bBusy输出被重置 |
nErrId | UDINT | 当bError输出被设置,提供错误号 |
bIsSuccess | BOOL | 功能成功返回True |
功能块图形
参数介绍
参数名称 | 参数类型 | 描述 |
---|---|---|
uHandle | UNIT | |
sDirectory | STRING | 文件夹名称 |
bExecute | BOOL | 上升沿触发执行 |
tTimeout | Time | 超时 |
参数名称 | 参数类型 | 描述 |
---|---|---|
bBUSY | BOOL | 功能块激活时设置,直到确认接收 |
bError | BOOL | 如果命令在传输过程中出现错误,则设置true直到bBusy输出被重置 |
nErrId | UDINT | 当bError输出被设置,提供错误号 |
bIsSuccess | BOOL | True表示存在,False 表示不存在 |
功能块图形
参数介绍
参数名称 | 参数类型 | 描述 |
---|---|---|
uHandle | UNIT | |
sDirectory | STRING | 文件夹名称 |
sNewName | STRING | 新文件夹名称 |
bExecute | BOOL | 上升沿触发执行 |
tTimeout | Time | 超时 |
参数名称 | 参数类型 | 描述 |
---|---|---|
bBUSY | BOOL | 功能块激活时设置,直到确认接收 |
bError | BOOL | 如果命令在传输过程中出现错误,则设置true直到bBusy输出被重置 |
nErrId | UDINT | 当bError输出被设置,提供错误号 |
bIsSuccess | BOOL | 功能成功返回True |
功能块图形
参数介绍
参数名称 | 参数类型 | 描述 |
---|---|---|
uHandle | UNIT | |
sDirectory | STRING | 文件夹名称 |
sTargetDirectory | STRING | 目标文件夹 |
bExecute | BOOL | 上升沿触发执行 |
tTimeout | Time | 超时 |
参数名称 | 参数类型 | 描述 |
---|---|---|
bBUSY | BOOL | 功能块激活时设置,直到确认接收 |
bError | BOOL | 如果命令在传输过程中出现错误,则设置true直到bBusy输出被重置 |
nErrId | UDINT | 当bError输出被设置,提供错误号 |
bIsSuccess | BOOL | 功能成功返回True |
功能块图形
参数介绍
参数名称 | 参数类型 | 描述 |
---|---|---|
uHandle | UNIT | |
sDirectory | STRING | 文件夹名称 |
bExecute | BOOL | 上升沿触发执行 |
tTimeout | Time | 超时 |
参数名称 | 参数类型 | 描述 |
---|---|---|
bBUSY | BOOL | 功能块激活时设置,直到确认接收 |
bError | BOOL | 如果命令在传输过程中出现错误,则设置true直到bBusy输出被重置 |
nErrId | UDINT | 当bError输出被设置,提供错误号 |
bIsSuccess | BOOL | 功能成功返回True |
功能块图形
参数介绍
参数名称 | 参数类型 | 描述 |
---|---|---|
uHandle | UNIT | |
SFilePath | STRING | 文件路径+文件名 |
bExecute | BOOL | 上升沿触发执行 |
tTimeout | Time | 超时 |
参数名称 | 参数类型 | 描述 |
---|---|---|
bBUSY | BOOL | 功能块激活时设置,直到确认接收 |
bError | BOOL | 如果命令在传输过程中出现错误,则设置true直到bBusy输出被重置 |
nErrId | UDINT | 当bError输出被设置,提供错误号 |
bIsSuccess | BOOL | True表示存在,False 表示不存在 |
功能块图形
参数介绍
参数名称 | 参数类型 | 描述 |
---|---|---|
uHandle | UNIT | |
sFilePath | STRING | 文件路径+文件名 |
sNewName | STRING | 新文件名称 |
bExecute | BOOL | 上升沿触发执行 |
tTimeout | Time | 超时 |
参数名称 | 参数类型 | 描述 |
---|---|---|
bBUSY | BOOL | 功能块激活时设置,直到确认接收 |
bError | BOOL | 如果命令在传输过程中出现错误,则设置true直到bBusy输出被重置 |
nErrId | UDINT | 当bError输出被设置,提供错误号 |
bIsSuccess | BOOL | 功能成功返回True |
功能块图形
参数介绍
参数名称 | 参数类型 | 描述 |
---|---|---|
uHandle | UNIT | |
sFilePath | STRING | 文件路径+文件名 |
sTargetDirectory | STRING | 目标文件夹 |
bExecute | BOOL | 上升沿触发执行 |
tTimeout | Time | 超时 |
参数名称 | 参数类型 | 描述 |
---|---|---|
bBUSY | BOOL | 功能块激活时设置,直到确认接收 |
bError | BOOL | 如果命令在传输过程中出现错误,则设置true直到bBusy输出被重置 |
nErrId | UDINT | 当bError输出被设置,提供错误号 |
bIsSuccess | BOOL | 功能成功返回True |
功能块图形
参数介绍
参数名称 | 参数类型 | 描述 |
---|---|---|
uHandle | UNIT | |
sFilePath | STRING | 文件路径+文件名 |
bExecute | BOOL | 上升沿触发执行 |
tTimeout | Time | 超时 |
参数名称 | 参数类型 | 描述 |
---|---|---|
bBUSY | BOOL | 功能块激活时设置,直到确认接收 |
bError | BOOL | 如果命令在传输过程中出现错误,则设置true直到bBusy输出被重置 |
nErrId | UDINT | 当bError输出被设置,提供错误号 |
bIsSuccess | BOOL | 功能成功返回True |
功能块图形
参数介绍
参数名称 | 参数类型 | 描述 |
---|---|---|
uHandle | UNIT | |
sServerSourcePath | STRING | 服务端源路径 |
sLocalTargetDirectory | STRING | 本地目标路径 |
bExecute | BOOL | 上升沿触发执行 |
tTimeout | Time | 超时 |
参数名称 | 参数类型 | 描述 |
---|---|---|
bBUSY | BOOL | 功能块激活时设置,直到确认接收 |
bError | BOOL | 如果命令在传输过程中出现错误,则设置true直到bBusy输出被重置 |
nErrId | UDINT | 当bError输出被设置,提供错误号 |
bIsSuccess | BOOL | 功能成功返回True |
功能块图形
参数介绍
参数名称 | 参数类型 | 描述 |
---|---|---|
uHandle | UNIT | |
sLocalSourcePath | STRING | 本地源路径 |
sServerTargetDirectory | STRING | 服务端目标路径 |
bExecute | BOOL | 上升沿触发执行 |
tTimeout | Time | 超时 |
参数名称 | 参数类型 | 描述 |
---|---|---|
bBUSY | BOOL | 功能块激活时设置,直到确认接收 |
bError | BOOL | 如果命令在传输过程中出现错误,则设置true直到bBusy输出被重置 |
nErrId | UDINT | 当bError输出被设置,提供错误号 |
bIsSuccess | BOOL | 功能成功返回True |