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