### 利用BSEND BRCV功能实现S7-300 400与WinCC的大数据量交换
#### 一、WinCC BSEND/BRCV功能介绍
在工业自动化领域,数据交换是实现系统间通信的关键环节之一。WinCC(Windows Control Center)作为一款广泛使用的SCADA(Supervisory Control and Data Acquisition,监控和数据采集)软件,提供了多种方式与PLC(Programmable Logic Controller,可编程逻辑控制器)进行数据交换。其中之一便是通过BSEND/BRCV功能实现与S7-300/400 PLC的大数据量交换。
**BSEND/BRCV** 是一种专门用于大量数据传输的功能,它允许PLC主动将最大可达16K字节的数据发送到WinCC的Rawdata(原始数据)变量中。这种机制克服了传统Send/Receive类型Rawdata变量受PDU(Protocol Data Unit,协议数据单元)尺寸限制(通常为240/480字节)的问题,使得大数据量交换成为可能。
在S7-400系列PLC中,还可以使用AR_SEND (SFB37)功能来实现类似目的,但该功能不适用于S7-300 PLC。因此,对于S7-300/400系列,BSEND/BRCV是实现大数据量交换的最佳选择。
#### 二、Step7中的组态
为了实现S7-300/400 PLC与WinCC之间的大数据量交换,首先需要在Step7环境中完成必要的配置:
1. **新建项目并设置硬件组态**:在Simatic Manager中创建一个新的项目,并向其中添加S7-315-2PN/DP站。接着,在硬件组态界面(HW Config)中为该站配置PN接口的IP地址(例如192.168.2.125)以及子网掩码(例如255.255.255.0),并建立相应的子网。
2. **网络配置**:使用NetPro编辑器配置网络连接。具体步骤包括:选择S7-300站中的CPU315-2PN/DP,插入新的连接,设置目标IP地址(即WinCC工作站的IP地址)、Local ID等参数。此外,还需要指定连接资源为10,以便后续在WinCC中使用。
3. **定义数据块**:创建共享数据块DB1作为发送或接收数据的区域。例如,在本例中,定义一个包含8000个字节元素的数组,用于存储要发送的数据。
4. **编程BSEND/BRCV功能**:在OB1中调用SFB12(BSEND)和SFB13(BRCV)功能块,并传入相应的参数。需要注意的是,这些参数包括发送或接收数据的地址、长度等。例如,在BSEND功能中,SD_1指定发送区的起始地址和长度,LEN则表示实际要发送的数据长度。
#### 三、WinCC的设置
完成Step7的组态之后,接下来需要在WinCC环境中进行相应配置,以便接收来自S7-300/400 PLC的数据:
1. **建立连接**:在WinCC中建立与S7-300/400 PLC的连接,并指定之前在Step7中设置的连接资源(例如10)。
2. **配置Rawdata变量**:在WinCC中创建Rawdata类型的变量,并设置适当的长度,以匹配PLC发送的数据大小。需要注意的是,由于WinCC无法直接在画面中使用该变量,因此通常需要编写脚本来处理接收到的字节数组。
3. **编写脚本处理数据**:编写脚本来读取和解析从PLC接收到的数据。这一步骤对于提取有用的信息至关重要。
#### 四、总结
通过以上步骤,我们可以有效地实现S7-300/400 PLC与WinCC之间大数据量的交换。BSEND/BRCV功能不仅简化了开发流程,还显著提高了数据传输效率。此外,这种机制对于实时监控和控制应用尤其有用,因为它可以确保大量数据的快速传输。在未来的工作中,可以进一步探索如何优化数据处理逻辑,提高系统的整体性能和稳定性。