西門子WinCC畫面組態——腳本系統及C腳本的簡單介紹

WinCC中的對象實現動態化的方法有很多種,比如:對象的動態屬性可以通過動態對話框、C動作、VBS動作以及變量連接等實現;而對象的事件響應則可以通過C動作、VBS動作以及直接連接等實現。原則上,我們在配置畫面對象時,儘量選擇最簡單的方式,即能用直接連接的,就儘可能不用腳本來實現。但在做一些中、大型項目時,要實現一些較為複雜的功能時,腳本就顯得很有必要了。

WinCC的支持C腳本和VBS腳本。腳本本質上是一段用C或VB編寫的代碼,用以實現一些特定的功能。這裡,我們簡單介紹一下C腳本的概念。如圖1所示,為WinCC腳本的分類。

西門子WinCC畫面組態——腳本系統及C腳本的簡單介紹

圖1 腳本分類

1、函數和動作

函數和動作本質上都是一段代碼。如圖1所示,函數分為嵌入函數和用戶函數。嵌入函數用戶只能使用,不能修改;而用戶函數則可由用戶根據實際需要創建和修改,用戶函數又分為項目函數、標準函數和DLL函數,它們各自的用法我們將在後面逐步展開討論。

動作由用戶自己創建,必要時可以進行口令保護,防止未經授權的人對其進行修改和查看。動作要想執行,必須至少為其分配一個觸發器。

動作分為全局動作和局部(本地)動作。在客戶機-服務器項目中,全局動作在項目中所有計算機中都可執行;而局部動作則只能在對其進行分配的計算機上執行。當你創建的是單用戶項目時,全局動作和局部動作之間就沒有太大的差別了。

2、腳本的執行過程

西門子WinCC畫面組態——腳本系統及C腳本的簡單介紹

圖2 腳本的執行過程

圖2所示,為腳本的執行過程。WinCC腳本的核心是動作。動作通過觸發器觸發來相應事件或改變畫面中對象的屬性等;函數則是一段特定功能的代碼,它本身並不能參與到WinCC的動態響應中去,動作在需要的時候,調用某個函數來實現既定功能。

一個動作觸發後,會執行其對應的代碼,在該代碼中,可能會調用到其他C代碼編寫的函數,相當於子程序。

3、觸發器

西門子WinCC畫面組態——腳本系統及C腳本的簡單介紹

圖3 觸發器的類型

如圖3所示,為觸發器的類型。一個動作可以由定時器觸發,也可以用變量觸發。定時器觸發又可分為循環觸發和非循環觸發;而變量觸發則可以選擇在某一變量值發生變化的時候觸發動作,也可以選擇採用"循環監視變量值"的方式。它們的區別留待以後慢慢展開。

一個動作可以同時分配若干個觸發器,任何一個觸發器有效了,動作就將被執行;而且,動作要想被執行,必須至少分配一個觸發器。

4、編寫C腳本的3個入口

編寫C腳本的3個入口:

a、 全局腳本編輯器(圖4):函數、與畫面無關的全局腳本動作。全局腳本編輯器中的動作要觸發執行,除了分配觸發器外,還需打開"全局腳本運行系統"。在項目下的計算機屬性中,"啟動"選項卡下即可打開,如圖5所示。(注意:這裡的全局腳本運行系統,指的是在全局腳本編輯器裡編輯的動作,包括全局動作和局部動作)。

西門子WinCC畫面組態——腳本系統及C腳本的簡單介紹

西門子WinCC畫面組態——腳本系統及C腳本的簡單介紹

圖5 啟動"全局腳本運行系統"

b、 屬性任務(圖6)

需要循環或變量來觸發腳本

西門子WinCC畫面組態——腳本系統及C腳本的簡單介紹

圖6 屬性任務

c、 事件任務(圖7)

通過事件來觸發腳本

西門子WinCC畫面組態——腳本系統及C腳本的簡單介紹

圖7 事件任務

屬性任務和事件任務從腳本編輯到功能實現上看起來區別不大,但在WinCC中它們屬於不同的2類腳本。在WinCC中,用3個不同的線程來處理C腳本的,這3個線程分別對應全局腳本動作、屬性任務和事件任務。3個線程互不影響,類似於在Windows中打開多個應用程序,而應用程序之間互不影響。

瞭解腳本線程是很有重要的,其重要性我們留待探討線程堵塞的時候再具體分析。


分享到:


相關文章: