说明:
为了实现在 NetPro 中建立了 S7 连接的两个 S7 -300 站之间的数据交换,必须在程序中调用通信功能块。 FB14 (“GET”) 用于从远程 CPU 读取数据,FB15 (“PUT”) 用于向远程 CPU 写入数据。
在这里,不需在两边都组态 S7 连接,这是因为通过 FB14 “GET”和 FB15 “PUT”的S7 通信是基于服务器-客户端原则的。n
通信块 FB14 (“GET”) 和d FB15 (“PUT”) 的特点
- FB14和 FB15是异步通信函数。n
- 在本例中,在 OB1 循环中调用这些块(参见条目号:2795485)n
- FB14和 FB15功能块运行几个 OB1 循环时间。n
- FB14和 FB15使用输入参数“REQ” 激活。n
- 任务结束的标志位为“DONE”, "NDR"或者“ERROR”。n
- PUT 和 GET可以通过同一个连接同时通信。n
- 经由 CP343-1 or CP342-5 通讯的,最新版本的 FB14和 FB15功能块在 SIMATIC_NET_CP 库中 "CP 300 > Blocks" 下找到。n
- "CPU_300" 家族中经由集成 PROFINET 接口的 S7-300 CPU, IM151-8 PN/DP CPU 或者 IM154-8 CPU,最新版本的 FB14和 FB15功能块在标准功能库中 "CP 300 > Blocks" 下找到。
示例程序的说明
STEP 7项目包含从标准库中的通讯功能块 FB14 "GET"和 FB15 "PUT" 的调用。通信基础是两站之间建立的 S7 连接。FB14"GET"从远程CPU读取数据,使用 FB15 "PUT" 向远程CPU写入数据。
示例程序展示如何在建立 S7 连接后如何使用 FB14 "GET"和 FB15 "PUT"。
首先创建 S7-300 站的硬件配置。
注意:
配置 MB10 为时钟存储器,读、写任务由这个时钟触发。保存并编译硬件配置并下载到 S7-300 中。
定时器 T10 用于此例中。
在 NetPro 界面中配置 S7 连接。如果通讯双方在同一个STEP 7 项目中,那么就能配置指定的 S7 连接。如果 S7-300 站通讯双方不在同一个STEP 7 项目中,那么配置成非指定的S7 连接。确定在配置 S7 连接时指定了正确的 IP 地址或者 PROFIBUS 站地址。还需要确定指派的槽架号和链接资源的正确性。这样能明确的识别出通讯双方的 S7 连接。n
在通讯块FB14 "GET"和 FB15 "PUT" 的输入参数 "ID" 中必须明确的赋值,此值既是 S7 连接属性对话框中的 -> "General"。n
图01n
STEP 7 程序中包含 OB100,OB1,FB100,DB100,DB200,DB201, FB14和 FB15。n
OB100
OB100是一个启动OB,当CPU重启时运行。在这个OB中,用于触发第一次通信的使能信号是 M0.3。n
OB1
OB1被循环地调用。FB115 在这个 OB 中被调用(背景数据块:DB15),使能信号是 M0.3。一旦 FB100运行,M1=0.3 被复位。n
图. 02n
FB115
FB115 在 OB1循环中被调用。这个 FB包含调用 FB14 (“GET”)和 FB15 (“PUT”)。n
通讯块输入参数 "ID" 必须指定为在 NetPro 中 S7 连接的连接号,即输入参数 "ID"的值取自于S7 连接的属性对话框(见图 01)。
在 FB115 中可以分别改变连接号。在 FB115 的 Network 1 中根据网络配置来改变连接号。连接号保存于静态标签中,即存储于背景数据块 DB115中。
连接号 "1" 如本例中的定义。n
图. 03n
当 M10.6 出现上升沿并且程序块不忙时,FB14 由输入参数 "REQ" 激活。只有当读取任务成功或者出错完成时,输入参数 "REQ" 复位。这意味着新的读取任务只有当任务完成时才能再次触发。
这个锁定功能是非常重要的。因为该函数的运行是异步的并且持续好几个循环。持续激活该函数块而不等待当前作业结束,将导致通信过载。n
参数“ADDR_1”指向远程 CPU 中要写入的或者将读取的数据区域。例如:P#DB201.DBX0.0 BYTE 200。参数“RD_1”包含待读取数据的地址,例如:P#DB200.DBX0.0 BYTE 100。需要输出参数“DONE”、“ERROR”和“ STATUS”用于评估任务,并且仅仅在同一个循环中有效。n
图. 04
如果块运行出现错误,输出参数 "STATUS" 保存块的状态字,用于错误分析。
图. 05
当 M10.6 出现上升沿并且程序块不忙时,FB15 由输入参数 "REQ" 激活。只有当发送任务成功或者出错完成时,输入参数 "REQ" 复位。这意味着新的发送任务只有当任务完成时才能再次触发。
这个锁定功能是非常重要的。因为该函数的运行是异步的并且持续好几个循环。持续激活该函数块而不等待当前作业结束,将导致通信过载。
参数“ADDR_1”指向远程 CPU 中要写入的或者将读取的数据区域。例如:P#DB200.DBX0.0 BYTE 20。参数“SD_1”包含待发送数据的地址,例如: P#DB201.DBX0.0 BYTE 20。需要输出参数“DONE”、“ERROR”和“ STATUS”用于评估任务,并且仅仅在同一个循环中有效。
图. 06
如果块运行出现错误,输出参数 "STATUS" 保存块的状态字,用于错误分析。
图. 07
注:
- 手册“System and Standard Functions for S7-300/400 Volume 1/2",第22章“S7 Communication”中提供了更多信息,例如:关于通过通信块 FB14 “GET”和 FB15 “PUT” 传送数据量的信息。此手册下载条目号: 44240604。
- 条目号 17628518 包含怎样配置指定与非指定的 S7 连接的内容。
用于下载的STEP 7项目:
这个 STEP 7 项目包含一个示例程序,用于调用 FB14和 FB15,具有状态评估。示例程序使用STEP 7 V5.5创建。
Sample_S7-300_PUT_GET.zip ( 197 KB )
注意
从 SIMATIC_NET_CP 库或者标准库中拷贝最新的通讯功能块 FB14和 FB15 到用户程序中,然后再编写程序。
原创文章,作者:ximenziask,如若转载,请注明出处:https://www.zhaoplc.com/plc330455.html