推广 热搜: 西门子PLC  危化品安全,爆炸  变送器  触摸屏  培训  阀门  PLC  电机  变频器  服务机器人 

WinCC中数据滤波算法的优化与实现

   日期:2013-03-23     来源:工控之家网    作者:工控之家    浏览:39    评论:0    
摘  要:由WinCC、可编程控制器及相应传感器组成自动化控制系统中,可利用上位机对现场采集的数据进行滤波的优化与实现。并介绍了将数据处理方法嵌入WinCC环境中的多种实施方案。

关键词:WinCC PLC 人机界面 数据滤波

Abstract:Computer can be used to optimize and realize filtering algorithm in automation system consist of WinCC PLC and sensor. This paper introduces some methods to optimize and realize filtering algorithm in WinCC.

Key Words:WinCC PLC HMI Filtering Algorithm for Data

1 引言

  随着工业自动化程度的日益提高,人机界面 (Human Machine Interface, HMI)技术在工业生产中应用的越来越普及。组态软件的出现使得利用计算机可以更加高效地对现场数据进行处理,从而实现工业现场的优化控制。其中德国Siemens公司的Windows Control Center (简称WinCC)以其良好的操作性和强大的功能而著称,在工业领域得到了广泛应用。


图1 系统总体结构

  某钢厂高炉除尘控制系统采用西门子公司的WinCC、PLC以及网络技术,来代替传统的继电器、接触器组成的传统的控制电路。该控制系统不仅提高了高炉除尘系统的工作质量,延长了电气设备的有效运行周期,降低了故障率,而且大大缩短了故障维修时间,降低了生产成本和岗位操作工的劳动强度,优化了整个生产管理过程。

  为充分利用计算机的强大处理能力,提高PLC的效率,在控制系统的软件设计中,将大量的数据处理放置在IPC中进行,在WinCC中实现了滤波算法的多种优化计算,提高了设备利用率和系统运行速度。

2 系统构成

  系统的总体设计框图如图1所示。采用西门子公司的S7-300型PLC构成现场控制级控制器,实现对所有现场模拟信号和数字信号的采集,同时控制现场电气设备的运行,保证现场设备运行的稳定性和控制精度;上下位机通过Profibus-DP总线进行通信连接,WinCC安装在IPC上,经由通讯卡CP5611连接Profibus-DP总线采集数据,并进行计算处理,操作人员可以通过组态软件的图形界面直观地了解设备的运行状态、掌握重要参数的实时和历史数据、所有报警点的参数等信息,同时通过WinCC可以对系统的运行参数实现实时检测和在线干预。

3 WinCC中典型数据滤波处理的优化实现

  3.1WinCC的C脚本

  钢铁厂工作环境恶劣,干扰源众多,除了在硬件系统构成上进行抗干扰问题外,对采集上来的各类数据进行必要的滤波处理是必须的。由于高炉除尘系统工艺复杂,数据量大,如在现场及控制器PLC内部进行现场级数据滤波算法的处理,将极大地增加PLC的负担。为降低现场控制级PLC的负担,充分利用计算机高速计算的优势,本系统设计中,包括全部模拟量在内的各类过程值数据的滤波处理大都被放在了WinCC中完成。

  WinCC集成了C脚本功能,其6.0版本进一步引进了VBS脚本功能。其中C脚本遵守标准C语言规范,并提供了基于C脚本规范的系统函数,支持组态工程师进行全开放的自由编程,进行深层次的二次开发。这为在WinCC中引进满足实际需求的各种滤波算法提供了基础的编辑平台。

  WinCC的全局脚本编辑器(Globe Script)为组态工程师提供了C脚本开发环境。它将函数分成项目函数、标准函数和内部函数三种类型,其中项目函数是组态工程师自己开发的符合C语言规范的函数,编译后的项目函数允许用户在整个项目内像调用C语言内部函数一样自由使用;标准函数是WinCC系统自带的在C语言基础上开发的若干组态常用函数,允许组态工程师对之进行更改;内部函数是C语言自带的系统函数,不允许组态工程师编辑修改。组态工程师可以在组态画面中利用函数,实现各组件的动态化。可见,编辑相应的项目函数是实现不同用户系统独立功能的一个主要途径和技术手段。

  此处以风机系统轴温的采集处理为例,说明WinCC中如何利用脚本实现数据滤波功能。控制系统要求对高压风机轴承温度实现实时在线观测、实现上下限报警、进行数据归档、报表打印等功能。

  为获取正确轴承温度,WinCC在对采集的数据进行线性标定前,必须对PLC采集进来的温度值进行滤波,以剔除干扰数据。为实现此目的,在系统程序中编写了滤波算法函数,并利用画面组态动态化和动作脚本两种方法实现了滤波,分别介绍如下。

  在系统硬件构成中,现场温度传感器,将轴承温度对应的电信号经由模拟量输入模块(AI)送入PLC,而上位机则通过该PLC网络地址和该AI端口地址获取轴承温度的对应信号值。

  为了获取现场数据,需要在WinCC中建立与外部设备对应的数据通道,这种通道的连接在WinCC是通过定义外部变量的方式实现的。这里定义外部变量gyfj_plc,通过地址赋值,使之与PLC中采集高压风机轴承温度传感器信号的AI端口相连。除此之外在WinCC中定义了一个对应的内部变量gyfj_inner用以存储滤波后最终的处理结果。

  3.2项目函数的创建

  在利用WinCC提供的Globe Script编辑器创建了新的项目函数滤波函数lb( )。

  滤波函数流程如图2所示,为节省篇幅,这里采用平滑滤波算法,取6次实时信号求平均作为正确信号。在Globe Script中新建项目函数,保存为lb.fct,在函数内输入如下脚本:

  void lb( char*ID_InName,char*ID_SavetempName)

  {

  double result,temp;

  static double tmp[7];

  static int count=0;

  int i;

  char * name;

  count=count+1;

  if (count<=6 )

  {tmp[count]=GetTagDouble(ID_InName);

  printf("tmp[%d]=%f\n",count,tmp[count]);

  }

  else

  { temp=0;

  for (i=1;i<=6;i++)

  {temp=temp+tmp[i];

  }

  temp=temp/6;

  SetTagDouble(ID_SavetempName,temp);

  count=0;

  }

  }



图2 处理方法流程图

  为使该滤波具有通用性,在函数名定义部分引入了两个char类型的形参,用以传递将要处理的变量名称,其中第一个形参ID_InName为滤波前的过程变量名称,第二个形参为滤波后存储信号的标签名称。通过该函数,将受干扰的信号进行滤波后,存入新的变量中。

  3.3画面组态动态化


图3 I/O域动态化实现滤波

  在组态画面时,即可通过周期性或非周期性调用项目函数lb ( )对准备进行滤波的数据通道进行滤波保证内部变量gyfj_inner存储为正确的过程信号值。在此利用一I/O域进行该函数的周期性调用。只需对该I/O域“Output Value”属性进行C-Action动态化,在弹出的“Edit Action”窗口中正确调用上面创建的滤波项目函数lb( )即可,如图3所示,调用中依次传递了含干扰的过程值变量名称gyfj_plc和滤除干扰后的过程值存储变量名称gyfj_inner。为了实现周期性的自动进行滤波处理,只需要设置C-Action的触发条件为符合实际需要的周期即可。

  3.4优化的WinCC动作脚本

  在3.3中所示方法虽可以实现滤波要求,但是只有当包含了lb( )函数动态化的画面为当前画面时,才能执行滤波函数,如果切换到其它不含有lb ( )动态化的画面,对应通道的数据滤波处理将停止。这样在一些变化比较快的模拟量的显示采集过程中显而易见是存在比较大的缺陷的,必须进行优化。

  除了函数之外,WinCC脚本编辑器还允许用户编写一类被称之为“动作”的脚本,在“动作”脚本中,组态工程师可以调用任何函数或者根据需要编写新的处理功能。与函数功能不同之处在于,函数功能必须得在组态画面中进行函数调用才能得以实现,而“动作”在定义之初即可指定触发(即执行该脚本)条件,只要WinCC项目被激活,“动作”将一直判断指定的触发是否满足,只要满足,即执行改“动作”脚本代码所描述的内容,组态工程师可以以时间(周期)形式或者以变量形式指定触发条件。

  动作脚本,为取保预定通道的数据处理能够独立于画面运行提供了可能。该方法需建一个新的全局动作,全局动作定义格式如下:

  #include "apdefap.h"

  int gscAction( void )

  {

  lb("gyfj_plc","gyfj_inner");

  }

  选择时间周期或选择预处理通道对应外部变量作为的触发器,这样一旦系统激活,函数体内的程序就会周期性执行该动作或一旦PLC传过来的数据发生变化就执行动作。可见该方法将不再依赖于画面的动态化去进行数据的处理,对于需进行实时处理的数据,使用动作脚本将会取得更好的效果。

  通过以上述方法,可以根据用户需要,在IPC端对现场数据进行包括滤波在内的各种复杂的处理,以得到合理的、准确的数据,为其他应用提供可靠数据源。

4 结束语

  进入二十一世纪后,工业自动化水平日益提高,人机界面技术在国内外的工业生产、自动化控制等领域已得以越来越多的认可,其中组态软件以其开发周期短、功能强大等特点在业界得以广泛的关注。本文通过实际项目简述了利用组态软件WinCC进行数据处理的基本思路和优化方法,指明了如何利用WinCC后台强大的脚本功能实现各种数据处理算法的一般过程。实践证明,该方法不仅有效的节约了系统资源而且能够实时显示和跟踪数据变化,满足现场使用的要求。

  本文作者创新点:将人机界面引入自控系统,实现了良好的人机交互;利用计算机运行速度快、容量大的特点,把包括数据滤波的各类复杂的数据处理放在了WinCC中进行,提高了设备利用率,增快了响应速度,降低了PLC数据处理的开销。

参考文献

  [1] 王硕禾,万健如.矩阵电路实现PLC输出口的扩展[J]《电气应用》,2005(6):51-53

  [2] 王硕禾.袋式除尘器计算机控制系统设计[J]《微计算机信息》,2005(9):77-79

  [3]西门子(中国)有限公司自动化与驱动集团. SIMATIC WinCC V5 基础手册[M]. 1997

  [4]西门子(中国)有限公司自动化与驱动集团. SIMATIC WinCC V5 通讯手册[M]. 1997

  [5]西门子(中国)有限公司自动化与驱动集团. SIMATIC WinCC V5 全局脚本手册[M]. 1997

 
打赏
 
更多>同类技术
0相关评论

推荐图文
推荐技术
点击排行
网站首页  |  免责声明  |  联系我们  |  关于我们  |  网站地图  |  排名推广  |  广告服务  |  积分换礼  |  RSS订阅  |  违规举报  |  鲁ICP备12015736号-1
Powered By DESTOON