通过一个 S7-300 或者 S7-400 站,如何使用 UDP 协议经过本地 UDP 端点发送和接收数据到多个通信对象?

配置注释:
一个 S7-300站可使用 UDP 协议与多个通信对象收发数据。n

面向无连接的 UDP 协议的优势有:n

  • 非常快速的数据传输n
  • 非常灵活,可以与第三方的系统实现n
  • 可路由n
  • 可以实现组播和广播n
  • 适用于中小数据量的传输( <= 2048 字节 )

面向无连接的 UDP 协议的劣势有:n

  • 数据传输是包导向(非流导向)n
  • 发送和接收不需要通信对象应答,应答需要用户程序来实现n
  • 包丢失后不重发n
  • 独立的数据包可能多次发送n
  • 接收方不可以预知接收到的数据包的顺序n
  • 广播功能只能在发送方实现

条目号26484229 提供给您 UDP 协议属性和特殊功能的一些详细信息。n

在此例中,只在 S7-300 配置一个本地 UDP 站点。可以通过这个本地站点与远程的多个 UDP 站点发送和接收 UDP报文。n

通过一个 S7-300 或者 S7-400 站,如何使用 UDP 协议经过本地 UDP 端点发送和接收数据到多个通信对象?
图01:配置n

配置本地 UDP 站点:
按以下过程配置本地 UDP 站点。n

打开带有 S7-300 配置的 STEP 7 项目。在 NetPro 中为 S7-300 站配置一个未指定对象的 UDP 连接。n

通过一个 S7-300 或者 S7-400 站,如何使用 UDP 协议经过本地 UDP 端点发送和接收数据到多个通信对象?
图 02:配置未指定 UDP 连接n

在 UDP 连接属性的对话栏中您切换到“Addresses”分页栏。在这里您勾选上选项“Address assignment in block”。此时通信对象的参数 IP 地址和端口号不能填写。n

通过一个 S7-300 或者 S7-400 站,如何使用 UDP 协议经过本地 UDP 端点发送和接收数据到多个通信对象?
图 03: UDP 连接属性的对话栏->“Addresses”分页栏n

UDP 站点必须在发送站和接收站都配置。n

S7 程序:
通信对象的参数 IP 地址和端口号在用户程序中定义,例如,通信对象的参数在发送数据的前 6 个字节中定义。用户数据发送是用功能 FC5 “AG_SEND” 或者 FC50“AG_LSEND”。
这样,数据可以从本地 UDP 站点发向多个 UDP 站点(例如,多个通信对象)。既然配置了一个 UDP 站点,只有一个 IE CP 的连接被占用。因此,节省下的资源可以用于配置其他的通信连接。

IE CP 使用 CPU传送数据的前 6 个字节作为通信对象的 IP 地址和端口号。发送的数据不做正确与否的检查。

下图以(DB10)作为数据源解释要发送的用户数据结构。

通过一个 S7-300 或者 S7-400 站,如何使用 UDP 协议经过本地 UDP 端点发送和接收数据到多个通信对象?
图04:发送站点程序的数据结构

在本例中,数据发送到 IP 地址 140.80.0.3的 2001 端口

通信对象的 IP 地址 140.80.0.3 是 B 类地址,例如,前两个字节作为子网地址并且后两个字节作为计算机地址。

在本例中,IE CP 以 IP 地址 140.80.0.2 通过一个配置好的 UDP 连接发送 UDP 报文。如果用户程序传送目标 IP 地址 140.80.0.3 到 IE CP ,那么通信正常工作。

此外,在 S7 程序中您使用功能 FC6 “AG_RCV”或者 FC60“AG_LRCV”接收一个或者多个远程的 UDP 站点的报文。以下的条目包含了一个详细的用 FC5 “AG_SEND”和 FC6 “AG_RCV”或者 FC50“AG_LSEND” 和 FC60 “AG_LRCV” 样例程序:1785353218513371

FC6“AG_RCV”或者 FC60“AG_LRCV”只在用户程序中调用一次,即使 UDP 报文是从远程的多个 UDP 站点发送的。数据的发送地址 ( 源端口和源 IP )发送到接收站点接收数据的前 6 个字节。

用户数据接收到的结构如下:

通过一个 S7-300 或者 S7-400 站,如何使用 UDP 协议经过本地 UDP 端点发送和接收数据到多个通信对象?
图05:接收到的数据结构

原创文章,作者:ximenziask,如若转载,请注明出处:https://www.zhaoplc.com/plc334170.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2020年11月5日
下一篇 2021年4月12日

相关推荐

发表回复

登录后才能评论