北京安方同吉专业授权代理西门子PLC,专注工控系统集成10年,拥有专业高效的团队,是西门子官方认可的资深合作伙伴,欢迎咨询合作!  客服热线:18211023581
S7300编程中BSEND中的LEN设置如何操作「靠谱」

S7300编程中BSEND中的LEN设置如何操作「靠谱」

分享嘉宾:于率浩    内容来源:西门子PLC代理商    发布时间:2021-07-16 09:48    浏览量: 第22936篇深度好文:2124个字| 6分钟阅读
  S7300编程中BSEND中的LEN设置如何操作「靠谱」?如题,客户询问BSEND:发送分段数据指令中LEN设置如何操作?

  LEN:为要发送数据的长度(字节)
 
  在此我们可以参考一下文章《利用BSEND/BRCV功能实现S7-300/400与WinCC的大数据量交换》中的操作过程。

西门子S7300编程软件

  一.WinCCBSEND/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不支持。
 
  而对于BSEND/BRCV功能,PLC端需要调用BSEND/BRCV功能块(SFB12/13,FB12/13)将数据发送给WinCC的Rawdata变量。使用S7-300PLC也可以实现(需要CP模板或集成的PN口等硬件支持)。但WinCC无法直接在画面中使用该变量,需要用脚本处理字节数组的方式来访问它。
 
  本文以Step75.4、WinCCV6.2和CPU315-2PN/DP为例,利用以太网实现8K字节的批量数据交换。
 

  二.Step7中的组态:

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

  编译保存并下载该硬件组态。
 
  点击工具栏上的NetPro按钮或点击菜单“Option”->“ConfigureNetwork”,打开NetPro编辑器。点击选中S7-300站中的CPU315-2PN/DP,然后右键单击下面列表的空白处,出现菜单
 
  在点击菜单第一项“InsertNewConnection”,在弹出的对话框中点选“(Unspecified)”
 
  点击“OK”确认输入,然后弹出下面的对话框:
 
  请按上图所示设置,其中
 
  1:此处IP为WinCC站的IP地址;
 
  2:LocalID在西门子Step7的BSEND/BRCV中会用到;
 
  3:不要选择此选项;
 
  4:完后点击按钮“AddressDetails…”,在弹出的对话框中的Partner列中选择连接资源10,如下图所示:该参数会在WinCC的连接中使用:
 
  完后点击“OK”,一次关闭各对话框。保存编译NetPro,确认编译正确,然后点选该S7-300站后将该组态信息下载到PLC。
 
  建立共享数据块DB1作为发送到WinCC的数据区(或用来接收WinCC的数据),在其中定义一个含有8000个字节元素的数组:
 
  打开OB1,在语句表状态下输入“CALLSFB12,DB12”回车,这样会自动将SFB12/BSEND函数和其背景数据块自动生成,同样调用“CALLSFB13,DB13”,具体示例程序如下:

  注意:函数BSEND/BRCV中的参数ID就是NetPro中的LocalID;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新建项目。在变量管理器中添加通道“SimaticS7ProtocolSuite”,然后右键单击“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
 
  接下来,需要在操作系统的控制面板中设置“SetPG/PCinterface”中的访问节点“CP-TCPIP”:
 
  双击“设置PG/PC接口”,弹出对话框,在下拉菜单中选择“CP-TCPIP”项。如果没有该项,选择“<添加/删除>”,添加一个“CP-TCPIP”访问节点。然后将该访问节点指向实际的物理网卡
 
  至此,通讯设置完成。
 
  在WinCC编写脚本读写PLC的DB块。
 
  打开WinCC图形编辑器,在画面上放置两个按钮和一个诊断对话框,
 
  一个按钮用来向PLC写入8000个BYTE的数据(下图中的2);
 
  一个按钮用来从PLC读取8000个BYTE的数据(下图中的1)。
 
  诊断对话框(下图中的3)是一个“应用程序窗口”,用来显示PLC数据。在对象选项板的智能对象中可以找到它,将其放置到画面上时选择其模式为“GlobleScript”和“GSCDiagnostics”,注意该对象的名称应改为英文字母,如“aaa”等,如是中文对象名时,无法显示诊断内容。

  图中4是点击“SetRawData”按钮时触发的一次性写入PLC8000字节数据的示例脚本。
 
  下面的脚本为点击“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的写入数据。

  更多技术咨询,请联系我们
 
  版权声明:文章来自北京安方同吉原创,如果喜欢这篇文章《S7300编程中BSEND中的LEN设置如何操作「靠谱」》:http://www.xmzplc.com.cn/news-industry/515.html请保留本文链接。
 

相关新闻推荐

在线客服 :

服务热线:18211023581(微信同号)

电子邮箱: 2837522029@qq.com

公司地址:北京市西城区教场口街1号

北京安方同吉科技有限公司 是专注西门子PLC代理、西门子变频器等西门子产品代理销售和系统集成的正规西门子一级代理商,是 西门子(中国)有限公司...

Copyright © 2010-2020 北京安方同吉科技有限公司 版权所有