《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 其他 > 設(shè)計應(yīng)用 > WinCE 多線程下繡花機運動控制的實現(xiàn)
WinCE 多線程下繡花機運動控制的實現(xiàn)
摘要: 繡花機在縫制設(shè)備行業(yè)中占有極其重要的位置,在國內(nèi)外都有廣闊的市場。國產(chǎn)繡花機在速度、噪聲、品質(zhì)和功能等方面與國外高檔機相比,存在著較大的差距,競爭優(yōu)勢較小,因此,加強繡花機的開發(fā)不僅是市場需求,更有助于提高民族產(chǎn)業(yè),具有重要意義。
Abstract:
Key words :

  繡花機在縫制設(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 和多功能的模塊擴(kuò)展使繡花機運動控制系統(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 擴(kuò)展模塊,主要功能是滿足繡花機在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è)繡花機中,取得了較好的效果。

1 運動控制系統(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 步進(jìn)電機控制模塊,控制XY 步進(jìn)電機,移動繡框。(3)剪線模塊,控制剪線電機,完成自動剪線操作。(4)換色模塊,控制換色電機,完成自動換色操作。(5)光電檢測模塊(A 相Z 相),主軸電機旋轉(zhuǎn)位置及圈數(shù)的計數(shù)反饋。(6)限位處理模塊,防止步進(jìn)電機移框時越位。(7)斷線檢測模塊,檢測繡針上的線是否斷掉。(8)報警模塊,繡花機異常狀態(tài)報警。各個模塊之間的通信關(guān)系如圖1 所示:

 

2 多線程技術(shù)在運動控制系統(tǒng)中的應(yīng)用

  Windows CE5.0 是一個多線程的多任務(wù)操作系統(tǒng),一個進(jìn)程由一個或多個線程組成,線程來負(fù)責(zé)執(zhí)行包含在進(jìn)程地址空間的代碼。實際上,操作系統(tǒng)以一種輪轉(zhuǎn)的方式為每個獨立的線程分配CPU 時間片,客觀上是所有的線程近乎同時執(zhí)行。根據(jù)線程任務(wù)的特點,在進(jìn)行運動控制系統(tǒng)結(jié)構(gòu)設(shè)計時,將功能相關(guān)、相互之間通信較多的任務(wù),設(shè)計成一個進(jìn)程中的多個線程,使這些任務(wù)共享該進(jìn)程的地址空間,減小通信和同步的開銷。本文設(shè)計中,就是根據(jù)這一機制實現(xiàn)的。
  在整個繡花機系統(tǒng)中。運動控制部分為一個單獨的進(jìn)程,在這個進(jìn)程中根據(jù)圖1 中的各個模塊之間的關(guān)系,劃分處幾個線程,這些線程主要由兩個大的部分組成:強實時線程部分,包括主軸電機線程、步進(jìn)電機線程、光電編碼器線程、限位中斷線程和斷線處理線程;實時線程部分,包括換色線程、剪線線程和報警線程。系統(tǒng)中的線程同步主要是針對強實時線程而言的,而實時線程是通過像調(diào)用函數(shù)一樣被調(diào)用來實現(xiàn)功能的。

2.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)先級也被確定下來。

 

2.2 線程之間的協(xié)調(diào)與通信

  在多線程系統(tǒng)中,同步不同線程的活動是很重要的。WindowsCE5.0 提供了多種方法來實現(xiàn)線程之間的協(xié)調(diào)和同步,有信號量(Semaphore)、臨界區(qū)(Critical Section)、事件(Event)、互斥體(Mutex)、對點的消息隊列等。各個方法都有各自的特點和適用的場合。在設(shè)計中的運動控制系統(tǒng)中,線程同步主要用的是事件和中斷來實現(xiàn)的。

2.2.1 事件Event 的應(yīng)用

  事件是用的比較廣泛的同步對象,如果一個線程需要通知其它線程某個時間發(fā)生,可以使用事件(Event)同步對象,前一個線程給時間發(fā)送一個通知信號,其他對事件發(fā)生感興趣的線程一般調(diào)用等待函數(shù)在時間上等待。初始化線程將事件設(shè)置為無信號狀態(tài)后開始進(jìn)行初始化。當(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)建好事件后要對其進(jìn)行初始化。

2.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)方法如下面的兩個步驟:
 ?。?)申請g_ Count1sysint 為IRQ_EINT8 的邏輯中斷號:KernelIoControl (IOCTL_HAL_REQUEST_SYSINTR,&IRQ_EINT8,sizeof(UINT32),&g_Count1sysint,sizeof(UINT32), NULL) ;
 ?。?)邏輯中斷號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ā)時,根據(jù)事件類型和時間做相應(yīng)的處理。中斷處理線程是驅(qū)動程序編寫的關(guān)鍵,其效率的高低直接關(guān)系到系統(tǒng)的實時性性能。

 

2.2.3 線程通信的實現(xiàn)

  運動控制系統(tǒng)軟件實現(xiàn)要緊密結(jié)合伺服電機的機械特性和繡花機各電機工作原理來完成,整個程序圍繞著主軸電機在轉(zhuǎn)一圈的過程中如何實現(xiàn)與其它模塊的通信協(xié)作來實現(xiàn),主要包括電機在220°~100°(約240°) 之間可移動步進(jìn)電機階段和在100°~220°(約120°)禁止步進(jìn)電機階段,通過事件置位來響應(yīng)兩個階段中相關(guān)的中斷處理,實現(xiàn)各個線程之間同步。在整個的系統(tǒng)中,主軸電機運轉(zhuǎn)為軟件的主線程,線程運行過程中,通過中斷事件來等待、通知和調(diào)用其它線程,完成刺繡操作,主軸電機線程程序流程圖如圖3 所示,步進(jìn)電機線程流程圖如圖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)先級高的步進(jìn)電機線程,完成220°~100°移動步進(jìn)電機階段和在100°~220°禁止步進(jìn)電機操作,之后步進(jìn)電機線程中初始化Event_EncoderA (100°) 和Event_EncoderA (220°), 置位Event_MotorX 和Event_MotorY 事件通知主軸電機線程運行,而步進(jìn)電機線程又回到了阻塞狀態(tài),等待Event_EncoderA(100°)和Event_EncoderA(220°)事件的置位,到此繡花機完成了刺繡一針的操作。在步進(jìn)電機運行過程中,如果繡框越界,運動控制系統(tǒng)會響應(yīng)中斷,置位Event_Limit,執(zhí)行高優(yōu)先級的限位越界線程并報警。在主軸電機運行過程中,系統(tǒng)也會響應(yīng)斷線檢測中斷,如果斷線,也會進(jìn)行報警處理。

 

3 試驗測試

  文章中采用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ù)期目的。

4 結(jié)束語

  本文的創(chuàng)新點在于將Windows CE5.0 的多線程機制與硬件中斷技術(shù)相結(jié)合應(yīng)用于強實時性要求的繡花機運動控制系統(tǒng)中,以最小的計算資源消耗實現(xiàn)了其預(yù)定的功能,在滿足系統(tǒng)實時性要求的同時,避免了資源浪費,提高系統(tǒng)軟件的運行效率。經(jīng)測試,表明繡花機高速運行時在響應(yīng)速度、控制精度、減少噪聲等方面性能有明顯的改善,有較高的工程價值。

參考文獻(xiàn)

[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.

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。