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

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 基于PLC系統(tǒng)的現(xiàn)場總線運動控制模塊的設(shè)計和實現(xiàn)

          基于PLC系統(tǒng)的現(xiàn)場總線運動控制模塊的設(shè)計和實現(xiàn)

          作者: 時間:2011-09-07 來源:網(wǎng)絡(luò) 收藏

            計算機數(shù)字通信技術(shù)及信息技術(shù)的發(fā)展,推動了自動化技術(shù)的進步;特別是近十年來興起的技術(shù)(Filedbus),是計算機數(shù)字通信技術(shù)向工業(yè)自動化領(lǐng)域的延伸,它的發(fā)展將促使自動化系統(tǒng)結(jié)構(gòu)發(fā)生重大變革,是傳統(tǒng)的基于PLC及DCS控制技術(shù)系統(tǒng)發(fā)展的必然歸宿。

            技術(shù)的一個顯著特點是其開放性,允許并鼓勵不同廠家按照技術(shù)標準,自主開發(fā)具有特點及專有技術(shù)的產(chǎn)品。依照現(xiàn)場總線技術(shù)規(guī)范,不同廠家產(chǎn)品可以方便完成組態(tài)與集成,構(gòu)成面向行業(yè)、適合行業(yè)特點的自主控制系統(tǒng)。這一特點為更多的自動化產(chǎn)品制造商自主開發(fā)并推出自主知識產(chǎn)權(quán)的自動化系統(tǒng)提供了可能。也為自動化系統(tǒng)集成商開發(fā)面向行業(yè)應(yīng)用的成套技術(shù)和自動化系統(tǒng)提供了機會。

            現(xiàn)場總線技術(shù)以其先進性、實用性、可靠性、開放性的優(yōu)點,必然成為未來自動化技術(shù)發(fā)展的主流?;诂F(xiàn)場總線技術(shù)的控制系統(tǒng)(Filedbus Control System-FCS)與人們預(yù)想的一樣,對傳統(tǒng)的PLC、DCS系統(tǒng)形成了巨大的沖擊。FCS已不再是一種預(yù)測、一種設(shè)想,而是實實在在的作為先進控制系統(tǒng)產(chǎn)品出現(xiàn)在市場上。本文將描述傳統(tǒng)PLC控制系統(tǒng)向基于現(xiàn)場總線控制系統(tǒng)的演變過程,以現(xiàn)場總線PROFIBUS為背景,描述一個基于現(xiàn)場總線控制系統(tǒng)的結(jié)構(gòu)組成,并分析系統(tǒng)的市場前景。

            1 運動控制模塊的研制

            本設(shè)計中,運動控制模塊負責電機的驅(qū)動、多軸聯(lián)動、G代碼解釋等工作,是數(shù)控系統(tǒng)的"大腦".因此運動控制器的性能直接關(guān)系到整個機床的性能。

            1.1 總體結(jié)構(gòu)

            為實現(xiàn)高性能數(shù)控計算,系統(tǒng)采用雙MCU結(jié)構(gòu),主控MCU負責G代碼讀寫與解釋、人機界面、網(wǎng)絡(luò)通信等任務(wù);NC運動控制MCU(即運動控制芯片)作為一個專用數(shù)字芯片,負責三軸電機的速度控制、定位、多軸直線和圓弧插補等任務(wù),以保證運動控制模塊在完成復(fù)雜的工作時仍能提供良好的性能。運動控制模塊結(jié)構(gòu)如圖1所示。


            模塊采用SD卡作為G代碼文件的存儲器。SD卡具有大容量、小體積、支持熱插拔等特點,尤其是其兼容SPI總線讀寫,省去了主控制器作為USB盤讀寫的硬件,降低了成本。

            運動控制模塊具有現(xiàn)場總線通信功能,支持RS-485和CAN總線2種現(xiàn)場總線物理層規(guī)范。以可靠性為設(shè)計原則,總線接口與主控制器進行了電氣隔離,并加入保護元件提高其抗瞬態(tài)干擾能力。圖2、圖3分別是模塊RS-485和CAN總線的隔離接口原理圖。其中使用了TI公司的高速數(shù)字隔離器ISO7221進行數(shù)字信號的電氣隔離,同時在接口端設(shè)置了瞬態(tài)抑制二極管(TVS管)進行保護,確保了硬件在各種環(huán)境下的可靠性。


            1.2 Cortex-M3與STM32簡介

            Cortex-M3是一個32位的核,在傳統(tǒng)的單片機領(lǐng)域中,有一些不同于通用32位CPU應(yīng)用的要求。譚軍舉例說,在工控領(lǐng)域,用戶要求具有更快的中斷速度,Cortex-M3采用了Tail-Chaining中斷技術(shù),完全基于硬件進行中斷處理,最多可減少12個時鐘周期數(shù),在實際應(yīng)用中可減少70%中斷。

            基于Cortex-M3核的STM32F103系列MCU,運行于最高72 MHz的總線頻率,可以獲得1.25 DMIPS/MHz的運算性能、單周期乘法指令、硬件除法器,帶有容量至少為32 KB的Flash及6 KB的SRAM、2個12位A/D、7通道DMA、6路16位定時器及PWM、SPI、I2C、USART、USB、CAN等高性能模塊,并具有最高18 MHz輸出頻率的高速GPIO.在電機和運動控制的應(yīng)用中,可以充分發(fā)揮其先進內(nèi)核的性能和豐富的模塊資源特性。

            1.3 工作流程

            運動控制器工作流程總體示意圖如圖4所示。

            1.3.1 G代碼解碼

            運動控制模塊接收到工作指令后,開始進行G代碼的解釋執(zhí)行任務(wù)。G代碼存放在SD卡中,主控制器集成FAT文件系統(tǒng),支持SD卡的文件讀寫。G代碼讀入后,逐行進行第一遍掃描(即指令預(yù)處理),期間將注釋、空格、非法字符去除,小寫字符轉(zhuǎn)換成大寫,以方便解碼程序進行識別。

            經(jīng)過預(yù)處理的G代碼指令逐行送入G代碼解碼程序,解釋程序再逐字檢查其是否為G代碼的指令字符,若是,則提取關(guān)鍵字的后續(xù)數(shù)值,作為該指令的操作數(shù),將其提取出來。其中用到了ANSI C的標準庫函數(shù)sscanf( )(位于stdio.h中),可以方便地提取字符串中指定的信息,支持類正則表達式的格式字符串,非常靈活。同時因為使用了ANSI C的標準庫函數(shù),程序移植簡單。

            以下是G代碼解碼程序的部分代碼:

            /*遍歷整個s字符串,找到字符后,提取后續(xù)數(shù)字,并存入中間代碼中*/



            其中,CurrentGMidCode是預(yù)定義的結(jié)構(gòu)體變量,用于保存每行G代碼提取出來的指令及其操作數(shù),結(jié)構(gòu)如下:


            提取到每行G代碼的關(guān)鍵信息后進行相關(guān)處理,計算出每行代碼的運動起止坐標,將其通過SPI總線發(fā)送至NC控制芯片,控制電機運動。

            1.3.2 插補進給

            電機的插補運算、加減速和進給控制,由一個獨立STM32微控制器完成,并稱為NC運動控制芯片。

            目前市場上的運動控制芯片主要是日本和歐美公司的專用ASIC和各數(shù)控廠家自行開發(fā)的FPGA芯片,雖然性能優(yōu)越,但價格不低。相對于使用ASIC芯片或FPGA芯片,完成同樣的任務(wù)使用MCU方案,硬件生產(chǎn)成本和開發(fā)成本均具有明顯優(yōu)勢,當STM32微控制器運行在其最高頻率為72 MHz下時,性能完全可以滿足中低端數(shù)控系統(tǒng)應(yīng)用的要求。

            在三軸數(shù)控銑系統(tǒng)中,NC運動控制芯片需要實現(xiàn)三軸快速定位、二軸直線插補、二軸圓弧插補、三軸直線插補的功能。

            插補是在組成軌跡的直線段或曲線段的起點和終點之間,按一定的算法進行數(shù)據(jù)點的密化工作,以確定一些中間點,從而為軌跡控制的每一步提供逼近目標。在本控制器中,選用逐點比較法作為基本的插補算法,具有算法簡單高效、進給速度均勻的特點,同時支持三軸的直線插補[1],滿足本控制器對插補算法的要求。

            逐點比較直線插補,就是執(zhí)行機構(gòu)每走一步都要和給定運動軌跡上相應(yīng)的坐標值相比較,比較的結(jié)果稱為偏差函數(shù)F,根據(jù)偏差的正、負決定下一步的進給方向。實質(zhì)上這是一種用階梯折線來逼近直線的一種算法,它與規(guī)定運動軌跡之間的最大誤差為1個脈沖當量(每走1步移動的距離)。因此,只要把脈沖當量設(shè)計得足夠小,就可以達到運動精度的要求[2].

            1.4 Modbus-RTU協(xié)議的實現(xiàn)

            Modbus 協(xié)議定義了一個控制器能認識使用的消息結(jié)構(gòu),而不管它們是經(jīng)過何種網(wǎng)絡(luò)進行通信的。它描述了一控制器請求訪問其它設(shè)備的過程,如何回應(yīng)來自其它設(shè)備的請求,以及怎樣偵測錯誤并記錄。它制定了消息域格局和內(nèi)容的公共格式。Modbus協(xié)議工業(yè)控制已從單機控制走向集中監(jiān)控、集散控制,如今已進入網(wǎng)絡(luò)時代,工業(yè)控制器聯(lián)網(wǎng)也為網(wǎng)絡(luò)管理提供了方便。Modbus就是工業(yè)控制器的網(wǎng)絡(luò)協(xié)議中的一種。

            Modbus-RTU協(xié)議以幀為通信的基本單位,幀格式為:地址碼1 B;功能碼1 B;數(shù)據(jù)區(qū)N B;錯誤校驗2 B CRC碼。

            本運動控制器在其RS-485接口上實現(xiàn)了Modbus-RTU協(xié)議,使用了當今流行的免費開源協(xié)議棧FreeModbus-RTU,從而保證了可靠的通信、節(jié)約了開發(fā)成本。

            FreeModbus是針對通用的Modbus協(xié)議棧在嵌入式系統(tǒng)中應(yīng)用的實現(xiàn),其遵循BSD開放源代碼協(xié)議,并可以免費用于商業(yè)用途,成熟可靠。移植FreeModbus到STM32處理器只需要少量資源,除了1個雙工USART外,只需要配置1個定時器進行超時判斷即可。

            2 基于C200HE型PLC的運動控制網(wǎng)絡(luò)實驗平臺設(shè)計

            2.1網(wǎng)絡(luò)結(jié)構(gòu)

            歐姆龍(OMRON)公司的C200HE-CPU42型PLC帶有RS-232口和通信板。通信板支持各種通信協(xié)議,如上位鏈接、RS-232通信、1:1鏈接、NT鏈接(1:1、1:N)以及協(xié)議宏功能等,并能根據(jù)需要進行切換。通過協(xié)議宏功能,用PMCR指令,通過指定按標準設(shè)置的順序,就能設(shè)置成Modbus協(xié)議。

            運動控制系統(tǒng)的網(wǎng)絡(luò)結(jié)構(gòu)體系分為3個層次:管理層、控制層和器件層,如圖5所示。


           ?。?) 管理層:是最高層,負責系統(tǒng)的管理與決策。其中PLC是整個控制網(wǎng)絡(luò)的核心,它作為Modbus網(wǎng)絡(luò)的主設(shè)備,通過Modbus網(wǎng)絡(luò)與各運動控制器之間傳輸生產(chǎn)管理信息、質(zhì)量管理信息及CNC的運行情況等數(shù)據(jù)。上位計算機運行組態(tài)軟件,通過RS-232串行通信口與PLC通信,實時監(jiān)控系統(tǒng)的運行。

           ?。?) 控制層:是整個網(wǎng)絡(luò)系統(tǒng)的中間層,各運動控制模塊掛接在Modbus網(wǎng)絡(luò)上成為其從節(jié)點,負責下面CNC運行過程的監(jiān)控、協(xié)調(diào)和優(yōu)化。

            (3) 器件層:雕刻機是整個網(wǎng)絡(luò)的最低層,是現(xiàn)場總線網(wǎng)絡(luò)中直接面對現(xiàn)場的器件和設(shè)備,為網(wǎng)絡(luò)的終端執(zhí)行機構(gòu)。

            2.2 用協(xié)議宏功能實現(xiàn)Modbus協(xié)議

            在協(xié)議宏軟件CX-Protocol上創(chuàng)建工程,選擇正確的設(shè)備名稱、型號及網(wǎng)絡(luò)類型。然后創(chuàng)建通信序列和接收序列,并下載到PLC通信板中。在PLC中編寫程序,用PMCR指令調(diào)用指定的通信序列,實現(xiàn)與運動控制模塊的通信。通信協(xié)議宏主要由發(fā)送/接收數(shù)據(jù)程序構(gòu)成,每個通信協(xié)議最多包含0~999個發(fā)送/接收數(shù)據(jù)程序,每個發(fā)送/接收程序最多由16步構(gòu)成。協(xié)議宏結(jié)構(gòu)如圖6所示[3].


            2.2.1創(chuàng)建通信序列

            將通信序列號設(shè)為"000",在通信序列中要設(shè)置PLC與通信板鏈接字、傳輸控制參數(shù)、響應(yīng)接收方式、數(shù)據(jù)接收監(jiān)控時間、數(shù)據(jù)接收完成監(jiān)控時間、數(shù)據(jù)發(fā)送完成監(jiān)控時間等內(nèi)容。

            (1) 創(chuàng)建通信步(Step)

            在通信序列"000"中創(chuàng)建Step00和Step01 2個通信步。Step00用于控制運動控制模塊的運行,Step01用于查詢運行狀態(tài)。在每一個通信步中包括步號(Step)、重復(fù)計數(shù)器(Repeat)、命令(Command)、重試次數(shù)(Retry)、發(fā)送信息(Send Message)、接收信息(Recv Message)、是否響應(yīng)(Response)、出錯處理方式(Error)等內(nèi)容。

           ?。?)創(chuàng)建發(fā)送和接收信息

            發(fā)送信息與接收信息必須嚴格按照Modbus協(xié)議格式編寫,需要設(shè)置校驗碼(Check Code)、數(shù)據(jù)長度(Length)、地址(Address)和數(shù)據(jù)(Data)等信息。

            (3)創(chuàng)建接收陣列

            PLC向運動控制模塊發(fā)送指令時,模塊可能返回運行正常或錯誤響應(yīng)信息,在接收數(shù)據(jù)時,使用陣列的形式加以區(qū)分。系統(tǒng)創(chuàng)建了2種可能接收的信息"Run Normal"和"Error",并針對每一種情況設(shè)定不同的處理方法(Next Process),用于可能出現(xiàn)的各種響應(yīng)信息的處理。

            2.2.2 通信實現(xiàn)

            (1) 通信設(shè)置

            PLC的通信參數(shù)設(shè)定必須與運動控制模塊的參數(shù)一致。對通信板上的開關(guān)做調(diào)整時,設(shè)SW1置于ON側(cè),使用RS-485方式;SW2設(shè)定為ON,接入120 Ω的終端電阻;設(shè)定通信板端口A為通信協(xié)議宏方式。

           ?。?) 編寫通信程序

            通信協(xié)議宏的調(diào)用程序段如圖7所示,圖中:289.08為通信板端口A操作標志,當289.08為OFF時,表示可以使用端口A進行通信。通信過程中289.08置為ON,通信結(jié)束后,289.08置為OFF狀態(tài);當2.00由OFF變?yōu)镺N、且289.08為OFF時,調(diào)用通信板上的通信序列,通過端口A發(fā)送和接收數(shù)據(jù)。通信序列號、發(fā)送和接收數(shù)據(jù)的存放區(qū)由PMCR指令的3個操作數(shù)指定,其梯形圖見圖7.


            使用2片32位高性能單片機組成雙核系統(tǒng)實現(xiàn)運動控制模塊的功能,兼顧了性能和價格。同時因為使用了ANSI C的標準庫函數(shù),程序移植性好,數(shù)控解釋程序中的關(guān)鍵技術(shù)G代碼解釋器的開發(fā)難度大大降低。在運動控制模塊中移植Modbus協(xié)議,從而使其能簡單地與組成運動控制網(wǎng)絡(luò)。采用歐姆龍通信協(xié)議宏實現(xiàn)控制多臺運動控制模塊,簡化了現(xiàn)場布線,達到了設(shè)計要求,取得了很好的效果。

          數(shù)字通信相關(guān)文章:數(shù)字通信原理


          隔離器相關(guān)文章:隔離器原理


          評論


          相關(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); })();