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