1 全局數(shù)據(jù)包通信簡介對于PLC之間的數(shù)據(jù)交換,只關(guān)心數(shù)據(jù)的發(fā)送區(qū)和接收區(qū),全局數(shù)據(jù)包的通信方式是在配PLC硬件的過程中,組態(tài)所要通信PLC站之間的發(fā)送區(qū)和接收區(qū),不需要任何程序處理,這種通信方式只適合S7-300/300/400 PLC之間相互通信。
下面將以舉例的方式介紹全局數(shù)據(jù)包通信,使用的軟硬件如下:所需硬件:CPU315-2DP,CPU416-2DP所需軟件:STEP7 V5.2 SP1 注意: TIA軟件平臺不再支持全局數(shù)據(jù)包通信方式2 全局數(shù)據(jù)包的配置1)首先打開編程軟件STEP7,建立一個新項目如MPI_GD,在此項目下插入兩個站STATION1/CPU416-2DP, STATION2/CPU315-2DP,分別組態(tài)硬件,插入CPU,配置MPI的站號和通信速率,在本例中MPI的站號分別設(shè)置為2號站和4號站,通信速率為187.5Kbit/S 。
這些工作完成以后,可以組態(tài)數(shù)據(jù)的發(fā)送區(qū)和接收區(qū)。
點擊項目名MPI_GD后出現(xiàn)STATION1,STATION2和MPI網(wǎng),點擊MPI,再點擊菜單“Options”->“Define Global Date”進入組態(tài)畫面如圖1、2:圖1進入全局數(shù)據(jù)組態(tài)界面圖2 全局數(shù)據(jù)組態(tài)界面2) 插入所有需要通信的PLC站CPU雙擊GD ID右邊的CPU欄選擇需要通信PLC站的CPU。
CPU欄總共有15列,這就意味者最多有15個CPU能夠參與通信。
在每個CPU欄底下填上數(shù)據(jù)的發(fā)送區(qū)和接收區(qū),例如:CPU416-2DP的發(fā)送區(qū)為DB1.DBB0~DB1.DBB21,可以填寫為DB1.DBB0:22 ,然后在菜單“edit”選擇“Sender”作為發(fā)送區(qū)。
CPU315-2DP的接收區(qū)為DB1.DBB0~21,可以填寫為DB1.DBB0:22。
編譯存盤后,把組態(tài)數(shù)據(jù)分別下載到CPU中,這樣數(shù)據(jù)就可以相互交換了。
發(fā)送接收數(shù)據(jù)區(qū)的設(shè)置參考圖3:圖3 設(shè)置通信區(qū)地址區(qū)可以為DB,M,I,Q,區(qū),長度S7-300最大為22個字節(jié),S7-400最大為54個字節(jié)。
發(fā)送區(qū)與接收區(qū)應(yīng)一致,所以在上例中通信區(qū)最大為22個字節(jié)。
3 多個CPU通信了解多個CPU通信首先要了解GD ID,編譯以后,每行通信區(qū)都會有GD ID號,可以參考圖3為A:全局數(shù)據(jù)包的循環(huán)數(shù),每一循環(huán)數(shù)表示和一個CPU通信,例如兩個S7-300CPU通信,發(fā)送與接收是一個循環(huán),S7-400中三個CPU之間的發(fā)送與接收是一個循環(huán),循環(huán)數(shù)與CPU有關(guān),S7-300CPU 最多為 4個,所以最多和4個CPU通信。
S7-400CPU414-2DP最多為 8個,S7-400CPU416-2DP最多為 16個。
B:全局數(shù)據(jù)包的個數(shù)。
表示一個循環(huán)有幾個全局數(shù)據(jù)包,例如兩個S7站相互通信一個循環(huán)有兩個數(shù)據(jù)包。
如圖4所示:圖4 一個循環(huán)兩個數(shù)據(jù)包C:一個數(shù)據(jù)包里的數(shù)據(jù)區(qū)數(shù)可以參考圖5: CPU315-2DP 發(fā)送4組數(shù)據(jù)到CPU416-2DP,4個數(shù)據(jù)區(qū)是一個數(shù)據(jù)包。
從上面可以知道一個數(shù)據(jù)包最大為22個字節(jié),在這種情況下每個額外的數(shù)據(jù)區(qū)占用兩個字節(jié),所以數(shù)據(jù)量最大為16個字節(jié)。
圖5 一個數(shù)據(jù)包里的數(shù)據(jù)區(qū)數(shù)對于A,B,C的介紹只是用于優(yōu)化數(shù)據(jù)的接收區(qū)和發(fā)送區(qū),減少CPU的通信負載,簡單應(yīng)用可以不用考慮這些,GD ID編譯后自動生成。
4 通信的診斷在多個CPU通信時,有時通信會中斷,是什么原因造成通信中斷?我們編譯完成后,在菜單“View”中點擊“Scan Rates”和“GD Status”可以掃描系數(shù)和狀態(tài)字。
如圖6所示:圖6 通信診斷S R: 掃描頻率系數(shù)。
如圖6 SR1.1 為225,表示發(fā)送更新時間為225×CPU循環(huán)時間。
范圍為1~255。
通信中斷的問題往往設(shè)置掃描時間過快。
可改大一些。
GDS:每包數(shù)據(jù)的狀態(tài)字(雙字)。
可根據(jù)狀態(tài)字編寫相應(yīng)的錯誤處理程序,結(jié)構(gòu)如下:第一位:發(fā)送區(qū)域長度錯誤。
第二位:發(fā)送區(qū)數(shù)據(jù)塊不存在。
第四位:全局數(shù)據(jù)包丟失。
第五位:全局數(shù)據(jù)包語法錯誤。
第六位:全局數(shù)據(jù)包數(shù)據(jù)對象丟失。
第七位:發(fā)送區(qū)與接收區(qū)數(shù)據(jù)對象長度不一致。
第八位:接收區(qū)長度錯誤。
第九位:接收區(qū)數(shù)據(jù)塊不存在。
第十二位:發(fā)送方從新啟動。
第三十二位:接收區(qū)接收到新數(shù)據(jù)。
GST:所有GDS 相“OR”的結(jié)果如果編程者使用CP5511/5611編程卡可以首先診斷一下連線是否可靠,如上例中S7-300 MPI地址是2,S7-400MPI地址是4,用CP卡連接到MPI網(wǎng)上(PROFIBUS接頭必須有編程口)可以直接讀出2,4號站,在“控制面板 ” -> “PG/PC interface” ->“ Diagnostics”->“read”讀出所以網(wǎng)上站號,如圖7所示:圖7 使用網(wǎng)卡診斷站號0號站位CP5611站號,如果沒有讀出2,4號站,說明連線有問題或MPI網(wǎng)傳輸速率不一致,可以把問題具體化。
5 事件觸發(fā)的數(shù)據(jù)傳送如果需要控制數(shù)據(jù)的發(fā)送與接收,在某一事件,某一時刻,接收和發(fā)送所需要的數(shù)據(jù),這時將用到事件觸發(fā)的數(shù)據(jù)傳送。
這種通信方式通過調(diào)用CPU的系統(tǒng)功能SFC60 (GD_SND),SFC61(GD_RCV)來完成的,而且只有S7-400CPU支持,并且必須設(shè)置CPU的SR(掃描頻率)為0,可參考圖8全局數(shù)據(jù)的組態(tài)畫面:圖8 在S7-400CPU側(cè)的SR為0與上面作法相同編譯存盤后下載到相應(yīng)的CPU中,然后在S7-400側(cè)中調(diào)用SFC60/61控制接收與發(fā)送。
所需硬件:CPU315-2DP,CPU416-2DP。
所需軟件:STEP7 V5.2 SP1CIRCLE_ID,BLOCK_ID參考GD A。
B。
C。
例子中M1.1為1時CPU416接收CPU315的數(shù)據(jù)MB20~MB29放到MB40~MB49中,M1.0為1時CPU416發(fā)送數(shù)據(jù)MB60~MB69到CPU315MB60~MB69中