摘 要:在CNC系統中,一般以工業用PC機作為上位機,由嵌入式系統構成的機床控制器作為下位機。在此介紹一種基于C8051和μC/OS-Ⅱ的數控機床嵌入式執行控制器,詳細介紹該執行控制器的軟硬件結構、μC/OS-Ⅱ實時操作系統在C8051f020上的移植方法,并給出了執行控制器軟件模塊的任務劃分、優先級的確定以及任務間通信的實現。經驗證,該系統能夠滿足數控系統的要求,具有可行性。關鍵詞:C8051; μC/OS-Ⅱ; 嵌入式執行控制器; 數控系統
中圖分類號:TN911-34; TP391 文獻標識碼:A
文章編號:1004-373X(2010)16-0063-03
Realization of Embedded ActuatorController for CNC Machine
Tool Based on C8051 and μC/OS-II
LIU Yan-jun
(Department of Computer Science, Chongqing University of Arts and Sciences, Chongqing 402160, China)
Abstract: In CNC system, IPC is generally used as a master controller while machine tool controller, which is composed of embedded system, is used as a slave controller. An embedded actuatorcontroller based on C8051 and μC/OS-II for CNC machine tool is introduced. The hardware and software architectures, and the transplantation of μC/OS-II to the C8051f020 are elaborated. The task partitioning of actuatorcontroller software module, priority setting and implementation of communication between tasks are discussed. The verification result indicates that the system can meet the requirements of numerical control system and is feasible.
Keywords: C8051; μC/OS-Ⅱ; embedded actuatorcontroller; numerical control system
在數控機床系統中,功能模塊可分為兩大部分:一部分是實時性要求不高的功能,例如人機界面交互管理等;另一部分是實時性要求高的功能,主要有伺服控制、插補計算等。根據這一特點,該系統采用兩級控制結構,利用IPC豐富的軟件資源,提供圖形化的人機交互環境;利用嵌入式執行控制器的高實時性和穩定性,實現快速、可靠的控制,充分發揮了二者的優點[1]。兩級之間用串行口進行實時通信[2]。本文主要介紹嵌入式執行控制器的實現。
1 數控機床系統硬件結構
數控機床系統硬件結構如圖1所示,IPC作為上位機,安裝有專用軟件,實現人機交互;C8051020芯片[3]及其外圍電路構成的嵌入式執行控制器作為下位機,負責實時、可靠的控制。執行控制器通過串行口接收上位機的命令信息(包括:插補命令、開關量控制命令),再將這些信息轉換成控制信號輸送給相應的執行部件。例如,將插補命令轉換成一連串的插補信號,輸送給電機控制部件;將開關量控制命令轉換成輸出信號,通過I/O驅動隔離接口板輸送給相應的開關控制器。執行控制器同時還有2個檢測任務:一個是刀具是否運動到各軸限位點的檢測,另一個是間隙電壓的檢測。這兩個信息將為運動時的自動調節控制提供依據。執行控制器還負責將運行中的狀態信息組裝成幀,實時地傳送給上位機。
2 μC/OS-Ⅱ在C8051F020上的移植
要使用μC/OS-Ⅱ,首先就必須把這個內核成功地移植到C8051F020上。μC/OS-Ⅱ的移植主要是對OS_CPU.H,OS_CPU_A.ASM和OS_CPU_C.C三個文件進行修改[4],下面就具體的修改內容做介紹。
2.1 OS_CPU.H文件的修改
OS_CPU.H包括了用#define定義的與處理器相關的常量、宏和類型定義。其中,需要修改的部分如下:
typedef unsigned charOS_STK;/* 堆棧入口寬度為8位 */
#define OS_ENTER_CRITICAL() EA=0/*關中斷(使用方法1,即直接開關中斷)
#define OS_EXIT_CRITICAL() EA=1/*開中斷*/
#define OS_STK_GROWTH 0/*定義堆棧增長方向為向上,即從低地址到高地址*/
#define OS_TASK_SW() OSCtxSw()/*任務切換*/
圖1 數控機床系統硬件結構
2.2 OS_CPU_A.ASM文件的修改
該文件包含4 個匯編語言函數。
(1) OSStartHighRdy()函數在多任務系統啟動函數OSStart()中調用。作用是設置系統運行標志位OSRunning=TRUE;將就緒表中最高優先級任務的棧指針Load到SP中,并強制中斷返回。
(2) OSCtxSw()函數是在任務級切換函數中調用的。作用是保存當前任務的環境變量,將當前SP存入任務TCB中,載入就緒最高優先級任務的SP,恢復就緒最高優先級任務的環境變量,中斷返回。這樣就完成了任務級的切換。
(3) OSIntCtxSw()在退出中斷服務函數OSIntExit ()中調用。作用是實現中斷級任務切換。
(4) OSTickISR()系統時鐘節拍中斷服務函數,其周期的大小決定了內核所能給應用系統提供的最小時間間隔服務。該中斷由C8051F020的T0定時器完成,設置定時時間為20 ms。修改代碼如下:
OSTickISR:
USING 0
PUSHALL
CLR TR0
;定義Tick=50次/s(即20 ms/次)
MOV DPTR,#T0VAL
MOV TH0,DPH
MOV TL0,DPL
SETB TR0
其中:T0VAL是16位定時器T0的時間常數,該系統采用25 MHz的外接晶振,模式1(16位)定時。
2.3 OS_CPU_C.C文件的修改
該文件中定義10個C 函數,如下:
void OSTaskStk Init (void );void OSTimeTickHook(void);
void OSInitHookBegin ( void); void OSInitHookEnd(void);
void OSTaskCreateHook (OS_TCB *ptcb); void OSTaskDelHook (OS_TCB *ptcb);
void OSTaskIdleHook ( void) ;void OSTaskStatHook(void) ;
void OSTaskSwHook ( void) ; void OSTCBInitHook (OS_TCB *ptcb)。
其中,最重要的是OSTaskStkInit ( ),它的作用是初始化堆棧, 返回堆棧的最低地址、堆棧的長度,方便匯編語言實現任務的切換。其他9個函數是暫無具體功能,其功能可以根據需要在系統內核擴展時添加。
3 基于μC/OS-Ⅱ的數控機床系統設計
3.1 執行控制器的軟件結構[5-7]
如圖2所示,系統總體分為3個功能塊,即:與IPC的通信、命令解釋和命令執行。其中,通信有發送和接收兩方面內容[8];命令解釋時,直接執行開關量控制命令;命令執行中,需要進行插補計算、檢測間隙電壓和限位開關狀態及加工監測。
圖2 系統軟件結構
3.2 任務劃分及其優先級的確定
(1) 發送任務
嵌入式執行控制器發送給IPC的信息有2種:聯絡信號和運行中的狀態信息。嵌入式執行控制器處于待命狀態時,定期向IPC發送聯絡信號,用于確定IPC是否正常工作。若IPC運行正常,則IPC收到聯絡信號后,會回送給嵌入式執行控制器一個應答信號,若發送的多次聯絡信號都未收到應答,則認為IPC出錯。嵌入式執行器處于加工狀態時,將運行中的狀態信息以固定格式定期向IPC發送。IPC收到信息后,將其轉換成圖形、文字等信息顯示出來,提供給操作員,便于實時掌握加工狀態,發送任務的實時性要求低。
(2) 接收任務
嵌入式執行控制器接收IPC機發送的聯絡、應答和命令3種信息,若接收到聯絡信號或應答信號,則接收任務直接處理(發送應答信號或刷新聯絡狀態位);若既不是聯絡信號也不是應答信號,則認為是命令信息,接收任務將命令完整接收后,關閉寫接收緩沖區,激活命令解釋任務。接收任務是由通信口接收中斷觸發的,其實時性要求高。
(3) 命令解釋任務
命令解釋任務首先對接收緩沖區的命令信息進行校驗和解釋,處理完成后,清空并開放接收緩沖區,允許新命令的接收。這樣做的目的是不在接收緩沖區中積壓多條命令,在當前命令解釋完成之前,不接收新命令,以提高嵌入式執行控制器對命令的響應速度。根據命令執行時間的長短,將命令分為開關量控制命令和插補命令2種。開關量控制命令的執行時間短,因此在命令解釋后直接執行,以減少任務切換的時間消耗。插補命令是加工命令,運行時間長,采用專門的加工監控任務來執行,命令解釋任務只負責在命令解釋完成后激活加工監控任務。命令解釋任務的實時性要求高。
(4) 加工監控任務
加工監控任務根據當前的工作狀態(手動方式或自動方式)激活插補計算任務,并進行加工狀態的監控。手動工作方式下,操作員在PC機上手動控制刀具向-x,+x,-y,+y,-z,+z六個方向運動、刀具返回基準點、端面找正和孔中心定位等操作。自動工作方式下,操作員向控制器傳送直線、圓弧的運動命令,控制器自動完成該線形的運動。加工監控任務的實時性要求較高。
(5) 插補計算任務
插補計算任務是計算輪廓起點和終點的中間點坐標值。本系統采用逐點比較法進行插補,插補任務每執行1次產生1個行程增量,每個行程增量以1個脈沖的方式輸出給步進電機。插補任務的運行周期可能低于操作系統時鐘,達到每秒數千次,因此使用定時器1作為插補運動時間控制器。插補計算任務在該軟件中的實時性要求最高。
(6) 間隙電壓檢測和限位開關狀態檢測任務
該系統用于電火花線切割數控機床,間隙電壓是電火花加工時工具(電極絲)與工件之間的放電電壓,該數據是對放電加工過程進行實時檢測的重要參數[9],需要實時采集。限位開關是指刀具運動到加工臺邊界位置時,觸發的一個狀態開關。當到達這個感應開關時刀具應該停止工作,起到一個保護作用,也就是限定了運動的位移,該信息也需要實時采集。這兩個任務具有實時性高,執行頻繁,執行時間短的特點,因此把它們設為一個檢測任務。與插補任務相同,由于檢測任務的運行周期低于操作系統時鐘,因此使用定時器3作為檢測任務的時間觸發器。
上面將實現的功能劃分為6個任務,介紹這些任務的功能,并對其實時性要求做了分析[10]。上述任務劃分如表1所示。
3.3 任務間通信
在完成任務劃分后,還需要考慮任務的通信和同步。發送任務與檢測任務是獨立的,接收任務、命令解釋任務和加工監控任務存在聯系,如圖3所示,這里需要使用信號量和郵箱解決任務間的通信同步。
表1 任務劃分表
任務觸發自運行周期優先級
中斷處理任務
插補計算任務定時器1中斷根據指定的插補速度設定,最小1 ms高(由中斷優先級控制寄存器設定)
狀態檢測任務定時器3中斷10 ms一般
接收任務串口中斷無一般
調度任務
命令解釋任務接收任務觸發無5
加工監控任務命令解釋任務觸發50 ms6
發送任務OS調度器觸發100 ms7
圖3 接收任務、命令解釋任務和加工監控任務之間的關系
(1) 命令信號量SemCmd。當接收任務接收到一條命令信息時,發出該信號量,由命令解釋任務接收,取出并解釋命令后,清除該信號量,允許接收新命令。
(2) 加工啟動消息郵箱Mbox。當命令解釋任務發現命令信息為插補命令時,將信息翻譯成約定格式存入郵箱,發送出去,加工監控任務接收。
4 實驗結果
實驗測試,IPC通過串口向執行控制器發送直線插補命令G01X1000Y2000\\\\LF,如圖4所示,觀察返回信息中的x,y軸坐標,各點基本分布于點(0,0)與點(1 000,2 000)的直線周圍,誤差小于1個運動當量,這說明整個系統運行正常。
圖4 IPC機串口接收到的運行狀態信息
5 結 語
C8051F020 處理器具有豐富的硬件資源和強大的處理性能,μC/OS-Ⅱ具有實時性高,通用性好,移植、擴展方便等特點。基于該軟硬件平臺,可以降低系統的復雜度,提高產品的開發速度。經驗證,該硬軟件系統能滿足該數控系統的要求,具有可行性。
參考文獻
[1]胡俊.主從式數控系統中的數據通訊[J].機床與液壓,2000(1):32-33.
[2]王海華,郭虛進,李文淘.數控系統通訊協議參數與通訊軟件設計[J].儀器儀表標準化與測量,1999(5):14-16.
[3]潘琢金.C8051FXXX高速SoC單片機原理及應用[M].北京:北京航空航天大學出版社,2002.
[4]JEAN J Labrosse. μC/OS-Ⅱ源碼公開的實時嵌入式操作系統[M]. 邵貝貝,譯.北京:中國電力出版社,2001.
[5]李誠人.嵌入式開放型數控系統研究[J].計算機應用與軟件,2008(25):227-229.
[6]譚峰,李虹霞,李誠人.基于μC/OS-Ⅱ的開放式數控系統研究[J].機械與電子,2004(12):3-6.
[7]陳志輝,楊代華.基于μC /OS-Ⅱ和雙MCU 的數控系統研制[J].微計算機信息,2007,23(23):27-29.
[8]劉艷軍,蔣存波,陳占海.嵌入式系統與IPC的一種串口通訊協議及其實現[J].桂林工學院學報,2006(4):579-582.
[9]胡建華,汪煒,徐啟華.電火花成型加工間隙電壓在線檢測與處理的新方法[J].機械設計與制造,2006(10):93-95.
[10]金勇,陳艷霞.基于嵌入式實時操作系統μC/OS-Ⅱ 的小型電站控制系統[J].電子科技,2005(2):13-16.