新闻详情

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

发布时间: 2024-04-18
观看西门子S7-300 和S7-400 集成PN 口的S7 通信视频:

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-pn cpu 的 集成profinet 接口实现s7 通信,需要在硬件组态中建立连

接。

2. 硬件及网络组态

cpu 采用两个315-2pn/dp,使用以太网进行通信。在step7 中创建一个新项目,项目名称为pn s7。插入两个s7-300 站,在硬件组态中,分别插入cpu 315-2 pn/dp。如图3 所示。



新建以太网,打开“netpro”设置网络参数,选中cpu,在连接列表中建立新的连接。

如图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 所示:




同样,在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 所示。


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 所示:

同样,在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 所示

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 所示:

同样,在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 所示。

4. 常见问题

• 两个s7-300pn cpu 之间建立s7 连接可有哪些通信方式?

答:可以有确认连接、非确认连接、单边通信

• 使用fb8/9 时,数据已发送,程序块没有错误显示,但是没收到任何数据?

答:发送区与接收缓冲区长度不一致。

• 使用fb12/13 时,发送区与接收缓冲区长度是否必须一致?

答:发送区的大小只要不超过接收缓冲区就可以。

• fb12 发送数据时,发送数据的长度由哪个参数决定?

答:发送长度由 len 决定。但发送数据的起始地址和大长度由sd_1 决定。


展开全文

供应商
广东湘恒智能科技有限公司
联系电话
13510737515
手机号
13185520415
在线咨询QQ
1695606393
联系人
董海波
所在地
惠州大亚湾澳头石化大道中480号太东天地花园2栋二单元9层01号房(仅限办公)
我们的新闻
咨询 在线询价 拨打电话