西門子之間的plc通信比較多,方式也很多。
目前西門子300/400系列的plc的通訊方式開始大量使用工業(yè)以太網(wǎng)通訊,mp277/377、xp177b系列觸摸屏也集成了以太網(wǎng)接口,這帶來一個好處,所有的接口都統(tǒng)一,在網(wǎng)絡(luò)通訊時采用都以太網(wǎng)接口,所有的設(shè)備組成一個局域網(wǎng),包括上位監(jiān)控計算機(jī)、編程設(shè)備、plc、觸摸屏都能很方便地互相訪問,需要擴(kuò)展多一個設(shè)備也很方便,只需要加一個交換機(jī)就能擴(kuò)展出多個接口。因為有這些好處,所以采用以太網(wǎng)通訊越來越流行,下面說一說以太網(wǎng)通訊的其中一個應(yīng)用,plc與plc之間通過以太網(wǎng)互連。
一、s7-300/400之間互連
1、采用plc與plc通過以太網(wǎng)訪問,需要增加以太網(wǎng)模塊,如cp343-1,cp443-1的模塊,或者采用帶有pn接口的plc,如cpu315-2dp/pn的plc。
2、采用兩塊cp343-1互連,先在同一個項目里做好兩套plc的硬件組態(tài),分配好ip地址,打開netpro,選擇其中一個plc,雙擊連接列表上的空白行,添加一個
s7 conection。選擇連接的另一個plc,記住連接的id號。通訊雙方的其中一個站為client端,激活“establish an active connection”的選項(默認(rèn)是激活的)。這樣netpro的配置就完成了,編譯、下載完成
3、打開其中兩套plc的ob1,調(diào)用fb12(bsend)塊發(fā)送數(shù)據(jù),fb13(brcv)塊接收數(shù)據(jù),1#plc的發(fā)送對應(yīng)2#plc的接收,1#plc的接收對應(yīng)2#plc的發(fā)送。
4、調(diào)用fb12的時候幾個參數(shù)的含意,a、req,發(fā)送開始,上升沿觸發(fā)發(fā)送工作;b、id,連接id號,這個id號是在netpro組態(tài)時生成的id號;c、r_id,連接號,相同連接號的fb塊互相對應(yīng)發(fā)送接收數(shù)據(jù),這個是由用戶編程時定義的,例如1#plc的fb12的r_id是dw#16#2,則2#plc的fb13的r_id也是dw#16#2,這樣才能保證正常接收發(fā)送;d、done,發(fā)送完成,如果req端是一個不停的脈沖,正常情況下done端也應(yīng)該也是一個不停的脈沖反饋;e、sd_1,發(fā)送的開始地址,以p# x.x byte xxx來表示,f、len,發(fā)送數(shù)據(jù)的長度。
5、采用fb12、fb13來進(jìn)行發(fā)送/接收是比較麻煩的,一方面需要兩端的以太網(wǎng)模塊都支持雙邊發(fā)送,如cp343-1-lean就不支持了,另一方面,兩邊都要寫程序,對于增加的系統(tǒng)不太方便,所以這時可以在netpro里把one-way(單邊通訊,激活后fb12、fb13不能使用)激活,采用fb14(get)取數(shù)據(jù)、fb15(put)發(fā)送數(shù)據(jù)來做,fb14的參數(shù)定義和fb12差不多,只是少了r_id和len,這樣更方便一些,而且還有一個好處,不需要對原有的系統(tǒng)進(jìn)行什么更改,只需要把單邊的plc組態(tài)和程序下載就可以了
6、需要注意的另一個問題是fb和sfb的區(qū)別,在400上采用sfb,在s7-300上采用fb,在s7-300集成的pn口上,采用sfb,這個問題曾經(jīng)折磨過我一兩天才解決。
二、winlc與plc互連
winlc是在pc機(jī)上的軟件plc,可以把一臺pc機(jī)當(dāng)成plc使用。這樣對于不能采用模擬器連接的軟件是比較方便的,如采用intouch、ifix這些scada軟件做為上位機(jī)軟件時,測試是個麻煩的問題,需要與實際機(jī)器連接起來才能測試,但如果有winlc,可以把程序拷到winlc上運(yùn)行,上位機(jī)軟件與winlc聯(lián)機(jī)測試,省去不少工夫,所以winlc對于不方便進(jìn)行現(xiàn)場測試的環(huán)境,是個不錯的替代方案。winlc既然是一套軟件plc,就能夠?qū)崿F(xiàn)plc的功能,那么與plc通訊也是可以實現(xiàn)的,
下面說一說winlc與s7-300互連
1、新建一個項目,建立一個s7-300的站點(diǎn),硬件組態(tài);建立一個pc站點(diǎn),在pc站點(diǎn)上增加一個winlc和一個ie general,ie general的ip地址與pc機(jī)的ip地址一致,其實ie general指的就是pc機(jī)的以太網(wǎng)卡。
2、打開netpro,在winlc上新建一個s7 conection,指向s7-300,編譯、存盤
3、在pcstation上增加winlc和ie general,需要注意槽號要與硬件配置時候一樣
3、打開winlc的ob塊,調(diào)用sfb14、sfb15來讀寫s7-300的數(shù)據(jù)
4、啟動winlc軟件,下載程序,這樣就可以實現(xiàn)軟件plc與plc互連了
三、兩種方式的結(jié)合
如果有多臺plc需要與pc機(jī)上的scada軟件通過opc進(jìn)行通訊,但是又發(fā)現(xiàn)scada軟件讀取的速度太慢,不能滿足刷新要求,或者數(shù)據(jù)要做些預(yù)處理才能顯示,scada軟件上運(yùn)行太多的腳本又影響速度,那么通過軟plc把多臺plc的數(shù)據(jù)先讀過來進(jìn)行預(yù)處理,scada軟件只與一臺plc進(jìn)行通訊,這樣scada軟件上的工作量會少一些。這個時候把上面說的兩種方式結(jié)合一下,就能夠?qū)崿F(xiàn)這樣的功能了。
1、通訊連接參照上面的方法設(shè)置
2、在winlc的pc站點(diǎn)上添加一個opc服務(wù)器,在netpro里面打開opc的連接列表,添加一個s7 conection,指向winlc,編譯、下載
3、通過opc客戶端可以直接訪問opc服務(wù)器的內(nèi)容,常用的scada軟件如intouch、citect、ifix這些軟件都支持opc,設(shè)置訪問連接就可以在軟件上直接讀寫了,如果更簡單的界面,可以自己用vb編寫一個opc客戶端,讀寫數(shù)據(jù)都在vb程序上實現(xiàn),不使用scada軟件,可以省掉不少錢了。