UDP协议
UDP协议:用户数据报协议(User Datagram Protocol),是OSI参考模型中的传输层协议,它与TCP协议一样用于处理数据包,是一种无连接的传输层协议。UDP有不断提供数据包分组、组装和不能对数据包进行排序,也就是说,当报文发送之后无法得知是否安全到达,是一种提供面向事务简单不可靠信息传送服务。
安装要求
中科时代出厂的工智机;
Device Manager组件管理器;
个人电脑安装中科时代IDE MetaFacture软件;
个人电脑需要联网
SF4200-sitcpudp组件安装
1.打开Device Manager 0.0.1.9组件管理器
2.选择左下角的“安装ACP服务”
3.设定IP、用户名和密码,选择“在线安装”。
(本例为192.168.110.155,用户名:sinsegye,密码:1)
4.安装完成后,点击“扫描”,出现目标工智机后,双击进入设备管理页面。
5.在设备管理页面,选择“安装RTE插件服务”
6.输入用户名sinsegye,密码1,点击“在线安装”
7.安装完成后,选择“组件”—“组件管理”
8.点击“浏览”,可以在线浏览工智机发布的组件。
9.选择“SF4200-sitcpudp”组件,点击“安装”
传输完成,确认安装插件。
安装完成,重启生效。
10.安装完成后,在本地可以显示已安装的SF4200-sitcpudp组件。
组件更新和卸载
打开Device Manager,进入工智机设备管理页面—“组件”—“组件管理”,选择需要更新或者卸载的组件,点击“卸载”或“更新”
UDP Socket建立
2.选择标准工程,并命名UDP
3.选择中科时代Sinsegye设备,选择PLC编程语言(本例为ST语言)
4.选择“库管理器”—“添加库”—选择“SF4200_TcpUdp”—确定
SF4200_TcpUdp添加到库管理器中。
5.使用“输入助手”在PLC_PRG中声明UPD_Peer变量。鼠标右键选择“输入助手”。
选择“结构体类型”—“MetaCore_TcpUdp”—“FB_SocketUdpCreate”
功能块声明完成。
6.使用“输入助手”在程序中插入声明的UDP_Peer功能块。鼠标右键选择“输入助手”
选择“实例调用”—“Udp_Peer”
Udp_Peer通过输入助手自动插入到PLC程序中。
7.声明三个变量,用于设定Udp_Peer功能块的本机IP地址、端口和启动建立信号。
UDP Send功能
1.鼠标右键使用“输入助手”声明Udp_Send功能块和调用Udp_Send功能块。
2.新建以下三个变量,并且把Udp_Peer的输出信号hSocket和新建的三个变量传入到Udp_Send的输入设定中。
变量名称 | 类型 | 设定例 | 意义 |
---|---|---|---|
RemoteAddr | STRING | ‘192.168.110.135’ | UDP连接的IP地址 |
RemotePort | UDINT | 9999 | UDP连接的端口 |
bSend | BOOL | FALSE | 发送信号 |
3.新建SendData变量,设定初始值为‘This is a teast’。将SendData指针和字节大小传入到Udp_Send的输入设定中
4.选择“Device”—输入工智机IP地址连接工智机。本例为192.168.110.155.
5.点击“登录”
6.登陆后,点击“运行”程序
7.使用个人电脑打开调试工具Socket Tool
8.选择“UDP Client”—“创建”
10.设定工智机IP地址、工智机端口,以及本机端口,点击确定。
11.将变量bCreat置True,建立UDP Socket。
12. 变量bSend置True,发送数据’This is a test’
13.查看Socket Tool,收到This is a test数据。
UDP Receive功能
1.鼠标右键使用“输入助手”声明Udp_Receive功能块和调用Udp_Receive功能块。
2.新建以下四个变量,并且把Udp_Peer的输出信号hSocket和新建的四个变量传入到Udp_Receive的功能块中。
变量名称 | 类型 | 意义 |
---|---|---|
bReceive | BOOL | UDP接收数据启动变量 |
ReceiveAddr | STRING | 发送数据端的IP地址 |
ReceivePort | UDINT | 发送数据的端口 |
ReceiveBytes | UDINT | 数据大小 |
3.新建ReceiveData变量,将ReceiveData指针和字节大小传入到Udp_Receive的输入设定中.
4.选择“Device”—输入工智机IP地址连接工智机。本例为192.168.110.155.
5.点击“登录”
6.登陆后,点击“运行”程序
7.使用个人电脑打开调试工具Socket Tool
8.选择“UDP Client”—“创建”
10.设定工智机IP地址、工智机端口,以及本机端口,点击确定。
11.将变量bCreat置True,建立UDP Socket。
12. 变量bReceive置True,使用Socket Tool发送数据‘ABCdef1234567890’
13.查看PLC程序中的ReceiveData,收到数据。
UDP Socket close关闭
1.鼠标右键使用“输入助手”声明Udp_Close功能块和调用Udp_Close功能块。
2声明执行关闭的变量bClose:BOOL,并将想要关闭的hSocket传入到输入接口中,本例为Udp_Peer.hSocket。
3.选择“Device”—输入工智机IP地址连接工智机。本例为192.168.110.155.
5.点击“登录”
6.登陆后,点击“运行”程序
7.将bCreat置True,建立UDP Socket
功能块FB_SocketUdpCreate
输入参数
参数名 | 类型 | 设定例 | 意义 |
---|---|---|---|
sLocalHost | STRING | ‘192.168.110.155’ | 本机IP地址 |
nLocalPort | UDINT | 9000 | 本机端口 |
bExecute | BOOL | TRUE | 0→1时,建立UDP Socket |
tTimeout | TIME | T#5S | 超时时间,默认5s |
输出参数
参数名 | 类型 | 意义 |
---|---|---|
bBusy | BOOL | 是否在执行中 |
bError | BOOL | 是否发送错误 |
nErrId | UDINT | 错误代码 |
hSocket | ST_HSOCKET | 建立的Socket信息 |
功能块FB_SocketUdpSendTo
输入参数
参数名 | 类型 | 设定例 | 意义 |
---|---|---|---|
hSocket | ST_HOCKET | FB_SocketUdpCreate.hSocket | 已建立的Socket |
sRemoteHost | STRING | '192.168.110.135' | 接收数据到的IP地址 |
nRemotePort | UDINT | 9990 | 接收数据到的端口 |
cbLen | UDINT | SIZEOF(data) | 发送数据的大小 |
pSrc | POINTER TO BYTE | ADR(data) | 发送数据的内容 |
bExecute | BOOL | TRUE | 0→1时,发送数据 |
tTimeout | TIME | T#5S | 超时时间,默认5s |
输出参数
参数名 | 类型 | 意义 |
---|---|---|
bBusy | BOOL | 是否在执行中 |
bError | BOOL | 是否发送错误 |
nErrId | UDINT | 错误代码 |
输入参数
参数名 | 类型 | 设定例 | 意义 |
---|---|---|---|
hSocket | ST_HOCKET | FB_SocketUdpCreate.hSocket | 已建立的Socket |
cbLen | UDINT | SIZEOF(Rdata) | 接收存储数据的大小 |
pDest | POINTER TO BYTE | ADR(Rdata) | 接收存储数据的地址 |
bExecute | BOOL | TRUE | 0→1时,接收数据 |
tTimeout | TIME | T#5S | 超时时间,默认5s |
输出参数
参数名 | 类型 | 意义 |
---|---|---|
bBusy | BOOL | 是否在执行中 |
bError | BOOL | 是否发送错误 |
nErrId | UDINT | 错误代码 |
sRemoteHost | STRING | 远程发送数据方的IP地址 |
nRemotePort | UDINT | 远程发送数据方的端口 |
nRecBytes | UDINT | 接收数据的大小 |
输入参数
参数名 | 类型 | 设定例 | 意义 |
---|---|---|---|
hSocket | ST_HOCKET | FB_SocketUdpCreate.hSocket | 已建立的Socket |
bExecute | BOOL | TRUE | 0→1时,关闭Socket |
tTimeout | TIME | T#5S | 超时时间,默认5s |
输出参数
参数名 | 类型 | 意义 |
---|---|---|
bBusy | BOOL | 是否在执行中 |
bError | BOOL | 是否发送错误 |
nErrId | UDINT | 错误代码 |