問:我的下位機是西門子S7-300,上位機是由VC++編寫的監(jiān)控界面的PC機,現(xiàn)在上位監(jiān)控與PLC要實現(xiàn)通訊,請問有哪些通訊方式,哪種通訊方式比較好,每種方式是如何實現(xiàn)的?
答:1、Prodave通訊
Prodave是西門子提供的一個軟件包,為高級語言編程和plc通訊提供接口。
通訊接口:MPI
因為MPI口是每塊cpu的編程口,所以plc不需要另外添加通訊模塊,這個方案就比較經(jīng)濟,而且prodave軟件包里面附帶了example和詳細的說明,用起來應該比較簡單和方便(本人只匆匆看過文檔,沒有實驗過)。這方面的資料在百度上很多。當然,mpi的速度是有限的,如果采用普通的pc adapter連接pc和plc,最高速度也就38.4kbps,我不知道prodave能否支持mpi卡(5611之類的話),如果可以的話速度可以達到187.5kbps。
2、串行通訊
看到過一些論文,采用串行通訊的方法實現(xiàn)pc和plc通訊。這種情況存在幾點要求:
a、需要為plc添加一塊串行通訊模塊,比如300的話就需要cp340或者cp341(前者便宜些);
b、plc里面需要對串行通訊進行編程,其實也就是接收報文和發(fā)送報文,調(diào)用fb2/fb3(cp340的話)。
c、串行通訊的速度是有目共睹的,而且cp340或者cp341的數(shù)據(jù)吞吐量也是有限的,即報文長度是有限制的,因此個人認為通訊數(shù)據(jù)量大的話采用串行通訊就不合適了。
d、報文格式的話就比較自由,但是也應當合理,我雖然沒有具體實驗過,但是個人認為可以參考modbus的報文結(jié)構(gòu)來編程,甚至就采用modbus的規(guī)范,不過這樣的話要求編程者對pc和plc側(cè)的modbus編程都要熟悉。
3、opc
Opc是這些年來很流行的東西,其實我很討厭opc的安全認證的設定。不過采用opc編程來訪問plc真的是一件非常輕松愜意的事情。你需要做的就是了解opc的結(jié)構(gòu)和編程,尤其是采用vb來編寫opc簡直是件傻瓜化的工作當然也犧牲了很多。
前面我實驗了用vb通過opc(以太網(wǎng))來訪問300,包括用西門子的simaticnet提供的opc接口和第三方的kepserver。
采用opc接口編程的優(yōu)點:通訊速度快,編程簡單。
4、以太網(wǎng)編程
采用以太網(wǎng)編程訪問plc,其實又可以分為兩種:
一種是socket接口,需要在plc里面編程進行收/發(fā),大概是fc5/fc6吧,印象不深了,當然plc里面要定義一個connection,填好地址、端口號之類的信息,這個對于熟悉西門子工業(yè)通訊的人是很easy的事情。Pc側(cè)采用socket接口編程,最簡單的就是vb里面的wisock控件,當然這掩蓋了很多細節(jié)。Socket編程本來就是一門藝術(shù),講究說學逗唱:)
這個方法的優(yōu)點應該是pc側(cè)編程稍微簡單點(相對于后一種),而且可以不局限于windows平臺,因為socket接口被諸如unix支持的更好。
第二種是采用西門子的sapi接口函數(shù),這樣plc里面不需要過多的編程了,當然pc側(cè)的編程難度就比較高了,ms只能用c來寫,所以我望而卻步鳥。