您的当前位置:首页正文

利用BSEND_BRCV功能实现S7300_400与WinCC的大数据量交换

2023-09-08 来源:九壹网


利用BSEND/BRCV功能实现S7-300/400与WinCC的大数据量交换

Bulk Data Exchange between S7-300/400 and WinCC with BSEND/BRCV Function

Getting Started Edition (2008-1)

摘 要 本文介绍了如何在WinCC中使用BSEND/BRCV类型的原始数据类型,来实现与S7-300/400 PLC的大数据量交换。 关键词

BSEND/BRCV,原始数据 Key Words

BSEND/BRCV,Rawdata

A&D Service & Support

Page 2-18

目 录

一.WinCC BSEND/BRCV功能介绍..............................................................................4 二.Step7 中的组态:...................................................................................................4 三.WinCC的设置:......................................................................................................9 附录-推荐网址............................................................................................................17

A&D Service & Support

Page 3-18

一.WinCC BSEND/BRCV功能介绍

WinCC 支持Rawdata(原始数据)类型的变量,可以实现和PLC的批量数据交换。其中Send/Receive类型的Rawdata变量因其受PDU尺寸的限制(240/480字节),故最大尺寸为208/448 字节,能够实现中小规模的批量数据交换。

但对于大批量的数据交换可以考虑使用AR_SEND和BSEND/BRCV功能。两者都需要

PLC端调用功能块,主动将最大16K字节的数据发到WinCC的Rawdata变量。

AR_SEND(SFB37)只适用于S7-400 系列PLC,S7-300PLC不支持。关于此内容请参见WinCC的帮助文档和西门子网上课堂中ID号为227 :《 如何实现WinCC对S7-400的高速数据采集》。

而对于BSEND/BRCV 功能,PLC端需要调用BSEND/BRCV功能块(SFB12/13,

FB12/13)将数据发送给WinCC的Rawdata变量。使用 S7-300PLC也可以实现(需要CP模板或集成的PN口等硬件支持)。但WinCC无法直接在画面中使用该变量,需要用脚本处理字节数组的方式来访问它。

本文以Step7 5.4 、WinCC V6.2和CPU315 -2 PN/DP 为例,利用以太网实现8K字节

的批量数据交换。

二.Step7 中的组态:

打开Simatic Manager, 新建项目插入一个S7-315 - 2 PN/DP 站,在硬件组态HW Config中设置PN口的IP地址:192.168.2.125 ,子网掩码:255.255.255.0。 并为其建立一个子网。

A&D Service & Support

Page 4-18

2 3

1

编译保存并下载该硬件组态。

点击工具栏上的NetPro按钮或点击菜单“Option”->“Configure Network”,打开NetPro编辑器。

点击选中S7-300站中的CPU315-2PN/DP,然后右键单击下面列表的空白处,出现菜单,如下图所示:

A&D Service & Support

Page 5-18

在点击菜单第一项“Insert New Connection”, 在弹出的对话框中点选 “(Unspecified)”

点击 “OK”确认输入,然后弹出下面的对话框:

2

3

1

4

A&D Service & Support

Page 6-18

请按上图所示设置,其中

1:此处IP为WinCC站的IP地址;

2:Local ID 在Step7的BSEND/BRCV中会用到; 3:不要选择此选项;

4:完后点击按钮“Address Details… ”, 在弹出的对话框中的Partner 列中选择连接资源 10,如下图所示:该参数会在WinCC的连接中使用:

完后点击 “OK”,一次关闭各对话框。保存编译NetPro,确认编译正确,然后点选该S7-300站后将该组态信息下载到PLC。

建立共享数据块DB1作为发送到WinCC的数据区(或用来接收WinCC的数据),在其中定义一个含有8000个字节元素的数组:

A&D Service & Support

Page 7-18

打开OB1,在语句表状态下输入“CALL SFB12, DB12”回车, 这样会自动将 SFB12 /BSEND函数和其背景数据块自动生成,同样调用“CALL SFB13, DB13”,具体示例程序如下:

注意:函数BSEND/BRCV中的参数 ID 就是NetPro中的 Local ID; R_ID要和WinCC中的设置一致。对于BSEND:SD_1为发送区始地地址和发送区最大长度;LEN: 为要发送数据的长度(字节)(本例中请先给MW204赋值:8000 )

对于BRCV:RD_1为接收区起始地址和接收区最大长度;LEN: 为接收到数据的长度(字节)。

编译保存OB1。

关于函数的详细说明请参见Step7的帮助文档。

在OB100中给 BSEND的LEN参数MW204 赋初值 8000:

A&D Service & Support

Page 8-18

保存编译OB100。

完后将整个站下载到PLC。

2

1

选中CPU,下载整个站。

三.WinCC的设置:

设置WinCC站的IP地址:在计算机“控制面板”Æ“网络连接”中设置网卡的IP地址为:192.168.2.232,与NetPro 中的设置一致,子网掩码:255.255.255.0。可以用Ping 命令,确认网络是否连通。

注意:WinCC的IP地址必须和NetPro中所设置的IP一致。

A&D Service & Support

Page 9-18

打开WinCC新建项目。在变量管理器中添加通道“Simatic S7 Protocol Suite”,然后右键单击 “TCP/IP”,添加“新驱动程序连接”,参照下图设置:

1

2 3

4

图中 :

3:选择发送接收原始数据块

4:此处 连接资源与 BSEND/BRCV中的R_ID参数要一致。

添加Rawdata类型的变量“Raw”:

A&D Service & Support

Page 10-18

设置变量地址:选择类型为“BSEND/BRCV”;设置R_ID为 15,务必与BSEND/BRCV功能块中的参数R_ID一致。

2

1

设置WinCC逻辑设备名:右键单击TCP/IP,点击系统参数项

A&D Service & Support

Page 11-18

1

2

在弹出式对话框的第二页中,下拉菜单中选择或直接输入“CP-TCPIP”

1 2

确定,退出WinCC,并重新启动WinCC。

接下来,需要在操作系统的控制面板中设置“Set PG/PC interface”中的访问节点 “CP-TCPIP”:

A&D Service & Support

Page 12-18

双击“设置PG/PC接口”,弹出对话框,在下拉菜单中选择“CP-TCPIP” 项(如下图所示的 1)。如果没有该项,选择“<添加/删除>”(如下图所示的 2),添加一个 “CP-TCPIP” 访问节点。然后将该访问节点指向实际的物理网卡(如下图所示的 1)。

2

1

至此,通讯设置完成。 A&D Service & Support

Page 13-18

在WinCC编写脚本读写PLC的DB块。

打开WinCC 图形编辑器,在画面上放置两个按钮和一个诊断对话框, 一个按钮用来向PLC写入8000个BYTE的数据(下图中的2); 一个按钮用来从PLC读取8000个BYTE的数据(下图中的1)。

诊断对话框(下图中的3)是一个“应用程序窗口”,用来显示PLC数据。在对象选项板的智能对象中可以找到它,将其放置到画面上时选择其模式为“Globle Script”和“GSC Diagnostics”,注意该对象的名称应改为英文字母,如“aaa”等,如是中文对象名时,无法显示诊断内容。

1 2

3

4

图中4是点击“SetRawData”按钮时触发的一次性写入PLC 8000 字节数据的示例脚本。

下面的脚本为点击“GetRawData”按钮时触发的一次读取8000字节数据的示例脚本。

A&D Service & Support

Page 14-18

激活 WinCC运行系统。

可以通过WinCC通道诊断确定连接建立。

下图为WinCC运行画面中点击按钮“GetRawData”后,诊断窗口中显示的部分RawData数据:

A&D Service & Support

Page 15-18

注意:读取数据前,先将M200.0(REQ)置1,让PLC 调用BSEND将数据发送到WinCC的缓冲区中,否则缓冲区中可能没有数据,显示为0; 或数据没有更新,为上一次的值。

写入操作:在WinCC运行画面中点击按钮SetRawData,数组a[8000]将被写入到PLC,注意因为M300.0 空闲时一直为1,即BRCV的EN_R处于使能状态,故可以随时接收WinCC的写入数据。

重要提示:

本文档只注重功能的实现和演示,实现方法并不唯一,仅供参考。同时程序中未做任何错误或异常处理,使用中请根据实际情况改写之,因此使用者须风险自负。技术支持热线不对该文档提供技术支持和排错。

A&D Service & Support

Page 16-18

附录-推荐网址

AS

西门子(中国)有限公司

自动化与驱动集团 客户服务与支持中心

网站首页:http://www.ad.siemens.com.cn/Service/

AS常问问题:http://support.automation.siemens.com/CN/view/zh/10805055/133000 AS更新信息:http://support.automation.siemens.com/CN/view/zh/10805055/133400 “找答案”AS版区:

http://www.ad.siemens.com.cn/service/answer/category.asp?cid=1027PLC“网上课堂”:http://www.ad.siemens.com.cn/service/e-training/list.asp?columnid=4 HMI

西门子(中国)有限公司

自动化与驱动集团 客户服务与支持中心

网站首页:http://www.ad.siemens.com.cn/Service/

HMI常问问题:http://support.automation.siemens.com/CN/view/zh/10805548/133000 HMI更新信息:http://support.automation.siemens.com/CN/view/zh/10805548/133400 “找答案”WinCC版区:

http://www.ad.siemens.com.cn/service/answer/category.asp?cid=1032 WinCC“网上课堂”:

http://www.ad.siemens.com.cn/service/e-training/list.asp?columnid=8 Panel/ProTool/WinCC Flexible “网上课堂”:http://www.ad.siemens.com.cn/service/e-training/list.asp?columnid=9

A&D Service & Support

Page 17-18

因篇幅问题不能全部显示,请点此查看更多更全内容