技術頻道

      WinCE多線程下繡花機運動控制的實現

        1 引言

        繡花機在縫制設備行業中占有極其重要的位置,在國內外都有廣闊的市場。國產繡花機在速度、噪聲、品質和功能等方面與國外高檔機相比,存在著較大的差距,競爭優勢較小,因此,加強繡花機的開發不僅是市場需求,更有助于提高民族產業,具有重要意義。目前隨著SOC、ARM、FPGA 與 CPLD 等嵌入式技術的不斷發展,以嵌入式系統為主的繡花機主控制器在國內已占據了主流,具有較快處理速度的CPU 和多功能的模塊擴展使繡花機運動控制系統更加強大,但高速度、高精度和高智能化的發展方向給繡花機運動控制系統提出了更高的要求,在硬件的不斷完善基礎上,軟件的性能已成為評估系統性能優劣的一項重要考核指標,也是繡花機開發的難點之一。

        本文運動控制系統軟件實現是基于一種高速工業繡花機的體系結構,該體系結構以ARM9 處理器S3C2440 為CPU,結合CPLD 擴展模塊,主要功能是滿足繡花機在1200 轉/分轉速下的實時性要求(目前國內高速工業繡花機的主流轉速為1000轉/分),即在高速運轉完成自動繡花、剪線和換色等工作的同時,保證刺繡品質和滿足一些人性化要求。對此文中提出了一種基于Windows CE5.0 多線程機制的繡花機運動控制系統軟件實現方案,該方案已應用于自主開發的高速工業繡花機中,取得了較好的效果。

        2 運動控制系統實時性要求及模塊分析

        繡花機運動控制系統是強實時系統,系統所選擇的運行環境必須能及時響應繡花機運動控制系統的實時性任務,如果系統響應的實時性不夠,會導致繡花機在自動運行過程中出現斷續等不穩定現象。由于Windows CE 系統在界面、人機交互能力、多任務以及開放性等方面的優勢,開發基于 Windows CE 的工控系統稱為一種趨勢。

        Windows CE5.0 屬于實時性操作系統,在Windows CE5.0 系統中,合理應用Windows CE 多線程技術來解決系統的實時多任務成為開發技術的關鍵。繡花機運動控制系統對各個電機以及其它模塊的實時性提出了很高的要求。Windows CE 多線程機制因其能同時執行多項任務而能較好的滿足這一要求,同時結合采用有效的中斷方式來加強對實時性要求的實現。

        根據運動控制系統的功能要求,整個系統主要分為以下幾個模塊:(1)主軸控制模塊,控制主軸電機運轉,帶動繡針上下移動。(2)XY 步進電機控制模塊,控制XY 步進電機,移動繡框。(3)剪線模塊,控制剪線電機,完成自動剪線操作。(4)換色模塊,控制換色電機,完成自動換色操作。(5)光電檢測模塊(A 相Z 相),主軸電機旋轉位置及圈數的計數反饋。(6)限位處理模塊,防止步進電機移框時越位。(7)斷線檢測模塊,檢測繡針上的線是否斷掉。(8)報警模塊,繡花機異常狀態報警。各個模塊之間的通信關系如圖1 所示:

        3 多線程技術在運動控制系統中的應用

        Windows CE5.0 是一個多線程的多任務操作系統,一個進程由一個或多個線程組成,線程來負責執行包含在進程地址空間的代碼。實際上,操作系統以一種輪轉的方式為每個獨立的線程分配CPU 時間片,客觀上是所有的線程近乎同時執行。根據線程任務的特點,在進行運動控制系統結構設計時,將功能相關、相互之間通信較多的任務,設計成一個進程中的多個線程,使這些任務共享該進程的地址空間,減小通信和同步的開銷。本文設計中,就是根據這一機制實現的。

        在整個繡花機系統中。運動控制部分為一個單獨的進程,在這個進程中根據圖1 中的各個模塊之間的關系,劃分處幾個線程,這些線程主要由兩個大的部分組成:強實時線程部分,包括主軸電機線程、步進電機線程、光電編碼器線程、限位中斷線程和斷線處理線程;實時線程部分,包括換色線程、剪線線程和報警線程。系統中的線程同步主要是針對強實時線程而言的,而實時線程是通過像調用函數一樣被調用來實現功能的。

        3.1 多線程優先級設置

        在多線程系統中,由于高優先級的線程能隨時中斷低優先級的線程,獲得運行權,這樣在設計系統時就要精心安排各個線程的優先級,只有合理的劃分應用線程的優先級,系統才能合理調度這些線程,從而保障系統的實時性能要求。

        Windows CE5.0 支持0~255 共256 了優先級,其中0 優先級最高,255 優先級最低。根據Windows CE 操作系統中的線程的優先級層次安排,0~96 為高實時性程序的線程[2],再結合繡花機整體系統的任務安排,運動控制系統部分的線程對象的優先級也主要安排在這個層次。運動控制部分的線程任務根據系統中的模塊來劃分,其內容和優先級安排如表1 所示:

        為了設置和獲得一個線程的優先級,在系統中可以使用CeSetThreadPriority()和CeGetThreadPriority()函數來實現。線程創建完其優先級也被確定下來。

        3.2 線程之間的協調與通信

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

        3.2.1 事件Event 的應用

        事件是用的比較廣泛的同步對象,如果一個線程需要通知其它線程某個時間發生,可以使用事件(Event)同步對象,前一個線程給時間發送一個通知信號,其他對事件發生感興趣的線程一般調用等待函數在時間上等待。初始化線程將事件設置為無信號狀態后開始進行初始化。當初始化完成后,線程把事件設置為有信號態,通知下一個線程來完成余下的工作。在運動控制系統中主要定義了以下事件:

        Event_EncoderA //編碼器A 相計數事件, 標志主軸電機所在位置(100°和220°)

        Event_MotorX //X 軸電機移動事件,標志X 軸電機運行完。

        Event_MotorY //Y 軸電機移動事件,標志Y軸電機運行完。

        Event_EncoderZ //編碼器Z 相中斷事件,標志電機旋轉完一周。

        Event_Limit //限位中斷事件,標志繡框越界。

        事件創建采用CreateEvent()函數來實現,同時再創建好事件后要對其進行初始化。

        3.2.2 運動控制系統中斷處理

        在運動控制系統中,中斷處理是重要部分。事件的創建也是為中斷處理準備的,中斷響應是根據事件觸發來實現的。中斷源的配置是由 Windows CE 中的OAL(OEM 適配層)操作的[3][5],OAL 將物理中斷號映射成邏輯中斷號,并關聯具體的事件。實現方法如下面的兩個步驟:

        (1)申請g_ Count1sysint 為IRQ_EINT8 的邏輯中斷號:KernelIoControl (IOCTL_HAL_REQUEST_SYSINTR,&IRQ_EINT8,sizeof(UINT32),&g_Count1sysint,sizeof(UINT32), NULL) ;

        (2)邏輯中斷號g_ Count1sysint 關聯事件 Event_MotorX:InterruptInitialize(g_ Count1sysint,Event_MotorX ,0,0);同樣的操作對其它物理中斷號的邏輯中斷號進行申請和事件關聯。物理中斷、邏輯中斷、事件和線程之間的關系如圖2所示。

        每個事件對應系統中的一個中斷響應,當事件被觸發時,根據事件類型和時間做相應的處理。中斷處理線程是驅動程序編寫的關鍵,其效率的高低直接關系到系統的實時性性能。

        3.2.3 線程通信的實現

        運動控制系統軟件實現要緊密結合伺服電機的機械特性和繡花機各電機工作原理來完成,整個程序圍繞著主軸電機在轉一圈的過程中如何實現與其它模塊的通信協作來實現,主要包括電機在220°~100°(約240°) 之間可移動步進電機階段和在100°~220°(約120°)禁止步進電機階段,通過事件置位來響應兩個階段中相關的中斷處理,實現各個線程之間同步。在整個的系統中,主軸電機運轉為軟件的主線程,線程運行過程中,通過中斷事件來等待、通知和調用其它線程,完成刺繡操作,主軸電機線程程序流程圖如圖3 所示,步進電機線程流程圖如圖4 所示:

        主軸電機線程根據花樣文件的控制碼來確定剪線、換色、跳針和刺繡等運動方式,當為正常刺繡狀態時,主軸電機線程處于阻塞狀態,要等到 Event_MotorX 和Event_MotorY 兩個電機移動完事件置位后才可以移動主軸電機,同時在移動主軸電機過程中,由于光電編碼器線程的優先級高于主軸電機線程,故可以響應A 相編碼器中斷,置位事件Event_EncoderA(100°)和Event_EncoderA(220°),可以觸發優先級比主軸電機線程優先級高的步進電機線程,完成220°~100°移動步進電機階段和在100°~220°禁止步進電機操作,之后步進電機線程中初始化Event_EncoderA (100°) 和Event_EncoderA (220°), 置位Event_MotorX 和 Event_MotorY 事件通知主軸電機線程運行,而步進電機線程又回到了阻塞狀態,等待Event_EncoderA(100°)和 Event_EncoderA(220°)事件的置位,到此繡花機完成了刺繡一針的操作。在步進電機運行過程中,如果繡框越界,運動控制系統會響應中斷,置位Event_Limit,執行高優先級的限位越界線程并報警。在主軸電機運行過程中,系統也會響應斷線檢測中斷,如果斷線,也會進行報警處理。

        4 試驗測試

        文章中采用Windows CE5.0 多線程機制,完成了電腦繡花機運動控制系統功能的實現,在這種體制下,使整合系統在控制、調度、通信和同步等方面都有較小的開銷,同時結合中斷,很好的滿足了系統的強實時性的要求,該方案已經運用于到了自主開發的高速工業繡花機中。在試驗過程中我們可以看到,繡花機在正常工作的時候,啟動較快,在1200 轉/分高速運行時平穩可靠且噪聲較小,并能夠精確的停車,在刺繡過程中,各個功能執行比較協和,同時刺繡品質和效率也有很大的提高,系統各方面性能都達到了預期目的。

        5 結束語

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

      文章版權歸西部工控xbgk所有,未經許可不得轉載。

      主站蜘蛛池模板: 无码人妻一区二区三区免费视频| 国产一区二区电影| 亚洲综合无码精品一区二区三区| 91久久精品无码一区二区毛片 | 制服丝袜一区二区三区| 国产裸体舞一区二区三区| 国产成人一区二区三区视频免费| 国产福利电影一区二区三区,日韩伦理电影在线福 | 韩国精品一区视频在线播放| 男女久久久国产一区二区三区| 亚洲乱码一区二区三区在线观看| 精彩视频一区二区| 国产日韩精品一区二区三区| 国产乱码精品一区二区三区香蕉 | 国产福利一区二区三区| 一区二区三区四区精品视频| 亚洲国产成人一区二区三区| 免费日本一区二区| 一区二区免费视频| 亚洲一区中文字幕在线观看| 亚洲AV无码一区二区三区在线| 精品一区二区三区在线成人| 无码精品国产一区二区三区免费| 亚洲AV无码一区二区三区系列| 秋霞午夜一区二区| 91精品一区二区三区久久久久| 精品人无码一区二区三区 | 一区二区三区四区在线播放 | 相泽南亚洲一区二区在线播放| 在线中文字幕一区| 精品一区二区三区在线观看l | 久久国产午夜精品一区二区三区| 亚洲AV无码一区二区三区人| 国产一区二区免费视频| 国产av一区二区三区日韩| 久久久精品人妻一区二区三区四| 91秒拍国产福利一区| 波多野结衣一区二区三区| 精品福利一区3d动漫| 狠狠色成人一区二区三区| 在线视频一区二区三区|