關(guān)于“優(yōu)化是不是也要從PLC有所考慮?”,答案是肯定的,對于WinCC和S7-300/400通信優(yōu)化來說,在PLC方面還會考慮到以下幾個問題:
1. PLC的循環(huán)讀服務數(shù)(cyclic read services)。這是WinCC和S7-300/400通信時,比較獨特的通訊優(yōu)化方式,類似訂閱的概念。基本過程可以簡單的這樣理解:每當打開/切換一幅畫面時,系統(tǒng)會統(tǒng)計這畫面中所使用的變量及這些變量的更新周期,將這些變量的請求按更新周期分類,形成“訂單”并提交給PLC,PLC接受到“訂單”后,按“訂單”中所指定的更新周期,分批次的主動將數(shù)據(jù)定時的發(fā)給WinCC,而不需要WinCC再去定時的向PLC發(fā)請求。這樣就可以有效提高數(shù)據(jù)交換效率。這里的一個“批次”就可以理解為一個“PLC的循環(huán)讀服務”,而不同的PLC所支持的循環(huán)讀服務數(shù)也可能有所不同,比如CPU416 最多支持32個,而CPU 412只有16個。多臺WinCC同時訪問一個PLC時,不但會占用PLC的連接資源,同時也會占用PLC的循環(huán)讀服務數(shù)。
由于每個批次(循環(huán)讀服務)所攜帶的數(shù)據(jù)數(shù)量是受到數(shù)據(jù)報文尺寸的限制,所以要把想要的PLC數(shù)據(jù)讀上來,PLC就可能就會用到多個循環(huán)讀服務。比如:當前WinCC畫面中只有兩個IO域連接了一個PLC 中的同一個地址:MW10,不同的是兩個IO域的更新時間一個是500ms,另一個是1s,那么PLC會用兩個循環(huán)讀服務將數(shù)據(jù)發(fā)送給WinCC,一個是500ms的循環(huán)讀服務,另一個是1s的循環(huán)讀服務。這樣的結(jié)果是不但多占用了循環(huán)讀服務數(shù),同時每個讀服務的使用效率都不高。畫面,變量記錄,報警,腳本系統(tǒng)等的變量請求對循環(huán)讀服務的占用也是相似的。關(guān)于循環(huán)讀服務可以參考WinCC的在線幫助,里面有較詳盡的解釋。
2. WinCC使用的變量在PLC中的地址的是否連續(xù),變量地址是否合理。連續(xù)地址意味著數(shù)據(jù)報文中攜帶的變量地址信息較少,可以簡單理解:與數(shù)組的概念類似,起始地址信息+變量個數(shù)。雖然WinCC S7協(xié)議集具體的報文結(jié)構(gòu)沒有公開,而且地址排列也有特殊的算法,但對于地址不連續(xù)的情況后大概有何種結(jié)果,我想大家也能想到。而且也能用抓包和診斷工具看到變化。
變量地址是否合理:比如:同一個畫面(也可以引申到變量記錄,報警,腳本系統(tǒng)等)中所需的變量,在PLC中的地址最好連續(xù)排列。而若WinCC需要的所有數(shù)據(jù)都連續(xù)放在一個DB塊中,但各畫面所訪問數(shù)據(jù)零星的分散在DB塊中,這種情況下,一些夾在其間的無用數(shù)據(jù)也有可能被發(fā)給WinCC,即使WinCC并沒有請求這些數(shù)據(jù)。
所以,變量地址連續(xù)、合理,可以有效提高PLC的循環(huán)讀服務的使用效率,從而提高通訊效率。另外, WinCC提供的通道診斷(channelDiagnosis)工具有很強的功能,在系統(tǒng)沒有出現(xiàn)故障時,也可用來查看當前的通道信息,其中會反映所占用的循環(huán)讀服務數(shù)、循環(huán)讀服務的更新周期等等。建議可以試一試。
|