【正文】
,但是執(zhí)行該腳本所需要的時(shí)間為5秒鐘,這樣大量動(dòng)作累積起來,不能處理的動(dòng)作被輸入隊(duì)列。如果在腳本隊(duì)列中的任務(wù)數(shù)目達(dá)到了5000,那么路徑“:\Siemens\WinCC\Diagnose”下的WinCC“ ”的診斷文件可能會顯示錯(cuò)誤消息“s cript: More than 5000 actions in work”。詳細(xì)信息請參見如下鏈接:://。另外,關(guān)于WinCC對C腳本的診斷方法有很多,以下幾種僅供參考,在WinCC的幫助文檔中可以找到更多詳細(xì)的內(nèi)容::提供關(guān)于所有(全局腳本)動(dòng)作的動(dòng)態(tài)特性信息。:按調(diào)用的順序輸出 printf 指令,可以將變量的數(shù)值和錯(cuò)誤信息等輸出到診斷窗口。:WinCC 自帶的診斷工具 “” 對故障和性能問題進(jìn)行了詳細(xì)的分析,關(guān)于如何使用診斷工具“APDiag”來調(diào)試C腳本,請參見如下鏈接:。全局C腳本里面對PLC的值進(jìn)行讀取和更新,有對數(shù)據(jù)庫的操作,但有的時(shí)候發(fā)現(xiàn)設(shè)備不動(dòng)作,點(diǎn)擊按鈕進(jìn)入狀態(tài)界面(用于顯示PLC的狀態(tài)),觀察PLC的值。此時(shí)設(shè)備就會繼續(xù)動(dòng)作,按鈕中未寫任何腳本,只是用直接連接來給一個(gè)內(nèi)部變量賦值以用于切換畫面?懷疑是全局腳本中對數(shù)據(jù)庫的操作阻塞了腳本的運(yùn)行,不知道是不是原因???為什么點(diǎn)擊按鈕后又能解除呢?懇請高人幫忙啊?請問高人一個(gè)問題:兩個(gè)全局C腳本,其中一個(gè)被阻塞了,另一個(gè)會怎樣,是不是也會被阻塞?多個(gè)全局腳本是獨(dú)立的單線程嗎?[/quote]雖然WinCC的全局腳本(對應(yīng)于進(jìn)程 Global s cript Runtime)與畫面中的腳本分別運(yùn)行在不同的進(jìn)程,但是全局腳本的各個(gè)動(dòng)作同時(shí)運(yùn)行在同一個(gè)線程中,其中一個(gè)動(dòng)作發(fā)生阻塞,會影響另外一個(gè)動(dòng)作??梢栽O(shè)計(jì)兩個(gè)全局腳本動(dòng)作,進(jìn)行如下的測試:動(dòng)作1:每隔2秒鐘執(zhí)行一次,變量1加1。動(dòng)作2:每隔2秒鐘執(zhí)行一次,變量2加1,使用Sleep函數(shù)延遲5秒鐘。結(jié)論:使用輸入\輸出域顯示兩個(gè)變量,兩個(gè)變量都是大約每隔5秒鐘加1(如果沒有Sleep函數(shù),兩個(gè)變量都是大約每隔2秒鐘加1)。因此,全局腳本的多個(gè)動(dòng)作是互相影響的