摘 要: 提出了一種基于Windows CE5.0 多線程機制的繡花機
運動控制系統(tǒng)軟件設(shè)計方案。結(jié)合硬件中斷技術(shù),運用線程同步方法,實現(xiàn)了繡花機運動控制系統(tǒng)的強實時性技術(shù)要求,解決了繡花機在高速運行過程中的響應(yīng)速度較慢、停車控制精度低和噪聲大等問題。該方案已應(yīng)用于自主開發(fā)的繡花機系統(tǒng)中,測試表明,繡花機高速運行時各方面性能有明顯的改善,具有較高的工程價值。
關(guān)鍵詞: 多線程; Windows CE; 中斷; 繡花機
Abstract: Proposing an approach for movement control system of Embroidery Machine Based on Windows CE5.0 multithread, with thetechnology of hardware interruption and method of threads synchronization, realize the hard real -time request of movement controlsystem, solve difficulties such as slow response, low precision and big noise, and it has been used in project, The experiment resultsindicate that the abilities of machine are improved. It is value to project.
Key words: multithreads; Windows CE; interruption; embroidery
1 引言
繡花機在縫制設(shè)備行業(yè)中占有極其重要的位置,在國內(nèi)外都有廣闊的市場。國產(chǎn)繡花機在速度、噪聲、品質(zhì)和功能等方面與國外高檔機相比,存在著較大的差距,競爭優(yōu)勢較小,因此,加強繡花機的開發(fā)不僅是市場需求,更有助于提高民族產(chǎn)業(yè),具有重要意義。目前隨著SOC、ARM、FPGA 與CPLD 等嵌入式技術(shù)的不斷發(fā)展,以嵌入式系統(tǒng)為主的繡花機主控制器在國內(nèi)已占據(jù)了主流,具有較快處理速度的CPU 和多功能的模塊擴展使繡花機運動控制系統(tǒng)更加強大,但高速度、高精度和高智能化的發(fā)展方向給繡花機運動控制系統(tǒng)提出了更高的要求,在硬件的不斷完善基礎(chǔ)上,軟件的性能已成為評估系統(tǒng)性能優(yōu)劣的一項重要考核指標(biāo),也是繡花機開發(fā)的難點之一。
本文運動控制系統(tǒng)軟件實現(xiàn)是基于一種高速工業(yè)繡花機的體系結(jié)構(gòu),該體系結(jié)構(gòu)以ARM9 處理器S3C2440 為CPU,結(jié)合CPLD 擴展模塊,主要功能是滿足繡花機在1200 轉(zhuǎn)/分轉(zhuǎn)速下的實時性要求(目前國內(nèi)高速工業(yè)繡花機的主流轉(zhuǎn)速為1000轉(zhuǎn)/分),即在高速運轉(zhuǎn)完成自動繡花、剪線和換色等工作的同時,保證刺繡品質(zhì)和滿足一些人性化要求。對此文中提出了一種基于Windows CE5.0 多線程機制的繡花機運動控制系統(tǒng)軟件實現(xiàn)方案,該方案已應(yīng)用于自主開發(fā)的高速工業(yè)繡花機中,取得了較好的效果。
2 運動控制系統(tǒng)實時性要求及模塊分析
繡花機運動控制系統(tǒng)是強實時系統(tǒng),系統(tǒng)所選擇的運行環(huán)境必須能及時響應(yīng)繡花機運動控制系統(tǒng)的實時性任務(wù),如果系統(tǒng)響應(yīng)的實時性不夠,會導(dǎo)致繡花機在自動運行過程中出現(xiàn)斷續(xù)等不穩(wěn)定現(xiàn)象。由于Windows CE 系統(tǒng)在界面、人機交互能力、多任務(wù)以及開放性等方面的優(yōu)勢,開發(fā)基于Windows CE 的工控系統(tǒng)稱為一種趨勢。
Windows CE5.0 屬于實時性操作系統(tǒng),在Windows CE5.0 系統(tǒng)中,合理應(yīng)用Windows CE 多線程技術(shù)來解決系統(tǒng)的實時多任務(wù)成為開發(fā)技術(shù)的關(guān)鍵。繡花機運動控制系統(tǒng)對各個電機以及其它模塊的實時性提出了很高的要求。Windows CE 多線程機制因其能同時執(zhí)行多項任務(wù)而能較好的滿足這一要求,同時結(jié)合采用有效的中斷方式來加強對實時性要求的實現(xiàn)。
根據(jù)運動控制系統(tǒng)的功能要求,整個系統(tǒng)主要分為以下幾個模塊:(1)主軸控制模塊,控制主軸電機運轉(zhuǎn),帶動繡針上下移動。(2)XY 步進電機控制模塊,控制XY 步進電機,移動繡框。(3)剪線模塊,控制剪線電機,完成自動剪線操作。(4)換色模塊,控制換色電機,完成自動換色操作。(5)光電檢測模塊(A 相Z 相),主軸電機旋轉(zhuǎn)位置及圈數(shù)的計數(shù)反饋。(6)限位處理模塊,防止步進電機移框時越位。(7)斷線檢測模塊,檢測繡針上的線是否斷掉。(8)報警模塊,繡花機異常狀態(tài)報警。各個模塊之間的通信關(guān)系如圖1 所示:
3 多線程技術(shù)在運動控制系統(tǒng)中的應(yīng)用
Windows CE5.0 是一個多線程的多任務(wù)操作系統(tǒng),一個進程由一個或多個線程組成,線程來負(fù)責(zé)執(zhí)行包含在進程地址空間的代碼。實際上,操作系統(tǒng)以一種輪轉(zhuǎn)的方式為每個獨立的線程分配CPU 時間片,客觀上是所有的線程近乎同時執(zhí)行。根據(jù)線程任務(wù)的特點,在進行
運動控制系統(tǒng)結(jié)構(gòu)設(shè)計時,將功能相關(guān)、相互之間通信較多的任務(wù),設(shè)計成一個進程中的多個線程,使這些任務(wù)共享該進程的地址空間,減小通信和同步的開銷。本文設(shè)計中,就是根據(jù)這一機制實現(xiàn)的。
在整個繡花機系統(tǒng)中。運動控制部分為一個單獨的進程,在這個進程中根據(jù)圖1 中的各個模塊之間的關(guān)系,劃分處幾個線程,這些線程主要由兩個大的部分組成:強實時線程部分,包括主軸電機線程、步進電機線程、光電編碼器線程、限位中斷線程和斷線處理線程;實時線程部分,包括換色線程、剪線線程和報警線程。系統(tǒng)中的線程同步主要是針對強實時線程而言的,而實時線程是通過像調(diào)用函數(shù)一樣被調(diào)用來實現(xiàn)功能的。
3.1 多線程優(yōu)先級設(shè)置
在多線程系統(tǒng)中,由于高優(yōu)先級的線程能隨時中斷低優(yōu)先級的線程,獲得運行權(quán),這樣在設(shè)計系統(tǒng)時就要精心安排各個線程的優(yōu)先級,只有合理的劃分應(yīng)用線程的優(yōu)先級,系統(tǒng)才能合理調(diào)度這些線程,從而保障系統(tǒng)的實時性能要求。
Windows CE5.0 支持0~255 共256 了優(yōu)先級,其中0 優(yōu)先級最高,255 優(yōu)先級最低。根據(jù)Windows CE 操作系統(tǒng)中的線程的優(yōu)先級層次安排,0~96 為高實時性程序的線程[2],再結(jié)合繡花機整體系統(tǒng)的任務(wù)安排,運動控制系統(tǒng)部分的線程對象的優(yōu)先級也主要安排在這個層次。運動控制部分的線程任務(wù)根據(jù)系統(tǒng)中的模塊來劃分,其內(nèi)容和優(yōu)先級安排如表1 所示:
為了設(shè)置和獲得一個線程的優(yōu)先級,在系統(tǒng)中可以使用CeSetThreadPriority()和CeGetThreadPriority()函數(shù)來實現(xiàn)。線程創(chuàng)建完其優(yōu)先級也被確定下來。
3.2 線程之間的協(xié)調(diào)與通信
在多線程系統(tǒng)中,同步不同線程的活動是很重要的。WindowsCE5.0 提供了多種方法來實現(xiàn)線程之間的協(xié)調(diào)和同步,有信號量(Semaphore)、臨界區(qū)(Critical Section)、事件(Event)、互斥體(Mutex)、對點的消息隊列等。各個方法都有各自的特點和適用的場合。在設(shè)計中的
運動控制系統(tǒng)中,線程同步主要用的是事件和中斷來實現(xiàn)的。
3.2.1 事件Event 的應(yīng)用
事件是用的比較廣泛的同步對象,如果一個線程需要通知其它線程某個時間發(fā)生,可以使用事件(Event)同步對象,前一個線程給時間發(fā)送一個通知信號,其他對事件發(fā)生感興趣的線程一般調(diào)用等待函數(shù)在時間上等待。初始化線程將事件設(shè)置為無信號狀態(tài)后開始進行初始化。當(dāng)初始化完成后,線程把事件設(shè)置為有信號態(tài),通知下一個線程來完成余下的工作。在運動控制系統(tǒng)中主要定義了以下事件:
Event_EncoderA //編碼器A 相計數(shù)事件, 標(biāo)志主軸電機所在位置(100°和220°)
Event_MotorX //X 軸電機移動事件,標(biāo)志X 軸電機運行完。
Event_MotorY //Y 軸電機移動事件,標(biāo)志Y軸電機運行完。
Event_EncoderZ //編碼器Z 相中斷事件,標(biāo)志電機旋轉(zhuǎn)完一周。
Event_Limit //限位中斷事件,標(biāo)志繡框越界。
事件創(chuàng)建采用CreateEvent()函數(shù)來實現(xiàn),同時再創(chuàng)建好事件后要對其進行初始化。
3.2.2 運動控制系統(tǒng)中斷處理
在運動控制系統(tǒng)中,中斷處理是重要部分。事件的創(chuàng)建也是為中斷處理準(zhǔn)備的,中斷響應(yīng)是根據(jù)事件觸發(fā)來實現(xiàn)的。中斷源的配置是由Windows CE 中的OAL(OEM 適配層)操作的[3][5],OAL 將物理中斷號映射成邏輯中斷號,并關(guān)聯(lián)具體的事件。實現(xiàn)方法如下面的兩個步驟:
(1)申請g_ Count1sysint 為IRQ_EINT8 的邏輯中斷號:KernelIoControl (IOCTL_HAL_REQUEST_SYSINTR,&IRQ_EINT8,sizeof(UINT32),&g_Count1sysint,sizeof(UINT32), NULL) ;
(2)邏輯中斷號g_ Count1sysint 關(guān)聯(lián)事件Event_MotorX:InterruptInitialize(g_ Count1sysint,Event_MotorX ,0,0);同樣的操作對其它物理中斷號的邏輯中斷號進行申請和事件關(guān)聯(lián)。物理中斷、邏輯中斷、事件和線程之間的關(guān)系如圖2所示。
每個事件對應(yīng)系統(tǒng)中的一個中斷響應(yīng),當(dāng)事件被觸發(fā)時,根據(jù)事件類型和時間做相應(yīng)的處理。中斷處理線程是驅(qū)動程序編寫的關(guān)鍵,其效率的高低直接關(guān)系到系統(tǒng)的實時性性能。
3.2.3 線程通信的實現(xiàn)
運動控制系統(tǒng)軟件實現(xiàn)要緊密結(jié)合伺服電機的機械特性和繡花機各電機工作原理來完成,整個程序圍繞著主軸電機在轉(zhuǎn)一圈的過程中如何實現(xiàn)與其它模塊的通信協(xié)作來實現(xiàn),主要包括電機在220°~100°(約240°) 之間可移動步進電機階段和在100°~220°(約120°)禁止步進電機階段,通過事件置位來響應(yīng)兩個階段中相關(guān)的中斷處理,實現(xiàn)各個線程之間同步。在整個的系統(tǒng)中,主軸電機運轉(zhuǎn)為軟件的主線程,線程運行過程中,通過中斷事件來等待、通知和調(diào)用其它線程,完成刺繡操作,主軸電機線程程序流程圖如圖3 所示,步進電機線程流程圖如圖4 所示:
主軸電機線程根據(jù)花樣文件的控制碼來確定剪線、換色、跳針和刺繡等運動方式,當(dāng)為正常刺繡狀態(tài)時,主軸電機線程處于阻塞狀態(tài),要等到Event_MotorX 和Event_MotorY 兩個電機移動完事件置位后才可以移動主軸電機,同時在移動主軸電機過程中,由于光電編碼器線程的優(yōu)先級高于主軸電機線程,故可以響應(yīng)A 相編碼器中斷,置位事件Event_EncoderA(100°)和Event_EncoderA(220°),可以觸發(fā)優(yōu)先級比主軸電機線程優(yōu)先級高的步進電機線程,完成220°~100°移動步進電機階段和在100°~220°禁止步進電機操作,之后步進電機線程中初始化Event_EncoderA (100°) 和Event_EncoderA (220°), 置位Event_MotorX 和Event_MotorY 事件通知主軸電機線程運行,而步進電機線程又回到了阻塞狀態(tài),等待Event_EncoderA(100°)和Event_EncoderA(220°)事件的置位,到此繡花機完成了刺繡一針的操作。在步進電機運行過程中,如果繡框越界,運動控制系統(tǒng)會響應(yīng)中斷,置位Event_Limit,執(zhí)行高優(yōu)先級的限位越界線程并報警。在主軸電機運行過程中,系統(tǒng)也會響應(yīng)斷線檢測中斷,如果斷線,也會進行報警處理。
4 試驗測試
文章中采用Windows CE5.0 多線程機制,完成了電腦繡花機
運動控制系統(tǒng)功能的實現(xiàn),在這種體制下,使整合系統(tǒng)在控制、調(diào)度、通信和同步等方面都有較小的開銷,同時結(jié)合中斷,很好的滿足了系統(tǒng)的強實時性的要求,該方案已經(jīng)運用于到了自主開發(fā)的高速工業(yè)繡花機中。在試驗過程中我們可以看到,繡花機在正常工作的時候,啟動較快,在1200 轉(zhuǎn)/分高速運行時平穩(wěn)可靠且噪聲較小,并能夠精確的停車,在刺繡過程中,各個功能執(zhí)行比較協(xié)和,同時刺繡品質(zhì)和效率也有很大的提高,系統(tǒng)各方面性能都達(dá)到了預(yù)期目的。
5 結(jié)束語
本文的創(chuàng)新點在于將Windows CE5.0 的多線程機制與硬件中斷技術(shù)相結(jié)合應(yīng)用于強實時性要求的繡花機運動控制系統(tǒng)中,以最小的計算資源消耗實現(xiàn)了其預(yù)定的功能,在滿足系統(tǒng)實時性要求的同時,避免了資源浪費,提高系統(tǒng)軟件的運行效率。經(jīng)測試,表明繡花機高速運行時在響應(yīng)速度、控制精度、減少噪聲等方面性能有明顯的改善,有較高的工程價值。
參考文獻
[1]蘇兢.電腦繡花機控制系統(tǒng)的設(shè)計與實現(xiàn)[D]. 西安:西北工業(yè)大學(xué)軟件工程學(xué)院, 2007.
[2]張冬泉,譚南林,王雪梅等.Windows CE 實用開發(fā)技術(shù)[M].北京:電子工業(yè)出版社, 2006.
[3]何宗鍵. Windows CE 嵌入式系統(tǒng)[M].北京: 北京航空航天大學(xué)出版社, 2006.
[4]賈立山,王立文,邢志偉,韓俊偉.基于多線程技術(shù)的3R 機器人控制系統(tǒng)[J].微計算機信息,2007,6-2:243-245.
[5]黃丹,邵惠鶴. 基于Windows CE 平臺的多線程編程[J].微計算機信息,2007.12-2:53-55.
WinCE 多線程下繡花機運動控制的實現(xiàn)