• {{item.name}}
{{item.name}}
{{item2.name}}
更多
常问问题

如何编写通讯块 FB67“TUSEND”,FB68 “TURCV”,FB65“TCON”和 FB66“TDISCON”实现用 CPU 集成的工业以太网接口进行基于 UDP 协议的数据传输?

star star star star star
5.0 分
  • 通信(通讯)
  • ET 200S
文档编号:29738463| 文档类型:常问问题| 发布时间:2023年12月04日
  • 0
  • 297
  • 8982
内容预览: 描述 可以通过 CPU 集成的工业以太网接口使用PROFINET的开放式通信进行数据交换。下列协议支持开放式通信 : TCP SO-on-TCP UDP ......

描述
可以通过 CPU 集成的工业以太网接口使用PROFINET的开放式通信进行数据交换。下列协议支持开放式通信 :

  • TCP
  • ISO-on-TCP
  • UDP

下列通信块可以用于基于 UDP 协议的开放式通信:

  • FB65 "TCON" 用于建立 UDP 端点
  • FB66 "TDISCON" 用于断开 UDP 端点
  • FB67 "TUSEND" 用于发送数据
  • FB68 "TURCV" 用于接收数据

这些通信块可以在 Standard Library -> Communication Blocks 下找到。
从标准程序库中拷贝最新的上述功能块至用户程序中,然后在编程时调用。
用于连接 UDP 端点的参数保存在一个数据结构中。本例中,用到 "OUCW_2" 这个数据结构,它是由用户来完成参数化的。 这个结构存储在DB1数据块中并被用户参数化。

注意

  • 使用“开放式通讯向导”可以简单快速建立与 UDP 端点的连接。向导可以在条目号:98957840 中下载。
  • 这里的UDP连接在NetPro中建立。

表01展示了用于建立 UDP 端点的 "OUCW_2" 数据结构中的参数。

字节参数数据类型描述
0 到 1block_lengthWORD"OUCW_2" 数据结构的长度
2 到 3idBYTE用户程序和操作系统通讯层之间的连接标识号
数值范围: w#16#0001 到 w#16#0FFF
必须在相关块中指定参数 ID 的值。
4connection_typeBYTEUDP 协议数值: B#16#13
5active_estBOOL如何建立相应 ID 的连接
必须将FALSE赋值给参数
6local_device_idBYTE通过集成 CPU 的 PN 接口通信。  CPU 315-2 PN/DP: B#16#02
7local_tsap_id_lenBYTE local_tsap_id 参数长度: 2 字节
8rem_subnet_id_lenBYTE当前未使用,分配为 B#16#00.
9rem_staddr_lenBYTE当前未使用,分配为 B#16#00.
10rem_tsap_id_lenBYTE当前未使用,分配为 B#16#00.
11next_staddr_lenBYTE当前未使用,分配为 B#16#00.
12 到 27local_tsap_idARRAY
[1 ..16] of BYTE
本地端口号。例如: 2000local_tsap_id[1] = B#16#7 (以十六进制表示的端口号的高字节)local_tsap_id[2] = B#16#D0 以十六进制表示的端口号的低字节)local_tsap_id[3-16] = B#16#00
28 到 33rem_subnet_idARRAY
[1 ..6] of BYTE
当前未使用,分配为 B#16#00.
34 到 39rem_staddrARRAY
[1 ..6] of BYTE
当前未使用,分配为 B#16#00.
40 到 55rem_tsap_idARRAY
[1 ..16] of BYTE
当前未使用,分配为 B#16#00.
56 到 61next_staddrARRAY
[1 ..6] of BYTE
当前未使用,分配为 B#16#00.
62 到 63spareWORD 当前未使用,分配为 B#16#00.

表 01

例程描述
S7 程序中包括 FB65 "TCON" 的调用及带有 UDP 连接端点参数的数据结构 "OUCW_2"。S7 程序中也包含了来自于 Standard Library -> Communication Blocks 下的 FB67 "TUSEND"和 FB68 "TURCV" 的调用.  The FB67 "TUSEND" 用于发送数据到 S7 站, 以及到 PC 站或到第三方系统. FB68 "TURCV" 用于接收来自其他 S7 站、PC 站和第三方系统的数据。

首先为 S7-300 站创建硬件组态。注意配置 MB100 作为时钟存储器.发送请求由该时钟存储器触发。保存编译 S7-300 站的硬件组态,下载到 CPU。

STEP 7 程序包含程序块 OB100, OB1, FB1, DB11, DB1, DB100, DB200 及 FB63, FB64, FB67 和 FB68。

OB100
OB100 是重启 OB 块,当 CPU 重新启动时(暖启动)执行一次.在 OB100 中,第一次通信由 M0.3 触发。

OB1
OB1 循环调用。 FB1 在 OB1 中被调用 (背景数据块: DB11) , M0.3 作为 INIT_COM 参数, M10.0 作为 ABORT参数。 在OB1中,FB1调用后复位M0.3。

图. 01

FB1
FB1 在 OB1 中循环调用。下列功能块在FB1中调用。

  • FB65 "TCON"
  • FB67 "TUSEND"
  • FB68 "TURCV"
  • FB66 "TDISCON"

定义连接号
可以独立改变连接号。根据配置在FB1的 程序段2改变连接号。
连接号是在背景数据块 DB11中以静态变量保存。
例程中连接号定义为3。


图. 02


建立连接
UDP 端点的连接由 FB65 "TCON" 参数  "REQ" 的上升沿触发。本地 UDP 端点参数的数据结构 "OUCW_2" 包含在数据块 DB1中。 通过  FB65 "TCON" 的输入参数 "CONNECT" ,本地 UDP 端点参数的存储区被分配。
本地 UDP 端点连接由系统启动开始建立,一直保持到执行FB66 "TDISCON" 断开连接或 CPU 进入 STOP 模式、电源关闭。


图. 03

发送作业由 FB67 "TUSEND" 输入参数 "REQ" 的上升沿触发。发送请求由时钟脉冲 M100.6 和 变量 "SEND_BUSY" 控制。如果发送请求存在, "SEND_BUSY" 被置位。此时不能触发一个新的发送请求。
要发送数据区域填写在输入参数 "DATA"。
要发送数据字节数填写在输入参数 "LEN"。
例子中发送数据保存在 DB100 。 100 字节的数据发送到通讯伙伴。
在输入参数 "ADDR" 填写接收数据端的 IP 地址的存储区。例程中,通讯伙伴的地址参数存储在数据块 DB1 的数据结构 "OUCW_3" 。
输出参数"DONE"、 "ERROR" 和 "STATUS" 用于作业执行评估。


图. 04

表 02 展示了存储伙伴通讯地址的数据结构 "OUCW_3" 。

字节参数数据类型描述
0 to 3rem_ip_addrARRAY
[1 .. 4] of BYTE
远端伙伴的IP地址,例如 192.168.0.30
rem_ip_addr[1] = B#16#C0
rem_ip_addr[2] = B#16#A8
rem_ip_addr[3] = B#16#00
rem_ip_addr[4] = B#16#1E
4 to 5rem_port_nrARRAY
[1 .. 2] of BYTE
远程伙伴的端口号,例如:2000
local_tsap_id[1] = B#16#7 (以十六进制表示的端口号的高字节)
local_tsap_id[2] = B#16#D0 以十六进制表示的端口号的低字节)
6 bis 7spareARRAY
[1 .. 2] of BYTE
保留,参数值为 W#16#0000.

表 02

如发送请求顺利完成,"SEND_BUSY" 被复位。一个新的任务可以被触发 。
如发送请求出现错误,"SEND_BUSY" 也被复位,同时可对FB67 的输出参数"STATUS" 进行错误分析。


图. 05



图. 06

UDP端点连接好后就可以收到数据。
通过输入参数"DATA",可以指定接收数据区地址和长度。
例子中100 字节的接收数据存储到 DB200。
在输入参数 "ADDR" 填写接收数据端的 IP 地址的存储区。例程中,通讯伙伴的地址参数存储在数据块 DB1 的数据结构 "OUCW_3" 。 表02展示了 "OUCW_3" 数据结构。


图. 07


输出参数 "NDR" 用于表示已接收到新数据。输出参数 RCVD_LEN  表明接收数据的长度。
如果接收数据成功,输出参数“RCVD_LEN”的值被存储。


图. 08

如果接收数据不成功,输出参数 “STATUS”的值被储存和评价。


图. 09

可以调用 FB66 “TDISCON”断开 UDP 本地端点的连接。通过在 FB66 “TDISCON” 的输入参数 “REQ” 上升沿触发断开本地端点连接。


图. 10


下载 STEP 7 项目:
STEP 7 项目包含一个例程,它调用 FB1 以及功能块FB65 "TCON", FB66 "TDISCON", FB67 "TUSEND" 、 FB68 "TURCV" 状态评估。 使用 STEP 7 V5.5 SP3 创建。

  sample_open_udp.zip (294,6 KB)

配置额外UDP 连接:
要配置额外的UDP 端点,可以复制FB1为其他功能块(例如FB101)。改变参数并生成新的背景数据块 。使用开放式通讯向导可以创建一个存储新UDP端点参数的数据结构。  

补充信息:

  • 关于基于工业以太网的开放式通信的详细内容请参见条目:44240604 中的名为 "System and Standard Functions for S7-300/400 Volume 1 and Volume 2"  的手册。
  • 经S7-300 和 S7-400 工业以太网CP模块通信组态UDP连接的说明请参见条目:47885893



您可以前往全球资源库查看此文档:

http://support.automation.siemens.com/CN/view/zh/29738463



剩余80%未阅读,请登录后下载/查看文档

  • 评论
更多
  • 分享

    扫码分享

提示
您即将前往“全球技术资源库”。
“全球技术资源库”的用户名与本地支持中心(下载中心、技术论坛、找答案、1847工业学习平台)的用户名不通用。如果需要在全球技术资源库下载文档,您需要重新登录或注册。
确定

扫码进入移动端

信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。