- 易迪拓培训,专注于微波、射频、天线设计工程师的培养
基于WinCC V6的制动器试验台高速数据归档与处理
摘要:本文针对Profibus总线控制的制动器试验台控制系统的设计中需要对数据进行高速采集,而WinCC变量更新周期较长的问题,提出了一种首先利用 S7-300 PLC进行高速数据采集,然后采用WinCC支持的原始数据类型进行数据打包,接收并归档的方法。此方法中将获取的数据经过处理后存储到自定义的数据库中,并实现了测试过程中的数据实时显示。
关键词:WinCC,原始数据类型,高速数据采集,归档
引言
Siemens 的监控组态软件WinCC(Windows Control Center)在生产和过程自动化中对控制任务编程并支持可视化,它提供了高性能的过程耦合、快速的画面更新、以及可靠的数据处理,因此具有高度的适用性。WinCC提供了适用于工业的图形显示、消息、归档以及报表的功能模板,可以通过ODBC和SQL方式访问归档数据,并通过OLE2.0和ActiveX控件的对象和文档链接,这使得WinCC广泛地应用于复杂自动控制的集成方案成为可能。
1 系统简介
本系统是为某公司研制的制动器台架试验台,试验台如图1所示
主要完成制动器磨合试验、效能试验、热衰退恢复等一系列试验。其控制系统采用了研华工控机、西门子公司的S7-300系列PLC、ProfiBus通讯处理卡CP5611和监控软件WinCC V6,组成了PROFIBUS总线控制系统。
系统连接如图2所示。
2 问题的提出
在本试验台架上根据国标,制动器台架试验台需要对制动期间的制动力矩进行采集,同时对采集的数据进行归档,以便对数据进行实时分析和以后对试验数据进行分析。一般一个制动周期为2-6s,采样周期至少为50ms才不至于使数据丢失。
WinCC可以通过MPI、PRrofibus、工业以太网等与下位机PLC进行通讯,将现场数据进行收集,归档,并显示在界面上。但是 WinCC的最小刷新周期(250ms)不能满足试验中对快速信号的采样要求,不能保证试验数据的可信度。这一刷新周期远远大于PLC可能达到的采样周期(1ms),不能充分利用PLC的采样速度。因为常规WinCC组态不能满足特殊高速数据采集的要求,会导致数据的丢失,因此有必要寻找更好的途径来实现高速数据采集的目的。
3 设计思想
存储过程数据,并方便快捷的处理数据是上位机基于WinCC的过程监控系统的目标。WinCC对现场数据进行数据采集的过程可通过WinCC外部变量按一定周期访问PLC对应地址的数据来实现,但是这种数据采集的周期完全是由WinCC定义的更新周期来决定的。如前所述,WinCC的最小刷新周期(250ms)不能满足试验中对快速信号的采样要求。S7-400系列PLC的SFB37(AR_Send)块具有将所采集到的过程值传给WinCC归档的功能,但是本系统中采用的S7-300系列没有这个功能,因此本文的出发点就是利用S7-300系列有限的资源实现数据的高速采集。
本方案中在WinCC中实现高速数据采集的方法可归纳如下:
PLC每个循环周期所采集到的过程值可以以一定的顺序存放在具有一定格式的DB块中;
WinCC可以定义一种原始数据类型变量,可以对PLC里的DB块直接读取。
WinCC的以数据包的形式一次从PLC接收一批数据,所以这样就可以获取完整的高速数据,实现对原始高速数据的直接处理。
WinCC的历史归档数据对于工业生产过程也极为重要,WinCC在实现高速数据采集后还必须对数据进行归档。WinCC V6的底层数据库是 Microsoft SQL 2000,由于WinCC自带的归档数据采集周期满足不了系统性能要求,所以本系统中基于上面介绍的方法是对过程值进行采集,并通过编写脚本使WinCC过程值数据存放在一个已经建立过的数据库表格中,然后应用软件可通过查询数据库表格对归档数据进行访问。
4 WinCC高速数据采集归档的实现
由于篇幅问题,本文只介绍一个制动周期的高速数据采集归档,不涉及WinCC是如何实现对制动器台架试验台一个完整试验的数据的接收。
下位机PLC的一个制动周期的高速数据采集的流程如下所示
1)一个新的制动周期开始;
2)PLC置位信号BrkFlag=1(BrkFlag为WinCC定义的一个二进制外部变量),同时PLC开始采集数据,此时PLC将采集到的过程值以一定的顺序存放在具有一定格式的DB块中;
3)制动周期完毕,同时PLC 置位信号BrkFlag=0。
上位机WinCC的一个制动周期的高速数据采集通过编辑一个动作脚本来实现,此时动作设置一个触发器,此触发器为位信号BrkFlag,位信号 BrkFlag一旦改变就会触发这个动作,只有位信号BrkFlag=0时WinCC才会对PLC发送的过程值进行拆包处理,并做一个制动周期的曲线图同行对拆包数据存入一个已经预先建立好的数据库表格中。上述过程具体设计如下:
1)定义原始数据变量ActualStress,长度为240个字节
WinCC提供了消息帧变量,多个过程值可以被写入连续的数据块并以帧形式发送到WinCC,存储在WinCC的原始数据变量中,原始数据变量的格式和长度都是固定不变的。
2)用C Script编写数据采集全局动作
WinCC不能直接对原始数据变量进行处理,但提供了C脚本功能可用于编写处理数据变量的全局动作。在本系统中编写了项目函数 SendStressVar(),此项目函数通过调用内部函数GetTagRaw()来实现原始数据变量的更新,并对其中的消息帧内容进行拆包处理。 GetTagRaw()定义如下:
#define DATA_SIZE 120
WORD byData[DATA_SIZE];
GetTagRaw("ActualStress",byData,DATA_SIZE);
其中ActualStress为指定的原始数据变量的名字,参数byData是一个指针,只用来接收原始数据变量内容的字数组,参数DATA_SIZE是字型数组的长度,函数返回结果为TRUE,表明函数正确的执行了,否则为异常,需进行相应处理。
3)对采集数据进行实时显示并对采集数据进行归档
一个制动周期内对制动力矩的分析是十分重要的,通过制动力矩数据的采集可以计算出一个制动周期内的最大制动力矩、最小制动力矩和平均制动力矩。本系统要求对每个周期的制动力矩进行显示。
本系统还同时要求对采集的数据进行归档,因为采集周期的限制必须编写全局脚本实现把采集到的数据库写入已经建立好数据表格中,流程如图3所示。
5 试验与结论
利用本系统对制动器进行了试验,制动过程如图4 所示,试验过程记录数据较多,本文只给出了通过记录数据得到的制动力矩和制动温度。
目前大多数组态软件都存在采集归档周期长的问题,本文针对将WinCC从PLC采集过来的原始类型数据进行处理,成功的将WinCC 的采集周期缩短至50ms甚至更小(最小可达10ms),满足了数据高速采集的要求。该方法已经在实际的工程项目中应用,运行状况稳定。该方法具有一定的通用性
参考文献:
1 苏昆哲,深入浅出西门子WinCC 6.0[M],北京,北京航空航天大学出版社,2004
2 刘玉国等,基于PLC的现场数据采集和自动控制,现代机械 2007
3 姜丽波等,WinCC高速数据采集应用 电气传动自动化2006.11
4 西门子S7-300/400PLC编程软件使用手册
上一篇:电子水准仪在广州市轨道交通工程中的应用
下一篇:哈希LDO为污水处理提供解决方案