衢州西门子模块代理商
描述
可以通过 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 | connection_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 | next_staddr_len | BYTE | 当前未使用,分配为 B#16#00. |
12 到 27 | local_tsap_id | ARRAY [1 ..16] of BYTE | 本地端口号。 例如: 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 | next_staddr | ARRAY [1 ..6] of BYTE | 当前未使用,分配为 B#16#00. |
62 到 63 | spare | WORD | 当前未使用,分配为 B#16#00. |
表 01
例程描述西门子A5E00110981
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