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