<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          關(guān) 閉

          新聞中心

          EEPW首頁 > 工控自動(dòng)化 > 設(shè)計(jì)應(yīng)用 > 基于ARM9的數(shù)控銑床系統(tǒng)設(shè)計(jì)方案

          基于ARM9的數(shù)控銑床系統(tǒng)設(shè)計(jì)方案

          作者: 時(shí)間:2011-06-21 來源:網(wǎng)絡(luò) 收藏

            2 軟件

            傳統(tǒng)的使用流程是先由用戶編輯G代碼或其它格式的加工文件,根據(jù)該文件中代碼的意義,控制刀具做出相應(yīng)的動(dòng)作。所以在軟件方面,系統(tǒng)需要提供文本編輯功能、對加工文件的編譯功能、電機(jī)驅(qū)動(dòng)功能等。為了使用戶驗(yàn)證加工程序的正誤,系統(tǒng)還要提供仿真功能,將走刀過程展現(xiàn)給用戶。

            為了實(shí)現(xiàn)網(wǎng)絡(luò)功能,本系統(tǒng)還移植了嵌入式瀏覽器Konqueror/Embedded, 這是一款自由軟件。由于瀏覽器可以訪問HTTP、FTP、SMTP、NNTP等多種不同協(xié)議的服務(wù),故安裝瀏覽器可謂一舉多得,移植過程參考文獻(xiàn)。軟件結(jié)構(gòu)如圖3所示。

          軟件結(jié)構(gòu)圖

            2.1 操作系統(tǒng)平臺(tái)的搭建

            2.2 伺服電機(jī)和步進(jìn)電機(jī)驅(qū)動(dòng)程序

            伺服電機(jī)需要的信號是PWM 波形控制信號,因此伺服電機(jī)驅(qū)動(dòng)程序主要是實(shí)現(xiàn)脈寬調(diào)制。這個(gè)脈寬調(diào)制是利用一個(gè)定時(shí)器,并根據(jù)由SPWM 算法得到的延遲時(shí)間,控制一個(gè)通用I /O 端口高低電平持續(xù)時(shí)間得到的。系統(tǒng)產(chǎn)生的PWM 波形如下圖4所示。

            而在三個(gè)步進(jìn)電機(jī)的設(shè)備驅(qū)動(dòng)程序中,向步進(jìn)電機(jī)發(fā)送連續(xù)信號定義為寫操作; 從8253中讀數(shù)據(jù)定義為讀操作; 由鍵盤控制各電機(jī)動(dòng)作作為自定義操作。

            2.3 G代碼編譯

            G代碼是國際通用的機(jī)床加工代碼,其編譯的思想是: 首先將G代碼文件讀入流中,逐行分析其意義,并且?guī)в胁殄e(cuò)功能。當(dāng)遇到子程序跳轉(zhuǎn)時(shí)記錄文件指示出其位置和循環(huán)次數(shù)時(shí),子程序返回后從記錄位置繼續(xù)執(zhí)行;遇到主軸旋轉(zhuǎn)時(shí),在編譯文件中寫入旋轉(zhuǎn)標(biāo)志和PWM 的脈寬; 遇到插補(bǔ)命令時(shí)寫入脈沖標(biāo)志和每步的三坐標(biāo)脈沖信號諸如此類。最后生成記錄整套加工步驟的二進(jìn)制文件。編譯流程如圖5所示。

          編譯流程圖



          評論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();