S7连接需要在通信双方都组态,因为通过 FB12 "BSEND" 和 FB13 "BRCV" 的 S7 通信是基于客户机-客户机模式的。
通信功能块FB12 "BSEND"和 FB13 "BRCV"的特点
- FB12和 FB13 是异步通信功能块。
- 必须在OB1 中调用 (参考条目 ID: 2795485)。
- FB12和 FB13在多个 OB1循环中执行。
- FB12由输入参数"REQ"使能触发。
- FB13 由输入参数"EN_R"使能触发。
- 任务完成状态由 "DONE","NDR"或 "ERROR"表示。
- BSEND和 BRCV可以在一个连接上同时进行。
- 通过CP343-1 或 CP342-5 交换数据的最新版本 FB12 "BSEND" 和 FB13 "BRCV" 通信块可以在 SIMATIC_NET_CP 库 "CP 300 > Blocks"下找到。
- 通过 S7-300 CPU, IM151-8 PN/DP CPU 或 IM154-8 CPU 集成的 PROFINET 接口在"CPU_300" 家族中交换数据的最新版本 FB12 "BSEND" 和 FB13 "BRCV" 通信块可以在标准库的 "Communication Blocks > Blocks"下找到。
示例程序描述
示例 S7 程序包括从标准库中对通信块 FB12 "BSEND" 和 FB13 "BRCV" 的调用。FB12 "BSEND" 功能块用于发送数据,FB13 "BRCV" 功能块用于接收数据。
示例程序演示了通过 S7 连接 FB12 "BSEND" 和 FB13 "BRCV" 通信块功能。
首先创建 S7-300 站的硬件配置。
注意:
将 MB10 配置为时钟标志。发送任务由该时钟标志触发。保存并编译 S7-300 站的硬件组态并装载到 CPU。
例程中用到了定时器 T10 。
然后在 NetPro 中为 CPU 配置上面提到的通讯连接。如果通讯伙伴也在该 STEP7 项目中一起配置,可以配置一个指定的通讯连接。如果通讯伙伴没有与 S7-300 站在同一个 STEP7 项目下,可以配置一个未指定的通讯连接。配置通讯连接时,确认 IP 地址和 Profibus 地址已经正确分配。 同样,确认 机架/槽号和连接资源已经正确分配。这些 用于识别通讯伙伴间的通讯连接。
FB12 "BSEND" 和 FB13 "BRCV" 必须用到的参数"ID" 在 S7 连接的属生对话框的 "General" 选项卡下查看。
图. 01
示例 STEP 7 程序包括 OB100, OB1, FB105, DB105, DB200, DB201, FB12 和 FB13 块。
OB100:
OB100 是启动组织块,当 CPU 重新启动(暖启动)时运行。在这个组织块中通过 M0.3 使能第一次通讯触发器。
OB1
OB1循环执行。FB105 在此OB中调用(背景数据块: DB105) 使用 M0.3作为参数 (INIT_COM)。FB105一旦执行 则复位 M0.3 "START-UP".
图. 02
FB105
FB105 在OB1循环中调用。FB12 "BSEND" 和 FB13 "BRCV" 在 FB105 中调用。
输入参数 "ID" 的值必须来自 NetPro 中配置的 S7 连接的属性对话框(见图. 01)。
可以在FB105中单独修改连接号。在FB105的 network 2 中根据组态修改连接号。连接号存储在静态变量中,因此最终存储在背景数据块DB105中。
本例中定义的连接号是"1"。
图. 03
FB12由输入参数 "REQ" 当 M10.6 时钟标记产生上升沿并且没有作业执行时激活。当任务成功执行完毕或出错时"REQ" 输入参数复位。
由于功能块的执行是异步的,并可以持续几个周期,所以“锁定”功能尤其重要。如果不等待第一个发送工作成功完成或出错终止就不间断的触发新的发送任务会引起通讯过载。
使用"R_ID" 参数指定一对发送 FB和接收 FB。在发送端 FB 的"R_ID" 参数必须和接收端 FB 的"R_ID" 参数相同。
FB12 的 "SD_1" 参数指定要发送的数据区的地址和长度(发送缓冲区),如 P#DB201.DBX0.0 BYTE 8000.
"LEN" 参数表示要发送的数据长度,以字节为单位。在FB105的Network 1中定义要发送的数据长度。它存储在静态变量中,因此最终存储在背景数据块DB105中。
本例中发送的数据长度是 8000 字节。
输出参数 "DONE","ERROR"和 "STATUS" 用做任务分析,而且只在同一个周期中有效。
图. 04
如果发送任务出现错误,FB12的输出参数"STATUS"会被保存用于故障分析。
图. 05
FB13 由输入参数 "EN_R" 激活. "EN_R" 的值始终为"1",因为 M0.1在启动组织块OB100中被设为1了。这样,S7-300 站总是准备好接收数据。
使用"R_ID" 参数指定一对发送 FB和接收 FB。在发送端 FB 的"R_ID" 参数必须和接收端 FB 的"R_ID" 参数相同。
FB13的 "RD_1" 输入参数指定要存储接收到的数据的地址长度(接收缓冲区),如 P#DB200.DBX0.0 BYTE 8000.
输出参数"LEN" 表示接收到的数据长度,以字节为单位。输出参数 "NDR","ERROR"和 "STATUS" 用做任务分析,而且只在同一个周期中有效。
图. 06
如果接收任务出现错误,FB13的输出参数"STATUS"会被保存用于故障分析。
图. 07
附加信息
- 在手册"System and Standard Functions for S7-300/400 Volume 1/2"第22章"S7 Communication" 中 提供了通信功能块 FB12 "BSEND"和 FB13 "BRCV" 的信息,如可以传送的数据量大小。该手册可以在条目 ID: 44240604下载。
- 如何配置一个指定的或非指定的 S7 连接在条目 ID: 17628518 中有描述。
下载示例 STEP 7 项目
示例 STEP 7项目包含对 FB12和 FB13通信块的调用。该程序由 STEP 7 V5.5 创建。
sample_s7-300_bsend_brcv.zip (51,0 KB)
提示
从SIMATIC_NET_CP库或标准库中复制最新的通信块 FB12 和 FB13到用户程序中并在调用它们。
原创文章,作者:ximenziask,如若转载,请注明出处:https://www.zhaoplc.com/plc330453.html