<object id="ir2le"></object>
  • 加入收藏 在線留言 聯系我們
    關注微信
    手機掃一掃 立刻聯系商家
    全國服務熱線15267534595
    公司新聞
    WinCC 與S7-300/400 通信設置和優化之全局腳本中的變量使用
    發布時間: 2024-04-09 21:46 更新時間: 2024-12-27 09:10

    對于全局腳本中使用的變量,我覺得使用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交換數據,優點:數據量大,缺點:無法直接在畫面等處直接使用,需要腳本拆解。

    聯系方式

    • 電  話:18126392341
    • 聯系人:梁濤
    • 手  機:15267534595
    • 微  信:15267534595