摘要:為了實現(xiàn)Kinect采集并處理后的數(shù)據(jù)信息能夠?qū)崟r傳輸與控制外圍設(shè)備,提出了基于以太網(wǎng)的Kinect與西門子PLC間數(shù)據(jù)采集傳輸與控制系統(tǒng)設(shè)計方案。方案采用OpenNI(開放式自然交互)框架提供的標(biāo)準(zhǔn)API函數(shù)接口,可以將Kinect采集的應(yīng)用場景信息在計算機(jī)上進(jìn)行圖像處理分析,并通過采用C#編程構(gòu)建了基于以太網(wǎng)的通信方式,最終實現(xiàn)了與PLC模塊的數(shù)據(jù)交換、決策及控制。測試結(jié)果表明,系統(tǒng)數(shù)據(jù)傳輸速率高,通信可靠。
關(guān)鍵詞:Kinect;以太網(wǎng);OpenNI;西門子PLC
一、引言
隨著工業(yè)和科技的快速發(fā)展,各行各業(yè)對測量技術(shù)提出了更高的要求,其中按接觸方式分類可分為兩類:一是接觸式測量,二是非接觸式測量。作為非接觸測量中最常見的測量方法,視覺測量系統(tǒng)主要分為CCD測量系統(tǒng)及激光測量系統(tǒng)。Kinect便是基于紅外測距技術(shù)的基礎(chǔ)上來進(jìn)行深度測量,其攝像頭可以在有光照和其他條件的環(huán)境下獲取彩色圖像,與此同時獲取被測物體的深度圖像數(shù)據(jù),以此進(jìn)行識別等其他操作。
Programmable Logic Controller簡稱為PLC,擁有可用于編程的存儲器,以便實現(xiàn)內(nèi)部存儲。其功能非常強(qiáng)大,作為一種可專門為工業(yè)生產(chǎn)設(shè)計的編程邏輯控制器,其利用數(shù)字運算操作,來執(zhí)行用戶想要執(zhí)行的命令,比如順序控制、定時、邏輯運算、算術(shù)運算和計數(shù)等等一些列功能,他可以利用數(shù)字指令的輸入結(jié)果或者輸出結(jié)果來實時指揮不同的儀器或者操控工業(yè)生產(chǎn)過程,PLC是工業(yè)生產(chǎn)控制的核心部分。一般來說,PLC與計算機(jī)之間的通信用的是RS-232/RS-485串行通信。然而,對于數(shù)據(jù)量大、實時性要求高、通信距離長的控制應(yīng)用,很難滿足其通信需求,為了解決這一問題,我們將傳輸速度極快的以太網(wǎng)通訊系統(tǒng)應(yīng)用到控制系統(tǒng)中,用以保證系統(tǒng)快速運行。
二、系統(tǒng)構(gòu)建及原理
本文為了實現(xiàn)Kinect采集并處理后的數(shù)據(jù)信息能夠?qū)崟r傳輸與控制外圍設(shè)備,我們提出了基于以太網(wǎng)的Kinect與PLC間數(shù)據(jù)采集傳輸與控制系統(tǒng)設(shè)計方案。方案中采用OpenNI框架提供的標(biāo)準(zhǔn)API函數(shù)接口,可以將Kinect采集的應(yīng)用場景信息在計算機(jī)上進(jìn)行圖像處理與分析,并通過C#編程構(gòu)建了基于以太網(wǎng)的通信方式,從而實現(xiàn)了與PLC模塊的數(shù)據(jù)交換、決策及控制。圖2-1為具體的系統(tǒng)構(gòu)建圖。
三、系統(tǒng)總體設(shè)計
1、Kinect簡介
Kinect主要由3D深度傳感器、紅外線發(fā)射器和RGB彩色攝像頭三部分組成。Kinect與普通攝像機(jī)的主要區(qū)別是其具有CMOS紅外傳感器,這款傳感器不易受到背景及光照的影響,可以感知周邊環(huán)境,以避免環(huán)境給圖像帶來的影響。CMOS紅外傳感器通過黑白光譜的形式來標(biāo)度被測物體的深度值,當(dāng)被測物體距離傳感器越遠(yuǎn),圖像相應(yīng)位置越黑,反之則越白。傳感器將從每個點采集到的深度信息保存,從而形成一幅深度圖像,為了實時對周圍環(huán)境進(jìn)行監(jiān)測,傳感器生成深度圖像流的速度達(dá)到了每秒30幀[1]。圖1為Kinect外觀圖。
2、OpenNI應(yīng)用框架
OpenNI(開放自然交互) 的工作原理是利用自然交互的API來定義用戶想要使用的應(yīng)用程序,其可以用多種語言來進(jìn)行編譯,并且支持在不同的平臺下工作。OpenNI的主要核心AP是由一組接口形成的,可以用來編寫常用的自然交互應(yīng)用程序。OpenNI主要功能是形成一個標(biāo)準(zhǔn)的API來搭建橋梁使用戶很容易通過軟件或者中間軟件便能訪問和使用儀器設(shè)備,本次試驗我們采用目前最新版OpenNI 2.1[2],OpenNI架構(gòu)圖如圖3-2所示。
3、以太網(wǎng)通訊模型
此通訊需要使用兩個Socket來實現(xiàn)基于以太網(wǎng)的Socket網(wǎng)絡(luò)通信,首先需要一個Socket在客戶端機(jī)上運行(稱為ClientSocket),其次需要另一個Socket在服務(wù)器端運行(稱為ServerSocket)。在計算機(jī)與西門子1200PLC 以太網(wǎng)模塊通信中,將以太網(wǎng)模塊作為服務(wù)器,將計算機(jī)作為客戶機(jī)。經(jīng)參數(shù)配置好的以太網(wǎng)模塊運行時打開端口,監(jiān)聽客戶機(jī)對服務(wù)器的請求,服務(wù)器端口接收到連接請求后開啟服務(wù)。
4、通信控制程序的設(shè)計
4.1 西門子以太網(wǎng)通信模塊的設(shè)置
在進(jìn)行通訊前,需要對西門子PLC進(jìn)行配置,本次系統(tǒng)設(shè)計采用的是西門子公司生產(chǎn)的1200系列CPU 1214C PLC,其集成以太網(wǎng)通訊模塊,在使用第三方程序?qū)LC進(jìn)行讀寫之前,需要對PLC進(jìn)行權(quán)限設(shè)置,允許遠(yuǎn)程連接PLC,以TIA PORTAL V14為例,打開設(shè)備屬性-常規(guī)選項卡-Web服務(wù)器-防護(hù)與安全-勾選允許遠(yuǎn)程對象的通信訪問。
4.2 基于Socket的以太網(wǎng)通信實現(xiàn)
在C#中,System.Net命名空間中的所有網(wǎng)絡(luò)訪問類都構(gòu)建在Socket的實現(xiàn)之上,比如TCPClient、TCPListener和UDPClient類,為需要編寫網(wǎng)絡(luò)訪問的開發(fā)人員提供了接口的托管實現(xiàn),實現(xiàn)在以太網(wǎng)下的高速穩(wěn)定的數(shù)據(jù)讀寫功能,以下為實現(xiàn)過程:
①建立SOCKET連接
定義SOCKET連接
mySocket = newSocket(AddressFamily.InterNetwork,SocketType.Stream,ProtocolType.Tcp);
IPEndPoint my_Ip = new IPEndPoint(IPAddress.Parse(ER_IP) ,ER_Port);
mySocket Connect(my_Ip);
②PLC連接
在TCP連接正常后,需要對PLC發(fā)送特定的指令才能實現(xiàn)讀寫功能,且只有接收到PLC正確回復(fù)后,才可以進(jìn)行數(shù)據(jù)讀寫,讀寫操作需要注意數(shù)據(jù)類型和字節(jié)長度的轉(zhuǎn)換[3]。
mySocket.Send(d_Send,16,Socket_Flag1);
四、系統(tǒng)測試
為了檢測系統(tǒng)的實用性,搭建了測試平臺對系統(tǒng)進(jìn)行功能測試,實現(xiàn)了對Kinect采集的數(shù)據(jù)進(jìn)行處理分析并觸發(fā)西門子1214C PLC的控制輸出。試驗表明系統(tǒng)數(shù)據(jù)傳輸速率較高,具有可靠的通信結(jié)果和良好的穩(wěn)定性。
五、結(jié)語
本文利用Kinect實時獲取被測物體的深度圖像數(shù)據(jù),采用C#編程環(huán)境構(gòu)建了基于以太網(wǎng)的通信方式,實現(xiàn)了Kinect與PLC模塊的數(shù)據(jù)交換、決策及控制。測試結(jié)果表明,系統(tǒng)數(shù)據(jù)傳輸速率高,通信可靠,可擴(kuò)展性好。
參考文獻(xiàn)
[1]張荻.Kinect應(yīng)用領(lǐng)域的探討[J].物流工程與管理,2012,34(06):39-41.
[2]任侃,曹越,吳杰.OpenNI體感應(yīng)用開發(fā)實戰(zhàn)[M].北京:機(jī)械工業(yè)出版社,2015.
[3]程捷.三相異步電動機(jī)測試與分析系統(tǒng)的開發(fā)與研究[D].青島科技大學(xué),2017.
作者簡介:劉洪序(1989.02-),男,河北人,碩士,從事機(jī)電控制研究工作。