




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