描述:
可以通过集成的PROFINET接口使用OPEN IE的通信方式进行数据交换,下列通信协议支持数据交换:
- TCP
- ISO-on-TCP
- UDP
通过工业以太网OPEN IE通信方式下的ISO-on-TCP 协议进行数据交换,需要使用下列程序块:
- FB65 "TCON" 用于建立连接
- FB66 "TDISCON" 用于断开连接
- FB63 "TSEND" 用于发送数据
- FB64 "TRCV" 用于接收数据
这些通信功能块可以在函数库 Standard Library -> Communication Blocks中找到. 用于建立ISO-on-TCP连接的参数存储于一个数据结构体中 .在这个例子中,数据结构 UDT65 "TCON_PAR"将被使用,用户将对这个数据结构进行参数化. ISO-on-TCP 通信连接不能在 NetPro中配置.
注意:
通过工业以太网OPEN IE通信方式得到详细信息可以参考手册"System software for S7-300/400 system and standard functions"
示例程序的描述
S7程序中包括FB65 "TCON的调用及带有ISO-on-TCP 连接参数的数据结构 UDT65 "TCON_PAR".S7程序中还包含函数库Standard Library -> Communication Blocks中函数FB63 "TSEND" 和 FB64 "TRCV" 的调用,通过调用FB63 "TSEND" 块,可以将数据发送给一个S7站,一个S5站,一个PC站或第三方系统.调用FB64 "TRCV" 块,可以接收一个S7站,一个S5站,一个PC站或第三方系统发送的数据.
首先在硬件配置中生成S7-300站,在这里将MB10作为脉冲时钟,通过脉冲时钟发送数据.存盘编译并将硬件配置下载到CPU中.
STEP 7 程序包含程序块OB100, OB1, FB400, DB400, FB420, UDT65 , FB63, FB64, FB65 及FB66.
OB100:
OB100 在CPU重新运行时执行一次(暖起动). 在这个OB块中第一次的通信通过M0.3 "START-UP"触发.
OB1:
OB1循环执行, FB400 (背景数据块: DB400)在OB1中调用,使用 M0.3 "START-UP" 对 INIT_COM 赋值,在OB1结束前将 M0.3 "START-UP" 复位.
FB400:
FB400在OB1中循环调用 . 在这个 FB中, 调用 FB420 "T_ISO-ON-TCP_IDB" , FB65 "TCON", FB63 "TSEND", FB64 "TRCV" 及FB66 "TDISCON".
ISO-on-TCP 连接本地和远程的参数通过FB420 "SET_ENDPOINT"设置,下列参数需要考虑:
- ID: 连接 ID
- DEV_ID
DEV_ID = B#16#0 用于 CP443-1 Adv
DEV_ID = B#16#1 用于 IM151-8 PN/DP CPU 或
DEV_ID = B#16#2 用于 CPU31x-2PN/DP,IM154-8 CPU 或
DEV_ID = B#16#3 用于CPU319-3PN/DP 或
DEV_ID = B#16#5 用于 CPU41x-3PN/DP - ACTIVE: 连接主动或被动建立
- TSAP: CPU本地TSAP 及远端通信方的TSAP
- IP_ADDR1 ... IP_ADDR4: 通信方的IP地址.
注意:
ISO-on-TCP 连接需要两个首字节 E0.02 用于本地CPU31x-2PN/DP 或CPU319-3PN/DP的TSAP (连接节点) ,CPU的机架和槽号在TSAP首字节中被定义为 "02" ,定义本地TSAP作为通信方的远程TSAP.在这个示例中下列TSAP被定义:
CPU中本地TSAP | 通信方中的远端 TSAP | |
ASCII | TCP-1 | TCP-1 |
十六进制 | E0.02.54.43.50.2D.31 | 54.43.50.2D.31 |
在接口参数中根据配置改变本地及远端的TSAP.
通过赋值FB65 "TCON"输入参数"REQ" 一个上升沿触发连接的建立.数据结构 UDT65 "TCON_PAR"中的连接参数包含在FB400的背景数据块中.在FB65 "TCON"的输入参数"CONNECT"定义了连接参数的数据区,连接在系统起动时建立并保持,通过FB66 "TDISCON"或CPU停止及断电可以断开通信连接.
通过赋值FB63 "TSEND"输入参数REQ的上升沿触发发送请求,发送请求通过脉冲时钟M10.6及变量"C1.SEND_BUSY"控制,如果发送请求正在运行,"C1.SEND_BUSY"被置位,新的发送不能执行.(参考图6).
在输入参数 "DATA"定义数据发送区. 在输入参数"LEN"中定义发送的字节数. 通过输出参数 "DONE", "ERROR" 及 "STATUS" 可以查询请求状态.
如果发送请求成功完成, "C1.SEND_BUSY" 被复位. 新的发送请求可以被再次触发.
如果发送请求完成但是有错误, "C1.SEND_BUSY" 同样被复位,FB63的输出参数 "STATUS"存储故障代码用于故障分析.
图. 06: 上升沿触发发送请求/复位 "C1.SEND_BUSY"
图. 07: FB63 "TSEND" 的输出参数 STATUS 存储发送状态
一旦 ISO-on-TCP连接建立即可接收数据. 在输入参数 "DATA"定义接收数据区的地址和长度用于存储接收数据.
输出参数 "NDR"用于显示接收新的数据. 输出参数 "LEN"指示接收数据的长度. 如果接收数据不成功,可以评估输出参数"STATUS"存储的状态字.
图. 09: FB64 "TRECV" 的输出参数 STATUS 存储发送状态
可以调用FB66 "TDISCON"断开 ISO-on-TCP 连接. 通过赋值FB66 "TDISCON"的输入参数"REQ"一个上升沿触发断开 ISO-on-TCP连接.