定时器功能介绍

上传人:新** 文档编号:513007504 上传时间:2022-09-11 格式:DOCX 页数:10 大小:88.12KB
返回 下载 相关 举报
定时器功能介绍_第1页
第1页 / 共10页
定时器功能介绍_第2页
第2页 / 共10页
定时器功能介绍_第3页
第3页 / 共10页
定时器功能介绍_第4页
第4页 / 共10页
定时器功能介绍_第5页
第5页 / 共10页
点击查看更多>>
资源描述

《定时器功能介绍》由会员分享,可在线阅读,更多相关《定时器功能介绍(10页珍藏版)》请在金锄头文库上搜索。

1、1、定时器功能介绍2、脚本中定时器介绍3、使用脚本实现更多定时器功能31 整点归档32 WinCC 项目激活时避免脚本初次执行及延迟执行脚本1 定时器功能介绍WinCC 中定时器的使用可以使 WinCC 按照指定的周期或者时间点去执行任务,比如周期执行变量归档、在指定的时间点执行全局脚本或条件满足时打印报表WinCC已经提供了 一些简单的定时器,可以满足大部分定时功能。但是在有些情况下,WinCC提供的定时器不 能满足我们需求,这时我们就可以通过WinCC提供的脚本接口通过编程的方式实现定时的 功能,因为脚本本身既可以直接调用WinCC其他功能,比如报表打印,也可以通过中间变 量来控制其他功能

2、的执行,比如通过置位/复位归档控制变量来触发变量记录的执行。 WinCC 提供了 C 脚本和 VBS 脚 本,本文主要以全局 C 脚本编程为例介绍定时功能的实现。2 脚本中定时器介绍 既然在全局脚本中可以编程控制其他功能的执行,那么首先看看 全局脚本的触发:图 1 脚本触发器分类 如图 1 所示: 脚本触发器分为使用定 时器和使用变量, 定时器又分为周期执行和非周期执行一次,比如每分钟执行一次脚本属 于周期执行,指定2012年10月1日执行一次属于非周期执行。 使用变量触发脚本,即在 变量发生变化时,脚本就执行一次, 而变量的采集可以根据指定周期循环采集,或者根据 变化采集,根据变化实际是1

3、秒 钟采集变量一次。3 使用脚本实现更多定时器功能利用脚本自身的定时器, 可以通过在脚本中编程的方式实现更多其它定时功能。31 整 点归档WinCC 提供了变量归档,变量归档分为周期归档和非周期归档,不管是周期归档或非周 期的归档,都又可以通过一些 变量或脚本返回值来控制归档, 比如:整点归档。下面的设 置结合WinCC脚本,实现了在整点开始归档,归档五分种后停止归档,即每个小时仅归档 前五分钟的数据。软件环境:Windows 7 Professional Service Packl , WinCC V7.0 SP3归档名称: ProcessValueArchive归档变量: NewTag归档

4、周期: 1 分钟归档控制变量 startarchiveC 脚本触发周期: 10 秒脚本代码:#include apdefap.hintgscAction( 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(sta

5、rtarchive,0);return0;归档设置如图 2:AcqustwEventsTagCscnpl丁卸sfnitveC scnplStw:TagC icnptAndievinjArcMngtypefcttOnt Q匚图 2 归档设置同理,在以上脚本的基础上做修改,可以实现在某个指定的时间点打印报表,只要在满足触发条件时调用下列函数:RPTJobPrint( Myprintjob);Myprintjob 为 事先创建好的打印作业。脚 本主要部分在于获取系统当前时间,下 面的脚本实现了获取当前时间并分别获取年、月、日、时、分、秒、毫秒,星期几的功能。Varname1 到 Varname8 为

6、 WinCC 内部变量。若在 WinCC 画面上显示时,由于默认 I/O 域的 格式为 999.99, 要把 Varname1 的显示格式改为9999。#include apdefap.h#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);SetTa

7、gWord(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系统中本地计算机时间和格林威治时间是有区别的。

8、函数“SetSystemTime /Get Sys temTime”用于设置或读取格林威治时间。函数“SetLocalTime / GetLocalTime”用于设置或读取本地计算机时间。两种时间会因地理的时区不同而改变。两个函数使用方法相 同。32 WinCC 项目激活时避免脚本初次执行及延迟执行脚本全局脚本在项目激活时,是要执行一次的,在有些情况下,需要避免脚本执行,就采用在脚本中去判断。比如 可以创建WinCC内部布尔型变量flag,脚本如下:#include apdefap.h#pragma option(mbcs)if( GetTagBit(flag)=1)SetTagWord(Ne

9、wTag,1);/根据自己的需求编写对应代码.elseSetTagBit(flag,1); /Return-Type: BOOLreturn0;除了避免项目运行激活时触发脚本执行,我们 还可以通过Sleep()延迟脚步功能执行,比如开机后五分钟开始执行脚本具体功能,代码如下:#includeapdefap.hintgscAction( void )#pragmaoption(mbcs)#pragmaoption(mbcs)#pragma code(Kernel32.dll);voidSleep(int milliseconds);#pragma code()Sleep(300000); /延迟

10、300秒即五分钟int temp;/根据自己的需求编写对应代码.temp=GetTagWord(NewTag);/Return-Type: WORDtemp+;SetTagWord(NewTag,temp);return 0;不管是整点归档或者延迟执行脚本,脚本中的参数都可以在运行期间通过 WinCC 的画 面动态设定。注意事项应用示例与所示电路、设备及任何可能结果没有必然联系,并不完全相关。应用示例不表 示客户的具体解决方案。它们仅对典型应用提供支持。用户负责确保所述产品 的正确使用。 这些应用示例不能免除用户在确保安全、专业使用、安装、操作和维护设备方面的责任。当 使用这些应用示例时,应意识到西门子不对在所述责任条款 范围之外的任何损坏/索赔承担 责任。我们保留随时修改这些应用示例的权利,恕不另行通知。如果这些应用示例与其它西门子出版 物(例如,目录)给出的建议不同,则以其它文档的内容为准。

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 学术论文 > 其它学术论文

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号