<ins id="vfpbr"><sub id="vfpbr"><p id="vfpbr"></p></sub></ins>

    <ol id="vfpbr"></ol>

    <ins id="vfpbr"></ins>
    <ol id="vfpbr"><sub id="vfpbr"><video id="vfpbr"></video></sub></ol>
    <ol id="vfpbr"></ol>

          <ol id="vfpbr"><menuitem id="vfpbr"><video id="vfpbr"></video></menuitem></ol>
          <ins id="vfpbr"><menuitem id="vfpbr"><video id="vfpbr"></video></menuitem></ins>
          <ins id="vfpbr"><sub id="vfpbr"><del id="vfpbr"></del></sub></ins>

          <ins id="vfpbr"></ins>
          <ol id="vfpbr"></ol>
          <ins id="vfpbr"></ins><ins id="vfpbr"></ins>

          <ins id="vfpbr"></ins>

            <ins id="vfpbr"></ins>
            咨询热线

            18621916738

            当前位置:首页  >  技术文章  >  西门子WinCC中定时器使用方法介绍

            西门子WinCC中定时器使用方法介绍

            更新时间:2015-10-29      点击次数:2139

            西门子WinCC中定时器使用方法介绍

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


            1

                                     图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"
            intgscAction( 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);    
             } 
            return0;
            }
            归档设置如图2:

                                 图2   归档设置
                同理,在以上脚本的基础上做修改,可以实现在某个的时间点打印报表,只要在满足触发条件时调用下列函数:    
                   RPTJobPrint(" Myprintjob");
                  Myprintjob为 事先创建好的打印作业。 
                   脚 本主要部分在于获取系统当前时间,下 面的脚本实现了获取当前时间并分别获取年、月、日、时、分、秒、毫秒,星期几的功能。
             
                Varname1 到 Varname8 为 WinCC 内部变量。若在 WinCC画面上显示时,由于默认 I/O 域的 格式为999.99, 要把 Varname1 的显示格式改为9999。 
              #Include "apdefap.h"
            intgscAction( 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"
            intgscAction( void )
            {
                  #pragma option(mbcs)
             
                  if ( GetTagBit("flag")==1) 
                          SetTagWord("NewTag",1);//根据自己的需求编写对应代码.
                 else
                          SetTagBit("flag",1);    //Return-Type: BOOL
            return0;
            }
                除了避免项目运行激活时触发脚本执行,我们 还可以通过 Sleep() 延迟脚步功能执行,比如开机后五分钟开始执行脚本具体功能,代码如下:
              #Include "apdefap.h"
            intgscAction( void )

            联系我们

            上海翰粤自动化系统有限公司 公司地址:上海市松江区思贤路2399弄137号   技术支持:化工仪器网
            • 联系人:黄政武
            • QQ:76868608
            • 公司传真:021-57657276
            • 邮箱:76868608@qq.com

            扫一扫 更多精彩

            微信二维码

            网站二维码

            国产动作大片中文字幕 <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <文本链> <文本链> <文本链> <文本链> <文本链> <文本链>