使用场景
注: 本手册中用到的中科时代的软件包,均可以从官网的子页面获取。官网提供的版本可能比本手册中提到的版本更高,一般情况下这不会影响您按照本手册的例子执行相应的操作
将搭建的客户端工程下载到工智机中运行,通过工智机里面的后台TCP/IP Client 和第三方的设备通过TCP/IP Server进行数据交互。
与第三方的TCP/IP服务端建立连接,收发数据,实现通信,当长时间不需要通信时,关闭建立的连接。
TCPIP Client产品包括两部分组件
产品组件 | 描述说明 |
---|---|
sf4200_0.0.5_amd64.deb | TCPIP RTE组件 |
CmpTcpIp.library | 上位机程序使用的库文件 |
安装要求
中科时代出厂的工智机;
工智机可以访问互联网;
熟悉基础的Linux操作命令
安装过程
1、工智机端安装TCPIP RTE组件
上传deb包到工智机Linux环境的/home/sinsegye目录下
上传完成后在工智机上执行命令安装(参考下方截图,如果模块文件名发生变化则命令行中的文件名做相应更改)
修改RTE的配置文件,ComponentManger模块下加入SF4200
重启RTE服务,使新加入的SF4200被调用
2、IDE侧部署TCPIP Server的library
MetaFacture中点击最上面的菜单栏 ”工具“ -- ”库存储“ ;
弹出的对话窗中点击”安装“ -- 选中CmpTcpIp.library -- 点击“打开”;
工程中双击“库管理器” -- “添加库” -- 双击“Sinsegye Tcp/Ip” ,加载库完成;
更新安装
1、升级工智机TCPIP Server RTE组件
上传升级版deb包到工智机Linux环境的/home/sinsegye目录下,上传方法参考附录;
上传完成后在工智机上执行命令安装(参考下方截图,如果模块文件名发生变化则命令行中的文件名做相应更改)
重启RTE服务,使新升级的的SF4200被调用
2、升级IDE侧DataBase的library
MetaFacture中点击最上面的菜单栏 ”工具“ -- ”库存储“ ;
弹出的对话窗中点击”安装“ -- 选中CmpTcpIp.library -- 点击“打开”;
工程中双击“库管理器” -- “添加库” -- 双击“Sinsegye Tcp/Ip” ,加载库完成;
卸载过程
1、卸载工智机TCPIP Server RTE组件
工智机上执行命令卸载
修改RTE的配置文件,ComponentManger模块下去掉SF4200
重启RTE服务
2、卸载IDE侧的TCPIP library
MetaFacture界面点击“工具” -- “库存储”
对话框中选中安装的的TCPIP库,点击“卸载”
快速启动
(一)本例软、硬件配置
硬件:
SX5100工智机 MetaOS V24.08.15_SX5
Win10 PC
软件:
MetaFacutre V1.0.6.2
第三方TCPIP Clinet工具TCP/UDP Socket调试工具 V2.3
(二)本例实验要求及原理
1、实验原理
通过FB_SocketConnect和第三方的TCP/IP服务端建立连接,返回连接句柄,根据连接句柄结合FB_SocketSend和FB_SocketReceive进行数据的收发,从而实现通信,当长时间不需要通信时,可以根据FB_SocketClose关闭建立的连接。
上位机和工智机使用EtherNet连接。
上位机上,MetaFacture下装工程到工智机。工程中会包含下面的试验操作步骤中的配置。
工智机与第三方TCPIP服务端通过EtherNet连接。
(三)本例实验操作步骤
1、TCPIP Client与第三方TCPIP Server建立连接的实验步骤如下:
POU中声明区域调用TCPIP库的功能块FB_SocketConnect
POU中程序区域调用fbSocketConnect,配置TCPIP Server的ip、端口
第三方TCPIP Server启用监听后,触发TCPIP CLient的fbSoccketConnect的bExecute上升沿触发连接;连接成功后,查看第三方TCPIP Server状态变为已连接;
2、TCPIP Client发送数据实验步骤如下:
POU中声明区域调用TCPIP库的功能块FB_SocketSend
POU中程序区域调用fbSocketSend,设置要写入的数据;
触发TCPIP CLient的fbSoccketSend的bExecute上升沿触发发送数据;第三方TCPIP Server接收到数据;
3、TCPIP Client接收第三方server数据实验步骤如下:
POU中声明区域调用TCPIP库的功能块FB_SocketReceive
POU中程序区域调用fbSocketReceive,设置接收数据的地址;
第三方TCPIP Server发送数据后,触发TCPIP Client的fbSoccketReceive的bExecute上升沿触发接收数据;
4、TCPIP Client断开与第三方TCPIP Server的连接
POU中声明区域调用TCPIP库的功能块FB_SocketClose
POU中程序区域调用fbSocketClose
触发SocketClose的bExecute上升沿触发断开动作;查看第三方TCPIP Server状态由“已连接”变为“已启动监听”
(四)实验注意点
功能块FB_SocketConnect介绍
参数介绍
参数名称 | 参数类型 | 描述 |
---|---|---|
sRemoteHost | STRING | 远程服务器的 IP 地址(IPv4),格式为字符串 |
nRemotePort | UDINT | 远程服务器的 IP 端口号 |
bExecute | BOOL | 通过该输入的上升沿触发功能块 |
tTimeout | TIME | 该功能块执行允许的最大超时时间,即从触发到 到达该时间,如果还没有执行,就不执行,超时报警 |
参数名称 | 参数类型 | 描述 |
---|---|---|
bBusy | BOOL | 当功能块被激活时,被置为True,一直保持到收到确认信号 |
bError | BOOL | 如果在命令传输过程中发生错误,则在 bBusy 输出被重置后,此输出将被设置成True |
nErrId | UDINT | ![]() |
hSocket | ST_HSOCKET | 新打开的本地客户端套接字的 TCP/IP 连接句柄;结构体变量 :句柄号、本地IP、远端IP |
功能块FB_SocketSend介绍
参数介绍
参数名称 | 参数类型 | 描述 |
---|---|---|
hSocket | ST_HSOCKET | 要发送数据的通信伙伴的连接句柄 |
cbLen | UDINT | 要发送的数据字节数 |
pSrc | POINTER TO BYTE | 传输缓冲区的地址(指针) |
bExecute | BOOL | 通过该输入的上升沿触发功能块 |
tTimeout | TIME | 该功能块执行允许的最大超时时间,即从触发到 到达该时间,如果还没有执行,就不执行,超时报警 |
参数名称 | 参数类型 | 描述 |
---|---|---|
bBusy | BOOL | 当功能块被激活时,被置为True,一直保持到收到确认信号 |
bError | BOOL | 如果在命令传输过程中发生错误,则在 bBusy 输出被重置后,此输出将被设置成True |
nErrId | UDINT | ![]() |
如果 bError 输出被设置成True,则此参数返回 MetaFacture TCP/IP 连接服务器的错误编号 |
功能块FB_SocketReceive介绍
参数介绍
参数名称 | 参数类型 | 描述 |
---|---|---|
hSocket | ST_HSOCKET | 要接收数据的通信伙伴的连接句柄 |
cbLen | UDINT | 可用于读取数据的最大缓冲区大小(以字节为单位) |
pDest | POINTER TO BYTE | 接收缓冲区的地址(指针) |
bExecute | BOOL | 上升沿触发TCPIP Server接收数据 |
tTimeout | Time | 该功能块执行允许的最大超时时间,即从触发到 到达该时间,如果还没有执行,就不执行,超时报警 |
参数名称 | 参数类型 | 描述 |
---|---|---|
bBusy | BOOL | 忙碌状态,True为忙碌,Flase不忙碌 |
bError | BOOL | 报错状态,True报错,Flase无报错 |
nErrId | UDINT | ![]() |
如果 bError 输出被设置成True,则此参数返回 MetaFacture TCP/IP 连接服务器的错误编号 | ||
nRecBytes | UDINT | 最后成功接收的数据字节数 |
功能块FB_SocketClose介绍
参数介绍
参数名称 | 参数类型 | 描述 |
---|---|---|
hSocket | ST_HSOCKET | 要关闭的监听器、远程或本地客户端套接字的连接句柄。 |
bExecute | BOOL | 通过该输入的上升沿触发功能块 |
tTimeout | TIME | 该功能块执行允许的最大超时时间,即从触发到 到达该时间,如果还没有执行,就不执行,超时报警 |
参数名称 | 参数类型 | 描述 |
---|---|---|
bBusy | BOOL | 当功能块被激活时,被置为True,一直保持到收到确认信号 |
bError | BOOL | 如果在命令传输过程中发生错误,则在 bBusy 输出被重置后,此输出将被设置成True |
nErrId | UDINT | ![]() |
断开连接后再次连接,无法连接
Client断开与TCPUDP Socket调试工具的连接后,再次去连接,无法连上;
需要重新下装TCPIP Client的工程,或者重新启动RTE才能再次连上;(已提交bug)