在工業的信息化、智能化,甚至工業4.0的大潮中,很多高級算法都是由上位機、云來實現,那么PLC數據采集是最基本的前提條件之一。
面對這種需求,新的PLC大都開始支持以太網(以前的串口局限性太大了,速度慢,出錯概率高),有的甚至在CPU上直接設置以太網接口,編程,數據傳輸,都可以通過這個端口來搞定,不再需要增加一個以太網接口卡。
硬件有了,要實現數據的采集,還需要軟件,從軟件上來說,實現方式大概有以下幾種:
1、PLC編程,與外部建立以太網連接,通過收發指令進行數據交換:
為了實現這種方式,可能需要通過硬件配置來建立連接通道,然后再由用戶自己編程進行收發。
這種方式雖然實施困難,但是每次發送的數據量大,速度快。以西門子為例,標準的以太網通訊,一次可以發送8000字節,但是用非編程的方式,可能只有200多字節(因PLC的型號而不同)。另外,電文發送是由PLC程序控制,節奏可控。iba PDA的一個重要的高速數據采集模式就是這樣的(在PLC內部進行編程,只不過,人家將模塊給你準備好,你組織數據,進行調用即可)。
2、PLC提供不需要編程的外部訪問協議,比如,OPC-UA、MODBUS TCP等:
OPC-UA是目前比較火的開放協議。首先,PLC的OPC-UA協議不是隨便用的,要購買授權。其次,OPC-UA客戶端那么容易實現嗎?OPC-UA協議號稱免費,但是,你如果真對著厚厚的協議文本,從底層開始開發。如果能真的搞定了,那絕對就是通訊大佬,不需要在苦逼的工控圈混了。如果沒有這個實力,就要再次掏銀子去購買別人的SDK進行二次開發,貌似也不便宜。OPC-UA控制得比較嚴,目前還沒有哪家敢用和諧版的SDK來公開做項目,做產品。
那么,就用MODBUS TCP吧!這個是免費的、古老的協議。但是也需要在PLC里進行編程、配置(比如,西門子PLC,需要自己調用MODBUS TCP庫,配置好資源,才能使用。但是,有些PLC原生支持該協議,比如施耐德PLC,就可以直接用。另外有一些PLC需要進行配置,啟用該功能,也不需要編程實施)。但是,該協議兼容性不一定好,有很多變化,比如地址是否從0開始,高低自己是否顛倒等。另外,我的一個項目里就遇到過一個奇怪的問題:西家1500PLC,通過CP網卡怎么都無法和老的INTOUCH進行通訊,通過CPU上的網口就沒有問題。由于CPU上的網口還需要做控制環網,后來只好更換了多網口的CPU,解決了問題,這不需要成本嗎?現場的技術專家、西家的技術支持都不相信這個事實“MODBUS TCP就是加載在標準以太網協議之上而已,CP沒有理由轉不過去呀!”
3、通過通訊中間件或者中間軟件進行中轉
如果以上都不能搞定,就只好用通訊的中轉軟件了。最典型的就是OPC軟件,一端訪問PLC,另外一端對外提供數據。OPC軟件有的是廠家提供,有的是第三方,曾經大行其道,可惜,從效率、安全性、系統兼容性上看,OPC軟件逐步過時了。另外,某些廠家的OPC軟件可不便宜了。
除了OPC,還有專業的中間軟件,比如KEP某某,那是真專業,可同時訪問的PLC和協議非常多,對外提供數據的途徑也很多,OPC、OPC-UA等等。但是,一套配置下來,要好幾萬RMB才能搞定。另外,對外的協議,依然是個問題。
國內出來一個小軟件PLC-Recorder,用于專業錄波(支持大部分主流PLC,自帶驅動庫,體積極小,可在很多場合替代PLC-Analyzer或iba軟件,具體可參考鏈接),最近順手增加了數據轉發功能,并且用了兼容性極強的WebScoket協議和Json數據通訊格式??蛻舳碎_發非常簡單,用一個web頁面就能搞定用戶驗證、訂閱、實時數據刷新等功能。如果用高級語言(比如C#、Java等)開發,能實現更加豐富的功能。