利用BSEND/BRCV功能实现S7 | 您所在的位置:网站首页 › wincc如何与plcsim交换数据 › 利用BSEND/BRCV功能实现S7 |
本文介绍了如何在WinCC中使用BSEND/BRCV类型的原始数据类型,来实现与S7-300/400 PLC的大数据量交换。 一.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 高速数据采集的实现(点击) 而对于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。 并为其建立一个子网。 编译保存并下载该硬件组态。 点击工具栏上的NetPro按钮或点击菜单“Option”->“Configure Network”,打开NetPro编辑器。 点击选中S7-300站中的CPU315-2PN/DP,然后右键单击下面列表的空白处,出现菜单,如下图所示: 在点击菜单第一项“Insert New Connection”, 在弹出的对话框中点选 “(Unspecified)” 点击 “OK”确认输入,然后弹出下面的对话框: 请按上图所示设置,其中 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个字节元素的数组: 打开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: 保存编译OB100。 完后将整个站下载到PLC。 选中CPU,下载整个站。 三.WinCC的设置: 设置WinCC站的IP地址:在计算机“控制面板”“网络连接”中设置网卡的IP地址为:192.168.2.232,与NetPro 中的设置一致,子网掩码:255.255.255.0。可以用Ping 命令,确认网络是否连通。 注意:WinCC的IP地址必须和NetPro中所设置的IP一致。 打开WinCC新建项目。在变量管理器中添加通道“Simatic S7 Protocol Suite”,然后右键单击 “TCP/IP”,添加“新驱动程序连接”,参照下图设置: 图中 : 3:选择发送接收原始数据块 4:此处 连接资源与 BSEND/BRCV中的R_ID参数要一致。 添加Rawdata类型的变量“Raw”: 设置变量地址:选择类型为“BSEND/BRCV”;设置R_ID为 15,务必与BSEND/BRCV功能块中的参数R_ID一致。 设置WinCC逻辑设备名:右键单击TCP/IP,点击系统参数项 在弹出式对话框的第二页中,下拉菜单中选择或直接输入“CP-TCPIP” 确定,退出WinCC,并重新启动WinCC。 接下来,需要在操作系统的控制面板中设置“Set PG/PC interface”中的访问节点 “CP-TCPIP”: 双击“设置PG/PC接口”,弹出对话框,在下拉菜单中选择“CP-TCPIP” 项(如下图所示的 1)。如果没有该项,选择“”(如下图所示的 2),添加一个 “CP-TCPIP” 访问节点。然后将该访问节点指向实际的物理网卡(如下图所示的 1)。 至此,通讯设置完成。 在WinCC编写脚本读写PLC的DB块。 打开WinCC 图形编辑器,在画面上放置两个按钮和一个诊断对话框, 一个按钮用来向PLC写入8000个BYTE的数据(下图中的2); 一个按钮用来从PLC读取8000个BYTE的数据(下图中的1)。 诊断对话框(下图中的3)是一个“应用程序窗口”,用来显示PLC数据。在对象选项板的智能对象中可以找到它,将其放置到画面上时选择其模式为“Globle Script”和“GSC Diagnostics”,注意该对象的名称应改为英文字母,如“aaa”等,如是中文对象名时,无法显示诊断内容。 图中4是点击“SetRawData”按钮时触发的一次性写入PLC 8000 字节数据的示例脚本。 下面的脚本为点击“GetRawData”按钮时触发的一次读取8000字节数据的示例脚本。 激活 WinCC运行系统。 可以通过WinCC通道诊断确定连接建立。 下图为WinCC运行画面中点击按钮“GetRawData”后,诊断窗口中显示的部分RawData数据: 注意:读取数据前,先将M200.0(REQ)置1,让PLC 调用BSEND将数据发送到WinCC的缓冲区中,否则缓冲区中可能没有数据,显示为0; 或数据没有更新,为上一次的值。 写入操作:在WinCC运行画面中点击按钮SetRawData,数组a[8000]将被写入到PLC,注意因为M300.0 空闲时一直为1,即BRCV的EN_R处于使能状态,故可以随时接收WinCC的写入数据。
http://www.ad.siemens.com.cn/productportal/prods/hmi/wincc/q2_communication/faq3.html |
CopyRight 2018-2019 实验室设备网 版权所有 |