基于PLC系統的現場(chǎng)總線(xiàn)運動(dòng)控制模塊的設計和實(shí)現
計算機數字通信技術(shù)及信息技術(shù)的發(fā)展,推動(dòng)了自動(dòng)化技術(shù)的進(jìn)步;特別是近十年來(lái)興起的現場(chǎng)總線(xiàn)技術(shù)(Filedbus),是計算機數字通信技術(shù)向工業(yè)自動(dòng)化領(lǐng)域的延伸,它的發(fā)展將促使自動(dòng)化系統結構發(fā)生重大變革,是傳統的基于PLC及DCS控制技術(shù)系統發(fā)展的必然歸宿。
現場(chǎng)總線(xiàn)技術(shù)的一個(gè)顯著(zhù)特點(diǎn)是其開(kāi)放性,允許并鼓勵不同廠(chǎng)家按照現場(chǎng)總線(xiàn)技術(shù)標準,自主開(kāi)發(fā)具有特點(diǎn)及專(zhuān)有技術(shù)的產(chǎn)品。依照現場(chǎng)總線(xiàn)技術(shù)規范,不同廠(chǎng)家產(chǎn)品可以方便完成組態(tài)與集成,構成面向行業(yè)、適合行業(yè)特點(diǎn)的自主控制系統。這一特點(diǎn)為更多的自動(dòng)化產(chǎn)品制造商自主開(kāi)發(fā)并推出自主知識產(chǎn)權的自動(dòng)化系統提供了可能。也為自動(dòng)化系統集成商開(kāi)發(fā)面向行業(yè)應用的成套技術(shù)和自動(dòng)化系統提供了機會(huì )。
現場(chǎng)總線(xiàn)技術(shù)以其先進(jìn)性、實(shí)用性、可靠性、開(kāi)放性的優(yōu)點(diǎn),必然成為未來(lái)自動(dòng)化技術(shù)發(fā)展的主流?;诂F場(chǎng)總線(xiàn)技術(shù)的控制系統(Filedbus Control System-FCS)與人們預想的一樣,對傳統的PLC、DCS系統形成了巨大的沖擊。FCS已不再是一種預測、一種設想,而是實(shí)實(shí)在在的作為先進(jìn)控制系統產(chǎn)品出現在市場(chǎng)上。本文將描述傳統PLC控制系統向基于現場(chǎng)總線(xiàn)控制系統的演變過(guò)程,以現場(chǎng)總線(xiàn)PROFIBUS為背景,描述一個(gè)基于現場(chǎng)總線(xiàn)控制系統的結構組成,并分析系統的市場(chǎng)前景。
1 運動(dòng)控制模塊的研制
本設計中,運動(dòng)控制模塊負責電機的驅動(dòng)、多軸聯(lián)動(dòng)、G代碼解釋等工作,是數控系統的"大腦".因此運動(dòng)控制器的性能直接關(guān)系到整個(gè)機床的性能。
1.1 總體結構
為實(shí)現高性能數控計算,系統采用雙MCU結構,主控MCU負責G代碼讀寫(xiě)與解釋、人機界面、網(wǎng)絡(luò )通信等任務(wù);NC運動(dòng)控制MCU(即運動(dòng)控制芯片)作為一個(gè)專(zhuān)用數字芯片,負責三軸電機的速度控制、定位、多軸直線(xiàn)和圓弧插補等任務(wù),以保證運動(dòng)控制模塊在完成復雜的工作時(shí)仍能提供良好的性能。運動(dòng)控制模塊結構如圖1所示。
模塊采用SD卡作為G代碼文件的存儲器。SD卡具有大容量、小體積、支持熱插拔等特點(diǎn),尤其是其兼容SPI總線(xiàn)讀寫(xiě),省去了主控制器作為USB盤(pán)讀寫(xiě)的硬件,降低了成本。
運動(dòng)控制模塊具有現場(chǎng)總線(xiàn)通信功能,支持RS-485和CAN總線(xiàn)2種現場(chǎng)總線(xiàn)物理層規范。以可靠性為設計原則,總線(xiàn)接口與主控制器進(jìn)行了電氣隔離,并加入保護元件提高其抗瞬態(tài)干擾能力。圖2、圖3分別是模塊RS-485和CAN總線(xiàn)的隔離接口原理圖。其中使用了TI公司的高速數字隔離器ISO7221進(jìn)行數字信號的電氣隔離,同時(shí)在接口端設置了瞬態(tài)抑制二極管(TVS管)進(jìn)行保護,確保了硬件在各種環(huán)境下的可靠性。
1.2 Cortex-M3與STM32簡(jiǎn)介
Cortex-M3是一個(gè)32位的核,在傳統的單片機領(lǐng)域中,有一些不同于通用32位CPU應用的要求。譚軍舉例說(shuō),在工控領(lǐng)域,用戶(hù)要求具有更快的中斷速度,Cortex-M3采用了Tail-Chaining中斷技術(shù),完全基于硬件進(jìn)行中斷處理,最多可減少12個(gè)時(shí)鐘周期數,在實(shí)際應用中可減少70%中斷。
基于Cortex-M3核的STM32F103系列MCU,運行于最高72 MHz的總線(xiàn)頻率,可以獲得1.25 DMIPS/MHz的運算性能、單周期乘法指令、硬件除法器,帶有容量至少為32 KB的Flash及6 KB的SRAM、2個(gè)12位A/D、7通道DMA、6路16位定時(shí)器及PWM、SPI、I2C、USART、USB、CAN等高性能模塊,并具有最高18 MHz輸出頻率的高速GPIO.在電機和運動(dòng)控制的應用中,可以充分發(fā)揮其先進(jìn)內核的性能和豐富的模塊資源特性。
1.3 工作流程
運動(dòng)控制器工作流程總體示意圖如圖4所示。
1.3.1 G代碼解碼
運動(dòng)控制模塊接收到工作指令后,開(kāi)始進(jìn)行G代碼的解釋執行任務(wù)。G代碼存放在SD卡中,主控制器集成FAT文件系統,支持SD卡的文件讀寫(xiě)。G代碼讀入后,逐行進(jìn)行第一遍掃描(即指令預處理),期間將注釋、空格、非法字符去除,小寫(xiě)字符轉換成大寫(xiě),以方便解碼程序進(jìn)行識別。
經(jīng)過(guò)預處理的G代碼指令逐行送入G代碼解碼程序,解釋程序再逐字檢查其是否為G代碼的指令字符,若是,則提取關(guān)鍵字的后續數值,作為該指令的操作數,將其提取出來(lái)。其中用到了ANSI C的標準庫函數sscanf( )(位于stdio.h中),可以方便地提取字符串中指定的信息,支持類(lèi)正則表達式的格式字符串,非常靈活。同時(shí)因為使用了ANSI C的標準庫函數,程序移植簡(jiǎn)單。
以下是G代碼解碼程序的部分代碼:
/*遍歷整個(gè)s字符串,找到字符后,提取后續數字,并存入中間代碼中*/
其中,CurrentGMidCode是預定義的結構體變量,用于保存每行G代碼提取出來(lái)的指令及其操作數,結構如下:
提取到每行G代碼的關(guān)鍵信息后進(jìn)行相關(guān)處理,計算出每行代碼的運動(dòng)起止坐標,將其通過(guò)SPI總線(xiàn)發(fā)送至NC控制芯片,控制電機運動(dòng)。
1.3.2 插補進(jìn)給
電機的插補運算、加減速和進(jìn)給控制,由一個(gè)獨立STM32微控制器完成,并稱(chēng)為NC運動(dòng)控制芯片。
目前市場(chǎng)上的運動(dòng)控制芯片主要是日本和歐美公司的專(zhuān)用ASIC和各數控廠(chǎng)家自行開(kāi)發(fā)的FPGA芯片,雖然性能優(yōu)越,但價(jià)格不低。相對于使用ASIC芯片或FPGA芯片,完成同樣的任務(wù)使用MCU方案,硬件生產(chǎn)成本和開(kāi)發(fā)成本均具有明顯優(yōu)勢,當STM32微控制器運行在其最高頻率為72 MHz下時(shí),性能完全可以滿(mǎn)足中低端數控系統應用的要求。
在三軸數控銑系統中,NC運動(dòng)控制芯片需要實(shí)現三軸快速定位、二軸直線(xiàn)插補、二軸圓弧插補、三軸直線(xiàn)插補的功能。
插補是在組成軌跡的直線(xiàn)段或曲線(xiàn)段的起點(diǎn)和終點(diǎn)之間,按一定的算法進(jìn)行數據點(diǎn)的密化工作,以確定一些中間點(diǎn),從而為軌跡控制的每一步提供逼近目標。在本控制器中,選用逐點(diǎn)比較法作為基本的插補算法,具有算法簡(jiǎn)單高效、進(jìn)給速度均勻的特點(diǎn),同時(shí)支持三軸的直線(xiàn)插補[1],滿(mǎn)足本控制器對插補算法的要求。
逐點(diǎn)比較直線(xiàn)插補,就是執行機構每走一步都要和給定運動(dòng)軌跡上相應的坐標值相比較,比較的結果稱(chēng)為偏差函數F,根據偏差的正、負決定下一步的進(jìn)給方向。實(shí)質(zhì)上這是一種用階梯折線(xiàn)來(lái)逼近直線(xiàn)的一種算法,它與規定運動(dòng)軌跡之間的最大誤差為1個(gè)脈沖當量(每走1步移動(dòng)的距離)。因此,只要把脈沖當量設計得足夠小,就可以達到運動(dòng)精度的要求[2].
1.4 Modbus-RTU協(xié)議的實(shí)現
Modbus 協(xié)議定義了一個(gè)控制器能認識使用的消息結構,而不管它們是經(jīng)過(guò)何種網(wǎng)絡(luò )進(jìn)行通信的。它描述了一控制器請求訪(fǎng)問(wèn)其它設備的過(guò)程,如何回應來(lái)自其它設備的請求,以及怎樣偵測錯誤并記錄。它制定了消息域格局和內容的公共格式。Modbus協(xié)議工業(yè)控制已從單機控制走向集中監控、集散控制,如今已進(jìn)入網(wǎng)絡(luò )時(shí)代,工業(yè)控制器聯(lián)網(wǎng)也為網(wǎng)絡(luò )管理提供了方便。Modbus就是工業(yè)控制器的網(wǎng)絡(luò )協(xié)議中的一種。
Modbus-RTU協(xié)議以幀為通信的基本單位,幀格式為:地址碼1 B;功能碼1 B;數據區N B;錯誤校驗2 B CRC碼。
本運動(dòng)控制器在其RS-485接口上實(shí)現了Modbus-RTU協(xié)議,使用了當今流行的免費開(kāi)源協(xié)議棧FreeModbus-RTU,從而保證了可靠的通信、節約了開(kāi)發(fā)成本。
FreeModbus是針對通用的Modbus協(xié)議棧在嵌入式系統中應用的實(shí)現,其遵循BSD開(kāi)放源代碼協(xié)議,并可以免費用于商業(yè)用途,成熟可靠。移植FreeModbus到STM32處理器只需要少量資源,除了1個(gè)雙工USART外,只需要配置1個(gè)定時(shí)器進(jìn)行超時(shí)判斷即可。
2 基于C200HE型PLC的運動(dòng)控制網(wǎng)絡(luò )實(shí)驗平臺設計
2.1網(wǎng)絡(luò )結構
歐姆龍(OMRON)公司的C200HE-CPU42型PLC帶有RS-232口和通信板。通信板支持各種通信協(xié)議,如上位鏈接、RS-232通信、1:1鏈接、NT鏈接(1:1、1:N)以及協(xié)議宏功能等,并能根據需要進(jìn)行切換。通過(guò)協(xié)議宏功能,用PMCR指令,通過(guò)指定按標準設置的順序,就能設置成Modbus協(xié)議。
運動(dòng)控制系統的網(wǎng)絡(luò )結構體系分為3個(gè)層次:管理層、控制層和器件層,如圖5所示。
?。?) 管理層:是最高層,負責系統的管理與決策。其中PLC是整個(gè)控制網(wǎng)絡(luò )的核心,它作為Modbus網(wǎng)絡(luò )的主設備,通過(guò)Modbus網(wǎng)絡(luò )與各運動(dòng)控制器之間傳輸生產(chǎn)管理信息、質(zhì)量管理信息及CNC的運行情況等數據。上位計算機運行組態(tài)軟件,通過(guò)RS-232串行通信口與PLC通信,實(shí)時(shí)監控系統的運行。
?。?) 控制層:是整個(gè)網(wǎng)絡(luò )系統的中間層,各運動(dòng)控制模塊掛接在Modbus網(wǎng)絡(luò )上成為其從節點(diǎn),負責下面CNC運行過(guò)程的監控、協(xié)調和優(yōu)化。
?。?) 器件層:雕刻機是整個(gè)網(wǎng)絡(luò )的最低層,是現場(chǎng)總線(xiàn)網(wǎng)絡(luò )中直接面對現場(chǎng)的器件和設備,為網(wǎng)絡(luò )的終端執行機構。
2.2 用協(xié)議宏功能實(shí)現Modbus協(xié)議
在協(xié)議宏軟件CX-Protocol上創(chuàng )建工程,選擇正確的設備名稱(chēng)、型號及網(wǎng)絡(luò )類(lèi)型。然后創(chuàng )建通信序列和接收序列,并下載到PLC通信板中。在PLC中編寫(xiě)程序,用PMCR指令調用指定的通信序列,實(shí)現與運動(dòng)控制模塊的通信。通信協(xié)議宏主要由發(fā)送/接收數據程序構成,每個(gè)通信協(xié)議最多包含0~999個(gè)發(fā)送/接收數據程序,每個(gè)發(fā)送/接收程序最多由16步構成。協(xié)議宏結構如圖6所示[3].
2.2.1創(chuàng )建通信序列
將通信序列號設為"000",在通信序列中要設置PLC與通信板鏈接字、傳輸控制參數、響應接收方式、數據接收監控時(shí)間、數據接收完成監控時(shí)間、數據發(fā)送完成監控時(shí)間等內容。
(1) 創(chuàng )建通信步(Step)
在通信序列"000"中創(chuàng )建Step00和Step01 2個(gè)通信步。Step00用于控制運動(dòng)控制模塊的運行,Step01用于查詢(xún)運行狀態(tài)。在每一個(gè)通信步中包括步號(Step)、重復計數器(Repeat)、命令(Command)、重試次數(Retry)、發(fā)送信息(Send Message)、接收信息(Recv Message)、是否響應(Response)、出錯處理方式(Error)等內容。
?。?)創(chuàng )建發(fā)送和接收信息
發(fā)送信息與接收信息必須嚴格按照Modbus協(xié)議格式編寫(xiě),需要設置校驗碼(Check Code)、數據長(cháng)度(Length)、地址(Address)和數據(Data)等信息。
?。?)創(chuàng )建接收陣列
PLC向運動(dòng)控制模塊發(fā)送指令時(shí),模塊可能返回運行正?;蝈e誤響應信息,在接收數據時(shí),使用陣列的形式加以區分。系統創(chuàng )建了2種可能接收的信息"Run Normal"和"Error",并針對每一種情況設定不同的處理方法(Next Process),用于可能出現的各種響應信息的處理。
2.2.2 通信實(shí)現
?。?) 通信設置
PLC的通信參數設定必須與運動(dòng)控制模塊的參數一致。對通信板上的開(kāi)關(guān)做調整時(shí),設SW1置于ON側,使用RS-485方式;SW2設定為ON,接入120 Ω的終端電阻;設定通信板端口A(yíng)為通信協(xié)議宏方式。
?。?) 編寫(xiě)通信程序
通信協(xié)議宏的調用程序段如圖7所示,圖中:289.08為通信板端口A(yíng)操作標志,當289.08為OFF時(shí),表示可以使用端口A(yíng)進(jìn)行通信。通信過(guò)程中289.08置為ON,通信結束后,289.08置為OFF狀態(tài);當2.00由OFF變?yōu)镺N、且289.08為OFF時(shí),調用通信板上的通信序列,通過(guò)端口A(yíng)發(fā)送和接收數據。通信序列號、發(fā)送和接收數據的存放區由PMCR指令的3個(gè)操作數指定,其梯形圖見(jiàn)圖7.
使用2片32位高性能單片機組成雙核系統實(shí)現運動(dòng)控制模塊的功能,兼顧了性能和價(jià)格。同時(shí)因為使用了ANSI C的標準庫函數,程序移植性好,數控解釋程序中的關(guān)鍵技術(shù)G代碼解釋器的開(kāi)發(fā)難度大大降低。在運動(dòng)控制模塊中移植Modbus協(xié)議,從而使其能簡(jiǎn)單地與PLC系統組成運動(dòng)控制網(wǎng)絡(luò )。采用歐姆龍通信協(xié)議宏實(shí)現控制多臺運動(dòng)控制模塊,簡(jiǎn)化了現場(chǎng)布線(xiàn),達到了設計要求,取得了很好的效果。
數字通信相關(guān)文章:數字通信原理
隔離器相關(guān)文章:隔離器原理
評論