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