莊旭東
現(xiàn)在的自動(dòng)化設(shè)備越來(lái)越趨于模塊化和多接口化,如果主機(jī)與其他輔助設(shè)備之間的通訊可以不需要添加過(guò)多硬件組態(tài),即插即用,而且主輔機(jī)之間的通訊不影響主機(jī)程序執(zhí)行,通訊鏈接時(shí)也不需要主機(jī)停機(jī),將明顯提高主輔機(jī)之間使用的便利性。S7通訊的單邊通訊就有以上的優(yōu)點(diǎn)。
S7 協(xié)議是西門子S7 系列產(chǎn)品之間通訊使用的標(biāo)準(zhǔn)協(xié)議,其優(yōu)點(diǎn)是通訊雙方在同一個(gè)MPI 總線上,同一個(gè)Profibus-DP 總線上或者同一個(gè)工業(yè)以太網(wǎng)總線上,都可以通過(guò)S7 協(xié)議建立通訊連接,使用相同的編程方式進(jìn)行數(shù)據(jù)交換,而與使用何種總線或者網(wǎng)絡(luò)無(wú)關(guān)。
S7 通訊按組態(tài)的方式可分為基于客戶端、服務(wù)器的單邊通訊和基于伙伴的雙邊通訊。
單邊通訊模式較為常用。在組態(tài)S7 單邊通訊模式時(shí),只需要在客戶端一側(cè)進(jìn)行配置和編程。由于服務(wù)器的“服務(wù)”功能是硬件提供的,所以服務(wù)器側(cè)只需要準(zhǔn)備好需要被訪問的數(shù)據(jù),不需要用戶在該側(cè)的軟件進(jìn)行任何編程。
客戶端在S7 通信中是資源的索取者,而服務(wù)器則相反,它是資源的提供者。服務(wù)器通常是西門子S7 系列的一種CPU,它的資源就是其內(nèi)部的變量、數(shù)據(jù)等??蛻舳送ㄟ^(guò)S7 通信協(xié)議,對(duì)服務(wù)器的數(shù)據(jù)進(jìn)行讀取或?qū)懭氲牟僮鳌?/p>
客戶端、服務(wù)器模式的數(shù)據(jù)流動(dòng)是單向的。也就是說(shuō),只有客戶端能操作服務(wù)器的數(shù)據(jù),而服務(wù)器不能對(duì)客戶端的數(shù)據(jù)進(jìn)行操作。
在網(wǎng)絡(luò)中組態(tài)一個(gè)S7 單邊通訊的前提條件是,客戶端和服務(wù)器兩邊都是西門子S7 系列的CPU,而且客戶端和服務(wù)器兩邊有相同的通訊方式,MPI 通訊、Profibus-DP 通訊、工業(yè)以太網(wǎng)通訊都可以。下例使用一個(gè)西門子1500 的CPU 和一個(gè)西門子1200的CPU 進(jìn)行S7 單邊通訊的組態(tài)。
1.1、創(chuàng)建客戶端CPU 并設(shè)定CPU 的IP,該示例把客戶端CPU 的IP 設(shè)定為“192.168.3.61”并創(chuàng)建PN 連接;
1.2、單擊工具欄左上角連接按鈕,并在隔壁的選擇框中選擇“S7 連接”選項(xiàng),如圖1.2;
圖1.2
1.3、選中CPU,單擊右鍵,選擇“添加新連接”;
1.4、打開界面右邊的“網(wǎng)絡(luò)視圖”,選擇“連接”,上一步驟創(chuàng)建的S7 連接將顯示在這里,我們將在這里配置S7 連接的相關(guān)參數(shù),如圖1.4;
圖1.4
1.5、選中所創(chuàng)建的S7 連接“S7_連接_1”,單擊屬性,在顯示出來(lái)的屬性欄中設(shè)置服務(wù)器的IP,該IP 必須與客戶端在同一個(gè)網(wǎng)段,并且與將要連接的服務(wù)器的IP 一致,該示例把服務(wù)器的IP 設(shè)置為“192.168.3.70”,如圖1.5;
圖1.5
1.6、在屬性中選擇“地址詳細(xì)信息”,設(shè)置伙伴PLC的機(jī)架號(hào)和插槽號(hào)。當(dāng)通訊伙伴為S7-300/400 的時(shí)候,機(jī)架號(hào)設(shè)置為0,插槽號(hào)設(shè)置為2,TSAP 為03.02。當(dāng)通訊伙伴為S7-1200/1500 時(shí),機(jī)架號(hào)設(shè)置為0,插槽號(hào)設(shè)置為1,TSAP 為03.01。該示例伙伴CPU 用的是S7-1200,所以機(jī)架號(hào)設(shè)置為0,插槽號(hào)設(shè)置為1,TSAP 為03.01,如圖1.6;
圖1.6
1.7、將硬件設(shè)置下載至客戶端CPU 中;
至此我們便完成了客戶端CPU 的硬件組態(tài),接下來(lái)進(jìn)行軟件的組態(tài)。
2.1、打開“指令任務(wù)卡”,并將“GET”指令插入到“OB1”塊的程序段1 中,按照指示創(chuàng)建背景數(shù)據(jù)塊。單擊新創(chuàng)建的功能塊右上角的“開始組態(tài)”按鈕,在“連接參數(shù)”欄中的“連接名稱”選擇我們上面創(chuàng)建的S7連接“S7_連接_1”,并按確定按鈕完成連接選擇。該功能塊用于讀取服務(wù)器中指針?biāo)赶虻臄?shù)據(jù),并寄存到客戶端指定的位置中;
2.2、設(shè)置“GET”功能塊的參數(shù)?!癛EQ”為控制參數(shù),當(dāng)該參數(shù)上升沿時(shí)激活數(shù)據(jù)交換功能?!癐D”為該S7 連接的ID?!癆DDR_1”為服務(wù)器待被讀取的數(shù)據(jù)的指針,指針遠(yuǎn)程訪問某個(gè)數(shù)據(jù)塊時(shí),必須始終指定該數(shù)據(jù)塊?!癛D_1”為客戶端讀取服務(wù)器數(shù)據(jù)所寄存的位置指針,即客服端讀取服務(wù)器“ADDR_1”所指向的位置的數(shù)據(jù)信息放置到“RD_1”所指向的區(qū)域上。該功能塊可同時(shí)讀取服務(wù)器上多個(gè)不重復(fù)區(qū)域的數(shù)據(jù),并放置到客戶端不重復(fù)的區(qū)域中。“NDR”為狀態(tài)參數(shù),0 表示作業(yè)尚未開始或仍在運(yùn)行,1 表述作業(yè)已成功完成?!癊RROR”和“STATUS”一起提供了功能塊是否出現(xiàn)錯(cuò)誤及所出現(xiàn)錯(cuò)誤的錯(cuò)誤代碼。
如圖2.2 的“GET”功能塊,紅色框部分為“開始組態(tài)”按鈕,單擊該處選擇相應(yīng)的S7 連接。該功能塊是將服務(wù)器的MB10-MB14 一共5 個(gè)字節(jié)的數(shù)據(jù)讀取到客戶端的MB20-MB24 中,每個(gè)字節(jié)的地址一一對(duì)應(yīng)。
圖2.2
2.3、打開“指令任務(wù)卡”,并將“PUT”指令插入到“OB1”塊的程序段2 中,按照指示創(chuàng)建背景數(shù)據(jù)塊。單擊新創(chuàng)建的功能塊右上角的“開始組態(tài)”按鈕,在“連接參數(shù)”欄中的“連接名稱”選擇我們上面創(chuàng)建的S7連接“S7_連接_1”,并按確定按鈕完成連接選擇。該功能塊用于發(fā)送客戶端指針?biāo)赶虻臄?shù)據(jù)到服務(wù)器并寄存在服務(wù)器所指定的位置中。
2.4、設(shè)置“PUT”功能塊的參數(shù)?!癛EQ”為控制參數(shù),當(dāng)該參數(shù)上升沿時(shí)激活數(shù)據(jù)交換功能。“ID”為該S7連接的ID?!癆DDR_1”為服務(wù)器用于寫入數(shù)據(jù)的區(qū)域指針?!癝D_1”為客戶端所要發(fā)送的數(shù)據(jù)的區(qū)域的指針。即客戶端將“SD_1”所指定的區(qū)域中的數(shù)據(jù)寫入到服務(wù)器“ADDR_1”所指向的區(qū)域中。該功能塊可同時(shí)發(fā)送多個(gè)客戶端不重復(fù)的區(qū)域數(shù)據(jù)并寫入到服務(wù)器不重復(fù)的位置中?!癗DR”為狀態(tài)參數(shù),0 表示作業(yè)尚未開始或仍在運(yùn)行,1 表述作業(yè)已成功完成?!癊RROR”和“STATUS”一起提供了功能塊是否出現(xiàn)錯(cuò)誤及所出現(xiàn)錯(cuò)誤的錯(cuò)誤代碼。
如圖2.4 中,該功能塊將客戶端中的MB150-MB170中共20 個(gè)字節(jié)的數(shù)據(jù)寫入到服務(wù)器的MB100-MB120 中,每個(gè)字節(jié)的地址一一對(duì)應(yīng)。
圖2.4
2.5、將程序下載到客戶端CPU 中。
至此客戶端關(guān)于S7 單邊通訊的所有組態(tài)已經(jīng)完成了,接下來(lái)進(jìn)行服務(wù)器CPU 的硬件組態(tài)。S7 單邊通訊中不需要對(duì)服務(wù)器CPU 的軟件進(jìn)行任何編程。
3.1、創(chuàng)建CPU 并設(shè)定CPU 的IP,該示例把CPU 的IP 設(shè)定為“192.168.3.70”并創(chuàng)建PN 連接,該IP 地址必須與1.5 中設(shè)置的IP 地址一致,否則將無(wú)法進(jìn)行通訊。
3.2、勾選CPU 屬性中“防護(hù)與安全”選擇卡中“連接機(jī)制”選項(xiàng)的“允許來(lái)自遠(yuǎn)程對(duì)象PUT/GET 訪問”內(nèi)容,如圖3.2
圖3.2
3.3、編譯并將硬件下載至服務(wù)器CPU 中。
經(jīng)過(guò)上述示例不難發(fā)現(xiàn),服務(wù)器的CPU 只需勾選遠(yuǎn)程CPU 的通訊訪問權(quán)限即可,其他的都由客戶端CPU 中組態(tài)。用這樣的通訊方式進(jìn)行主機(jī)和其他輔助設(shè)備進(jìn)行通訊,可以大大減少輔助設(shè)備在通訊上的編程時(shí)間,加大了編程的靈活性。