摘要 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。
本文实现10毫秒的高速采集。
详细信息请参见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
5. PLCSIM V5.4+SP5
注:我测试时使用的是 STEP7 V5.6+SP2 , WINCC7.4+SP1 ,WIN7 ---64位旗舰版
本例介绍了WinCC如何在相同时间间隔(10ms)下实现对两个过程变量采集归档的方法,即上述WinCC帮助文件中的示例6。所使用的操作系统和软件环境如下:
1. Windows7 Professional SP1
2. STEP7 V5.6 SP2 HF1
3. WinCC V7.4 SP1
4. PLCSIM V5.4+SP5
步骤:
1. 在新建的STEP7项目中新建项目,如图1所示。
2、在项目中插入SFB37和SFC1
3、新建Data Type(UDT1),即新建用户自定义类型DB块,可参照上述WinCC帮助文件中数据块的架构和参数介绍,定义过程变量的结构,如图所示。
(1)、新建UDT1
(2)、UDT1 内容如下
UDT1用户自定义DB块中为什么要按照上述建立,参见下图。
4. 在项目中新建一个普通的Data Block(DB1)
注意:DB1数据块的符号名也命名为DB1,方便在程序中使用。
在DB1中定义数组PV,PV的类型选择UDT1,如图所示。
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).HeaderType=9
PV(2).Cycle=10
PV(2).Unit_Type=1
PV(2).Unit_Range=3
PV(2).AR_ID_SubNum=2
PV(2).DataType=2
PV(2).NumOfPV=100
PV(2)的初始值和PV(1)基本相同,注意PV(1).AR_ID_SubNum=1,PV(2).AR_ID_SubNum=2。
注:我在OB100中对PV数组进行初始化,以下程序代码在OB100中对数PV(1)组和PV(2)组的HeaderType、Cycle、Unit_Type、Unit_Range、AR_ID_SubNum、DataType、NumOfPV成员进行初始化。
(5.1)在OB100中对PV(1)数组的HeaderType、Cycle、Unit_Type、Unit_Range、AR_ID_SubNum、DataType、NumOfPV成员进行初始化
(5.2)在OB100中对PV(2)数组的HeaderType、Cycle、Unit_Type、Unit_Range、AR_ID_SubNum、DataType、NumOfPV