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

  繡花機(jī)在縫制設(shè)備行業(yè)中占有極其重要的位置,在國(guó)內(nèi)外都有廣闊的市場(chǎng),。國(guó)產(chǎn)繡花機(jī)在速度,、噪聲、品質(zhì)和功能等方面與國(guó)外高檔機(jī)相比,,存在著較大的差距,,競(jìng)爭(zhēng)優(yōu)勢(shì)較小,因此,加強(qiáng)繡花機(jī)的開(kāi)發(fā)不僅是市場(chǎng)需求,,更有助于提高民族產(chǎn)業(yè),,具有重要意義。目前隨著SOC,、ARM,、FPGA 與CPLD 等嵌入式技術(shù)的不斷發(fā)展,以嵌入式系統(tǒng)為主的繡花機(jī)主控制器在國(guó)內(nèi)已占據(jù)了主流,,具有較快處理速度的CPU 和多功能的模塊擴(kuò)展使繡花機(jī)運(yùn)動(dòng)控制系統(tǒng)更加強(qiáng)大,,但高速度、高精度和高智能化的發(fā)展方向給繡花機(jī)運(yùn)動(dòng)控制系統(tǒng)提出了更高的要求,,在硬件的不斷完善基礎(chǔ)上,,軟件的性能已成為評(píng)估系統(tǒng)性能優(yōu)劣的一項(xiàng)重要考核指標(biāo),也是繡花機(jī)開(kāi)發(fā)的難點(diǎn)之一,。
  本文運(yùn)動(dòng)控制系統(tǒng)軟件實(shí)現(xiàn)是基于一種高速工業(yè)繡花機(jī)的體系結(jié)構(gòu),,該體系結(jié)構(gòu)以ARM9 處理器S3C2440 為CPU,結(jié)合CPLD 擴(kuò)展模塊,,主要功能是滿(mǎn)足繡花機(jī)在1200 轉(zhuǎn)/分轉(zhuǎn)速下的實(shí)時(shí)性要求(目前國(guó)內(nèi)高速工業(yè)繡花機(jī)的主流轉(zhuǎn)速為1000轉(zhuǎn)/分),,即在高速運(yùn)轉(zhuǎn)完成自動(dòng)繡花、剪線和換色等工作的同時(shí),,保證刺繡品質(zhì)和滿(mǎn)足一些人性化要求,。對(duì)此文中提出了一種基于Windows CE5.0 多線程機(jī)制的繡花機(jī)運(yùn)動(dòng)控制系統(tǒng)軟件實(shí)現(xiàn)方案,該方案已應(yīng)用于自主開(kāi)發(fā)的高速工業(yè)繡花機(jī)中,,取得了較好的效果,。

1 運(yùn)動(dòng)控制系統(tǒng)實(shí)時(shí)性要求及模塊分析

  繡花機(jī)運(yùn)動(dòng)控制系統(tǒng)是強(qiáng)實(shí)時(shí)系統(tǒng),系統(tǒng)所選擇的運(yùn)行環(huán)境必須能及時(shí)響應(yīng)繡花機(jī)運(yùn)動(dòng)控制系統(tǒng)的實(shí)時(shí)性任務(wù),,如果系統(tǒng)響應(yīng)的實(shí)時(shí)性不夠,,會(huì)導(dǎo)致繡花機(jī)在自動(dòng)運(yùn)行過(guò)程中出現(xiàn)斷續(xù)等不穩(wěn)定現(xiàn)象。由于Windows CE 系統(tǒng)在界面,、人機(jī)交互能力,、多任務(wù)以及開(kāi)放性等方面的優(yōu)勢(shì),開(kāi)發(fā)基于Windows CE 的工控系統(tǒng)稱(chēng)為一種趨勢(shì),。
  Windows CE5.0 屬于實(shí)時(shí)性操作系統(tǒng),,在Windows CE5.0 系統(tǒng)中,合理應(yīng)用Windows CE 多線程技術(shù)來(lái)解決系統(tǒng)的實(shí)時(shí)多任務(wù)成為開(kāi)發(fā)技術(shù)的關(guān)鍵,。繡花機(jī)運(yùn)動(dòng)控制系統(tǒng)對(duì)各個(gè)電機(jī)以及其它模塊的實(shí)時(shí)性提出了很高的要求,。Windows CE 多線程機(jī)制因其能同時(shí)執(zhí)行多項(xiàng)任務(wù)而能較好的滿(mǎn)足這一要求,同時(shí)結(jié)合采用有效的中斷方式來(lái)加強(qiáng)對(duì)實(shí)時(shí)性要求的實(shí)現(xiàn),。
  根據(jù)運(yùn)動(dòng)控制系統(tǒng)的功能要求,,整個(gè)系統(tǒng)主要分為以下幾個(gè)模塊:(1)主軸控制模塊,,控制主軸電機(jī)運(yùn)轉(zhuǎn),帶動(dòng)繡針上下移動(dòng),。(2)XY 步進(jìn)電機(jī)控制模塊,,控制XY 步進(jìn)電機(jī),移動(dòng)繡框,。(3)剪線模塊,,控制剪線電機(jī),完成自動(dòng)剪線操作,。(4)換色模塊,,控制換色電機(jī),完成自動(dòng)換色操作,。(5)光電檢測(cè)模塊(A 相Z 相),,主軸電機(jī)旋轉(zhuǎn)位置及圈數(shù)的計(jì)數(shù)反饋。(6)限位處理模塊,,防止步進(jìn)電機(jī)移框時(shí)越位。(7)斷線檢測(cè)模塊,,檢測(cè)繡針上的線是否斷掉,。(8)報(bào)警模塊,繡花機(jī)異常狀態(tài)報(bào)警,。各個(gè)模塊之間的通信關(guān)系如圖1 所示:

 

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

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

2.1 多線程優(yōu)先級(jí)設(shè)置

  在多線程系統(tǒng)中,由于高優(yōu)先級(jí)的線程能隨時(shí)中斷低優(yōu)先級(jí)的線程,,獲得運(yùn)行權(quán),,這樣在設(shè)計(jì)系統(tǒng)時(shí)就要精心安排各個(gè)線程的優(yōu)先級(jí),只有合理的劃分應(yīng)用線程的優(yōu)先級(jí),,系統(tǒng)才能合理調(diào)度這些線程,,從而保障系統(tǒng)的實(shí)時(shí)性能要求。
  Windows CE5.0 支持0~255 共256 了優(yōu)先級(jí),,其中0 優(yōu)先級(jí)最高,,255 優(yōu)先級(jí)最低。根據(jù)Windows CE 操作系統(tǒng)中的線程的優(yōu)先級(jí)層次安排,,0~96 為高實(shí)時(shí)性程序的線程[2],,再結(jié)合繡花機(jī)整體系統(tǒng)的任務(wù)安排,運(yùn)動(dòng)控制系統(tǒng)部分的線程對(duì)象的優(yōu)先級(jí)也主要安排在這個(gè)層次,。運(yùn)動(dòng)控制部分的線程任務(wù)根據(jù)系統(tǒng)中的模塊來(lái)劃分,,其內(nèi)容和優(yōu)先級(jí)安排如表1 所示:


  為了設(shè)置和獲得一個(gè)線程的優(yōu)先級(jí),在系統(tǒng)中可以使用CeSetThreadPriority()和CeGetThreadPriority()函數(shù)來(lái)實(shí)現(xiàn),。線程創(chuàng)建完其優(yōu)先級(jí)也被確定下來(lái),。

 

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

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

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

  事件是用的比較廣泛的同步對(duì)象,,如果一個(gè)線程需要通知其它線程某個(gè)時(shí)間發(fā)生,,可以使用事件(Event)同步對(duì)象,前一個(gè)線程給時(shí)間發(fā)送一個(gè)通知信號(hào),,其他對(duì)事件發(fā)生感興趣的線程一般調(diào)用等待函數(shù)在時(shí)間上等待,。初始化線程將事件設(shè)置為無(wú)信號(hào)狀態(tài)后開(kāi)始進(jìn)行初始化。當(dāng)初始化完成后,,線程把事件設(shè)置為有信號(hào)態(tài),,通知下一個(gè)線程來(lái)完成余下的工作。在運(yùn)動(dòng)控制系統(tǒng)中主要定義了以下事件:
  Event_EncoderA //編碼器A 相計(jì)數(shù)事件, 標(biāo)志主軸電機(jī)所在位置(100°和220°)
Event_MotorX //X 軸電機(jī)移動(dòng)事件,,標(biāo)志X 軸電機(jī)運(yùn)行完,。
Event_MotorY //Y 軸電機(jī)移動(dòng)事件,標(biāo)志Y軸電機(jī)運(yùn)行完,。
Event_EncoderZ //編碼器Z 相中斷事件,,標(biāo)志電機(jī)旋轉(zhuǎn)完一周。
Event_Limit //限位中斷事件,,標(biāo)志繡框越界,。
事件創(chuàng)建采用CreateEvent()函數(shù)來(lái)實(shí)現(xiàn),同時(shí)再創(chuàng)建好事件后要對(duì)其進(jìn)行初始化,。

2.2.2 運(yùn)動(dòng)控制系統(tǒng)中斷處理

  在運(yùn)動(dòng)控制系統(tǒng)中,,中斷處理是重要部分。事件的創(chuàng)建也是為中斷處理準(zhǔn)備的,,中斷響應(yīng)是根據(jù)事件觸發(fā)來(lái)實(shí)現(xiàn)的。中斷源的配置是由Windows CE 中的OAL(OEM 適配層)操作的[3][5],,OAL 將物理中斷號(hào)映射成邏輯中斷號(hào),,并關(guān)聯(lián)具體的事件。實(shí)現(xiàn)方法如下面的兩個(gè)步驟:
 ?。?)申請(qǐng)g_ Count1sysint 為IRQ_EINT8 的邏輯中斷號(hào):KernelIoControl (IOCTL_HAL_REQUEST_SYSINTR,&IRQ_EINT8,sizeof(UINT32),&g_Count1sysint,sizeof(UINT32), NULL) ;
 ?。?)邏輯中斷號(hào)g_ Count1sysint 關(guān)聯(lián)事件Event_MotorX:InterruptInitialize(g_ Count1sysint,Event_MotorX ,0,0);同樣的操作對(duì)其它物理中斷號(hào)的邏輯中斷號(hào)進(jìn)行申請(qǐng)和事件關(guān)聯(lián),。物理中斷,、邏輯中斷、事件和線程之間的關(guān)系如圖2所示,。


  每個(gè)事件對(duì)應(yīng)系統(tǒng)中的一個(gè)中斷響應(yīng),,當(dāng)事件被觸發(fā)時(shí),根據(jù)事件類(lèi)型和時(shí)間做相應(yīng)的處理,。中斷處理線程是驅(qū)動(dòng)程序編寫(xiě)的關(guān)鍵,,其效率的高低直接關(guān)系到系統(tǒng)的實(shí)時(shí)性性能。

 

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

  運(yùn)動(dòng)控制系統(tǒng)軟件實(shí)現(xiàn)要緊密結(jié)合伺服電機(jī)的機(jī)械特性和繡花機(jī)各電機(jī)工作原理來(lái)完成,,整個(gè)程序圍繞著主軸電機(jī)在轉(zhuǎn)一圈的過(guò)程中如何實(shí)現(xiàn)與其它模塊的通信協(xié)作來(lái)實(shí)現(xiàn),,主要包括電機(jī)在220°~100°(約240°) 之間可移動(dòng)步進(jìn)電機(jī)階段和在100°~220°(約120°)禁止步進(jìn)電機(jī)階段,,通過(guò)事件置位來(lái)響應(yīng)兩個(gè)階段中相關(guān)的中斷處理,實(shí)現(xiàn)各個(gè)線程之間同步,。在整個(gè)的系統(tǒng)中,,主軸電機(jī)運(yùn)轉(zhuǎn)為軟件的主線程,線程運(yùn)行過(guò)程中,,通過(guò)中斷事件來(lái)等待,、通知和調(diào)用其它線程,完成刺繡操作,,主軸電機(jī)線程程序流程圖如圖3 所示,,步進(jìn)電機(jī)線程流程圖如圖4 所示:


  主軸電機(jī)線程根據(jù)花樣文件的控制碼來(lái)確定剪線、換色,、跳針和刺繡等運(yùn)動(dòng)方式,,當(dāng)為正常刺繡狀態(tài)時(shí),主軸電機(jī)線程處于阻塞狀態(tài),,要等到Event_MotorX 和Event_MotorY 兩個(gè)電機(jī)移動(dòng)完事件置位后才可以移動(dòng)主軸電機(jī),,同時(shí)在移動(dòng)主軸電機(jī)過(guò)程中,由于光電編碼器線程的優(yōu)先級(jí)高于主軸電機(jī)線程,,故可以響應(yīng)A 相編碼器中斷,,置位事件Event_EncoderA(100°)和Event_EncoderA(220°),可以觸發(fā)優(yōu)先級(jí)比主軸電機(jī)線程優(yōu)先級(jí)高的步進(jìn)電機(jī)線程,,完成220°~100°移動(dòng)步進(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)行過(guò)程中,,如果繡框越界,運(yùn)動(dòng)控制系統(tǒng)會(huì)響應(yīng)中斷,,置位Event_Limit,,執(zhí)行高優(yōu)先級(jí)的限位越界線程并報(bào)警。在主軸電機(jī)運(yùn)行過(guò)程中,,系統(tǒng)也會(huì)響應(yīng)斷線檢測(cè)中斷,,如果斷線,也會(huì)進(jìn)行報(bào)警處理,。

 

3 試驗(yàn)測(cè)試

  文章中采用Windows CE5.0 多線程機(jī)制,,完成了電腦繡花機(jī)運(yùn)動(dòng)控制系統(tǒng)功能的實(shí)現(xiàn),在這種體制下,,使整合系統(tǒng)在控制,、調(diào)度,、通信和同步等方面都有較小的開(kāi)銷(xiāo),同時(shí)結(jié)合中斷,,很好的滿(mǎn)足了系統(tǒng)的強(qiáng)實(shí)時(shí)性的要求,,該方案已經(jīng)運(yùn)用于到了自主開(kāi)發(fā)的高速工業(yè)繡花機(jī)中。在試驗(yàn)過(guò)程中我們可以看到,,繡花機(jī)在正常工作的時(shí)候,,啟動(dòng)較快,在1200 轉(zhuǎn)/分高速運(yùn)行時(shí)平穩(wěn)可靠且噪聲較小,,并能夠精確的停車(chē),,在刺繡過(guò)程中,各個(gè)功能執(zhí)行比較協(xié)和,,同時(shí)刺繡品質(zhì)和效率也有很大的提高,,系統(tǒng)各方面性能都達(dá)到了預(yù)期目的。

4 結(jié)束語(yǔ)

  本文的創(chuàng)新點(diǎn)在于將Windows CE5.0 的多線程機(jī)制與硬件中斷技術(shù)相結(jié)合應(yīng)用于強(qiáng)實(shí)時(shí)性要求的繡花機(jī)運(yùn)動(dòng)控制系統(tǒng)中,,以最小的計(jì)算資源消耗實(shí)現(xiàn)了其預(yù)定的功能,,在滿(mǎn)足系統(tǒng)實(shí)時(shí)性要求的同時(shí),避免了資源浪費(fèi),,提高系統(tǒng)軟件的運(yùn)行效率,。經(jīng)測(cè)試,表明繡花機(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í)用開(kāi)發(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 平臺(tái)的多線程編程[J].微計(jì)算機(jī)信息,2007.12-2:53-55.

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