描述
可以通过 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到 1 | block_length | WORD | "OUCW_2" 数据结构的长度 |
2到 3 | id | BYTE | 用户程序和操作系统通讯层之间的连接标识号 数值范围: w#16#0001到 w#16#0FFF 必须在相关块中指定参数 ID 的值。 |
4 | coection_type | BYTE | UDP 协议数值: B#16#13 |
5 | active_est | BOOL | 如何建立相应 ID 的连接 必须将FALSE赋值给参数 |
6 | local_device_id | BYTE | 通过集成 CPU 的 PN 接口通信。 CPU 315-2 PN/DP: B#16#02 |
7 | local_tsap_id_len | BYTE | local_tsap_id 参数长度: 2 字节 |
8 | rem_subnet_id_len | BYTE | 当前未使用,分配为 B#16#00. |
9 | rem_staddr_len | BYTE | 当前未使用,分配为 B#16#00. |
10 | rem_tsap_id_len | BYTE | 当前未使用,分配为 B#16#00. |
11 | ext_staddr_len | BYTE | 当前未使用,分配为 B#16#00. |
12到 27 | local_tsap_id | ARRAY [1 ..16] of BYTE |
t本地端口号。 例如: 2000 |
28到 33 | rem_subnet_id | ARRAY [1 ..6] of BYTE |
当前未使用,分配为 B#16#00. |
34到 39 | rem_staddr | ARRAY [1 ..6] of BYTE |
当前未使用,分配为 B#16#00. |
40到 55 | rem_tsap_id | ARRAY [1 ..16] of BYTE |
当前未使用,分配为 B#16#00. |
56到 61 | ext_staddr | ARRAY [1 ..6] of BYTE |
当前未使用,分配为 B#16#00. |
62到 63 | spare | WORD | 当前未使用,分配为 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 3 | rem_ip_addr | ARRAY [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 5 | rem_port_nr | ARRAY [1 .. 2] of BYTE |
远程伙伴的端口号,例如:2000 local_tsap_id[1] = B#16#7 (以十六进制表示的端口号的高字节) local_tsap_id[2] = B#16#D0 以十六进制表示的端口号的低字节) |
6 bis 7 | spare | ARRAY [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。
原创文章,作者:ximenziask,如若转载,请注明出处:https://www.zhaoplc.com/plc324342.html