- {{item.name}}
如何实现WinCC对S7-400的高速数据采集(更新版)
- 0
- 809
- 12832
摘要 WinCC 采用 RawData 归档数据链接的方式实现对 S7-400 PLC 的高速数据采集关键词 WinCC ,RawData ,数据采集,SFB37,AR_SEND ,归档 Key Words WinCC ,RawData ,Data Collection ,SFB37,AR_SEND ,Archive
前言
在 一些应用场合,需要上位机对高速变化的过程数据进行归档记录。对于一般的网络通讯方式来说,WinCC 能提供的最高刷新速度是250 毫秒,但WinCC 采用RawData 归档数据链接的方式可以实现对S7-400 PLC 的高速数据采集。原理是PLC 将每个循环周期所采集的过程值(或PLC 以其他方式得到的数据或数据包)以一定的顺序存放在具有一定的格式的DB块中,当到达一定的数量后,PLC可以调用系统功能块 SFB37(AR_Send)将这个DB块主动地发送给WinCC, 然后WinCC会在后台自动调用标准化DLL来拆解数据,并将其按时间顺序保存在数据库中。在WinCC的过程画面中,可以使用在线趋势控件或在线表格控 件来查看所采集的数据。
由于是批量传送,可以有效地提高通讯效率,使高速数据采集成为可能,而这时所谓的采集频率就取决于你对保存在DB 块中的各过程值间的时间间隔的定义。可以定义的最小的时间间隔是1 毫秒。但如果是PLC 每个循环周期采样一次,那么定义的时间间隔应大于PLC 循环周期。DB块的最大尺寸是16KB。
详细信息请参见WinCC的帮助文件:WinCC System Information->通讯->SIMATIC S7 Protocol Suite->特殊功能->使用S7功能块AR_SEND进行数据交换。
条件
1. WinCC的版本为 V5.1 或更高
2. S7-400系列CPU
3. WinCC站与S7-400站建立S7连接(包括 MPI, ProfiBus, TCP/IP,工业以太网都可以实现)
4. 编程人员能够熟练地使用STEP7和WinCC
本例介绍了WinCC如何在相同时间间隔(10ms)下实现对两个过程变量采集归档的方法,即上述WinCC帮助文件中的示例6。
所使用的操作系统和软件环境如下: 1. Windows7 Professional SP1
2. STEP7 V5.5 SP3 HF1
3. WinCC V7.2 Upd3
4. SIMATIC NET V8.2 SP1
5. WinAC RTX 2010(V4.6) SP1
注意:在本例中使用WinAC RTX代替S7-400,编程方式是相同的。WinAC RTX 2009(V4.5)及更高版本支持SFB37(AR_Send)。
步骤:1. 在新建的STEP7项目中新建PC Station,分别插入WinCC Application和WinLC RTX(必须定位在2号槽位),如图1所示。
图1
2. 在NetPro中选择PC Station中的WinCC Application,双击下方表格的空白处插入S7 Connection,如图2、图3和图4所示。
图2
图3
图4
3. 在WinLC RTX中新建Data Type(UDT1),参照上述WinCC帮助文件中数据块的架构和参数介绍,定义过程变量的结构,如图5所示。
图5
4. 在WinLC RTX中新建Data Block(DB1),定义数组,类型选择UDT1,如图6所示。
图6
5. 参照上述WinCC帮助文件中AR_SEND的变量属性,为DB1的数组PV分配如下相应的初始值:
PV(1).HeaderType=9
PV(1).Cycle=10
PV(1).Unit_Type=1
PV(1).Unit_Range=3
PV(1).AR_ID_SubNum=1
PV(1).DataType=2
PV(1).NumOfPV=100
PV(2)的初始值和PV(1)基本相同,注意PV(1).AR_ID_SubNum=2。
6. 在WinLC RTX中新建Function Block(FB1),在Interface-IN中新建输入参数AR_Send,选择Data Type为AR_Send,调用SFB37(AR_SEND)发送DB1,如图7所示。
图7
7. 在WinLC RTX中新建Fucntion(FC1),调用FB1,并调用SFC1(READ_CLK)读取当前系统时间并写入DB1,如图8所示。
图8
8. 在WinLC RTX中新建Function(FC3),指定SFB37(SAR_Send)发送的数据包长度,如图9所示。
图9
9. 在WinLC RTX中新建Organization Block(OB100),调用FC3。
10. 在WinLC RTX中的OB1中调用FC1。
11. 选择菜单Options-'Compile Multiple OSs' Wizard-Start,编译AS-OS,如图10、图11所示。
图10
图11
12. 在WinCC Application中打开OS,在WinCC中打开变量管理器,在SIMATIC S7 Protocol-Named Connections中新建变量AR_Send(Raw Data)、Req_AR_Send(M20.0)和Res_TimeStamp(M40.0),如图12、图13和图14所示。
图12
图13
图14
13. 在变量记录中新建过程归档Processvaluearchive,选择New Process Controlled Tag,在Raw Data Tag中选择变量AR_Send,并分配参数AR_ID和AR_ID-Subnumber为1,参数需要和步骤5中相对应;注意需要新建两个过程控制变 量,第二个过程变量的AR_ID-Subnumber为2,如图15、图16和图17所示。
图15
图16
图17
14. 在画面编辑器中新建画面,插入IO域组态变量Req_AR_Send(M20.0)和Res_TimeStamp(M40.0),再插入WinCC Online Table控件组态变量记录Processvaluearchive,如图18所示。
图18
15. 在Set PG/PC interface中设置S7Online为PC Internal(Local),下载PC Station,如图19所示。
图19
16. 启动WinAC RTX,可以在Variable Table中为DB1的数组PV.PV输入相应的数据,参见步骤5中的描述,如图20所示。
图20
17. 激活WinCC项目, 置位变量Req_AR_Send(M20.0)和Res_TimeStamp(M40.0)后,可以在WinCC Online Table控件中查看到WinAC RTX发送到WinCC变量记录的数据,如图21所示。
图21
17. 需要注意的是,本例中只是简单地实现了PLC发送过程数据到WinCC的归档,用户需要根据实际情况选择发送数据的数据结构,自行编写PLC程序将过程数据写入SFB37(AR_SEND)要发送的数据块,并定义触发SFB37的逻辑。
声明:
对于本文所述的方法属于WinCC 的高级用法,西门子公司不提供任何保证和热线支持。
剩余80%未阅读,请登录后下载/查看文档
- 评论
-
分享
扫码分享
- 收藏 收藏
- 点赞 点赞
- 纠错 纠错
{{item.nickName}}