西門子WinCC的C腳本——對象的事件任務

在《西門子WinCC畫面組態——腳本系統及C腳本的簡單介紹》一文中,介紹了C腳本的一些基本概念,比較枯燥,對初學者而言理解起來有些困難。接下來的幾篇文章,駝子將通過實例來詳細探討一下C腳本。

上篇文章已介紹,編寫C腳本共有3個入口:

2、 對象的屬性任務;

3、 對象的事件任務。

本文探討一下用C腳本來實現對象的事件任務。

一、例程說明

如圖1所示,為本例程的運行畫面。本例程實現以下功能:

畫面主要由兩個對象構成,輸入/輸出域關聯一個內部變量(temp1),並實時顯示其值。按鈕("點擊+1")則響應鼠標點擊事件,每點擊一下按鈕,temp1自增1。按鈕的實現響應通過C腳本來實現。

西門子WinCC的C腳本——對象的事件任務

圖1 事件任務實例

二、配置輸入/輸出域

西門子WinCC的C腳本——對象的事件任務

圖2 輸入/輸出域

輸入/輸出域的配置不做過多介紹,如圖2所示。將其輸出值與內部變量temp1關聯,並配置成"有變化時"更新即可。

三、編寫C腳本,響應按鈕事件

如圖3所示,在按鈕的"事件"選項卡中,為"鼠標動作"事件配置事件響應,選擇"C動作",即為C腳本。點擊即可進入C動作腳本編輯窗口,如圖4所示。

這即是C腳本的入口之一:事件任務入口。

西門子WinCC的C腳本——對象的事件任務

圖3 按鈕動作

西門子WinCC的C腳本——對象的事件任務

圖4 動作腳本

在圖4所示的腳本編輯窗口中,編寫合適的C代碼。本例程實現的功能比較簡單,當按鈕被點擊後,即觸發了按鈕的事件響應動作,完成以下任務:

1、 通過函數GetTagDouble讀取內部變量"temp1"的當前值,並賦值給變量i(由於"temp1"定義為32為浮點數,因此,這裡局部變量i聲明為double型);

2、 i自增1;

3、 當i>10時,令i=0。該代碼的目的是限制"temp1"的值,不讓其無限制的增大;

4、 通過函數SetTagDouble將當前i值賦值給內部變量"temp1",即實現每點擊一次按鈕,"temp1"自增1的功能。

代碼比較簡單,不做詳細介紹。其中GetTagDouble和SetTagDouble時WinCC的內部函數,其具體用法,留待以後集中討論。

通過C腳本實現的事件響應動作,編譯無誤後,其符號為帶字母C的綠色閃電,如圖5所示。

西門子WinCC的C腳本——對象的事件任務

圖5 按鈕的C動作

四、小結

我們知道,一個動作要被執行,必須有相應的觸發器。本例中的按鈕事件動作的觸發器即為鼠標的點擊動作,鼠標點擊按鈕一次,動作被觸發一次,動作內的代碼就會執行一次;再次點擊,則再次執行。

駝子以為,要想理解腳本動作的執行過程,從事件任務響應開始學起是個不錯的選擇,它無需我們額外的分配觸發器,卻能很清晰的捋順動作的執行過程。

西门子WinCC的C脚本——对象的事件任务


分享到:


相關文章: