三分鐘掌握嵌入式WebServer技術(shù)及其實(shí)現(xiàn)
嵌入式技術(shù)迅速發(fā)展,已經(jīng)被廣泛地應(yīng)用于各行各業(yè)。將嵌入式技術(shù)和數(shù)控技術(shù)結(jié)合起來產(chǎn)生了很多理論和應(yīng)用成果。但是,隨著機(jī)床加工零件復(fù)雜程度越來越大,建立嵌入式數(shù)控系統(tǒng)一致的體系架構(gòu)越來越迫切。沒有體系結(jié)構(gòu)提供通用的方法指導(dǎo),將各式各樣的軟硬件模塊集成到數(shù)控系統(tǒng)中將是非常繁重且容易出錯(cuò)的工作。嵌入式數(shù)控系統(tǒng)體系結(jié)構(gòu)就是要為各個(gè)模塊提供集成規(guī)則和接口規(guī)范,通過這些集成規(guī)則和接口規(guī)范,不同的開發(fā)者能夠構(gòu)建出通用的模塊。利用通用的模塊和通用的集成規(guī)則,可以構(gòu)建不同的嵌入式數(shù)控系統(tǒng),由數(shù)控系統(tǒng)集成到工控站,由工控站再到工控網(wǎng)絡(luò)乃至更復(fù)雜的系統(tǒng)。嵌入式數(shù)控體系結(jié)構(gòu)能夠提高系統(tǒng)的靈活性、可靠性、安全性和開放性。美國國家技術(shù)標(biāo)準(zhǔn)化組織(NIST)就致力于為各種機(jī)械控制系統(tǒng)建立一種參考體系結(jié)構(gòu)[1]。本文研究了嵌入式數(shù)控系統(tǒng)的硬件體系結(jié)構(gòu)和軟件體系結(jié)構(gòu),并結(jié)合所做工作,介紹了這種體系結(jié)構(gòu)的一種實(shí)例。
嵌入式數(shù)控系統(tǒng)硬件體系結(jié)構(gòu)
嵌入式數(shù)控系統(tǒng)硬件體系結(jié)構(gòu)如圖1所示。
圖1嵌入式數(shù)控系統(tǒng)硬件體系結(jié)構(gòu)
嵌入式數(shù)控系統(tǒng)必須包含一個(gè)可編程計(jì)算部件,也可以包含多個(gè),構(gòu)成多CPU系統(tǒng)。 嵌入式處理器或控制器種類很多,比較常用的有ARM、嵌入式X86、MCU等,處理器是整個(gè)系統(tǒng)運(yùn)算和控制中心,它的架構(gòu)越來越趨向于采用RISC指令集Harvard架構(gòu)??删幊逃?jì)算部件,若干年前還是單指處理器或微控制器,而現(xiàn)在卻增加了如FPGA等其它可編程計(jì)算資源。
數(shù)控系統(tǒng)要和操作人員交互,必須有一個(gè)顯示硬件,可以是CRT顯示器,但是一般嵌入式處理器中集成LCD控制器,它提供與DSTN(Dual-Layer Super Twist NemaTIc,雙掃描扭曲向列液晶屏)或TFT(Thin Film Transistor,薄膜晶體管液晶屏)顯示器的接口,通過這個(gè)接口可以直接驅(qū)動(dòng)液晶顯示屏。
隨著USB移動(dòng)存儲(chǔ)設(shè)備使用的推廣,平臺(tái)通過USB主控制器實(shí)現(xiàn)對(duì)USB設(shè)備的支持和控制。處理器中也可能集成了USB客戶端控制器,方便實(shí)現(xiàn)USB客戶端接口,一般通過這個(gè)接口進(jìn)行上位機(jī)與平臺(tái)間的應(yīng)用軟件調(diào)試。
串口用來實(shí)現(xiàn)上下位機(jī)通信,在有些伺服驅(qū)動(dòng)裝置中也提供串口連接,因此,也可以通過串口與驅(qū)動(dòng)連接。
外部存儲(chǔ)器總線接口支持各種外部存儲(chǔ)器:SDRAM、RAM和閃存儲(chǔ)器,內(nèi)存一般選用SDRAM,閃存是一類非易失性存儲(chǔ)器,在電源關(guān)閉后仍能保持片內(nèi)信息,這里用來存儲(chǔ)數(shù)控系統(tǒng)程序及配制數(shù)據(jù)。
進(jìn)給軸接口是數(shù)控系統(tǒng)和進(jìn)給伺服系統(tǒng)的橋梁。就現(xiàn)階段經(jīng)常使用的伺服控制系統(tǒng)而言,進(jìn)給控制接口一般有串行式接口、脈沖式接口、模擬式接口等等。
主軸控制接口連接數(shù)控系統(tǒng)與主軸驅(qū)動(dòng)單元,它包含兩個(gè)部分:主軸速度控制輸出和主軸編碼器輸入。
在數(shù)控系統(tǒng)內(nèi)集成的PLC屬于內(nèi)置式,它有設(shè)計(jì)靈活、結(jié)構(gòu)緊湊、針對(duì)性強(qiáng)等特點(diǎn),主要完成主軸轉(zhuǎn)速的S代碼、刀具功能的T代碼以及控制主軸正反轉(zhuǎn)與啟停、主軸換檔、冷卻液開關(guān)、卡盤松緊等M代碼。
傳感器接口用來檢測(cè)機(jī)床位置信息,實(shí)現(xiàn)各種控制算法的計(jì)算輸入。
現(xiàn)代制造工程的發(fā)展要求數(shù)控系統(tǒng)間應(yīng)該能夠通過網(wǎng)絡(luò)互連,傳遞命令和數(shù)據(jù)信息,并行完成數(shù)控任務(wù)。因此加入以太網(wǎng)模塊,以便在需要時(shí)實(shí)現(xiàn)數(shù)控系統(tǒng)的聯(lián)網(wǎng)。
上述各功能模塊通過標(biāo)準(zhǔn)總線連接,實(shí)行統(tǒng)一的總線接口規(guī)范。該體系結(jié)構(gòu)中有些功能模塊不是每一個(gè)嵌入式數(shù)控系統(tǒng)都必須的,可根據(jù)具體要求裁減。
入式數(shù)控系統(tǒng)軟件體系結(jié)構(gòu)
嵌入式數(shù)控系統(tǒng)軟件體系結(jié)構(gòu)如圖2所示:
圖2嵌入式數(shù)控系統(tǒng)軟件體系結(jié)構(gòu)
嵌入式數(shù)控系統(tǒng)軟件體系結(jié)構(gòu)分為系統(tǒng)平臺(tái)和應(yīng)用軟件兩大部分。上層應(yīng)用軟件分?jǐn)?shù)控應(yīng)用程序接口(NCAPI)和操作界面組件兩個(gè)層次,以分別實(shí)現(xiàn)對(duì)機(jī)床廠和用戶這兩個(gè)層次的開放。
底層模塊除了PLC之外的部分是不對(duì)外開放的,非系統(tǒng)開發(fā)者可以通過NCAPI使用底層的功能。底層模塊完成插補(bǔ)任務(wù)(粗插補(bǔ),微直線段精插補(bǔ),單段, 跳段, 并行程序段處理);PLC任務(wù)(報(bào)警處理,MST處理,急停和復(fù)位處理,虛擬軸驅(qū)動(dòng)程序,刀具壽命管理,突發(fā)事件處理);位置控制任務(wù)(齒隙補(bǔ)償, 螺距補(bǔ)償,極限位置控制,位置輸出);伺服任務(wù)(控制伺服輸出、輸入)以及公用數(shù)據(jù)區(qū)管理(系統(tǒng)中所有資源的控制信息管理)。因此必須具有多任務(wù)的處理能力,即;任務(wù)建立;撤消;調(diào)度;喚醒;阻塞;掛起;激活;延時(shí)的處理能力;創(chuàng)建信號(hào)量;釋放信號(hào)量;取信號(hào)量值的能力。
上層軟件負(fù)責(zé)零件程序的編輯、解釋,參數(shù)的設(shè)置,PLC的狀態(tài)顯示,MDI及故障顯示、加工軌跡、加工程序行的顯示等,通過共享內(nèi)存、FIFO和中斷與底層模塊進(jìn)數(shù)據(jù)交換。上層軟件模塊包括:解釋器模塊,MDI運(yùn)行模塊,程序編輯模塊,自動(dòng)加工模塊,參數(shù)編輯模塊,PLC顯示模塊,故障診斷模塊等等。
數(shù)控應(yīng)用軟件開發(fā)接口(NCAPI)是為針對(duì)不同的機(jī)床和不同的要求而提供的通用接口函數(shù),在此之上可以方便地開發(fā)出具體的數(shù)控系統(tǒng),如華中I型銑床數(shù)控系統(tǒng),世紀(jì)星車床數(shù)控系統(tǒng)等。NCAPI與原華中I型提供的API接口保持一致。統(tǒng)一的API保證系統(tǒng)的可移植性和模塊的互換性;系統(tǒng)開發(fā)集成環(huán)境中的配置功能可以通過配置不同的軟件模塊實(shí)現(xiàn)系統(tǒng)性能的伸縮性,系統(tǒng)性能的伸縮性則通過更換系統(tǒng)硬件得以保證。
應(yīng)用實(shí)例
按照上述嵌入式體系結(jié)構(gòu)的層次劃分,本文開發(fā)了基于嵌入式PC和LINUX操作系統(tǒng)的嵌入式數(shù)控系統(tǒng)。
CPU采用嵌入式PC單元,通過PC104總線嵌入到數(shù)控主板中。在數(shù)控主板上,繼承了開關(guān)量接口電路,MCP、MDI鍵盤接口電路,進(jìn)給軸接口電路以及主軸接口電路。各接口電路由核心器件FPGA芯片集中控制。為滿足CNC裝置對(duì)開放性的要求,數(shù)控主板采用雙FPGA設(shè)計(jì)。一個(gè)FPGA芯片負(fù)責(zé)控制開關(guān)量接口電路,MCP、MDI鍵盤接口電路,主軸接口電路,串行口伺服驅(qū)動(dòng)裝置接口電路;另一個(gè)FPGA芯片負(fù)責(zé)控制脈沖量伺服 驅(qū)動(dòng)裝置或步進(jìn)電機(jī)驅(qū)動(dòng)裝置接口電路,模擬量伺服驅(qū)動(dòng)裝置接口電路。兩個(gè)FPGA芯片通過PC/104總線嵌入式PC機(jī)控制。利用FPGA芯片的靈活性,在不改變硬件電路的情況下,通過改變FPGA芯片的固件,以及兩個(gè)FPGA芯片靈活搭配,可以構(gòu)造出不同配置的數(shù)控裝置。
操作系統(tǒng)是通過改造Linux內(nèi)核使其成為實(shí)時(shí)操作系統(tǒng)。具體方法是:在Linux操作系統(tǒng)中嵌入一個(gè)硬件抽象層,接管所有中斷和對(duì)硬件的操作。由于Linux采用整體式的模塊化結(jié)構(gòu),數(shù)控系統(tǒng)任務(wù)中需要實(shí)時(shí)響應(yīng)的任務(wù)做成數(shù)控實(shí)時(shí)模塊,嵌入到Linux內(nèi)核中,這些任務(wù)包括:伺服監(jiān)控、PLC、位置控制等周期任務(wù)和插補(bǔ)這個(gè)非周期任務(wù),刀補(bǔ)、譯碼和網(wǎng)絡(luò)基本功能打包成數(shù)控應(yīng)用程序接口。
在實(shí)時(shí)Linux軟件平臺(tái)的基礎(chǔ)上,應(yīng)用軟件平臺(tái)包含的離散點(diǎn)I/O控制API、傳感器API、位置控制器API等接口為通用API接口。應(yīng)用程序?qū)影倪^程控制、人機(jī)界面及系統(tǒng)集成與配置支撐環(huán)境三部分只需要用實(shí)時(shí)Linux操作系統(tǒng)相關(guān)系統(tǒng)API替換相應(yīng)的模塊通信接口即可,上層應(yīng)用模塊可以不做修改。同時(shí),應(yīng)用軟件平臺(tái)具備良好的開放性,用戶可自定義API來擴(kuò)充系統(tǒng)功能支持,本文在應(yīng)用平臺(tái)層自定義了一個(gè)數(shù)控圖形庫API,用來支持?jǐn)?shù)控系統(tǒng)的圖形顯示功能。
結(jié)語
本文提出的這種開放的嵌入式數(shù)控系統(tǒng)體系結(jié)構(gòu),在硬件上,標(biāo)準(zhǔn)的總線屏蔽了各功能部件差異,不同功能的數(shù)控硬件通過標(biāo)準(zhǔn)的信號(hào)規(guī)范來定義。在軟件上,嵌入式實(shí)時(shí)操作系統(tǒng)為數(shù)控應(yīng)用軟件提供了系統(tǒng)接口,屏蔽硬件細(xì)節(jié),提供實(shí)時(shí)、可靠、多任務(wù)的運(yùn)行環(huán)境。軟件體系結(jié)構(gòu)總體上分層,使得體系結(jié)構(gòu)清晰明了;層內(nèi)按功能模塊化,盡量減少模塊耦合,使得軟件復(fù)用性很好,有利于數(shù)控系統(tǒng)功能裁減和系統(tǒng)維護(hù)。既保證了硬件平臺(tái)的開放性和穩(wěn)定性,也使得軟件移植和設(shè)計(jì)更加方便。