西门子S7PCPU包含一个集成的PROFINET接口,该接口除了具有PROFINETI/O功能外还具有ISOonTCP通讯功能。通过该集成以太网接口组态ISOonTCP通讯时,只能使用开放式通讯专用的功能块。依据RFC1006的ISOonTCP协议,使用STEP7“通讯块”的“标准库”中提供了下列FB,用于通过用户程序与符合以太网标准的通讯伙伴进行数据交换:
1.用于分配连接参数的UDT65 “TCON_PAR”
2.用于建立连接的FB65“TCON”
3.用于终止连接的FB66 “TDISCON”
4.用于发送数据的FB63 “TSEND”
5.用于接收数据FB64 “TRCV”
要通过S7-PN CPU的集成PROFINET接口实现开放的ISOonTCp通信,不能再硬件组态中完成,必须在一个数据块中指定每个连接的参数。使用“Open Communication Wizard”工具可以简单明了地指定连接参数,接着该工具可将一个包含所有参数的UDT导出到您的STEP项目。使用该UDT可以建立含有连接描述的数据块。随后,需要使用通信功能块FB65,FB66,FB63,FB64完成程序编写。
UDT65:标准结构
block_length: WORD W#16#40 UDT 65的长度:64字节(固定)
ID: WORD W#16#0001 对连接的引用,您必须在各个带有标识号的块中指定参数的值。
connection_type:BYTE B#16#11 协议类型:B#16#11:TCP
active_est: BOOL FALSE 建立连接的方式的标识号:FALSE:被动建立
local_device_id: BYTE B#16#02
1).B#16#02:通过集成IE接口与CPU 315-2 PN/DP和317-2 PN/DP进行通信.
2). B#16#03:通过集成IE接口与CPU 315T-3 PN/DP、317T-3 PN/DP和319-3 PN/DP进行通信.
local_tsap_id_len: BYTE B#16#02 所使用的参数local_tsap_id的长度.
rem_subnet_id_len: BYTE B#16#00 该参数当前未使用。必须将B#16#00分配给它.
rem_staddr_len: BYTE B#16#00 远程连接终端的地址长度:0: 未指定,即参数rem_staddr不相关.4: 参数rem_staddr中有效的IP地址.
rem_tsap_id_len: BYTE B#16#00 所使用的rem_tsap_id参数的长度;
next_staddr_len: BYTE B#16#00 使用了参数next_staddr的长度
local_tsap_id: BYTE的ARRAY [1..16] 本地端口号B#16#7 /B#16#D0 ( 2000=7D0)
rem_subnet_id: BYTE的ARRAY [1..6] B#16#00 ... 该参数当前未使用。
rem_staddr: BYTE的ARRAY [1..6] B#16#00 ... 远程连接端点的IP地址,192.168.002.003:
rem_tsap_id: BYTE的ARRAY [1..16] B#16#00 ... 本地端口号可能的数
next_staddr: BYTE的ARRAY [1..6] B#16#00 ... 相应(本地) CP的机架和插槽
spare: WORD W#16#0000 保留:分配0给该参数。
数据连接:FB65
两个通信伙伴都调用FB 65 "TCON"来设置和建立通信连接。在这些参数中,您要指定哪个伙伴是主动通信传输点、哪个伙伴是被动通信传输点。
设置并建立连接后,CPU会自动对连接进行维护和监视。
如果连接中断,如由于线路中断或远程通信伙伴而造成的中断,主动伙伴会尝试重新建立已组态的连接。在这种情况下,不必再次调用FB 65 "TCON"。
当调用FB 66 "TDISCON"或CPU进入STOP模式时,现有连接将被终止并删除已组态的连接。要重新设置并再次建立该连接,必须再次调用FB 65 "TCON"
REQ | 上升沿触发建立通信连接 |
ID | 连接的ID 在UDT里设置 |
CONNECT | 与变量类型为UDT65的变量相连 |
DONE | 为1时,连接正确建立 |
BUSY | 为1时,正在建立连接 |
ERROR | 为1时,有故障发生 |
STATUS | 故障代码 |
UDT65的整体结构:
发送数据:FB63 "TSEND"通过现有的通信连接发送数据
FB 63 "TSEND"异步工作;换句话说,它的处理需要多个FB调用。要启动发送数据,请使用REQ = 1调用FB 63。
LEN:接收数据的长度
DATA:数据发送的区域
接收数据: FB 64 "TRCV"通过现有通信连接接收数据。
它指的是功能块输入所接收数据的区域。
接收区由下列两个变量指定:
1.指向区域起始地址的指针
2.区域长度
区域长度由LEN参数使用的协议类型指定(如果LEN <>>
LEN:接收数据的长度
DATA:数据接收的区域
断开网络连接FB66
FB 66 "TDISCON"是一种以异步方式工作的FB,这意味着它的作业处理要覆盖若干个FB调用。为了开始终止连接作业,用REQ = 1调用FB 66。
在成功调用FB 66 "TDISCON"之后,为FB 65"TCON"指定的ID不再有效,从而不能将其用于发送或接收。