對于全局腳本中使用的變量,我覺得使用wait函數會更好些,是因為如果不使用Wait函數,在整個WINCC的運行期間都都要占用周期性服務資源。而S7300的周期性資源只有4個,如果被全局腳本終始占用了一到兩個,我覺得浪費很大,對于多臺上位機運行的時候,這樣勢必使得使得周期性資源被占用太多,通訊效率有很大的降低。再說使用Wait功能只要執行時間不超過腳本的觸發周期,也沒有問題。
呵呵,WINCC映像區中注冊的變量越多,WINCC執行的負荷應該就越重,我覺得有時候不是通訊問題造成WINCC速度慢,因為這點通訊量對于以太網或者DP來說根本不是問題。
WinCC的 C 和 VBS 腳本的使用非常靈活,可以大大加強WinCC的各種功能,但若使用不當,確實會產生一些通訊問題。
有些不得不用腳本情況下,要謹慎使用,并多加注意即可:
首先,要了解 C 和VB 腳本的“排隊”執行和堵塞的特性。但好在 C 和 VB腳本又有各自不同的“隊列”,一定程度上實現了“多線程”的效果,所以可以有意識的將不同的任務分別放在C 或 VB腳本中執行,比如:一個按鈕的VBS執行數據庫讀寫,另一個按鈕C腳本執行UI處理,當VBS數據庫讀寫任務較重時,而按鈕的C腳本通常不會被其堵塞。
其次,要了解常用的GetTag系列函數的執行特性,具體如下:
問題:各種GetTag和SetTag函數之間有什么差別?
解答:
在WinCC的全局腳本里有幾種函數專門是用來提取(GetTag 函數)和設置函數值(SetTag 函數)的。
這里的列表給出了不同的函數及它們的功能:
SetTag 函數:
SetTagxxx
此函數給作業賦予一個值去寫,然后立即返回到調用函數。它并不等到值實際寫好后再返回。
該調用的明顯特點是:
此調用比較快。
調用函數并不清楚這個值實際是在何時寫的。
該函數也不提供寫作業狀態的有關信息。
SetTagxxxWait
此函數給作業賦予一個值去寫,但是只有當值已經寫好后才返回到調用函數。
該調用的明顯特點是:
該調用慢于SetTagxxx。其實際速度取決于通道和PLC的其它因素。
調用后值已經實際寫好。
該函數不提供寫作業狀態的有關信息。
SetTagxxxState
此函數具有SetTagxxx相同的特點。另外,SetTagxxxState函數還提供寫作業的狀態的信息。由于狀態永遠是內部提供的,故相比于SetTagxxx性能上沒有什么差別。
SetTagxxxStateWait
此函數具有與SetTagxxxWait相同的特點。但是SetTagxxxStateWait函數還提供了寫作業的狀態信息。由于狀態永遠是內部提供的,故相比于SetTagxxxWait性能上沒有什么差別。
SetTagxxxStateWait與SetTagxxxState這兩個函數間的差別與 SetTagxxxWait與SetTagxxx這兩個函數間的差別相對應。注意:當寫過程結束時只能給出某些狀態。
SetTagMultiWait
此函數的特點與SetTagxxxWait相同。但是它也提供在一個作業里發出多個寫作業的選件。
GetTag 函數:
GetTagxxx
當此函數被調用時變量被注冊下來。然后變量受到PLC的周期性請求。注冊的周期取決于觸發器(參看下面的敘述)。使用GetTagxxx調用,提供了WinCC中的可用值。取消了對圖像的選擇后,變量被再次注消。
注意:
如果變量在一個全局腳本動作里被請求,那么它將對WinCC的整個運行系統保持注冊狀態。
在回調函數里你必須使用相應的GetTagxxxWait函數。
變量觸發器的動作特點
在規定的監控時間里選擇圖像那一刻,變量觸發器里包含的所有變量已經注冊。如果觸發器里包含了被請求的變量,那么它的值已經可用并直接傳送到調用。
注意:
如果被請求的一個變量不包含在變量觸發器中,則其動作將與標準觸發器一樣。
標準變量觸發器的動作特點
第一次調用時,變量在半個周期時間里被注冊。其值對于后續的每個調用都可用。
事件觸發動作的特點
對于第一次調用,“當被修改后”變量被注冊。對于過程變量,其計時過程的管理取決于通道(缺省為1秒)。
注意:
如果在鼠標單擊事件背后由函數GetTagXXX請求一個值,那么變量被注冊,而且該變量自此之后被PLC周期性的請求。這增加了基本負荷。因此必須考慮是否用GetTagXXXWait請求值更好(只有一次高通訊負荷),也可因之避免注冊(增加基本負荷)。
GetTagxxxWait
變量不注冊。值僅僅被PLC請求一次。
此調用有下述特點:
此調用相比與GetTagxxx用的時間要長。其延續時間由通道和PLC決定。
當前值取自PLC。
該函數不提供變量狀態的任何信息。
GetTagxxxState
此函數具有與GetTagxxx相同的特點。但是GetTagxxxState 函數另外還提供變量狀態的信息。由于狀態永遠是內部提供的,故相比于GetTagxxx性能上沒有什么差別。
GetTagxxxStateWait
此函數具有與GetTagxxxWait相同的特點。但是GetTagxxxStateWait函數另外還提供變量狀態的信息。由于狀態永遠是內部提供的,故相比于GetTagxxxWait性能上沒有什么差別。
GetTagxxxStateWait與 GetTagxxxState函數的差別對應于GetTagxxxWait和GetTagxxx函數將的差別。注意,由于過程變量的值是從PLC讀得,它的狀態要比GetTagxxxState給出的狀態要更新一些。
GetTagMultiWait
此函數具有與 GetTagxxxWait相同的特點。但是它也提供在一個作業里請求多個變量的選件。)
另外,WinCC還提供了腳本中高效數據交換(批量讀寫)的函數和方法:GetTagMultiWait/SetTagMultiWait(VBS中的TagSet) 和 原始數據類型 RawData。
其中GetTagMultiWait是同步方式,可以一次讀取上百個不同類型的WinCC變量(不是數組),而所花費的時間卻和GetTagWait函數調用一次的時間差別不明顯,優化效果極為顯著。
而WinCC的原始數據類型RawData大家都比較熟悉了,以數組方式和PLC交換數據,優點:數據量大,缺點:無法直接在畫面等處直接使用,需要腳本拆解。
- PLC和變頻器如何控制電機? 2024-12-27
- 如何判斷PLC使用接近開關是PNP還是NPN? 2024-12-27
- 西門子S7-1500MODBUS通訊總結 2024-12-27
- PLC數字信號和模擬信號輸入和控制是怎么回事?你搞懂了嗎? 2024-12-27
- PLC模擬量通道設置的平均次數是什么意思?如何確定? 2024-12-27
- 討論分享:PLC輸出點加中間繼電器的利弊 2024-12-27
- 博途S7-1200 PWM 功能組態及編程方法 2024-12-27
- 兩個1200 和一個HMI設備組態網絡連接方法! 2024-12-27
- 基于西門子PLC的Socket通信深度剖析 2024-12-27
- 組態王和西門子S7300、S7400系列PLC通訊的幾種配置方案 2024-12-27
- 西門子S7-1200啟動模式及設置 2024-12-27
- 項目實踐:西門子S7-1200高速脈沖采集功能和應用 2024-12-27
- 西門子 | S7-300-400之間的以太網通訊! 2024-12-27
- PLC對模擬量信號是怎么進行處理的 2024-12-27
- S7-1200 CPU固件版本更新的三種方式 2024-12-27
聯系方式
- 電 話:18126392341
- 聯系人:梁濤
- 手 機:15267534595
- 微 信:15267534595