WinCC中定时器使用方法介绍.doc_第1页
WinCC中定时器使用方法介绍.doc_第2页
WinCC中定时器使用方法介绍.doc_第3页
WinCC中定时器使用方法介绍.doc_第4页
WinCC中定时器使用方法介绍.doc_第5页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

WinCC中定时器使用方法介绍1定时器功能介绍WinCC中定时器的使用可以使WinCC按照指定的周期或者时间点去执行任务,比如周期执行变量归档、在指定的时间点执行全局脚本或条件满足时打印报表。WinCC已经提供了一些简单的定时器,可以满足大部分定时功能。但是在有些情况下,WinCC 提供的定时器不能满足我们需求,这时我们就可以通过 WinCC提供的脚本接口通过编程的方式实现定时的功能,因为脚本本身既可以直接调用WinCC其他功能,比如报表打印,也可以通过中间变量来控制其他功能的执行,比如通过置位/复位归档控制变量来触发变量记录的执行。WinCC 提供了C 脚本和VBS脚本,本文主要以全局 C 脚本编程为例介绍定时功能的实现。2脚本中定时器介绍既然在全局脚本中可以编程控制其他功能的执行,那么首先看看全局脚本的触发:图1 脚本触发器分类如图1所示: 脚本触发器分为使用定时器和使用变量, 定时器又分为周期执行和非周期执行一次,比如每分钟执行一次脚本属于周期执行,指定2012年10月1日执行一次属于非周期执行。 使用变量触发脚本,即在变量发生变化时,脚本就执行一次, 而变量的采集可以根据指定周期循环采集,或者根据变化采集,根据变化实际是1秒钟采集变量一次。3使用脚本实现更多定时器功能利用脚本自身的定时器, 可以通过在脚本中编程的方式实现更多其它定时功能。3.1整点归档WinCC提供了变量归档,变量归档分为周期归档和非周期归档,不管是周期归档或非周期的归档,都又可以通过一些变量或脚本返回值来控制归档, 比如:整点归档。下面的设置结合WinCC脚本,实现了在整点开始归档,归档五分种后停止归档,即每个小时仅归档前五分钟的数据。软件环境:Windows 7 Professional Service Pack1 , WinCC V7.0 SP3归档名称:ProcessValueArchive归档变量:NewTag归档周期:1 分钟归档控制变量 startarchiveC脚本触发周期:10秒脚本代码:#include apdefap.hint gscAction( void )#pragma option(mbcs)#pragma code (kernel32.dll);void GetLocalTime (SYSTEMTIME* lpst);#pragma code();SYSTEMTIME time;int t1;GetLocalTime(&time);t1=time.wMinute;if(t1=00)SetTagBit(startarchive,1);if(t1=05)SetTagBit(startarchive,0);return 0;归档设置如图2:图2 归档设置同理,在以上脚本的基础上做修改,可以实现在某个指定的时间点打印报表,只要在满足触发条件时调用下列函数:RPTJobPrint(Myprintjob);Myprintjob为事先创建好的打印作业。脚本主要部分在于获取系统当前时间,下面的脚本实现了获取当前时间并分别获取年、月、日、时、分、秒、毫秒,星期几的功能。Varname1到Varname8为WinCC内部变量。若在WinCC画面上显示时,由于默认I/O 域的格式为999.99, 要把 Varname1的显示格式改为9999。#include apdefap.hint gscAction( void )#pragma option(mbcs)#pragma code (kernel32.dll);void GetLocalTime (SYSTEMTIME* lpst);#pragma code();SYSTEMTIME time;GetLocalTime(&time);SetTagWord(Varname1,time.wYear);SetTagWord(Varname2,time.wMonth);SetTagWord(Varname3,time.wDayOfWeek);SetTagWord(Varname4,time.wDay);SetTagWord(Varname5,time.wHour);SetTagWord(Varname6,time.wMinute);SetTagWord(Varname7,time.wSecond);SetTagWord(Varname8,time.wMilliseconds);return 0;设置或读取系统时间的函数如下:SetSystemTimeSetLocalTimeGetSystemTimeGetLocalTime系统中本地计算机时间和格林威治时间是有区别的。函数“SetSystemTime /GetSystemTime”用于设置或读取格林威治时间。函数“SetLocalTime / GetLocalTime”用于设置或读取本地计算机时间。两种时间会因地理的时区不同而改变。两个函数使用方法相同。3.2 WinCC项目激活时避免脚本初次执行及延迟执行脚本全局脚本在项目激活时,是要执行一次的,在有些情况下,需要避免脚本执行,就采用在脚本中去判断。比如可以创建WinCC内部布尔型变量 flag,脚本如下:#include apdefap.hint gscAction( void )#pragma option(mbcs)if ( GetTagBit(flag)=1)SetTagWord(NewTag,1);/根据自己的需求编写对应代码.elseSetTagBit(flag,1); /Return-Type: BOOLreturn 0;除了避免项目运行激活时触发脚本执行,我们还可以通过Sleep() 延迟脚本功能执行,比如开机后五分钟开始执行脚本具体功能,代码如下:#include apdefap.hint gscAction( void )#pragma option(mbcs)#pragma option(mbcs)#pragma code(Kernel32.dll);void Sleep(int milliseconds);#pragma code()Sleep(300000);

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论