咨詢(xún)熱線(xiàn)

      18621916738

      當(dāng)前位置:首頁(yè)  >  技術(shù)文章  >  西門(mén)子WinCC中定時(shí)器使用方法介紹

      西門(mén)子WinCC中定時(shí)器使用方法介紹

      更新時(shí)間:2015-10-29      點(diǎn)擊次數(shù):2156

      西門(mén)子WinCC中定時(shí)器使用方法介紹

      1、定時(shí)器功能介紹
      2、腳本中定時(shí)器介紹
      3、使用腳本實(shí)現(xiàn)更多定時(shí)器功能
      3.1 整點(diǎn)歸檔
      3.2 WinCC 項(xiàng)目激活時(shí)避免腳本初次執(zhí)行及延遲執(zhí)行腳本1 定時(shí)器功能介紹
          WinCC 中定時(shí)器的使用可以使 WinCC按照的周期或者時(shí)間點(diǎn)去執(zhí)行任務(wù),比如周期執(zhí)行變量歸檔、在的時(shí)間點(diǎn)執(zhí)行全局腳本或條件滿(mǎn)足時(shí)打印報(bào)表。WinCC 已經(jīng)提供了一些簡(jiǎn)單的定時(shí)器,可以滿(mǎn)足大部分定時(shí)功能。但是在有些情況下,WinCC 提供的定時(shí)器不能滿(mǎn)足我們需求,這時(shí)我們就可以通過(guò) WinCC 提供的腳本接口通過(guò)編程的方式實(shí)現(xiàn)定時(shí)的功能,因?yàn)槟_本本身既可以直接 調(diào)用 WinCC其他功能,比如報(bào)表打印,也可以通過(guò)中間變量來(lái)控制其他功能的執(zhí)行,比如通過(guò)置位/復(fù)位歸檔控制變量來(lái)觸發(fā)變量記錄的執(zhí)行。WinCC 提供了 C 腳本和 VBS 腳 本,本文主要以全局 C 腳本編程為例介紹定時(shí)功能的實(shí)現(xiàn)。
      2 腳本中定時(shí)器介紹     既然在全局腳本中可以編程控制其他功能的執(zhí)行,那么首先看看全局腳本的觸發(fā):


      1

                               圖1   腳本觸發(fā)器分類(lèi) 如圖1所示: 腳本觸發(fā)器分為使用定時(shí)器和使用變量, 定時(shí)器又分為周期執(zhí)行和非周期執(zhí)行一次,比如每分鐘執(zhí)行一次腳本屬于周期執(zhí)行,2012年10月1日?qǐng)?zhí)行一次屬于非周期執(zhí)行。 使用變量觸發(fā)腳本,即在變量發(fā)生變化時(shí),腳本就執(zhí)行一次, 而變量的采集可以根據(jù)周期循環(huán)采集,或者根據(jù)變化采集,根據(jù)變化實(shí)際是1秒 鐘采集變量一次。
      3使用腳本實(shí)現(xiàn)更多定時(shí)器功能
         利用腳本自身的定時(shí)器, 可以通過(guò)在腳本中編程的方式實(shí)現(xiàn)更多其它定時(shí)功能。

      3.1整 點(diǎn)歸檔

          WinCC提供了變量歸檔,變量歸檔分為周期歸檔和非周期歸檔,不管是周期歸檔或非周期的歸檔,都又可以通過(guò)一些 變量或腳本返回值來(lái)控制歸檔, 比如:整點(diǎn)歸檔。下面的設(shè)置結(jié)合WinCC腳本,實(shí)現(xiàn)了在 整點(diǎn)開(kāi)始?xì)w檔,歸檔五分種后停止歸檔,即每個(gè)小時(shí)僅歸檔前五分鐘的數(shù)據(jù)。
          軟件環(huán)境:Windows 7 Professional Service Pack1 , WinCC V7.0 SP3
          歸檔名稱(chēng):ProcessValueArchive
          歸檔變量:NewTag
          歸檔周期:1 分鐘
          歸檔控制變量  startarchive
          C腳本觸發(fā)周期: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;
      }
      歸檔設(shè)置如圖2:

                           圖2   歸檔設(shè)置
          同理,在以上腳本的基礎(chǔ)上做修改,可以實(shí)現(xiàn)在某個(gè)的時(shí)間點(diǎn)打印報(bào)表,只要在滿(mǎn)足觸發(fā)條件時(shí)調(diào)用下列函數(shù):    
             RPTJobPrint(" Myprintjob");
            Myprintjob為 事先創(chuàng)建好的打印作業(yè)。 
             腳 本主要部分在于獲取系統(tǒng)當(dāng)前時(shí)間,下 面的腳本實(shí)現(xiàn)了獲取當(dāng)前時(shí)間并分別獲取年、月、日、時(shí)、分、秒、毫秒,星期幾的功能。
       
          Varname1 到 Varname8 為 WinCC 內(nèi)部變量。若在 WinCC畫(huà)面上顯示時(shí),由于默認(rèn) 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;
      }
          設(shè)置或讀取系統(tǒng)時(shí)間的函數(shù)如下: 
              SetSystemTime
              SetLocalTime
              GetSystemTime
              GetLocalTime 
          系統(tǒng)中本地計(jì)算機(jī)時(shí)間和格林威治時(shí)間是有區(qū)別的。函數(shù)“SetSystemTime / GetSystemTime"用于設(shè)置或讀取格林威治時(shí)間。
         函數(shù)“SetLocalTime / GetLocalTime"用于設(shè)置或讀取本地計(jì)算機(jī)時(shí)間。
        兩種時(shí)間會(huì)因地理的時(shí)區(qū)不同而改變。兩個(gè)函數(shù)使用方法相 同。
        3.2 WinCC 項(xiàng)目激活時(shí)避免腳本初次執(zhí)行及延遲執(zhí)行腳本
          全局腳本在項(xiàng)目激活時(shí),是要執(zhí)行一次的,在有些情況下,需要避免腳本執(zhí)行,就采用在腳本中去判斷。比如 可以創(chuàng)建 WinCC 內(nèi)部布爾型變量 flag,腳本如下:
        #Include "apdefap.h"
      intgscAction( void )
      {
            #pragma option(mbcs)
       
            if ( GetTagBit("flag")==1) 
                    SetTagWord("NewTag",1);//根據(jù)自己的需求編寫(xiě)對(duì)應(yīng)代碼.
           else
                    SetTagBit("flag",1);    //Return-Type: BOOL
      return0;
      }
          除了避免項(xiàng)目運(yùn)行激活時(shí)觸發(fā)腳本執(zhí)行,我們 還可以通過(guò) Sleep() 延遲腳步功能執(zhí)行,比如開(kāi)機(jī)后五分鐘開(kāi)始執(zhí)行腳本具體功能,代碼如下:
        #Include "apdefap.h"
      intgscAction( void )

      聯(lián)系我們

      上海翰粵自動(dòng)化系統(tǒng)有限公司 公司地址:上海市松江區(qū)思賢路2399弄137號(hào)   技術(shù)支持:化工儀器網(wǎng)
      • 聯(lián)系人:黃政武
      • QQ:76868608
      • 公司傳真:021-57657276
      • 郵箱:76868608@qq.com

      掃一掃 更多精彩

      微信二維碼

      網(wǎng)站二維碼

      亚洲av无码乱码在线观看野外| 亚洲国产成人高清在线观看 | 中文亚洲AV片在线观看不卡| 亚洲乱亚洲乱少妇无码| 亚洲精品无码永久在线观看男男| 免费观看亚洲人成网站| 337p欧洲亚洲大胆艺术| 久久精品国产亚洲夜色AV网站| 亚洲一区无码中文字幕| 亚洲综合日韩久久成人AV| 国产精品亚洲mnbav网站| 久久久久亚洲?V成人无码| 国产性爱在线观看亚洲黄色一级片 | 激情内射亚洲一区二区三区爱妻| 亚洲精品乱码久久久久久下载| 亚洲经典在线中文字幕| 亚洲精品偷拍无码不卡av| 亚洲剧情在线观看| 亚洲欧洲日韩极速播放| 亚洲欧洲国产精品你懂的| 亚洲国产精品久久66| 亚洲综合在线成人一区| 亚洲一区电影在线观看| 国产成人亚洲精品| 亚洲中文字幕AV每天更新| 亚洲福利电影一区二区?| 亚洲国产日韩在线一区| 久久国产亚洲精品| 激情小说亚洲色图| 亚洲人成国产精品无码| 亚洲精品国产精品乱码不99 | 亚洲国产成人高清在线观看| 亚洲va国产va天堂va久久| 久久精品国产亚洲av麻豆小说 | 亚洲国产成人精品无码久久久久久综合 | 亚洲美女大bbbbbbbbb| 亚洲av永久综合在线观看尤物| 亚洲人av高清无码| 亚洲高清无码专区视频| 亚洲欧洲无码AV电影在线观看 | 久久综合亚洲色hezyo|