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

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > CAN總線在五軸嵌入式數(shù)控磨削系統(tǒng)中的應(yīng)用

          CAN總線在五軸嵌入式數(shù)控磨削系統(tǒng)中的應(yīng)用

          作者: 時間:2016-12-20 來源:網(wǎng)絡(luò) 收藏

          0 引言

            多軸數(shù)控系統(tǒng)在加工復(fù)雜型面時,需要各個軸之間協(xié)同工作,實(shí)時性、可靠性要求較高。CAN總線可提供高達(dá)1Mbit/s的數(shù)據(jù)傳輸速率,這使實(shí)時控制變得非常容易。另外,硬件的錯誤檢測特性也增強(qiáng)了CAN的抗電磁干擾能力。它是一種有效支持分布式控制和實(shí)時控制的串行通信網(wǎng)絡(luò),這些特點(diǎn)決定了CAN總線技術(shù)在多軸數(shù)控系統(tǒng)中有很好的應(yīng)用前景。本文利用CAN總線技術(shù)為五軸數(shù)控系統(tǒng)提供了一個實(shí)時可靠的信息交互網(wǎng)絡(luò),解決了傳統(tǒng)總線插板I/O模塊多,干擾嚴(yán)重、系統(tǒng)軟件復(fù)雜、硬件兼容性差等問題,提高了信號傳輸實(shí)時性和可靠性,便于安裝、調(diào)試和維護(hù),經(jīng)濟(jì)效益明顯,是自動化領(lǐng)域發(fā)展的一個重要方向。

          1 基于CAN總線數(shù)控系統(tǒng)的結(jié)構(gòu)

            如圖1所示,本控制系統(tǒng)在結(jié)構(gòu)分布上采用的是完全分布式控制,數(shù)控系統(tǒng)的核心是一個基于ARM9核的主控芯片$3C2410。s3C2410負(fù)責(zé)根據(jù)加工圖形進(jìn)行數(shù)據(jù)處理,計算刀具半徑補(bǔ)償量,設(shè)置進(jìn)給速度,執(zhí)行輔助功能代碼。進(jìn)行插補(bǔ)運(yùn)算,把插補(bǔ)后的數(shù)據(jù)通過總線送到伺服驅(qū)動器,并接收從伺服控制器反饋回來的轉(zhuǎn)速;脈沖信息,實(shí)現(xiàn)閉環(huán)控制以及接收傳感器傳來的電壓、電流、位置等參數(shù),顯示并記錄。其他每個ARM9控制芯片$3C2410僅僅負(fù)責(zé)一軸的伺服進(jìn)給控制,另外主控機(jī)還要根據(jù)PLC傳來的信號來控制伺服電機(jī),調(diào)整設(shè)置。PLC模塊主要負(fù)責(zé)接收面板的控制信號、設(shè)置信號以及極限報警信號,這些數(shù)據(jù)通過CAN總線傳到上位機(jī)后,轉(zhuǎn)化為伺服電機(jī)的控制信號,再發(fā)送到總線,控制伺服電機(jī)和變頻器以及更改電機(jī)設(shè)置。主控單元、電機(jī)驅(qū)動單元均以S3C2410為核心構(gòu)成并通過CAN總線相連。其中,主控單元通過自帶的鍵盤發(fā)送電機(jī)運(yùn)行參數(shù)和控制命令,LCD顯示電機(jī)運(yùn)行狀態(tài)。這樣的分布式控制方式能夠?qū)崿F(xiàn)高精度的伺服進(jìn)給控制,每個節(jié)點(diǎn)不會相互影響,容易擴(kuò)展,故障率低。

          基于CAN總線的數(shù)控系統(tǒng)的結(jié)構(gòu)圖
          圖1基于CAN總線的數(shù)控系統(tǒng)的結(jié)構(gòu)圖

          2 CAN總線通信系統(tǒng)硬件設(shè)計

            電機(jī)控制的各個節(jié)點(diǎn)問的通信是通過CAN總線來完成。一般有2種CAN總線器件可供選擇:一種是集成了CAN控制器的微控制器,如Philips公司的P8XC592,Intel的87C196CA,TI公司的TMS320LF2407(DSP)等,這類集成器件電路圖緊湊,硬件結(jié)構(gòu)簡單。另一種是獨(dú)立的CAN控制器,如Philips的82C200,SJAl000,Intel的82526,82527,Microchip的MCP2510、MCP2515。這類獨(dú)立的控制器可使設(shè)計靈活,從眾多類型MCU中選擇最合適的方案。文中所涉及的系統(tǒng)選用的是獨(dú)立的CAN控制器MCP2515和CAN收發(fā)器MCP2551。MCP2515完全支持具有很多新特性的CAN2.0B協(xié)議,能夠發(fā)送和接收標(biāo)準(zhǔn)數(shù)據(jù)幀以及擴(kuò)展數(shù)據(jù)幀以及遠(yuǎn)程幀,自帶的2個驗(yàn)收屏蔽寄存器和6個驗(yàn)收濾波寄存器可以過濾掉不想要的報文,可有效減少主單片機(jī)(MCU)的開銷,并具有接收過濾和信息管理的功能。MCP2515支持0,0和1,1的SPI模式,通過其SPI引腳同MCU進(jìn)行數(shù)據(jù)傳輸,最高數(shù)據(jù)傳輸速率可達(dá)1Mbps。另外,MCP2515具有靈活的中斷管理功能,可以很好地用在數(shù)控系統(tǒng)控制中。CAN收發(fā)器MCP2551是一個可容錯的高速CAN器件,對總線提供差動發(fā)送能力,對CAN控制器提供差動接收能力。它完全符合ISO一11898標(biāo)準(zhǔn),它的工作速率高達(dá)1 Mbps。MCP2515和MCP2551接口部分的電路圖如圖2所示。CAN控制器MCP2515的串行數(shù)據(jù)輸出線(TX)和串行數(shù)據(jù)輸入線(RX)分別通過高速光耦6N137和5V電源隔離模塊HDNl—5S5與收發(fā)器相連,MCP2551通過有差動發(fā)送和接收功能的2個總線端CANH和CANL接到總線電纜。8腳是輸入Rs,用于模式控制,不同連接方式可以實(shí)現(xiàn)3種不同的工作方式:高速、斜率控制和待機(jī)。本系統(tǒng)采用1.6kQ的電阻使之工作于斜率模式,有效降低射頻干擾。MCP2551的額定電源電壓是5 V,總線兩端接120 Q的電阻,用以提高整個系統(tǒng)通信的可靠性和抗干擾能力。在設(shè)計接口電路時,首先要根據(jù)微處理器選擇MCP2515的接口模式,MCP2515的片選地址應(yīng)與其它的外部存儲器無沖突,注意MCP2515的復(fù)位電路是低電平有效。另外,微處理器對MCP2515的控制訪問是以外部存儲器的方式來訪問的內(nèi)部寄存器。

          CAN接口部分電路原理圖
          圖2 CAN接口部分電路原理圖

          3 CAN總線通信的程序設(shè)計

            CAN總線通信程序設(shè)計主要包括CAN總線初始化、報文的發(fā)送程序設(shè)計和接收程序設(shè)計。MCP25 15只有在配置模式下才能初始化,在初始上電或復(fù)位時器件自動進(jìn)入配置模式,也可以將CANTRL寄存器的REQQP設(shè)置為‘100’使器件進(jìn)入配置模式。在配置模式對位定時配置(CNFl,CNF2,CNF3)、發(fā)送請求寄存器TXRTSCTRL、接收濾波寄存器、接收屏蔽寄存器作相應(yīng)的修改即可。數(shù)據(jù)的發(fā)送由MCP2515自動完成,用戶只須將被發(fā)送的數(shù)據(jù)送到MCP2515的發(fā)送緩存器,然后將命令寄存器的“發(fā)送請求”標(biāo)志置位,啟動發(fā)送命令即可。發(fā)送過程可由MCP2515的中斷請求或控制段的輪詢狀態(tài)標(biāo)志控制,采用,中斷方式,其數(shù)據(jù)發(fā)送程序流程圖如圖3。數(shù)據(jù)的接收自動完成,接收程序只須從接收緩存器中讀取接收的數(shù)據(jù),再進(jìn)行相應(yīng)的處理即可,接收程序也采用中斷方式,其數(shù)據(jù)接收程序流程圖如圖4。


          上一頁 1 2 下一頁

          評論


          技術(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); })();