專利名稱:一種用于數控系統的命令多發機制的實現方法
技術領域:
本發明涉及數控系統的命令發送技術,具體的說是一種用于數控系統的命令多發機制的實現方法。
背景技術:
在數控裝置中,為了實現數控機床對復雜型面的加工,必須先采用CAD系統進行實體模型設計,再由CAM系統根據加工工藝,將三維模型轉換成由程序段(直線段、圓弧段、 樣條程序段等)組成的加工程序,由數控系統進行加工處理。為了確保由直線、圓弧、樣條等擬合工件的形狀與精度,CAM產生的程序段所規定的路徑位移通常很短,而產生的程序段數量通常很大。這些海量短程序段一方面將導致電機的頻繁啟停,同時過短的加工位移也會造成速度處理中的“數據饑餓”。為此,人們設計開發了多種類型的數控系統微小程序段處理功能。數控系統傳統命令發送方式為每個任務控制器周期發送一條命令,由于運動控制周期通常小于任務控制周期,因此隨著微小程序段處理方法的不斷改進,運動控制器性能不斷提高,時常會發生命令隊列處于“數據饑餓”狀態的情況。學術界和工程開發人員提出各種“前瞻”和“預處理”方法,從一定程度上緩解了“數據饑餓”問題。然而,上述方法一方面增加了工件程序開始運行時的等待時間;另一方面對于長工件程序(此處指大于5萬行程序段的工件程序),上述方法仍然難以避免“數據饑餓”問題。
發明內容
針對現有技術中數控系統的命令發送方式存在難以避免“數據饑餓”等不足之處, 本發明要解決的技術問題是提供一種能夠適應數控系統運動控制器的處理性能,避免在運動控制器插補過程中產生“數據饑餓”的用于數控系統的命令多發機制的實現方法。為解決上述技術問題,本發明采用的技術方案是本發明用于數控系統的命令多發機制的實現方法包括以下步驟在數控系統啟動時,進行初始化操作,確定需要發送的命令個數;數控系統中的任務控制器在單個任務控制周期內根據命令個數多次發送命令信息,通過數控系統的兩塊共享通訊緩沖區傳遞給數控系統中的運動控制器;兩塊共享通訊緩沖區分別作為命令緩沖區和狀態緩沖區;運動控制器在單個運動控制周期內,接收多條命令信息,存儲于運動控制隊列中。在單個任務控制周期內多次發送命令信息過程為對輸入的工件程序進行解釋,得到系統能夠識別的命令形式;控制指令的加工順序和加工邏輯,按上述命令形式對部分需要立即處理的命令進行處理;將處理后的命令存儲到任務隊列中,同時更新任務隊列相關參數;判斷上一條命令的狀態信息是否已經返回;
如果上一條命令的狀態信息已經返回,清空等待計數;從任務隊列中取出一條命令,寫入臨時命令數組;判斷是否繼續寫命令;如果不繼續寫命令,則向運動控制器發送寫終止命令;任務控制器將臨時命令數組中的內容寫入命令緩沖區的命令數組中;更新命令號,清空臨時命令數組;本周期任務控制結束,進入下一個任務控制周期。如果繼續寫命令,則返回至從任務隊列中取出一條命令步驟。如果上一條命令的狀態信息沒有返回,則進行等待計數累加;判斷等待計數是否超過系統設置的計數邊界值;如果沒有超過該計數邊界值,則返回判斷上一條命令的狀態信息是否返回步驟。如果超過該計數邊界值,則系統產生報錯信息;本周期任務控制結束,進入下一個任務控制周期。運動控制器在單個運動控制周期內,接收多條命令信息,存儲于運動控制隊列中, 其過程為判斷運動控制器是否能夠讀取命令;如果能夠讀取命令,分發命令緩沖區的命令數組中的命令到命令隊列中;更新狀態緩沖區中的狀態信息;執行運動控制器中的加工控制功能。如果運動控制器不能夠讀取命令,則直接執行加工控制功能;本周期運動控制結束,進入下一個運動控制周期。本發明具有以下有益效果及優點1.效率高。應用本發明方法可以在程序運行開始前設置保證數控系統運行平滑的最小的“前瞻”或“預處理”段數,減少了數控系統加工運行前的等待時間,在一定程度上提高了數控系統的執行效率。2.速度快。應用本發明方法可以提高數控系統的命令發送速度,解決了數控系統高速運行過程中的“數據饑餓”問題。3.通用性強。本發明方法不更改傳統數控系統任務控制隊列向運動控制隊列中發送命令的函數和相關命令結構類型,具有極強的通用性。4.靈活性好。本發明方法提供了參數配置功能,用戶可以通過系統配置文件更改單周期最多發送命令個數的極限值,結合數控系統的任務控制周期和運動控制周期,獲得最佳效果。
圖1為本發明方法中應用的數控系統結構圖;圖2為本發明方法中應用的數控系統任務控制器與運動控制器之間通信方式示意圖;圖3為本發明方法中應用的數控系統模塊調度時序圖;圖4為本發明方法中任務控制器執行流程圖5為本發明方法中運動控制器執行流程圖;圖6為本發明方法中共享通訊緩沖區訪問狀態轉換圖。
具體實施例方式本發明用于數控系統的命令多發機制的實現方法,結合共享通訊緩沖區寫訪問互斥原理,在分析數控系統任務控制周期和運動控制周期特性的基礎上,提出能夠保證兩塊共享通訊緩沖區差時輪詢互斥寫訪問的命令多發機制,實現海量命令數據的快速傳遞。本發明方法包括以下步驟在數控系統啟動時,進行初始化操作,確定需要發送的命令個數;數控系統中的任務控制器在單個任務控制周期內根據命令個數多次發送命令信息,通過數控系統的兩塊共享通訊緩沖區傳遞給數控系統中的運動控制器;兩塊共享通訊緩沖區分別作為命令緩沖區和狀態緩沖區;運動控制器在單個運動控制周期內,接收多條命令信息,存儲于運動控制隊列中。下面結合附圖對本發明作進一步詳細說明。參見圖1,采用人機接口、任務控制器、運動控制器及可編程控制器,將運動控制器與可編程控制器加載于系統的實時內核空間,人機接口、任務控制器部分加載于系統的用戶空間。任務控制器與運動控制器之間通過系統的共享通訊緩沖區互相通信,傳遞命令參數和狀態參數等,如圖2所示。人機接口、任務控制器、運動控制器及可編程控制器都是周期性被調度,分別有自己的調度周期,如圖3所示。運動控制器優先級最高,可編程控制器優先級次之,二者都為軟實時任務;任務控制器優先級小于可編程控制器,其周期大于運動控制器和可編程控制器周期之和;人機接口的優先級最低,其周期大于其它三個模塊之和, 時效性要求不強。用戶通過人機接口輸入工件程序,工件程序在任務控制器中進行程序解釋和狀態管理,然后將生成的命令信息傳遞給運動控制器進行加工控制。命令信息傳遞利用系統的共享通訊緩沖區,采用命令多發機制,在單個任務周期內,發送多條命令信息,從而實現海量數據的快速發送,避免產生“數據饑餓”。用戶通過配置文件配置系統的運動控制周期、可編程控制器周期、任務控制周期和人機接口周期。系統運行啟動時,調用配置文件,同時完成本發明方法單周期最多發送命令個數MAX_COMMAND_NUM的初始化。具體為MAX_COMMAND_NUM = Nmax* (Ttask/Tmotion)(1)其中Nmax表示平均每個運動周期能夠執行的最大指令數目,Tm。ti。n表示運動控制周期,Ttask表示任務控制周期。顯然有Nmax= (vel*Tm。ti。n)/Lave(2)其中vel為工件程序的加工進給速度,Lave為工件程序的平均長度。由(1)、(2)可知,單周期發送命令個數為MAX_COMMAND_NUM = (vel*Ttask)/Lave(3)
考慮到任務控制器中解釋器的執行速度,以及現有數控系統的性能等因素,跟據系統特性設置單周期最多發送命令個數的極限值為CAP_COMMAND_NUM,將之寫入配置文件。 則MAX_COMMAND_NUM的最終表達式為MAX_COMMAND_NUM = min{CAP_COMMAND_NUM,(vel*Ttask)/Lave} (4)如圖4所示,本發明方法中任務控制器執行包括以下步驟在單個任務控制周期內多次發送命令信息過程為對輸入的工件程序進行解釋,得到系統能夠識別的命令形式;控制指令的加工順序和加工邏輯,按上述命令形式對部分需要立即處理的命令進行處理;將處理后的命令存儲到任務隊列中,同時更新任務隊列相關參數;判斷上一條命令的狀態信息是否已經返回;如果上一條命令的狀態信息已經返回,清空等待計數;從任務隊列中取出一條命令,寫入臨時命令數組;判斷是否繼續寫命令;如果不繼續寫命令,則向運動控制器發送寫終止命令;任務控制器將臨時命令數組中的內容寫入命令緩沖區的命令數組中;更新命令號,清空臨時命令數組;本周期任務控制結束,進入下一個任務控制周期;如果繼續寫命令,則返回至從任務隊列中取出一條命令步驟;如果上一條命令的狀態信息沒有返回,則進行等待計數累加;判斷等待計數是否超過系統設置的計數邊界值;如果沒有超過該計數邊界值,則返回判斷上一條命令的狀態信息是否返回步驟;如果超過該計數邊界值,則系統產生報錯信息;本周期任務控制結束,進入下一個任務控制周期。判斷上一條命令的狀態信息是否已經返回是根據狀態信息中的反饋命令號實現的,如果該反饋命令號與上一條發送命令的命令號相同,則認定上一條命令的狀態信息已經返回,否則認定為上一條命令的狀態信息未返回;判斷是否繼續寫命令是判斷所寫的命令數是否達到單周期最多發送命令個數 MAX_COMMAND_NUM,或者是否遇到一些特定的命令,需要結束本任務周期寫命令動作;將該命令寫入臨時命令數組是指每次任務周期開始時,從臨時命令數組的第一個元素開始更新寫入,寫第二條命令時,寫入臨時命令數組的第二個元素位置,并依此類推;更新命令號是指命令號加1 ;在單個任務控制周期循環寫命令的過程中,命令號不變;在下一個任務周期寫命令時,命令號加1 ;等待計數是一種在輪詢等待狀態信息反饋的過程中使用的標識,每輪詢狀態信息一次,等待計數值加1 ;當該等待計數值大于系統設置的計數邊界值時,判定此次輪詢等待結束,進入下一個任務控制周期;如圖5所示,本發明方法中運動控制器在單個運動控制周期內,接收多條命令信息,存儲于運動控制隊列中,其過程為判斷運動控制器是否能夠讀取命令;
如果能夠讀取命令,分發命令緩沖區的命令數組中的命令到命令隊列中;更新狀態緩沖區中的狀態信息;執行運動控制器中的加工控制功能;如果運動控制器不能夠讀取命令,則直接執行加工控制功能;本周期運動控制結束,進入下一個運動控制周期。是否能夠讀取命令是判斷命令緩沖區中的命令號與狀態緩沖區中的狀態反饋信號是否一致。如果不一致(命令號比狀態反饋信號大1),則說明任務控制器發送了一條新命令,能夠讀取命令;如果一致,則說明任務控制器沒有更新命令緩沖區中的命令信息,不能夠讀取命令;更新系統的狀態信息是指更新狀態緩沖區中的狀態反饋信號,令該狀態反饋命令號等于所接收的命令號;執行運動控制器中的加工控制功能主要包括軌跡規劃和軸控制等功能。結合圖4,圖5可知,本發明方法實現了兩塊共享通訊緩沖區的互斥讀寫訪問功能,兩塊共享通訊緩沖區主要指命令緩沖區和狀態緩沖區,互斥讀寫訪問功能主要通過命令緩沖區中的命令號和狀態緩沖區中的狀態反饋信號實現。其狀態機如圖6所示,狀態機轉換步驟為在讀狀態下,如果狀態緩沖區中的狀態反饋信號為0,并且命令緩沖區中的命令號為0,則進入寫命令狀態;在寫命令狀態下,如果狀態緩沖區中的狀態反饋信號為0,并且命令緩沖區中的命令號為1,則進入讀命令/寫狀態的狀態;在讀命令/寫狀態的狀態下,如果狀態緩沖區中的狀態反饋信號為1,并且命令緩沖區中的命令號為1,則說明本次命令傳遞成功,進入下一次讀狀態。所述讀狀態是指能夠對狀態緩沖區中的狀態反饋信號進行讀取,該動作為非互斥動作,任務控制器和運動控制器都可以執行;所述寫命令是指任務控制器更新命令緩沖區中的命令信息,該動作僅由任務控制器執行。其發生條件是上一次命令傳遞過程執行完成,即狀態緩沖區中的狀態反饋信號等于命令緩沖區中的命令號;所述讀命令/寫狀態是指運動控制器讀取命令緩沖區中的命令信息,同時更新狀態緩沖區中的狀態反饋信號。其發生條件是任務控制器完成對命令緩沖區中的命令發送, 運動控制器未對該新命令進行操作;結合圖4,圖5可知,任務控制器和運動控制器執行周期不同,二者對兩塊共享通訊緩沖區的訪問都是通過輪詢的方式實現的。運動控制器的優先級高,不能被強占,在每個運動控制周期內共享通訊緩沖區只能由運動控制線程進行更新,因此在運動控制周期開始時訪問兩塊共享通訊緩沖區1次;任務控制器的優先級低于運動控制器,其周期可能被運動控制周期中斷并搶占,在每個任務控制周期內共享通訊緩沖區不是獨占的。也就是說即使任務控制器不更新共享通訊緩沖區,在任務周期內該共享通訊緩沖區信息也是可變的, 因此在任務周期內多次輪詢共享通訊緩沖區的內容,輪詢次數由等待計數邊界值控制。本實施例將本發明方法應用于藍天硬件平臺的開放式數控系統軟件控制部分的命令分發處理中,其運行結果在三軸數控銑床上得到了驗證。
硬件平臺采用標準工業級IPC板卡,5X86-133MHz CPU作為系統控制器,由一塊萬門可編程FPGA器件構成4+1軸控制器,同時FPGA器件提供數控系統I/O等其他輔助電路。測試環境的主要技術參數如下驅動安川電機Σ II系列交流伺服電機;數控系統CPU5X86-133MHz、RAM-32M、FLASH-32M、1/0-32/24、編碼器輸入-4,D/ A輸出-4、顯示-10. 4”彩色液晶顯示;主軸轉速=24000r/min;進給率 F = 9000mm/min ;加減速方式直線加減速;運動控制周期2ms;可編程邏輯控制器周期2ms ;任務周期10ms;人機接口周期100ms ;單周期最多發送命令個數的極限值20本實施例測試程序GOl G91 F9000X0. 01 Y0. 01 Z0. 01X0. 01 Y0. 01 Z0. 01(共 70000 段)MO 2測試程序開始運行的同時,啟動秒表計時。采用本發明方法前,測試用加工工件程序全部運行完成大約需要700秒,程序運行中速度低,且頻繁波動。采用本發明方法后,測試用加工工件程序全部運行完成大約需要39秒,程序運行速度高,有速度波動。在該實施例運行過程中,單周期最多發送命令個數取其極限值20,因此加工過程中仍會出現運動控制隊列中待加工命令較少的情況。本發明方法在實際應用中,可以根據數控系統的處理能力等,適當設定配置文件中單周期最多發送命令個數的極限值。通過實施例的運行對比可以得到如下結論1.本發明方法執行效率高。應用本發明方法可以在程序運行開始前設置保證數控系統運行平滑的最小的“前瞻”或“預處理”段數,減少了系統加工運行前的等待時間,在一定程度上提高了數控系統的執行效率。2.本發明方法執行速度快。應用本發明方法可以提高數控系統的命令發送速度, 解決了數控系統高速運行過程中的“數據饑餓”問題。3.本發明方法靈活性好。本發明方法提供了參數配置功能,用戶可以通過系統配置文件更改命令多發機制中單周期最多發送命令個數的極限值,結合數控系統的任務控制周期和運動控制周期,獲得最佳效果。
權利要求
1.一種用于數控系統的命令多發機制的實現方法,其特征在于包括以下步驟 在數控系統啟動時,進行初始化操作,確定需要發送的命令個數;數控系統中的任務控制器在單個任務控制周期內根據命令個數多次發送命令信息,通過數控系統的兩塊共享通訊緩沖區傳遞給數控系統中的運動控制器;兩塊共享通訊緩沖區分別作為命令緩沖區和狀態緩沖區;運動控制器在單個運動控制周期內,接收多條命令信息,存儲于運動控制隊列中。
2.按權利要求1所述的用于數控系統的命令多發機制的實現方法,其特征在于在單個任務控制周期內多次發送命令信息過程為對輸入的工件程序進行解釋,得到系統能夠識別的命令形式;控制指令的加工順序和加工邏輯,按上述命令形式對部分需要立即處理的命令進行處理;將處理后的命令存儲到任務隊列中,同時更新任務隊列相關參數; 判斷上一條命令的狀態信息是否已經返回; 如果上一條命令的狀態信息已經返回,清空等待計數; 從任務隊列中取出一條命令,寫入臨時命令數組; 判斷是否繼續寫命令;如果不繼續寫命令,則向運動控制器發送寫終止命令; 任務控制器將臨時命令數組中的內容寫入命令緩沖區的命令數組中; 更新命令號,清空臨時命令數組; 本周期任務控制結束,進入下一個任務控制周期。
3.按權利要求2所述的用于數控系統的命令多發機制的實現方法,其特征在于 如果繼續寫命令,則返回至從任務隊列中取出一條命令步驟。
4.按權利要求2所述的用于數控系統的命令多發機制的實現方法,其特征在于 如果上一條命令的狀態信息沒有返回,則進行等待計數累加;判斷等待計數是否超過系統設置的計數邊界值;如果沒有超過該計數邊界值,則返回判斷上一條命令的狀態信息是否返回步驟。
5.按權利要求4所述的用于數控系統的命令多發機制的實現方法,其特征在于 如果超過該計數邊界值,則系統產生報錯信息;本周期任務控制結束,進入下一個任務控制周期。
6.按權利要求1所述的用于數控系統的命令多發機制的實現方法,其特征在于運動控制器在單個運動控制周期內,接收多條命令信息,存儲于運動控制隊列中,其過程為判斷運動控制器是否能夠讀取命令;如果能夠讀取命令,分發命令緩沖區的命令數組中的命令到命令隊列中; 更新狀態緩沖區中的狀態信息; 執行運動控制器中的加工控制功能。
7.按權利要求6所述的用于數控系統的命令多發機制的實現方法,其特征在于 如果運動控制器不能夠讀取命令,則直接執行加工控制功能;本周期運動控制結束,進入下一個運動控制周期。
全文摘要
本發明涉及一種用于數控系統的命令多發機制的實現方法,包括以下步驟在數控系統啟動時,進行初始化操作,確定需要發送的命令個數;數控系統中的任務控制器在單個任務控制周期內根據命令個數多次發送命令信息,通過數控系統的兩塊共享通訊緩沖區傳遞給數控系統中的運動控制器;兩塊共享通訊緩沖區分別作為命令緩沖區和狀態緩沖區;運動控制器在單個運動控制周期內,接收多條命令信息,存儲于運動控制隊列中。應用本發明方法可以在程序運行開始前設置保證數控系統運行平滑的最小的“前瞻”或“預處理”段數,減少了數控系統加工運行前的等待時間,在一定程度上提高了數控系統的執行效率,解決了數控系統高速運行過程中的“數據饑餓”問題。
文檔編號G05B19/4093GK102540973SQ20101058117
公開日2012年7月4日 申請日期2010年12月9日 優先權日2010年12月9日
發明者劉峰, 劉建俊, 林滸, 王品, 蓋榮麗, 黃艷 申請人:中國科學院沈陽計算技術研究所有限公司, 沈陽高精數控技術有限公司