閱讀 | 訂閱
閱讀 | 訂閱
數控機床

ARM數控係統高速處理串口數據的研究

星之球激光 來源:中國自動化網2011-12-21 我要評論(0 )   

一、 引言 現代數控加工都是先采用 CAD/CAM 軟件畫出零件的加工草圖,然後根據草圖做適當的屬性設置,生成G 代碼,生成G 代碼之後通過某種方式將G 代碼傳(chuan) 送給數控係統進...

一、 引言
  現代數控加工都是先采用 CAD/CAM 軟件畫出零件的加工草圖,然後根據草圖做適當的屬性設置,生成G 代碼,生成G 代碼之後通過某種方式將G 代碼傳(chuan) 送給數控係統進行解釋轉化成實際的軸運動。但是由於(yu) 實際生成的G 代碼數據量相對於(yu) ARM 嵌入式數控係統存儲(chu) 資源而言很大,不可能將G代碼全部傳(chuan) 給ARM數控係統存儲(chu) 起來之後再一條一條來解釋、加工,因此在數據傳(chuan) 輸的過程中應該有一個(ge) 流量控製的問題。雖然PC 機G 代碼到ARM 數控係統代碼傳(chuan) 送方式很多,但ARM 的串口相對而言,操作方便,因此本設計采用串口來傳(chuan) 送數據。雖然串口方便操作,但是在數據傳(chuan) 送過程中也存在一些問題,比如說,PC 機向ARM傳(chuan) 送9 個(ge) 數據,卻隻收到8 個(ge) ,如果數據傳(chuan) 送的很大,就會(hui) 丟(diu) 失的更多,並且如果數據量大,就需要傳(chuan) 送的波特率大,但是波特率大不僅(jin) 會(hui) 使數據產(chan) 生遺漏,而且會(hui) 使傳(chuan) 送過來的G 代碼得不到數控係統的及時處理,如果波特率太低,傳(chuan) 送的時間肯定會(hui) 很長,降低了加工效率。
  出現這麽(me) 多問題是什麽(me) 原因呢,經過分析,提出一種方法,能夠保證數據正確的情況下提高數據傳(chuan) 輸速度和數控係統代碼處理能力。以 LPC 係列為(wei) 主的32 位ARM 控製器具有速度快,容量大,性能穩定,在線調試方便等優(you) 點,ARM 作為(wei) 智能控製器應用於(yu) 工業(ye) 控製領域具有廣闊的前景。ARM 在工控領域的應用中,與(yu) 上位機軟件進行數據傳(chuan) 輸和處理是經常需要解決(jue) 的問題。
  二、ARM 串口初始化設置及中斷服務程序
  LPC2292 處理器有兩(liang) 個(ge) 串口,每個(ge) 串口有16 字節接收FIFO 和16 字節發送FIFO,寄存器位置符合I6C550 工業(ye) 標準,接收器FIFO 觸發點可以設置成為(wei) 1、4、8、14 字節觸發,內(nei) 置波特率發生器。有四種中斷:數據可用中斷,字符接受超時中斷,THRE 中斷,Rx 線狀態中斷。串口在進行數據接受的時候,設計了一個(ge) 緩衝(chong) 隊列用來存儲(chu) 接收到的數據。
  (1)數據緩存隊列數據結構設計
  其中QUEUE_DATA_TYPE 代表傳(chuan) 輸的數據類型,每當有數據從(cong) 串口傳(chuan) 入ARM的時候,通過In 指針使數據入隊列,有數據需要處理的時候,利用Out 指針來出隊列,至於(yu) 隊列大小,要根據波特率的大小、串口中斷頻率等因素決(jue) 定。還需要實現兩(liang) 個(ge) 函數 uint8 QueueWrite(void *Buf, QUEUE_DATA_TYPE Data),和uint8QueueReadQUEUE_DATA_TYPE *Ret, void *Buf),主要是用來往數據隊列裏寫(xie) 數據和從(cong) 數據隊列裏取數據,采用的是先進先出(FIFO)的方式.
  (2)串口初始化程序:
  U0IER = 0x05; /* 允許接收和發送中斷 */
  }
  (3)中斷服務程序
  中斷處理函數具體(ti) 實現
  1.數據可用中斷處理
  For(i=0;i<8;i++) //因為(wei) 串口初始化是8 字節中斷
  {QueueWrite (Buf,UARBR); }
  2.數據超時中斷處理:
  While(1)
  {
  If (UALSR&0x00000001= =1)
  {QueueWrite (Buf,UARBR);}
  Else Break;
  }
  3.理論上可以屏蔽THRE 中斷,但是同樣也可以處理中斷,處理方法是往FIFO 中填充數據
  For(i=0;i<16;i++)
  {
  QUEUE_DATA_TYPE data;
  QueueRead(&data, Buf)
  U0THR = data;
  }
  4.同樣線中斷也可以屏蔽,當然也可以處理,處理的方法隻需要讀U0TSR 寄存器Data=U0TSR;
  中斷服務程序中處理了超時中斷,因此設置串口中斷觸發字節可以設置的大些,這樣可以保證數據不會(hui) 丟(diu) 失,同時減少係統中斷次數,減小係統負荷,提高處理器的處理速度。
  三、上位機軟件和ARM 串口數據傳(chuan) 送軟件設計
  ARM 係統中開辟了一個(ge) 串口數據接收隊列緩存區,因此就要求上位機串口發送軟件能夠配合ARM 處理能力對數據發送進行流量控製。
  程序中NUM 表示文件的總字符數,在開始傳(chuan) 送代碼數據的時候作為(wei) 開始發送文件的一個(ge) 信號傳(chuan) 送給ARM,同時作為(wei) 文件傳(chuan) 送結束判斷依據。SUM 表示代碼已經傳(chuan) 送的字符數。其初始化值為(wei) 0。
  四、結論:
  串口設置為(wei) :波特率 115200,8位數據位,1為(wei) 停止位,無奇偶校驗,無流控製。通過串口調試助手,選擇發送文件,發送PC機上CAM 軟件CAXA 製造工程師生成的加工文件(大小182K)。通過串口發送給ARM 數控係統處理,係統能夠很好的保證ARM 數控係統正確處理G 代碼的情況下,高速傳(chuan) 送G 代碼數據。
  測試表明:數控係統的大量G 代碼可以很好的完成加工,並且已經應用到了數控係統設計當中,實踐檢驗該方法可以提高數控係統的加工效率。

轉載請注明出處。

免責聲明

① 凡本網未注明其他出處的作品,版權均屬於(yu) fun88网页下载,未經本網授權不得轉載、摘編或利用其它方式使用。獲本網授權使用作品的,應在授權範圍內(nei) 使 用,並注明"來源:fun88网页下载”。違反上述聲明者,本網將追究其相關(guan) 責任。
② 凡本網注明其他來源的作品及圖片,均轉載自其它媒體(ti) ,轉載目的在於(yu) 傳(chuan) 遞更多信息,並不代表本媒讚同其觀點和對其真實性負責,版權歸原作者所有,如有侵權請聯係我們(men) 刪除。
③ 任何單位或個(ge) 人認為(wei) 本網內(nei) 容可能涉嫌侵犯其合法權益,請及時向本網提出書(shu) 麵權利通知,並提供身份證明、權屬證明、具體(ti) 鏈接(URL)及詳細侵權情況證明。本網在收到上述法律文件後,將會(hui) 依法盡快移除相關(guan) 涉嫌侵權的內(nei) 容。

網友點評
0相關評論
精彩導讀