摘 要: 提出了一種基于Windows CE5.0 多線程機(jī)制的繡花機(jī)
運(yùn)動控制系統(tǒng)軟件設(shè)計(jì)方案。結(jié)合硬件中斷技術(shù),運(yùn)用線程同步方法,實(shí)現(xiàn)了繡花機(jī)運(yùn)動控制系統(tǒng)的強(qiáng)實(shí)時(shí)性技術(shù)要求,解決了繡花機(jī)在高速運(yùn)行過程中的響應(yīng)速度較慢、停車控制精度低和噪聲大等問題。該方案已應(yīng)用于自主開發(fā)的繡花機(jī)系統(tǒng)中,測試表明,繡花機(jī)高速運(yùn)行時(shí)各方面性能有明顯的改善,具有較高的工程價(jià)值。
關(guān)鍵詞: 多線程; Windows CE; 中斷; 繡花機(jī)
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 引言
繡花機(jī)在縫制設(shè)備行業(yè)中占有極其重要的位置,在國內(nèi)外都有廣闊的市場。國產(chǎn)繡花機(jī)在速度、噪聲、品質(zhì)和功能等方面與國外高檔機(jī)相比,存在著較大的差距,競爭優(yōu)勢較小,因此,加強(qiáng)繡花機(jī)的開發(fā)不僅是市場需求,更有助于提高民族產(chǎn)業(yè),具有重要意義。目前隨著SOC、ARM、FPGA 與CPLD 等嵌入式技術(shù)的不斷發(fā)展,以嵌入式系統(tǒng)為主的繡花機(jī)主控制器在國內(nèi)已占據(jù)了主流,具有較快處理速度的CPU 和多功能的模塊擴(kuò)展使繡花機(jī)運(yùn)動控制系統(tǒng)更加強(qiáng)大,但高速度、高精度和高智能化的發(fā)展方向給繡花機(jī)運(yùn)動控制系統(tǒng)提出了更高的要求,在硬件的不斷完善基礎(chǔ)上,軟件的性能已成為評估系統(tǒng)性能優(yōu)劣的一項(xiàng)重要考核指標(biāo),也是繡花機(jī)開發(fā)的難點(diǎn)之一。
本文運(yùn)動控制系統(tǒng)軟件實(shí)現(xiàn)是基于一種高速工業(yè)繡花機(jī)的體系結(jié)構(gòu),該體系結(jié)構(gòu)以ARM9 處理器S3C2440 為CPU,結(jié)合CPLD 擴(kuò)展模塊,主要功能是滿足繡花機(jī)在1200 轉(zhuǎn)/分轉(zhuǎn)速下的實(shí)時(shí)性要求(目前國內(nèi)高速工業(yè)繡花機(jī)的主流轉(zhuǎn)速為1000轉(zhuǎn)/分),即在高速運(yùn)轉(zhuǎn)完成自動繡花、剪線和換色等工作的同時(shí),保證刺繡品質(zhì)和滿足一些人性化要求。對此文中提出了一種基于Windows CE5.0 多線程機(jī)制的繡花機(jī)運(yùn)動控制系統(tǒng)軟件實(shí)現(xiàn)方案,該方案已應(yīng)用于自主開發(fā)的高速工業(yè)繡花機(jī)中,取得了較好的效果。
2 運(yùn)動控制系統(tǒng)實(shí)時(shí)性要求及模塊分析
繡花機(jī)運(yùn)動控制系統(tǒng)是強(qiáng)實(shí)時(shí)系統(tǒng),系統(tǒng)所選擇的運(yùn)行環(huán)境必須能及時(shí)響應(yīng)繡花機(jī)運(yùn)動控制系統(tǒng)的實(shí)時(shí)性任務(wù),如果系統(tǒng)響應(yīng)的實(shí)時(shí)性不夠,會導(dǎo)致繡花機(jī)在自動運(yùn)行過程中出現(xiàn)斷續(xù)等不穩(wěn)定現(xiàn)象。由于Windows CE 系統(tǒng)在界面、人機(jī)交互能力、多任務(wù)以及開放性等方面的優(yōu)勢,開發(fā)基于Windows CE 的工控系統(tǒng)稱為一種趨勢。
Windows CE5.0 屬于實(shí)時(shí)性操作系統(tǒng),在Windows CE5.0 系統(tǒng)中,合理應(yīng)用Windows CE 多線程技術(shù)來解決系統(tǒng)的實(shí)時(shí)多任務(wù)成為開發(fā)技術(shù)的關(guān)鍵。繡花機(jī)運(yùn)動控制系統(tǒng)對各個電機(jī)以及其它模塊的實(shí)時(shí)性提出了很高的要求。Windows CE 多線程機(jī)制因其能同時(shí)執(zhí)行多項(xiàng)任務(wù)而能較好的滿足這一要求,同時(shí)結(jié)合采用有效的中斷方式來加強(qiáng)對實(shí)時(shí)性要求的實(shí)現(xiàn)。
根據(jù)運(yùn)動控制系統(tǒng)的功能要求,整個系統(tǒng)主要分為以下幾個模塊:(1)主軸控制模塊,控制主軸電機(jī)運(yùn)轉(zhuǎn),帶動繡針上下移動。(2)XY 步進(jìn)電機(jī)控制模塊,控制XY 步進(jìn)電機(jī),移動繡框。(3)剪線模塊,控制剪線電機(jī),完成自動剪線操作。(4)換色模塊,控制換色電機(jī),完成自動換色操作。(5)光電檢測模塊(A 相Z 相),主軸電機(jī)旋轉(zhuǎn)位置及圈數(shù)的計(jì)數(shù)反饋。(6)限位處理模塊,防止步進(jìn)電機(jī)移框時(shí)越位。(7)斷線檢測模塊,檢測繡針上的線是否斷掉。(8)報(bào)警模塊,繡花機(jī)異常狀態(tài)報(bào)警。各個模塊之間的通信關(guān)系如圖1 所示:

3 多線程技術(shù)在運(yùn)動控制系統(tǒng)中的應(yīng)用
Windows CE5.0 是一個多線程的多任務(wù)操作系統(tǒng),一個進(jìn)程由一個或多個線程組成,線程來負(fù)責(zé)執(zhí)行包含在進(jìn)程地址空間的代碼。實(shí)際上,操作系統(tǒng)以一種輪轉(zhuǎn)的方式為每個獨(dú)立的線程分配CPU 時(shí)間片,客觀上是所有的線程近乎同時(shí)執(zhí)行。根據(jù)線程任務(wù)的特點(diǎn),在進(jìn)行
運(yùn)動控制系統(tǒng)結(jié)構(gòu)設(shè)計(jì)時(shí),將功能相關(guān)、相互之間通信較多的任務(wù),設(shè)計(jì)成一個進(jìn)程中的多個線程,使這些任務(wù)共享該進(jìn)程的地址空間,減小通信和同步的開銷。本文設(shè)計(jì)中,就是根據(jù)這一機(jī)制實(shí)現(xiàn)的。
在整個繡花機(jī)系統(tǒng)中。運(yùn)動控制部分為一個單獨(dú)的進(jìn)程,在這個進(jìn)程中根據(jù)圖1 中的各個模塊之間的關(guān)系,劃分處幾個線程,這些線程主要由兩個大的部分組成:強(qiáng)實(shí)時(shí)線程部分,包括主軸電機(jī)線程、步進(jìn)電機(jī)線程、光電編碼器線程、限位中斷線程和斷線處理線程;實(shí)時(shí)線程部分,包括換色線程、剪線線程和報(bào)警線程。系統(tǒng)中的線程同步主要是針對強(qiáng)實(shí)時(shí)線程而言的,而實(shí)時(shí)線程是通過像調(diào)用函數(shù)一樣被調(diào)用來實(shí)現(xiàn)功能的。
3.1 多線程優(yōu)先級設(shè)置
在多線程系統(tǒng)中,由于高優(yōu)先級的線程能隨時(shí)中斷低優(yōu)先級的線程,獲得運(yùn)行權(quán),這樣在設(shè)計(jì)系統(tǒng)時(shí)就要精心安排各個線程的優(yōu)先級,只有合理的劃分應(yīng)用線程的優(yōu)先級,系統(tǒng)才能合理調(diào)度這些線程,從而保障系統(tǒng)的實(shí)時(shí)性能要求。
Windows CE5.0 支持0~255 共256 了優(yōu)先級,其中0 優(yōu)先級最高,255 優(yōu)先級最低。根據(jù)Windows CE 操作系統(tǒng)中的線程的優(yōu)先級層次安排,0~96 為高實(shí)時(shí)性程序的線程[2],再結(jié)合繡花機(jī)整體系統(tǒng)的任務(wù)安排,運(yùn)動控制系統(tǒng)部分的線程對象的優(yōu)先級也主要安排在這個層次。運(yùn)動控制部分的線程任務(wù)根據(jù)系統(tǒng)中的模塊來劃分,其內(nèi)容和優(yōu)先級安排如表1 所示:

為了設(shè)置和獲得一個線程的優(yōu)先級,在系統(tǒng)中可以使用CeSetThreadPriority()和CeGetThreadPriority()函數(shù)來實(shí)現(xiàn)。線程創(chuàng)建完其優(yōu)先級也被確定下來。
3.2 線程之間的協(xié)調(diào)與通信
在多線程系統(tǒng)中,同步不同線程的活動是很重要的。WindowsCE5.0 提供了多種方法來實(shí)現(xiàn)線程之間的協(xié)調(diào)和同步,有信號量(Semaphore)、臨界區(qū)(Critical Section)、事件(Event)、互斥體(Mutex)、對點(diǎn)的消息隊(duì)列等。各個方法都有各自的特點(diǎn)和適用的場合。在設(shè)計(jì)中的
運(yùn)動控制系統(tǒng)中,線程同步主要用的是事件和中斷來實(shí)現(xiàn)的。
3.2.1 事件Event 的應(yīng)用
事件是用的比較廣泛的同步對象,如果一個線程需要通知其它線程某個時(shí)間發(fā)生,可以使用事件(Event)同步對象,前一個線程給時(shí)間發(fā)送一個通知信號,其他對事件發(fā)生感興趣的線程一般調(diào)用等待函數(shù)在時(shí)間上等待。初始化線程將事件設(shè)置為無信號狀態(tài)后開始進(jìn)行初始化。當(dāng)初始化完成后,線程把事件設(shè)置為有信號態(tài),通知下一個線程來完成余下的工作。在運(yùn)動控制系統(tǒng)中主要定義了以下事件:
Event_EncoderA //編碼器A 相計(jì)數(shù)事件, 標(biāo)志主軸電機(jī)所在位置(100°和220°)
Event_MotorX //X 軸電機(jī)移動事件,標(biāo)志X 軸電機(jī)運(yùn)行完。
Event_MotorY //Y 軸電機(jī)移動事件,標(biāo)志Y軸電機(jī)運(yùn)行完。
Event_EncoderZ //編碼器Z 相中斷事件,標(biāo)志電機(jī)旋轉(zhuǎn)完一周。
Event_Limit //限位中斷事件,標(biāo)志繡框越界。
事件創(chuàng)建采用CreateEvent()函數(shù)來實(shí)現(xiàn),同時(shí)再創(chuàng)建好事件后要對其進(jìn)行初始化。
3.2.2 運(yùn)動控制系統(tǒng)中斷處理
在運(yùn)動控制系統(tǒng)中,中斷處理是重要部分。事件的創(chuàng)建也是為中斷處理準(zhǔn)備的,中斷響應(yīng)是根據(jù)事件觸發(fā)來實(shí)現(xiàn)的。中斷源的配置是由Windows CE 中的OAL(OEM 適配層)操作的[3][5],OAL 將物理中斷號映射成邏輯中斷號,并關(guān)聯(lián)具體的事件。實(shí)現(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);同樣的操作對其它物理中斷號的邏輯中斷號進(jìn)行申請和事件關(guān)聯(lián)。物理中斷、邏輯中斷、事件和線程之間的關(guān)系如圖2所示。

每個事件對應(yīng)系統(tǒng)中的一個中斷響應(yīng),當(dāng)事件被觸發(fā)時(shí),根據(jù)事件類型和時(shí)間做相應(yīng)的處理。中斷處理線程是驅(qū)動程序編寫的關(guān)鍵,其效率的高低直接關(guān)系到系統(tǒng)的實(shí)時(shí)性性能。
3.2.3 線程通信的實(shí)現(xiàn)
運(yùn)動控制系統(tǒng)軟件實(shí)現(xiàn)要緊密結(jié)合伺服電機(jī)的機(jī)械特性和繡花機(jī)各電機(jī)工作原理來完成,整個程序圍繞著主軸電機(jī)在轉(zhuǎn)一圈的過程中如何實(shí)現(xiàn)與其它模塊的通信協(xié)作來實(shí)現(xiàn),主要包括電機(jī)在220°~100°(約240°) 之間可移動步進(jìn)電機(jī)階段和在100°~220°(約120°)禁止步進(jìn)電機(jī)階段,通過事件置位來響應(yīng)兩個階段中相關(guān)的中斷處理,實(shí)現(xiàn)各個線程之間同步。在整個的系統(tǒng)中,主軸電機(jī)運(yùn)轉(zhuǎn)為軟件的主線程,線程運(yùn)行過程中,通過中斷事件來等待、通知和調(diào)用其它線程,完成刺繡操作,主軸電機(jī)線程程序流程圖如圖3 所示,步進(jìn)電機(jī)線程流程圖如圖4 所示:

主軸電機(jī)線程根據(jù)花樣文件的控制碼來確定剪線、換色、跳針和刺繡等運(yùn)動方式,當(dāng)為正常刺繡狀態(tài)時(shí),主軸電機(jī)線程處于阻塞狀態(tài),要等到Event_MotorX 和Event_MotorY 兩個電機(jī)移動完事件置位后才可以移動主軸電機(jī),同時(shí)在移動主軸電機(jī)過程中,由于光電編碼器線程的優(yōu)先級高于主軸電機(jī)線程,故可以響應(yīng)A 相編碼器中斷,置位事件Event_EncoderA(100°)和Event_EncoderA(220°),可以觸發(fā)優(yōu)先級比主軸電機(jī)線程優(yōu)先級高的步進(jìn)電機(jī)線程,完成220°~100°移動步進(jìn)電機(jī)階段和在100°~220°禁止步進(jìn)電機(jī)操作,之后步進(jìn)電機(jī)線程中初始化Event_EncoderA (100°) 和Event_EncoderA (220°), 置位Event_MotorX 和Event_MotorY 事件通知主軸電機(jī)線程運(yùn)行,而步進(jìn)電機(jī)線程又回到了阻塞狀態(tài),等待Event_EncoderA(100°)和Event_EncoderA(220°)事件的置位,到此繡花機(jī)完成了刺繡一針的操作。在步進(jìn)電機(jī)運(yùn)行過程中,如果繡框越界,運(yùn)動控制系統(tǒng)會響應(yīng)中斷,置位Event_Limit,執(zhí)行高優(yōu)先級的限位越界線程并報(bào)警。在主軸電機(jī)運(yùn)行過程中,系統(tǒng)也會響應(yīng)斷線檢測中斷,如果斷線,也會進(jìn)行報(bào)警處理。
4 試驗(yàn)測試
文章中采用Windows CE5.0 多線程機(jī)制,完成了電腦繡花機(jī)
運(yùn)動控制系統(tǒng)功能的實(shí)現(xiàn),在這種體制下,使整合系統(tǒng)在控制、調(diào)度、通信和同步等方面都有較小的開銷,同時(shí)結(jié)合中斷,很好的滿足了系統(tǒng)的強(qiáng)實(shí)時(shí)性的要求,該方案已經(jīng)運(yùn)用于到了自主開發(fā)的高速工業(yè)繡花機(jī)中。在試驗(yàn)過程中我們可以看到,繡花機(jī)在正常工作的時(shí)候,啟動較快,在1200 轉(zhuǎn)/分高速運(yùn)行時(shí)平穩(wěn)可靠且噪聲較小,并能夠精確的停車,在刺繡過程中,各個功能執(zhí)行比較協(xié)和,同時(shí)刺繡品質(zhì)和效率也有很大的提高,系統(tǒng)各方面性能都達(dá)到了預(yù)期目的。
5 結(jié)束語
本文的創(chuàng)新點(diǎn)在于將Windows CE5.0 的多線程機(jī)制與硬件中斷技術(shù)相結(jié)合應(yīng)用于強(qiáng)實(shí)時(shí)性要求的繡花機(jī)運(yùn)動控制系統(tǒng)中,以最小的計(jì)算資源消耗實(shí)現(xiàn)了其預(yù)定的功能,在滿足系統(tǒng)實(shí)時(shí)性要求的同時(shí),避免了資源浪費(fèi),提高系統(tǒng)軟件的運(yùn)行效率。經(jīng)測試,表明繡花機(jī)高速運(yùn)行時(shí)在響應(yīng)速度、控制精度、減少噪聲等方面性能有明顯的改善,有較高的工程價(jià)值。
參考文獻(xiàn)
[1]蘇兢.電腦繡花機(jī)控制系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[D]. 西安:西北工業(yè)大學(xué)軟件工程學(xué)院, 2007.
[2]張冬泉,譚南林,王雪梅等.Windows CE 實(shí)用開發(fā)技術(shù)[M].北京:電子工業(yè)出版社, 2006.
[3]何宗鍵. Windows CE 嵌入式系統(tǒng)[M].北京: 北京航空航天大學(xué)出版社, 2006.
[4]賈立山,王立文,邢志偉,韓俊偉.基于多線程技術(shù)的3R 機(jī)器人控制系統(tǒng)[J].微計(jì)算機(jī)信息,2007,6-2:243-245.
[5]黃丹,邵惠鶴. 基于Windows CE 平臺的多線程編程[J].微計(jì)算機(jī)信息,2007.12-2:53-55.
WinCE 多線程下繡花機(jī)運(yùn)動控制的實(shí)現(xiàn)