西门子6ES79715BB000AA0

line;"="">
line;background-color:#FFFFFF;">

S7-300和S7-400集成PN口的S7通信

line;background-color:#FFFFFF;"> 文档: 西门子工程师本文档!
line;background-color:#FFFFFF;">
  • 文献
  •  
  • 涉及产品

1. S7通信简介
S7通信是S7系列PLC基于MPI、PROFIBUS、ETHERNET网络的一种优化的通信协议,主要用于S7300/400PLC之间的通信。SIMATIC S7- PN CPU包含一个集成的 PROFINET 接口,该接口除了具有 PROFINET I/O功能,还可以进行基于以太网的S7通信。SIMATIC S7- PN CPU支持无确认数据交换、确认数据交换和单边访问功能。功能块的调用如图1、图2所示。


S7-400

S7-300
描述 简要描述
SFB 8 FB 8 用于发送 无确认的快速数据交换,发送数据后无对方接收确认。
SFB 9 FB 9 用于接收
SFB 12 FB 12 用于发送 确认数据交换,发送数据后有对方接收确认。
SFB 13 FB 13 用于接收
SFB 14 FB 14 读数据 单边编程读访问。
SFB 15 FB 15 写数据 单边编程写访问。

表1

 


图1

 


图2

要通过 S7-PN CPU 的 集成PROFINET 接口实现S7 通信,需要在硬件组态中建立连接。


2. 硬件及网络组态
CPU采用两个315-2PN/DP,使用以太网进行通信。
在STEP7中创建一个新项目,项目名称为PN S7。插入两个S7-300站,在硬件组态中,分别插入CPU 315-2 PN/DP。如图3所示。


图3

新建以太网,打开“NetPro”设置网络参数,选中CPU,在连接列表中建立新的连接。如图4所示。


图4

然后双击该连接,设置连接属性。在“General”属性中块参数ID = 1,这个参数即是下面程序中的参数“ID”。在SIMATIC 315PN-1中激活“Establish an active connection”,作为Client端,SIMATIC 315PN-2作为Server 端。


3. 软件编程

3.1. 无确认数据交换
SFB/FB 8 "USEND" 向类型为“URCV”的远程伙伴SFB/FB发送数据。执行发送过程而不需要和SFB/FB伙伴进行协调。也就是说,在进行数据传送时不需要伙伴SFB/FB进行确认。
S7-300:在REQ的上升沿处发送数据。在REQ的每个上升沿处传送参数R_ID、
ID和SD_1。在每个作业结束之后,可以给R_ID、ID和SD_1参数分配新数值。
S7-400:在控制输入REQ的上升沿处发送数据。通过参数SD_1到SD_4来指向要
发送的数据,但并非都需要用到所有四个发送参数。
然而,必须确保参数SD_1到SD_4/SD_1和RD_1到RD_4/RD_1 (在相应通讯伙
伴SFB/FB "URCV" 上)所定义的区域在以下几个方面保持一致:
• ®编号
• ®长度
• ®数据类型
参数R_ID必须在两个SFB中完全相同。如果传送完成,则通过状态参数DONE来表示,此时其逻辑数值为1。
SFB/FB 9 "URCV" 从类型为“USEND”的远程伙伴SFB/FB中异步接收数据,并
把接收到的数据复制到组态的接收区域内。
当程序块准备好接收数据时,EN_R输入处的逻辑值为1。可以通过EN_R=0来取
消一个已激活的作业。
S7-300:在EN_R的每个上升沿处应用参数R_ID、ID和RD_1。在每个作业结束
之后,可以给R_ID、ID和RD_1参数分配新数值。
S7-400:通过参数RD_1到RD_4来指向接收数据区。
必须确保参数RD_i/RD_1和SD_i/SD_1 (在相应通讯伙伴SFB/FB "USEND"
上)所定义的区域在以下几个方面保持一致:
® 编号
• ®长度
• ®数据类型。
通过NDR状态参数逻辑数值为1来指示已经完成复制处理过程。参数R_ID必须在两个SFB/FB上完全相同。
打开SIMATIC 315PN-1的OB1,在OB1中依次调用FB8,FB9如图5、图6所示:


图5

 

程序中的参数说明见表2

参数 描述 数据类型 存储区 描述
REQ INPUT BOOL  I、Q、M、D、L 上升沿触发工作
ID INPUT WORD M、D、常数 连接ID
R_ID INPUT  DWORD I、Q、M、D、L、常数 连接号,相同连接号的功能块互相对应发送/接收数据
DONE OUTPUT BOOL  I、Q、M、D、L 为1时,发送完成
ERROR OUTPUT BOOL I、Q、M、D、L 为1时,有故障发生
STATUS OUTPUT WORD I、Q、M、D、L 状态代码
S7-300:
SD_1
S7-400:
SD_i
(1 ≤ i ≤ 4)
 IN_OUT ANY M、D、T、Z I、Q、M、D、T、C 发送数据区

 表2 FB8参数说明

 


图6

 

程序中的参数说明见表3

参数 参数 数据类型 存储区 描述
EN_R INPUT BOOL I、Q、M、D、L、常数 为1时,准备接收
ID INPUT WORD M、D、常数 连接ID
R_ID INPUT DWORD  I、Q、M、D、L、常数 连接号,相同连接号的功能块互相对应发送/接收数据
NDR OUTPUT BOOL  I、Q、M、D、L 为1时,接收完成
ERROR OUTPUT BOOL I、Q、M、D、L 为1时,有故障发生
STATUS OUTPUT WORD I、Q、M、D、L 状态代码
S7-300:
RD_1
S7-400:
RD_i
(1 ≤ i ≤ 4)
IN_OUT ANY M、D、T、Z I、Q、M、D、T、Z 接收数据区

 表3 FB9参数说明


同样,在SIMATIC 315PN-2的OB1中,调用FB8/FB9。通信双方的“R_ID”均设为0。将SIMATIC 315PN-1的MB100-MB109赋值B#16#02,在SIMATIC 315PN-2中,将FB9的“EN_R”置1,然后在SIMATIC 315PN-1中,将FB8中“REQ”设置上升沿信号,此时SIMATIC 315PN-2的MB110-MB119接收到B#16#02。如图7所示。


图7

同理,将SIMATIC 315PN-2 的MB100-MB109赋值为B#16#03,SIMATIC 315PN-1的MB110-MB119接收到B#16#03。如图8所示。


图8

3.2. 确认数据交换
SFB/FB 12 "BSEND" 向类型为“BRCV”的远程伙伴SFB/FB发送数据。通过这种
类型的数据传送,更多的数据可以在通讯伙伴之间传输,过任何其它用于组态的
S7连接的通讯SFB/FB所能传输的数据量,通过集成PN口的S7-400和S7-300是65534字节。
要发送的数据区是分段的。各个分段单独发送给通讯伙伴。通讯伙伴在接收到后
一个分段时对此分段进行确认,该过程与相应SFB/FB "BRCV" 的调用无关。在调用块之后,当在控制输入REQ上有上升沿时,发送作业被激活。发送用户存储区中的数据与处理用户程序是异步执行的。
由SD_1起始地址和要发送数据的大长度。可以通过LEN来确定数据域的作业长度。在这种情况下,LEN替换SD_1的长度区域。参数R_ID必须在相应的两个SFB/FB上完全相同。如果在控制输入R处有上升沿,则当前数据传送将被取消。如果传送完成,则通过将状态参数DONE的数值设置为1来进行指示。如果状态参数DONE或ERROR的数值为1,则在前一个发送处理结束之前,不能处理新的发送作业。
SFB/FB 13 "BRCV" 接收来自类型为“BSEND”的远程伙伴SFB/FB的数据。在收
到每个数据段后,向伙伴SFB/FB发送一个确认帧,同时更新LEN参数。在块调用完毕,并且在控制输入EN_R数值为1之后,块准备接收数据。可以通过EN_R=0来取消一个已激活的作业。
由RD_1起始地址和接收区的大长度。由LEN指示已接收数据域的长度。
从用户存储区中接收数据与处理用户程序是异步执行的。参数R_ID必须在相应的两个SFB/FB上完全相同。通过状态参数NDR的数值为1来指示所有数据段的无错接收。接收到的数据保持不变,直到通过EN_R=1来重新调用SFB/FB 13为止。如果在数据的异步接收期间调用块,则将引发一个警告,该警告通过STATUS参数输出;如果当控制输入EN_R数值为0时进行调用,则接收将被终止,并且SFB/FB将返回到它的初始状态。
打开SIMATIC 315PN-1的OB1,在OB1中依次调用FB12,FB13如图9、图10所示:


图9

 

程序中的参数说明见表4

参数 描述 数据类型 存储区 描述
REQ INPUT BOOL  I、Q、M、D、L 上升沿触发工作
R INPUT BOOL I、Q、M、D、L、常数 复位,终止数据交换
ID INPUT WORD M、D、常数 连接ID
R_ID INPUT DWORD I、Q、M、D、L、常数 连接号,相同连接号的功能块互相对应发送/接收数据
DONE OUTPUT BOOL I、Q、M、D、L 为1时,发送完成
ERROR OUTPUT BOOL I、Q、M、D、L 为1时,有故障发生
STATUS OUTPUT WORD I、Q、M、D、L 状态代码
SD_1 IN_OUT ANY S7-300:M、DS7-400:I、Q、M、D、T、Z 发送数据区
LEN  IN_OUT WORD I、Q、M、D、L 发送数据的长度

表4 FB12参数说明

 


图10

 

程序中的参数说明见表5

参数 描述 数据类型 存储区 描述
EN_R  INPUT BOOL I、Q、M、D、L、常数 为1时,准备接收
ID INPUT  WORD M、D、常数 连接ID
R_ID INPUT DWORD I、Q、M、D、L、常数  连接号,相同连接号的功能块互相对应发送/接收数据
NDR OUTPUT  BOOL I、Q、M、D、L 为1时,接收完成
ERROR OUTPUT BOOL I、Q、M、D、L 为1时,有故障发生
STATUS OUTPUT WORD  I、Q、M、D、L 状态代码
RD_1 IN_OUT ANY S7-300:M、DS7-400:I、 Q、M、D、T、C 接收数据区
LEN  IN_OUT WORD  I、Q、M、D、L 接收到的数据长度

表5 FB13参数说明

同样,在SIMATIC 315PN-2的OB1中,调用FB12/FB13。通信双方的R_ID设为0,LEN设为10,将SIMATIC 315PN-1的MB120-MB129赋值B#16#04,在SIMATIC 315PN-2中,将FB13的“EN_R”置1,然后在SIMATIC 315PN-1中,将FB12中“REQ”设置上升沿信号,此时SIMATIC 315PN-2的MB130-MB139接收到B#16#04。如图11所示。


图11

同理,将SIMATIC 315PN-2 的MB120-MB129赋值为B#16#05,SIMATIC 315PN-1的MB130-MB139接收到B#16#05。如图12所示。


图12


3.3. 单边访问
可以通过SFB/FB 14 "GET",从远程CPU中读取数据。
S7-300:在REQ的上升沿处读取数据。在REQ的每个上升沿处传送参数ID、ADDR_1和RD_1。在每个作业结束之后,可以分配新数值给ID、ADDR_1和RD_1参数。
S7-400:在控制输入REQ的上升沿处启动SFB。在此过程中,将要读取的区域的相关指针(ADDR_i)发送到伙伴CPU。远程伙伴返回此数据。在下一个SFB/FB调用处,已接收的数据被复制到组态的接收区(RD_i)中。必须要参数ADDR_i和RD_i定义的区域在长度和数据类型方面要相互匹配。
通过状态参数NDR数值为1来指示此作业已完成。只有在前一个作业已经完成之后,才能重新激活读作业。远程CPU可以处于RUN或STOP工作状态。如果正在读取数据时发生访问故障,或如果数据类型检查过程中出错,则出错和警告信息将通过ERROR和STATUS输出表示。
通过使用SFB/FB 15 "PUT",可以将数据写入到远程CPU。
S7-300:在REQ的上升沿处发送数据。在REQ的每个上升沿处传送参数ID、ADDR_1和SD_1。在每个作业结束之后,可以给ID、ADDR_1和SD_1参数分配新数值。
S7-400:在控制输入REQ的上升沿处启动SFB。在此过程中,将指向要写入数据的区域(ADDR_i)的指针和数据(SD_i)发送到伙伴CPU。 远程伙伴将所需要的数据保存在随数据一起提供的地址下面,并返回一个执行确认。必须要参数ADDR_i和SD_i定义的区域在编号、长度和数据类型方面相互匹配。
如果没有产生任何错误,则在下一个SFB/FB调用时,通过状态参数DONE来指示,其数值为1。只有在后一个作业完成之后,才能再次激活写作业。远程CPU可以处于RUN或STOP模式。如果正在写入数据时发生访问故障,或如果执行检查过程中出错,则出错和警告信息将通过ERROR和STATUS输出表示。
打开SIMATIC 315PN-1的OB1,在OB1中依次调用FB14,FB15如图13、图14所示:


图13

 

参数 描述 数据类型 存储区 描述
REQ  INPUT BOOL I、Q、M、D、L 上升沿触发调用功能块
ID  INPUT  WORD M、D、常数 地址参数ID
ERROR OUTPUT BOOL  I、Q、M、D、L 接收到新数据
STATUS OUTPUT WORD I、Q、M、D、L 故障代码
S7-300:
ADDR_1
S7-400:
ADDR_i
(1 ≤ i ≤ 4)
IN_OUT ANY M、D 
I、Q、M、D、
T、C
从通信对方的数据地址中读取数据
S7-300:
RD_1
S7-400:
RD_i
(1 ≤ i ≤ 4)
IN_OUT ANY S7-300:M、D
S7-400 I、Q、
M、D、T、C
本站接收数据地址

表6 FB14参数说明

 


图14

 

参数 描述 数据类型 存储区 描述
REQ  INPUT BOOL  I、Q、M、D、L 上升沿触发调用功能块
ID INPUT WORD M、D、常数 地址参数
DONE OUTPUT BOOL  I、Q、M、D、L 为1时,发送完成
ERROR OUTPUT BOOL I、Q、M、D、L 为1时,有故障发生
STATUS OUTPUT WORD I、Q、M、D、L 故障代码
S7-300:
ADDR_1
S7-400:
ADDR_i
(1 ≤ i ≤ 4)
IN_OUT ANY M、D
I、Q、M、D、
T、C
通信对方的数据接收地址
S7-300:
SD_1
S7-400:
SD_i
(1 ≤ i ≤ 4)
IN_OUT ANY S7-300:M、D
S7-400 I、Q、
M、D、T、C
本站发送数据地址

表7 FB15参数说明

 

同样,在SIMATIC 315PN-2的OB1中,调用FB14/FB15。将SIMATIC 315PN-2的MB140-MB149赋值B#16#06,在SIMATIC 315PN-1中,将FB14的“REQ”置上升沿信号,此时SIMATIC 315PN-1的MB150-MB159接收到B#16#06。如图15所示。


图15

将SIMATIC 315PN-1的MB140-MB149赋值B#16#08,在SIMATIC 315PN-2中,将FB14的“REQ”置上升沿信号,此时SIMATIC 315PN-2的MB150-MB159接收到B#16#08。如图16所示。


图16

将SIMATIC 315PN-1的MB170-MB179赋值B#16#07,将FB15的“REQ”置上升沿信号,此时SIMATIC 315PN-2的MB160-MB169接收到B#16#07。如图17所示。


图17

将SIMATIC 315PN-2的MB170-MB179赋值B#16#11,将FB15的“REQ”置上升沿信号,此时SIMATIC 315PN-1的MB160-MB169接收到B#16#11。如图18所示。


图18


4. 常见问题
• ®两个S7-300PN CPU之间建立S7连接可有哪些通信方式?

答:可以有确认连接、非确认连接、单边通信
• ®使用FB8/9时,数据已发送,程序块没有错误显示,但是没收到任何数据?
答:发送区与接收缓冲区长度不一致。
• ®使用FB12/13时,发送区与接收缓冲区长度是否必须一致?
答:发送区的大小只要不过接收缓冲区就可以。
• ®FB12发送数据时,发送数据的长度由哪个参数决定?
答:发送长度由LEN决定。但发送数据的起始地址和大长度由SD_1决定。


点击阅读全文 >>