摘 要:目前工業(yè)控制領(lǐng)域硬件成本偏高,對操作者的專業(yè)水平要求較為苛刻,協(xié)同管理較為困難。文章采用在運動控制器上加入以太網(wǎng)接口,簡化控制程序的輸入,降低設(shè)備硬件成本,實現(xiàn)控制信息的遠程顯示,從而降低維護成本。
關(guān)鍵詞:W5500;以太網(wǎng);Socket;C++;服務(wù)器;客戶端
引言
隨著自動化控制技術(shù)的飛速發(fā)展,基于以太網(wǎng)的工業(yè)控制總線得到了廣泛的使用,給工業(yè)生產(chǎn)帶來了極大的效益,然而主流的現(xiàn)場控制總線成本較高,對維護和使用人員的技術(shù)有著較高的要求,這使得一些中小工廠無力享受技術(shù)進步帶來的紅利,于是基于嵌入式系統(tǒng)的集成以太網(wǎng)芯片W5500應(yīng)運而生。相關(guān)技術(shù)行業(yè)的發(fā)展,讓基于以太網(wǎng)的運動控制系統(tǒng)變得多元化,有廣泛的應(yīng)用前景和潛在的經(jīng)濟價值,在此基礎(chǔ)上研究使用便捷,適應(yīng)性強,信號傳輸穩(wěn)定,低成本的嵌入式以太網(wǎng)接口是非常有意義的。
基于嵌入式的以太網(wǎng)接口以往都采用軟協(xié)議棧,因此會占用大量的CPU資源,導(dǎo)致傳輸延遲較高,可連接客戶端較少且容易掉線,在這種情況下就需要一種基于硬件協(xié)議棧的以太網(wǎng)通信接口來滿足控制信號的穩(wěn)定高速傳輸。W5500是一款采用全硬件TCP/IP協(xié)議棧的嵌入式以太網(wǎng)控制器,它能使嵌入式系統(tǒng)通過SPI(串行外設(shè)接口)接口輕松地連接到網(wǎng)絡(luò),通過使用W5500,用戶只需通過使用一個簡單的socket程序就能實現(xiàn)以太網(wǎng)的應(yīng)用,而不再需要處理一個復(fù)雜的以太網(wǎng)控制器了。
1 系統(tǒng)硬件平臺
主控芯片采用意法半導(dǎo)體公司的基于ARM-CortexM3內(nèi)核的STM32F103VCT6處理器作為系統(tǒng)核心,外圍器件有SPI2332,W5500配上一塊帶電容觸摸輸入的TFT液晶彩屏。
2 以太網(wǎng)客戶機端的搭建
2.1 以太網(wǎng)硬件接口的設(shè)計
本控制器通信接口采用W5500方案,將硬件TCP/IP協(xié)議棧,MAC層以及PHY層集成到一塊芯片里,大大簡化了硬件設(shè)計,通過SPI通信協(xié)議與MCU通信,且對CPU性能要求不高,節(jié)省了嵌入式處理器的I/O資源(圖1)。
2.2 通信部分軟件設(shè)計
由于TCP/IP協(xié)議棧已經(jīng)在W5500中實現(xiàn),MCU只需要配置和讀取寄存器的數(shù)據(jù)即可,程序框圖如圖2所示。
3 基于socket編程的服務(wù)器端功能的實現(xiàn)
服務(wù)器是基于Vc++6.0平臺開發(fā)的,采用的是MFC和Socket套接字編程,Socket的版本為2.0.所采用的通信協(xié)議是TCP/IP協(xié)議。為了適用于多客戶端的連接要求,服務(wù)器采取多線程的編程方案,即可以同時響應(yīng)多客戶鏈接請求事件和數(shù)據(jù)讀取事件[1]。接下來介紹的是服務(wù)器的工作流程:
3.1 響應(yīng)連接請求
啟動服務(wù)器,首先進行初始化,設(shè)置監(jiān)聽端口(監(jiān)聽的端口號為6000)及綁定計算機,無誤后開啟一個線程等待客戶端連接。當(dāng)一個客戶端連接成功后,服務(wù)器立即開啟一個新線程等待下一個客戶端連接,當(dāng)客戶端斷開連接后,相應(yīng)的線程也會隨之結(jié)束。這樣服務(wù)器便可以響應(yīng)多客戶端連接了。
3.2 數(shù)據(jù)區(qū)分與轉(zhuǎn)發(fā)
不僅僅是PC端要向服務(wù)器上傳數(shù)據(jù),客戶機也要向服務(wù)器上傳設(shè)備運行數(shù)據(jù),如何來區(qū)分和存儲這些數(shù)據(jù)顯然是一個頭號問題。這里采用的方法是給數(shù)據(jù)一個“身份證號”ID,每一個設(shè)備發(fā)的數(shù)據(jù)具有唯一的ID,這樣這些數(shù)據(jù)到任何一臺設(shè)備上都能被識別。具體做法在后文中說明。服務(wù)器在收到數(shù)據(jù)后用left()函數(shù)取出前兩位進行“身份識別”,然后將其存入相對應(yīng)的數(shù)組中,這樣便完成了數(shù)據(jù)的區(qū)分存儲。數(shù)據(jù)轉(zhuǎn)發(fā)是服務(wù)器最重要的功能,服務(wù)器收到PC端發(fā)來的數(shù)據(jù)后向下位機轉(zhuǎn)發(fā),服務(wù)器收到下位機傳上來的收據(jù)后下PC端轉(zhuǎn)發(fā)。
以上功能的實現(xiàn)還需要用到以下幾個函數(shù):
Listen():監(jiān)聽端口;
Accept():用于響應(yīng)連接請求;
Send():用于發(fā)送數(shù)據(jù);
Receive():用于接收數(shù)據(jù)[2]。
還有一些用作數(shù)據(jù)存儲的數(shù)組,如csdata[],csRundata[].
3.3 服務(wù)器工作流程圖(圖3)
4 基于socket編程的PC端的實現(xiàn)
(1)PC端是服務(wù)器的控制終端,開發(fā)平臺和技術(shù)支持和上面服務(wù)器一樣,這里不再介紹。PC端的功能是通過連接服務(wù)器向下位機傳輸控制數(shù)據(jù)。
(2)PC端操作界面(圖4):
操作界面一共五個區(qū)域。其中三個操作區(qū),操作區(qū)一和二都是指令和數(shù)據(jù)輸入?yún)^(qū),一共10組。每組的指令都相同,一共有六個,分別是:位移,時間,速度,輸入,輸出,掃描和跳轉(zhuǎn);每個指令對應(yīng)唯一的ID,見表1,默認(rèn)為空。每個數(shù)據(jù)為四位,和前面的指令I(lǐng)D組成一個數(shù)據(jù)塊,指令I(lǐng)D在前,數(shù)據(jù)在后。在發(fā)送時,每個數(shù)據(jù)塊依順序連在一起組成數(shù)據(jù)鏈。數(shù)據(jù)塊的個數(shù)放在數(shù)據(jù)鏈的開頭,再加上能夠被其它設(shè)備識別的幀頭和幀尾,形成一個數(shù)據(jù)包。格式如下:
Ni+A5+number+數(shù)據(jù)塊1+數(shù)據(jù)塊2+……+數(shù)據(jù)塊N+5A
Ni:下位機代號(i=1,2,3…);
A5: 幀頭;
Number: 數(shù)據(jù)塊個數(shù);
數(shù)據(jù)塊:指令+數(shù)據(jù);
5A: 幀尾。
操作區(qū)三是控制區(qū),執(zhí)行連接服務(wù)器和相關(guān)操作。還有兩個區(qū)是顯示區(qū),其中左顯示區(qū)顯示軟件的運行狀況,右顯示區(qū)顯示服務(wù)器返回的客戶機設(shè)備運行數(shù)據(jù)。
操作界面上的“連接”和“上傳”兩個按鈕分別執(zhí)行連接服務(wù)器和向服務(wù)器上傳數(shù)據(jù)的功能。
(3)PC端工作流程圖(圖5)
5 云端服務(wù)器實現(xiàn)
云服務(wù)器采用阿里云方案,采用Windows Server操作系統(tǒng)。具體搭建過程:
5.1 租用合適的服務(wù)器
進入阿里云首頁,選擇彈性計算中的云服務(wù)器ECS,點擊立即購買后選擇服務(wù)器配置,由于本控制器不需要做大規(guī)模的運算,所以選擇最為廉價的簡約型t1,將服務(wù)器地址選為最為便宜的青島地區(qū),由于簡約型t1服務(wù)器僅有1核志強E5 CPU和1GB內(nèi)存,所以在操作系統(tǒng)選項中選擇32位的Windows Server 2008標(biāo)準(zhǔn)版SP2 32位中文版,購買后系統(tǒng)會自動安裝。
5.2 配置服務(wù)器系統(tǒng)
服務(wù)器系統(tǒng)安裝完成后,在實例詳情中點擊連接管理終端,輸入密碼后可以對云端服務(wù)器進行操作。首先,為了今后操作方便,在個性化中把計算機,用戶文件等常用快捷方式添加到桌面,接著,為了程序不因內(nèi)存過小而運行不了,在計算快捷方式上右鍵,點擊高級系統(tǒng)設(shè)置,選擇性能-高級-虛擬內(nèi)存,將C盤作為托管的系統(tǒng),然后,為了方便將調(diào)試程序傳輸?shù)椒?wù)器系統(tǒng),在服務(wù)器系統(tǒng)中下載安裝百度云,至此,服務(wù)器系統(tǒng)部分基本搭建完成。
6 服務(wù)器與客戶機通信協(xié)議的制定和實現(xiàn)
根據(jù)事先約定:
(1)客戶機上傳的數(shù)據(jù)以Di開頭,Di結(jié)尾(i是客戶機號,如1、2、3);(2)PC端上傳的數(shù)據(jù)格式:Ni+A5+數(shù)據(jù)個數(shù)+數(shù)據(jù)塊+5A。(i是客戶機號,如1、2、3)。
7 結(jié)束語
采用W5500作為以太網(wǎng)接口的運動控制器與云端服務(wù)器連接穩(wěn)定,數(shù)據(jù)傳送延遲低,PC端客戶機數(shù)據(jù)傳輸順利,可以及時觀測到運動控制器的工作情況。
參考文獻
[1]汪曉平,鐘軍,等.Visual C++網(wǎng)絡(luò)通信協(xié)議分析與應(yīng)用實現(xiàn)[M]. 北京:人民郵電出版社,2003,2.
[2]梁偉.Visual C++網(wǎng)絡(luò)編程經(jīng)典案例詳解[M].北京:清華大學(xué)出版社,2010,6.
作者簡介:賀順,性別:男,年齡:21,籍貫:浙江省紹興市,職稱:學(xué)生,學(xué)歷:在讀本科,南京工程學(xué)院,研究方向:自動化。
俞鵬:南京工程學(xué)院。
王永:南京工程學(xué)院。