PROFINET接口实现开放的ISOonTCp通信

描述

西门子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:标准结构

Profinet

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"

Profinet

 

REQ 上升沿触发建立通信连接
ID 连接的ID 在UDT里设置
CONNECT 与变量类型为UDT65的变量相连
DONE 为1时,连接正确建立
BUSY 为1时,正在建立连接
ERROR 为1时,有故障发生
STATUS 故障代码

 

Profinet

UDT65的整体结构:

Profinet

发送数据:FB63 "TSEND"通过现有的通信连接发送数据

FB 63 "TSEND"异步工作;换句话说,它的处理需要多个FB调用。要启动发送数据,请使用REQ = 1调用FB 63。

Profinet

LEN:接收数据的长度

DATA:数据发送的区域

Profinet

Profinet

接收数据: FB 64 "TRCV"通过现有通信连接接收数据。

它指的是功能块输入所接收数据的区域。

接收区由下列两个变量指定:

1.指向区域起始地址的指针

2.区域长度

区域长度由LEN参数使用的协议类型指定(如果LEN <> 0)或DATA参数长度信息指定(如果LEN = 0)。

Profinet

LEN:接收数据的长度

DATA:数据接收的区域

Profinet

Profinet

断开网络连接FB66

FB 66 "TDISCON"是一种以异步方式工作的FB,这意味着它的作业处理要覆盖若干个FB调用。为了开始终止连接作业,用REQ = 1调用FB 66。

在成功调用FB 66 "TDISCON"之后,为FB 65"TCON"指定的ID不再有效,从而不能将其用于发送或接收。

Profinet

Profinet

------------------------END-------------------

审核编辑 :李倩

 

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分