家电维修班,手机维修班,电脑维修班,电工班,焊工班,液晶电视维修班,电动工具维修班、电动车摩托车维修班、网络营销培训、网站设计培训、淘宝培训---全国招生 家电维修班,手机维修班,电脑维修班,电工班,焊工班,液晶电视维修班,电动工具维修班、电动车摩托车维修班、网络营销培训、网站设计培训、淘宝培训---全国招生
您的位置:网站首页 > 电工技术 > 正文

WinCC中定时器使用方法

文章导读:WinCC中定时器使用方法具体内容是:1定时器功能介绍wincc中定时器的使用可以使wincc按照指定的周期或者时间点去执行任务,比如周期执行变量归档、在指定的时间点执行全局脚本或条件满足时打印报表。wincc已经提供了一些简单的定时器,可以满足大部分定…

作者:来源: 日期:2014-04-03 15:16:36 人气:标签:

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 分钟
归档控制变量 startarchive
c脚本触发周期:10秒
脚本代码:
#include "apdefap.h"

int 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.h"

int 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;
}

设置或读取系统时间的函数如下:

setsystemtime
setlocaltime
getsystemtime
getlocaltime

系统中本地计算机时间和格林威治时间是有区别的。函数“setsystemtime /

getsystemtime”用于设置或读取格林威治时间。

函数“setlocaltime / getlocaltime”用于设置或读取本地计算机时间。

两种时间会因地理的时区不同而改变。两个函数使用方法相同。

3.2 wincc项目激活时避免脚本初次执行及延迟执行脚本

全局脚本在项目激活时,是要执行一次的,在有些情况下,需要避免脚本执行,就采用在脚本中去判断。比如可以创建wincc内部布尔型变量 flag,脚本如下:

#include "apdefap.h"

int gscaction( void )
{

#pragma option(mbcs)

if ( gettagbit("flag")==1)
settagword("newtag",1);//根据自己的需求编写对应代码.
else
settagbit("flag",1); //return-type: bool

return 0;
}

除了避免项目运行激活时触发脚本执行,我们还可以通过sleep() 延迟脚本功能执行,比如开机后五分钟开始执行脚本具体功能,代码如下:

#include "apdefap.h"

int gscaction( void )
{

#pragma option(mbcs)
#pragma option(mbcs)
#pragma code("kernel32.dll");
void sleep(int milliseconds);
#pragma code()

sleep(300000); //延迟300秒即五分钟

int temp;

//根据自己的需求编写对应代码.
temp=gettagword("newtag"); //return-type: word
temp++;
settagword("newtag",temp);

return 0;
}


【看看这篇文章在百度的收录情况】
友情链接: 手机维修培训 监控安装培训 手机维修学校 液晶维修学校 焊工技术学校 家电维修学校 电脑维修学校 电脑维修培训 手机维修培训 电动工具学校 家电维修学校 家装电工培训 电工培训学校 手机维修学校 焊工培训学校 电动工具维修学校 液晶电视维修培训 电动工具维修培训 家电维修培训 家电维修学校 学家电维修 学电脑维修 学手机维修 学电动车摩托车维修 学电工技术 家电维修技术学校 阳光电子学校 学家电维修学校 学电脑维修学校 摩托车维修学校 焊工技术学校 空调维修学校 知识问答网 电动车摩托车维修学校 电工考证学校 电动车摩托车维修培训 摩托车维修学校 电动车维修学校 电器维修学校 电器维修培训 电工焊工学校 电焊工学校 摩托车维修培训 电动车维修培训 电动车摩托车维修学校 空调维修培训学校 笔记本维修培训 维修培训网 中学试卷网 有问必答网 一问三知网 阳光招生网 计算机维修培训学校 更多>>
阳光-中国电工焊工培训品牌倡导者
点击这里给我发消息 点击这里给我发消息 点击这里给我发消息
电工培训学校 电动车维修学校 摩托车维修学校 摩托车维修培训 手机维修培训 家电维修培训 电脑维修培训 电动工具维修培训 液晶电视维修培训 安防监控培训 空调维修培训 网络营销培训 网站设计培训 淘宝网店培训 电器维修培训 家电维修学校 电工培训 焊工培训 电工学校