版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、1 緒 論1.1 課題背景運動控制起源于早期的伺服控制 (Servomechanisn)。簡單地說,運動控制就是對機(jī) 械運動部件的位置、 速度等進(jìn)行實時的控制管理, 使其按照預(yù)期的運動軌跡和規(guī)定的運 動參數(shù)進(jìn)行運動。早期的運動控制技術(shù)主要是伴隨著數(shù)控(CNC)技術(shù)、機(jī)器人技術(shù)(Robotics)和工廠自動化技術(shù)的發(fā)展而發(fā)展的。早期的運動控制器實際上是可以獨立運 行的專用的控制器, 往往無需另外的處理器和操作系統(tǒng)支持, 可以獨立完成運動控制功 能、工藝技術(shù)要求的其他功能和人機(jī)交互功能。這類控制器可以成為獨立運行 (Sta nd-alo ne的運動控制器。這類控制器主要針對專門的數(shù)控機(jī)械和其他自動
2、化設(shè)備而 設(shè)計,往往已根據(jù)應(yīng)用行業(yè)的工藝要求設(shè)計了相關(guān)的功能, 用戶只需要按照其協(xié)議要求 編寫應(yīng)用加工代碼文件, 利用 RS232 或者 DNC 方式傳輸?shù)娇刂破鳎?控制器即可完成相 關(guān)的動作。 這類控制器往往不能離開其特定的工藝要求而跨行業(yè)應(yīng)用, 控制器的開放性 僅僅依賴于控制器的加工代碼協(xié)議,用戶不能根據(jù)應(yīng)用要求而重組自己的運動控制系 統(tǒng)。通用運動控制器的發(fā)展成為市場的必然需求。由國家組織的開放式運動控制系統(tǒng)的研究始于 1987 年,美國空軍在美國政府資助 下發(fā)表了著名的NGC(下一代控制器)研究計劃”該計劃首先提出了開放體系結(jié)構(gòu)控制 器的概念, 這個計劃的重要 內(nèi)容之一便是 提出了 “開
3、放系統(tǒng)體系結(jié)構(gòu)標(biāo)準(zhǔn)規(guī)格 (OSACA) ”自1996年開始,美國幾個大的科研機(jī)構(gòu)對 NGC計劃分別發(fā)表了相應(yīng)的研 究內(nèi)容 3,如在美國海軍支持下,美國國際標(biāo)準(zhǔn)研究院提出了“EMC (增強(qiáng)型機(jī)床控制器)”由美國通用、福特和克萊斯勒三大汽車公司提出和研制了“OMAC開放式、模塊化體系結(jié)構(gòu)控制器 )” ,其目的是用更開放、更加模塊化的控制結(jié)構(gòu)使制造系統(tǒng)更加具有 柔性、更加敏捷。該計劃啟動后不久便公布了一個名為“OMAC APT ”的規(guī)范,并促成了一系列相關(guān)研究項目的運行。通用運動控制技術(shù)作為自動化技術(shù)的一個重要分支,在 20 世紀(jì) 90 年代,國際上 發(fā)達(dá)國家, 例如美國進(jìn)入快速發(fā)展的階段。 由于有
4、強(qiáng)勁市場需求的推動,通用運動控制 技術(shù)發(fā)展迅速,應(yīng)用廣泛。近年來,隨著通用運動控制技術(shù)的不斷進(jìn)步和完善,通用運 動控制器作為一個獨立的工業(yè)自動化控制類產(chǎn)品, 已經(jīng)被越來越多的產(chǎn)業(yè)領(lǐng)域接受, 并 且它已經(jīng)達(dá)到一個引人矚目的市場規(guī)模。根據(jù) ARC 近期的一份研究,世界通用運動控 制(General Motion Control GMC)市場已超過40億美元,并且有望在未來 5年內(nèi)綜合增 長率達(dá)到 6.3 。目前,通用運動控制器從結(jié)構(gòu)上主要分為如下三大類:(1 ) 基于計算機(jī)標(biāo)準(zhǔn)總線的運動控制器它是把具有開放體系結(jié)構(gòu), 獨立于計算機(jī)的運動控制器與計算機(jī)相結(jié)合構(gòu)成。 這種 運動控制器大都采用DSP或微
5、機(jī)芯片作為CPU,可完成運動規(guī)劃、高速實時插補(bǔ)、伺 服濾波控制和伺服驅(qū)動、外部 I/O 之間的標(biāo)準(zhǔn)化通用接口功能,它開放的函數(shù)庫可供用 戶根據(jù)不同的需求,在DOS或WINDOWS等平臺下自行開發(fā)應(yīng)用軟件,組成各種控制 系統(tǒng)。如美國 Deltatau 公司的 PMAC 多軸運動控制器和固高科技 (深圳)有限公司的 GT 系列運動控制器產(chǎn)品等。目前這種運動控制器是市場上的主流產(chǎn)品。(2)Soft 型開放式運動控制器它提供給用戶最大的靈活性, 它的運動控制軟件全部裝在計算機(jī)中, 而硬件部分僅 是計算機(jī)與伺服驅(qū)動和外部 I/O 之間的標(biāo)準(zhǔn)化通用接口。 就像計算機(jī)中可以安裝各種品 牌的聲卡、 CDROM
6、 和相應(yīng)的驅(qū)動程序一樣。用戶可以在 Windows 平臺和其他操作系 統(tǒng)的支持下,利用開放的運動控制內(nèi)核, 開發(fā)所需的控制功能,構(gòu)成各種類型的高性能 運動控制系統(tǒng),從而提供給用戶更多的選擇和靈活性?;?Soft 型開放式運動控制器 開發(fā)的典型產(chǎn)品有美國 MDSI公司的Open CNC、德國PA(Power Automation)公司的 PA8000NT。美國Soft SERVO公司的基于網(wǎng)絡(luò)的運動控制器和固高科技 (深圳)有限公 司的GO系列運動控制器產(chǎn)品等。Soft型開放式運動控制的特點是開發(fā)、制造成本相對 較低,能夠給予系統(tǒng)集成商和開發(fā)商更加個性化的開發(fā)平臺。(3)嵌入式結(jié)構(gòu)的運動控制器
7、 這種運動控制器是把計算機(jī)嵌入到運動控制器中的一種產(chǎn)品,它能夠獨立運行。運動控制器與計算機(jī)之間的通信依然是靠計算機(jī)總線, 實質(zhì)上是基于總線結(jié)構(gòu)的運動控 制器的一種變種。 對于標(biāo)準(zhǔn)總線的計算機(jī)模塊, 這種產(chǎn)品采用了更加可靠的總線連接方 式(采用針式連接器 ),更加適合工業(yè)應(yīng)用。在使用中,采用如工業(yè)以太網(wǎng)、RS485、SERCOS、 Profibus 等現(xiàn)場網(wǎng)絡(luò)通信接口聯(lián)接上級計算機(jī)或控制面板。嵌入式的運動控 制器也可配置軟盤和硬盤驅(qū)動器,甚至可以通過 Internet 進(jìn)行遠(yuǎn)程診斷。例如美國 ADEPT公司的SmartController,固高科技公司的GU嵌入式運動控制平臺系列產(chǎn)品等。我國在運
8、動控制器產(chǎn)品開發(fā)方面相對落后, 1999 年固高科技 (深圳)有限公司在深 圳成立,她是國內(nèi)第一家專業(yè)開發(fā)、生產(chǎn)開放式運動控制器產(chǎn)品的公司。其后,國內(nèi)又 有其他幾家公司進(jìn)入該領(lǐng)域, 但實際上,大多是在國內(nèi)推廣國外生產(chǎn)的運動控制器產(chǎn)品, 真正進(jìn)行自主開發(fā)的公司較少。 “八五”期間,我國廣大科研工作者也成功開發(fā)了兩種數(shù) 控平臺和華中I型、藍(lán)天I型、航天I型、中華I型等 4種基本系統(tǒng),這些系統(tǒng)采用 模塊化,嵌入式的軟、硬件結(jié)構(gòu)。其中以華中I型較具代表性,它采用工業(yè)PC機(jī)上插接口卡的結(jié)構(gòu),運行在 DOS 平臺上,具有較好的模塊化、層次化特征,具有一定擴(kuò)展 和伸縮性。 但從整體來說這些系統(tǒng)是數(shù)控系統(tǒng),
9、不是獨立的開放式運動控制器產(chǎn)品。目 前,我國是世界上經(jīng)濟(jì)發(fā)展最快的國家, 市場上新設(shè)備的控制需求、 傳統(tǒng)設(shè)備技術(shù)升級、 換代對運動控制器的市場需求越來越大。 另外由于市場日益競爭的壓力, 系統(tǒng)集成商和 設(shè)備制造商要求運動控制系統(tǒng)向開放式方向發(fā)展。 同時,經(jīng)濟(jì)型數(shù)控市場占有率正在逐 漸減小。在這樣的形勢下,我國可以抓住這一機(jī)遇,研制出具有自主知識產(chǎn)權(quán),具有高 水平、高質(zhì)量、高可靠性的開放式運動控制器產(chǎn)品。 通用運動控制器在國內(nèi)的應(yīng)用及發(fā)展 自 20 世紀(jì) 80 年代初期,通用運動控制器已經(jīng)開始在國外多個行業(yè)應(yīng)用,尤其是 在微電子行業(yè)的應(yīng)用更加廣泛。 而當(dāng)時運動控制器在我國的應(yīng)用規(guī)模和行業(yè)面很小,
10、 國 內(nèi)也沒有廠商開發(fā)出通用的運動控制器產(chǎn)品。 1999 年,固高科技 (深圳 )有限公司開始 從事專業(yè)開發(fā)、生產(chǎn)開放式運動控制器產(chǎn)品。國內(nèi)生產(chǎn)廠商提供的產(chǎn)品分類 目前,國內(nèi)的運動控制器生產(chǎn)廠商提供的產(chǎn)品大致可以分為三類:(1)以單片機(jī)或微處理器作為核心的運動控制器 這類運動控制器速度較慢,精度不高,成本相對較低。在一些只需要低速點位運動 控制和對軌跡要求不高的輪廓運動控制場合應(yīng)用。(2)以專用芯片(ASIC)作為核心處理器的運動控制器 這類運動控制器結(jié)構(gòu)比較簡單, 但這類運動控制器大多數(shù)只能輸出脈沖信號, 工作于開環(huán)控制方式。 這類控制器對單軸的點位控制場合是基本滿足要求的, 但對于要求多
11、軸協(xié)調(diào)運動和高速軌跡插補(bǔ)控制的設(shè)備, 這類運動控制器不能滿足要求。 由于這類控制 器不能提供連續(xù)插補(bǔ)功能,也沒有前瞻功能(Look ahead,特別是對于大量的小線段連 續(xù)運動的場合,如模具雕刻,不能使用這類控制器。另外,由于硬件資源的限制,這類 控制器的圓弧插補(bǔ)算法通常都采用逐點比較法,這樣一來圓弧插補(bǔ)的精度也不高。(3)基于PC總線的以DSP和FPGA作為核心處理器的開放式運動控制器的核心處 理器,以PC機(jī)作為信息處理平臺,運動控制器以插卡形式嵌入 PC機(jī),既“ PC+運動 控制器”的模式。這樣將 PC 機(jī)的信息處理能力有機(jī)的結(jié)合在一起,具有信息處理能力強(qiáng)、開放程度 高、運動軌跡控制準(zhǔn)確、
12、 通用性好的特點。這類運動控制器通常都能提供多軸協(xié)調(diào)運動 控制與復(fù)雜的運動詭計規(guī)劃、實時的插補(bǔ)運算、誤差補(bǔ)償、伺服濾波算法,能夠?qū)崿F(xiàn)閉 環(huán)控制。由于采用FPGA技術(shù)來進(jìn)行硬件設(shè)計,方便運動控制器供應(yīng)商根據(jù)客戶的特殊 工藝要求和技術(shù)要求進(jìn)行個性化的定制,形成獨特的產(chǎn)品。1.2 課題的意義和培養(yǎng)目標(biāo)運動控制器是近年來出現(xiàn)的一種新型書空裝置, 與傳統(tǒng)數(shù)控裝置相比在開放性、 用戶二次開發(fā)等方面有著極大的優(yōu)勢。GT400是一種通用運動控制器,它與PC計算機(jī)結(jié) 合,可設(shè)計給予Windows的人機(jī)操作界面,同時利用其提供的底層控制,可構(gòu)建滿足特 點需要的運動控制功能。目標(biāo)是通過 對GT400運動控制器的二次
13、開發(fā),利用其底層功 能設(shè)計一種基于PC的運動控制實驗平臺。該題目不僅與機(jī)電專業(yè)主干課程(數(shù)控系統(tǒng)、 伺服驅(qū)動、精密機(jī)械等)關(guān)系密切,同時又反映了機(jī)電遺體化技術(shù)的新發(fā)展。對于加強(qiáng)學(xué)生對專業(yè)知識的綜合應(yīng)用, 拓展知識面, 培養(yǎng)起分析和解決實際問題的能力都有著重 要的作用。1.3 課題的任務(wù)( 1) 多坐標(biāo)閉環(huán)、開環(huán)運動控制實驗平臺功能模塊(軟件)總體方案的擬定和系統(tǒng) 框圖。(2) 標(biāo)準(zhǔn)G代碼、M代碼前置預(yù)處理模塊的設(shè)計和調(diào)試。( 3) 多坐標(biāo)閉環(huán)、開環(huán)運動控制實驗?zāi)K的設(shè)計和調(diào)試。( 4) 單軸多模式運動、電子齒輪運動實驗?zāi)K的設(shè)計和調(diào)試。( 5) 外部中斷響應(yīng)處理實驗?zāi)K設(shè)計和調(diào)試。( 6) I
14、/O 功能開發(fā)及邏輯控制模塊的設(shè)計和調(diào)試。( 7) 繪制各主要模塊的原理框圖、程序流程圖,編寫設(shè)計說明書。2 硬件簡介2.1 硬件的構(gòu)成2.1.1 GT400 的簡介(功能)固高公司生產(chǎn)的 GT 系列運動控制器,可以同步控制四個運動軸,實現(xiàn)多軸協(xié)調(diào)運 動。其核心由 ADSP2181 數(shù)字信號處理器和 FPGA 組成,可以實現(xiàn)高性能的控制計算。 它適用于廣泛的應(yīng)用領(lǐng)域, 包括機(jī)器人、 數(shù)控機(jī)床、 木工機(jī)械、 印刷機(jī)械、 裝配生產(chǎn)線、 電子加工設(shè)備、激光加工設(shè)備等。GT系列運動控制器以IBM-PC及其兼容機(jī)為主機(jī),提供標(biāo)準(zhǔn)的ISA總線和PCI總 線兩個系列的產(chǎn)品。作為選件,在任何一款產(chǎn)品上可以提供
15、RS232串行通訊和PC104通訊接口,方便用戶配置系統(tǒng)。運動控制器提供C語言函數(shù)庫和 Windows動態(tài)連接庫, 實現(xiàn)復(fù)雜的控制功能。 用戶能夠?qū)⑦@些控制函數(shù)與自己控制系統(tǒng)所需的數(shù)據(jù)處理、 界面 顯示、用戶接口等應(yīng)用程序模塊集成在一起, 建造符合特定應(yīng)用要求的控制系統(tǒng),以適 應(yīng)各種應(yīng)用領(lǐng)域的要求。( 1) 電機(jī)控制系統(tǒng)的基本組成 運動控制器; 具有 PCI 插槽的 IBM-PC 或其兼容機(jī); STONE步進(jìn)電機(jī)56D-B (兩個); STONE驅(qū)動器SH208060N (兩個); 驅(qū)動器電源( +24V); +12V+24V直流電源(用于接口板電源);原點開關(guān)、正/負(fù)限位開關(guān);對于控制步進(jìn)電
16、機(jī),運動控制器提供兩種不同的控制信號:正脈沖 /負(fù)脈沖、脈沖/ 方向。這樣,控制器可以與目前任何類型步進(jìn)電機(jī)驅(qū)動器配套使用。 在控制步進(jìn)電機(jī)時, 控制模式為開環(huán)控制,不需要編碼器。(2)系統(tǒng)原理系統(tǒng)原理圖2-1 :圖2-1系統(tǒng)組成框圖采用GT系列運動控制器組成的控制系統(tǒng)典型連接見圖2-2 :圖2-2控制系統(tǒng)框圖主要接口功能及連接在建立控制系統(tǒng)時,將控制卡插入 PC機(jī)的PCI插槽后,還需通過轉(zhuǎn)接板和屏蔽線 在計算機(jī)外部連接一個配套的端子板。以后電機(jī)驅(qū)動器、各種外圍設(shè)備及通訊的連接就 在這塊端子板了進(jìn)行。端子板的布局可見圖2-3。圖2-3 PCI系列運動控制器的外形結(jié)構(gòu)運動控制卡與端子板連接示意圖
17、可見圖2-4圖2-4運動控制卡與端子板聯(lián)接示意圖3系統(tǒng)構(gòu)建3.1系統(tǒng)的構(gòu)建思想在利用運動控制器進(jìn)行二次開發(fā)之前,必須為其建立起相應(yīng)的開發(fā)與控制環(huán)境。要 建立起這樣一種環(huán)境,首先必須對我們所采用的開發(fā)平臺進(jìn)行具體的分析, 也就是評估 開發(fā)平臺是否適用于進(jìn)行運動控制器的二次開發(fā)。在評估當(dāng)中應(yīng)注意以下幾個方面:開發(fā)平臺所用的編程語言在GT400用戶編程手冊中所給出的幾種編程語言都適用于作為運動控制器的開發(fā)平臺。當(dāng)然,我相信其他的編程工具也是能夠?qū)崿F(xiàn)的,因為我們二次開發(fā)所用的是C+Builder,而不是用編程手冊當(dāng)中的任何一個。從編程的實踐角度來看,只要是以 C+ (包含C庫)為語言的開發(fā)平臺,基本上
18、都能夠用來作為二次開發(fā)的編程平臺。如 果要區(qū)分控制質(zhì)量的優(yōu)劣性的話, 我看也只在于程序設(shè)計當(dāng)中所設(shè)計的控制方式和對基 本函數(shù)調(diào)用的方式的不同而已,因為控制器的控制性能主要取決于它的基本控制函數(shù), 因而巧妙地對基本函數(shù)進(jìn)行調(diào)用是提高控制性能的關(guān)鍵。 C+Builder 是一個快速的開發(fā) 工具,用它來編控制程序就比 VC要方便得多,而且編程界面也是相當(dāng)?shù)挠押?。?dāng)然, 我并不否認(rèn)其他的編程工具的優(yōu)越性, 這取決于不同的人對不同編程工具的熟悉程度和 使用習(xí)慣。3.1.2 編程平臺使用的方便性我上面也稍微的提到了一點, 在此我再強(qiáng)調(diào)一下, 那就是我們所選用的編程平臺一 定要盡量是我們所最為熟悉的編程平臺
19、。 因為這樣, 我們所編出來的程序才會更容易調(diào) 試,所出現(xiàn)的錯誤也更容易解決。 如果對所用的編程平臺不熟悉的話,就算它有再好的 功能,也是無法發(fā)揮出來的。 同時,還必須花大量的時間去熟悉它的編程方法和調(diào)試方 法,這樣的話會使你無法將主要精力集中到開發(fā)過程中去。3.1.3 對控制器的編程手冊進(jìn)行深入地了解。上面提到我們本次開發(fā)所用的控制器是固高公司的運動控制器。 每一個公司在銷售 他們的產(chǎn)品同時都會給出相應(yīng)的技術(shù)支持,這些技術(shù)支持是我們進(jìn)行進(jìn)一步開發(fā)的基 礎(chǔ)。因此,對他們的技術(shù)支持進(jìn)行詳細(xì)地了解這一點很重要,為什么這么說呢,就用戶 編程手冊來說, 編程手冊里面給出了控制器和各個控制軸的所有初始化
20、函數(shù), 而這些初 始化函數(shù)是建立控制環(huán)境的基礎(chǔ), 每一次控制器和控制程序的運行都必須調(diào)用相應(yīng)的初 始化函數(shù),否則運動控制器無法正常工作甚至不能工作。當(dāng)然,除此之外,基本控制函 數(shù)也是絕對不可或缺的,因為所有的二次開發(fā)最終都?xì)w結(jié)到對基本控制函數(shù)的調(diào)用上。 因此,二次開發(fā)的質(zhì)量取決于如何巧妙對基本函數(shù)進(jìn)行調(diào)用以完成你所需要完成的控制 功能,而不是取決于基本函數(shù)本身, 因為固高公司所給出的基本函數(shù)所能完成功能非常 豐富,無論是直線圓弧插補(bǔ)、中斷處理、系統(tǒng)安全監(jiān)控還是參數(shù)設(shè)定、輸入輸出處理或 是狀態(tài)讀回都有相應(yīng)的基本函數(shù)來實現(xiàn)。3.2 系統(tǒng)的組建3.2.1 以 C+ Builder 為二次開發(fā)平臺的運
21、動控制界面在固高運動控制器的編程手冊中給出了三種常用的開發(fā)平臺, 但在程序設(shè)計過程當(dāng) 中我們發(fā)現(xiàn),其實C+ Builder同樣適用于作為固高運動控制器二次開發(fā)平臺。而且在兼 容性上由于C+ Builder繼承全部的C函數(shù)庫,所以在整個二次開發(fā)的過程當(dāng)中我們還沒 有遇到兼容性上的問題。另一方面由于C+ Builder是一種快速開發(fā)語言又具備強(qiáng)大的功 能,同時編程界面也相當(dāng)友好,程序編譯起來相當(dāng)?shù)姆奖悖@對于缺乏豐富的編程實踐 經(jīng)驗的我們來說,可以省去不少摸索時間。這樣我們就能夠把主要的精力集中到運動控 制程序設(shè)計上。3.2.2 C+ Builder編程平臺簡介C+ Builder是Borland
22、公司推出的功能強(qiáng)大、并已徹底解決了 “千年蟲”問題的應(yīng) 用程序開發(fā)軟件。C+ Builder是一個全新的可視化的C+編程環(huán)境,它為我們提供了 一個方便、快捷的 Windows 應(yīng)用程序開發(fā)工具。它使用了 Microsoft Windows 圖形用戶 界面的許多先進(jìn)特性和設(shè)計思想, 采用了彈性的、 可重用的面向?qū)ο蟪绦蛘Z言。對于廣 大的程序開發(fā)人員來講,使用 C+ Builder 開發(fā)應(yīng)用軟件和數(shù)據(jù)庫應(yīng)用程序,可以大大 地提高編程效率。C+ Builder實際上是C+語言的一種版本,但它與傳統(tǒng)的 C+語言有著很大的不 同。一個 C+ Builder 程序首先是應(yīng)用程序的框架而這一框架正是應(yīng)用程序
23、的“骨架” 。 在骨架上即使沒有附著任何東西, 也仍然可以嚴(yán)格地按照設(shè)計運行。 程序員的工作只是 在“骨架”中加入自己的程序。缺省的應(yīng)用程序是一個空白的窗體,我們可以運行它, 結(jié)果得到一個空白窗口。這個窗口具有 Windows 窗口的全部性質(zhì):可以放大縮小、移 動、最大化和最小化等。C+ Builder是非常容易使用的編程工具。C+ Builder支持全部的高級C+特性,例如模板、名字空間和操作符重載,此外, C+ Builder完全支持 全面的 Windows API函數(shù),例如割邊(cutting-edge)函數(shù)DirectX、OLE自動化和ActiveX。使用 C+ Builder 編寫的
24、程序在代碼的大小和性能上與使用 OWL 和 MFC 編寫的代 碼大致相當(dāng)?shù)?。那些認(rèn)為 C+ Builder 難以完成一些特殊的任務(wù)的觀點是錯誤的。任何 可以使用 Visual Basic、PowerBuilder、Borland C+或Visual C+可以完成的任務(wù)都可以 用 C+ Builder 來完成,甚至在某種程度上可以完成得更好,也更加藝術(shù)??焖匍_發(fā)工 具可能會給人留下 C+ Builder 功能不全的錯誤印象。事實上,除了使用起來容易,設(shè) 計起來更方便快捷以外, C+ Builder 完全具備 OWL 和 MFC 的全部功能。3.3 系統(tǒng)方案設(shè)計運動控制器是 10000個脈沖轉(zhuǎn)一圈
25、。 運動控制器的伺服周期是 200 微妙。我們決定 采用閉環(huán)控制并且設(shè)計出來的控制系統(tǒng)界面必須清晰, 操作方便并且用戶可以直接在界 面上編寫數(shù)控程序, 也可以直接調(diào)用已寫好的程序直接運行。 為了界面看起來美觀, 所 以我們將軸的坐標(biāo)位置顯示和一些主要的按鈕放在界面右邊。 其他功能采用模塊化的界 面??傮w界面框圖見圖 3-1圖 3-1 系統(tǒng)界面框圖3.3.1 界面介紹現(xiàn)將運動控制部分分成以下幾個模塊:(1)啟動頁見圖 3-2圖 3-2 啟動頁(2)參數(shù)設(shè)置模塊這個模塊包括設(shè)定系統(tǒng)必須的參數(shù),如:插補(bǔ)周期、編碼器的方向、各軸的行程 極限和PID等參數(shù)的設(shè)置。界面見圖3-3和圖3-4。圖 3-3 一
26、般參數(shù)設(shè)置圖 3-4 PID 參數(shù)設(shè)置(3)單軸運動模塊這部分主要是單軸的手動進(jìn)給和自動進(jìn)給。包括增量式手動進(jìn)給、連續(xù)式手動進(jìn) 給、回零、 S- 曲線控制模式、梯形曲線控制模式、速度曲線控制模式、電子齒輪模式 及 PID 參數(shù)的設(shè)置對系統(tǒng)的影響。界面見圖 3-5 和圖 3-6。圖 3-5 手動進(jìn)給圖 3-6 自動進(jìn)給(4)多軸運動模塊這部分包括直接插補(bǔ)運動和 NC 代碼控制運動。直接插補(bǔ)里面可以實現(xiàn) XY 直線 插補(bǔ)、XY圓弧插補(bǔ)(圓心角度)和 XY圓弧插補(bǔ)(終點半徑)。如果你要繼續(xù)插補(bǔ)可 以給編輯框里輸入需要插補(bǔ)的坐標(biāo), 它就會自己執(zhí)行你要的插補(bǔ)。 NC 代碼控制運動是 根據(jù)用戶給定的參數(shù)能
27、自動實現(xiàn)預(yù)定的軌跡,同時也能運行從 G 代碼編譯過來的的參 數(shù)。這個模塊可運行單段軌跡,也可運行多段連續(xù)軌跡。軌跡就顯示在本頁面上可以 一目了然。界面見圖 3-7 和圖 3-8 。圖 3-7 直接插補(bǔ) 圖 3-8 自動插補(bǔ)(5)輸出輸入控制模塊 這部分可以完成運動錯誤檢測及狀態(tài)恢復(fù)、驅(qū)動器報警處理、限位狀態(tài)處理和輔 助功能處理。界面見圖 3-9 。圖 3-9 輸入輸出控制(6)狀態(tài)監(jiān)視模塊這部分可以顯示單軸的運動狀態(tài)和多軸運動狀態(tài)。在這個界面上我們可以看到那 個軸在哪個運動模式下運動,命令是否有錯誤,運動是否完成,伺服周期是否太大, 限位開關(guān)是否動作,多軸運動是否異常,立即插補(bǔ)運動是否開始和緩
28、沖區(qū)是否空等狀 態(tài)。界面見圖 3-10 和圖 3-11 。圖 3-10 單軸狀態(tài)監(jiān)視圖 3-11 多軸狀態(tài)監(jiān)視(7)幫助模塊主要介紹系統(tǒng)的界面、功能和操作要注意的事項。該設(shè)計主要包括運動控制、 平臺界面和硬件連線三大部分的設(shè)計。 在本次設(shè)計中,我主 要負(fù)責(zé)單軸運動模塊、多軸運動模塊、 NC 代碼預(yù)處理模塊中的程序設(shè)計、信息顯示模 塊和幫助模塊。界面見圖 3-12 。圖 3-12 幫助4 單軸運動4.1 初始化在使用運動控制器之前, 我們必須對它進(jìn)行必要的初始化和參數(shù)設(shè)置, 否則控制器 無法工作。4.1.1 錯誤處理函數(shù)為了保證程序安全可靠的運行, 用戶必須在程序中加一個錯誤處理函數(shù)。 用戶在調(diào)
29、 試程序的時候可以檢測每一個函數(shù)的返回值, 以判斷命令的執(zhí)行狀態(tài)。 并建立必要的錯 誤處理機(jī)制, 保證程序安全可靠的運行。 運動控制器的命令狀態(tài)寄存器提供命令出錯的 詳細(xì)原因,主機(jī)可通過調(diào)用命令 GT_GetCmdSts()得到命令出錯的原因。4.1.2 運動控制器初始化運動控制器必須要初始化。運動控制卡有 ISA和PCI兩種。我們實驗室用的是PCI卡。初始化的函數(shù)有GT_Open()GT_Reset()GT_SetSmplTm(200)GT_Axis(1)打開運動控制器設(shè)備復(fù)位運動控制器設(shè)置控制器周期為 200us設(shè)置 1 軸為當(dāng)前軸GT_LmtSns(0)GT_EncSns(0xF)GT_
30、ClrSts() GT_CtrlMode() GT_CloselosLp() GT_SetKp(10) GT_SetKi(6) GT_SetKd(8) GT_SetKvff(0) GT_SetKaff(0) GT_SetMtrBias(10) GT_AxisOn()GT_SetIntrMsk(0) 設(shè)置當(dāng)前軸中斷屏蔽字4.1.3 專用輸入信號參數(shù)設(shè)置我們在使用過程中有限位開關(guān)和編碼器。 所以我們就必須設(shè)置限位開關(guān)有限電平和編碼器方向(僅 SV 卡),我們就要用到專用輸入信號參數(shù)設(shè)置。函數(shù)如下:設(shè)置 14 軸正、負(fù)限位開關(guān)為高電平觸發(fā) 設(shè)置編碼器方向4.1.4 運動控制軸初始化函數(shù)如果要想使軸動
31、起來就必須對軸初始化。 運動控制卡分為SD SE SG SP和SV卡 實驗室里的是SV卡,所以我們必須得設(shè)置 PID參數(shù)。其函數(shù)如下:清除當(dāng)前軸不正確狀態(tài) 設(shè)置為輸出模擬量設(shè)置為閉環(huán)控制設(shè)置比例增益為 10設(shè)置積分增益為 6 設(shè)置微分增益為 8 設(shè)置速度前饋為 0 設(shè)置加速度前饋為 0 設(shè)置輸出零點偏移值為 10驅(qū)動使能4.1.5 坐標(biāo)映射要使相應(yīng)的運動映射到相應(yīng)的軸上我們就要調(diào)用 GT_MapAxis(), 從而建立各軸的運 動和要求的運動詭計之間的運動學(xué)傳遞關(guān)系。 運動控制器根據(jù)坐標(biāo)映射關(guān)系, 控制各軸 運動,實現(xiàn)要求的運動軌跡。具體的程序可以參考固高公司的編程手冊。4.2 運動模式4.2
32、.1 S 曲線控制模式s曲線控制模式的速度、加速度、加加速度的曲線見圖 41圖4 1S曲線控制模式速度十加速度和加加速度曲線其所有的函數(shù)如下:GT_PrflS()GT_SetJerk(0.00001)GT_SetMAcc(0.01)GT_SetVel(10)GT_SetPos(1000000)4.2.2 梯形曲線控制模式設(shè)置為s曲線控制模式 設(shè)置最大加加速度為 0.00001 設(shè)置最大加速度為 0.01 設(shè)置其速度為 10 設(shè)置其目標(biāo)位置為 1000000圖 4-2 梯形曲線模式的速度曲線設(shè)置為梯形曲線模式 設(shè)置加速度為 0.01 設(shè)置其目標(biāo)位置為 1000000 設(shè)置其速度為 10設(shè)置為速度
33、控制模式設(shè)置加速度為 0.01設(shè)置其速度為 10梯形曲線控制模式速度曲線圖見圖 4-2其所有的函數(shù)如下:GT_PrflT()GT_SetAcc(0.01)GT_SetPos(1000000)GT_SetVel(10)4.2.3 速度曲線控制模式其所有的函數(shù)如下:GT_PrflV()GT_SetAcc(0.01)GT_SetVel(10)4.2.4 電子齒輪控制模式其所有的函數(shù)如下:GT_Axis(1)GT_PrflG(2)GT_SetRatio(-2)設(shè)置當(dāng)前軸為 1 軸設(shè)置為電子齒輪模式并設(shè)主軸為 2 軸 設(shè)置電子齒輪傳動比為 -2不過在使用電子齒輪控制模式的時候一定要先讓當(dāng)前軸以某種模式轉(zhuǎn)
34、動起來后再啟 動電子齒輪模式。要不然電子齒輪模式不起作用。4.2.5 手動進(jìn)給手動操作是模仿 CNC 系統(tǒng)的手動操作。它可以實現(xiàn)微小的位置變化,其流程圖見 圖 4-3 。圖 4-3 手動操作流程圖(1) 增量式手動增量式手動就是我們必須先要設(shè)置每次增量的脈沖和增量的速度,系統(tǒng)會根據(jù)每次增量的脈沖和速度就會完成運動。 用戶每次設(shè)置好每次增量的脈沖和增量的速度點X+ 、X-、Y+、Y-、Z+或Z-系統(tǒng)就會根據(jù)你所選擇的軸和方向運動到你所要的位置。其實就 是用單軸模式里的梯形曲線模式。 如果是正的速度設(shè)為正的, 如果向負(fù)的方向運動就把 速度設(shè)為負(fù)的。梯形模式在下面介紹。(2) 連續(xù)式手動連續(xù)式手動其
35、實和增量式手動一樣的, 只不過是在增量式手動里用的是梯形曲線模 式,在連續(xù)式手動里用的是速度曲線模式。 但是在連續(xù)式手動里是直接點 X+、 X-、 Y+、 Y-、Z+或Z-不需要設(shè)置每次增量的脈沖和增量的速度系統(tǒng)就會運動到你所要的位置。 還要用到 void_fastcallTMainForm:Button10MouseDown(TObject *Sender, TMouseButton Button, TShiftState Shift, int X, int Y)鼠標(biāo)點下去時軸就會運動。void_fastcallTMainForm:Button10MouseUp(TObject *Sende
36、r,TMouseButton Button, TShiftState Shift, int X, int Y)鼠標(biāo)彈上來時軸就會停止運動。停止知用的是 rtn=GT_SmthStp()函數(shù)(3) 回零操作回零操作就是不管軸的位置在那快點這個按鈕軸就會回到0點去。其實就是設(shè)置它的目標(biāo)位置為 0 點就了。其中用到的函數(shù)有:GT_SetAcc(0.2)設(shè)置其加速度為 0.2GT_SetPos(0)設(shè)置其目標(biāo)位置為 0GT_SetVel(20)設(shè)置其速度為 204.2.6 自動進(jìn)給固高公司提供的單軸運動中有 S曲線控制模式、梯形曲線控制模式、速度控制模 式、電子齒輪控制模式四種控制模式。 各種模式最后
37、都要有參數(shù)刷新,它就是讓參數(shù)生 效的。其流程圖見圖 4-4。圖 4-4 自動進(jìn)給流程圖4.3 參數(shù)刷新4.3.1 普通參數(shù)刷新普通參數(shù)刷新調(diào)用的是GT_Update()和GT_MltiUpdt()兩個命令。GT_Update()是實現(xiàn)當(dāng) 前軸立即刷新的。使當(dāng)前軸的運動參數(shù)或是緩沖區(qū)命令生效。GT_MltiUpdt() 是實現(xiàn)多軸運動參數(shù)(命令)立即刷新。即多個控制軸同步刷新參數(shù)。 如果希望多個控制軸的運動同步的情況下,主機(jī)可采用此命令來實現(xiàn)多控制軸運動同 步。4.3.2 斷點參數(shù)刷新主機(jī)可以設(shè)定某一個條件(斷點)當(dāng)控制軸運動滿足該條件時,控制器將自動刷新控制軸參數(shù)(命令)。其函數(shù)主要如下:GT
38、_AuUpdtOn() GT_AuUpdtOff() GT_GetBrkCn() GT_PosBrk () GT_NegBrk () GT_ExtBrk () GT_MtnBrk () GT_BrkOff ()設(shè)置當(dāng)前軸控制參數(shù)和命令自動更新 關(guān)閉當(dāng)前軸控制參數(shù)和命令自動更新 讀取當(dāng)前軸斷點位置比較值 設(shè)置當(dāng)前軸斷點條件為大于斷點位置 設(shè)置當(dāng)前軸斷點條件為小于斷點位置 設(shè)置當(dāng)前軸原點信號觸發(fā)斷點模式 設(shè)置當(dāng)前軸運動到位觸發(fā)斷點模式 清除當(dāng)前軸斷點,并關(guān)閉斷點模式4.4 開閉環(huán)控制SV運動控制卡有開環(huán)和閉環(huán)兩種方式。4.4.1 開環(huán)控制調(diào)用GT_CloseLp()命令,當(dāng)前軸工作在閉環(huán)方式下,運
39、動控制器將當(dāng)前規(guī)劃的運 動位置、速度、加速度送入數(shù)字伺服濾波器, 與反饋的實際位置進(jìn)行補(bǔ)角獲得控制輸出 信號。這種方式能夠?qū)崿F(xiàn)準(zhǔn)確的位置控制。 但是我們必須設(shè)置好數(shù)字伺服濾波器的參數(shù)。4.4.2 閉環(huán)控制調(diào)用GT_OpenLp()命令,當(dāng)前軸工作在開環(huán)方式下,允許主機(jī)通過GT_SetMtrCmd()命令直接設(shè)置運動控制器的控制軸輸出信號。 這種方式主要用于秩序轉(zhuǎn)矩控制的運動或 是標(biāo)定驅(qū)動器,運動控制器無法實現(xiàn)準(zhǔn)確的位置控制。5 多軸運動多軸運動是兩個或是兩個以上(最多是四個)的軸協(xié)調(diào)運動包括直線插補(bǔ)、圓弧插補(bǔ)(圓心角度)、圓弧插補(bǔ)(終點半徑) 。其流程圖見圖 51。圖 5-1 直接插補(bǔ)流程圖5
40、.1 單段軌跡運動5.1.1 直線插補(bǔ)直線插補(bǔ)分為兩維、三維和四維。其函數(shù)主要如下:GT_LnXY()GT_LnXYZ()GT_LnXYZA()5.1.2 圓弧插補(bǔ)(圓心角度)GT_ArcXY()GT_ArcYZ()GT_ArcZX()5.1.3 圓弧插補(bǔ)(終點半徑)GT_ArcXYP()GT_ArcYZP()GT_ArcZXP()5.2 多段軌跡連續(xù)運動兩維直線插補(bǔ) 三維直線插補(bǔ) 四維直線插補(bǔ)XY 平面圓弧插補(bǔ)(圓心角度)YZ 平面圓弧插補(bǔ)(圓心角度)ZX 平面圓弧插補(bǔ)(圓心角度)XY 平面圓弧插補(bǔ)(終點半徑)YZ 平面圓弧插補(bǔ)(終點半徑)ZX 平面圓弧插補(bǔ)(終點半徑)如果要實現(xiàn)多段軌跡連續(xù)
41、運動就要用到緩沖區(qū)和緩沖區(qū)的命令。緩沖區(qū)是一個 4096Xl6Bit環(huán)行隊列。緩沖區(qū)滿時拒絕接受用戶輸入的多軸協(xié)調(diào)運動命令,并返回緩 沖區(qū)滿的信息。在啟動緩沖區(qū)中的命令后,隨著命令的執(zhí)行,緩沖區(qū)會有新的空間,用 戶可以繼續(xù)發(fā)送更多的命令。GT_StrtList()打開并清空緩沖區(qū)GT_MvXY()定位緩沖區(qū)坐標(biāo)起點(兩維)GT_MvXYZ()定位緩沖區(qū)坐標(biāo)起點(三維)GT_MvXYZA()定位緩沖區(qū)坐標(biāo)起點(四維)GT_AddList()再一次打開緩沖區(qū)GT_EndList()關(guān)閉緩沖區(qū)GT_SetSynVel()設(shè)置多軸協(xié)調(diào)運動軌跡切線速度GT_SetSynAcc()設(shè)置多軸協(xié)調(diào)運動軌跡切線
42、加速度GT_StrtMtn()啟動緩沖區(qū)中坐標(biāo)系命令執(zhí)行GT_StpMtn()平滑停止坐標(biāo)系運動GT_EStpMtn()緊急停止坐標(biāo)系運動GT_SmthStp ()平滑停止單軸運動GT_AbptStp ()緊急停止單軸運動5.3 NC 代碼控制模式要想使我們的系統(tǒng)更有大眾化就必須別的系統(tǒng)有的我們的系統(tǒng)也得有呀。 所以我們 設(shè)計的機(jī)電一體化運動控制器實驗平臺和 CNC系統(tǒng)一樣也可以識別NC代碼,不過由于 時間的原因沒有把M代碼加上去,還希望下一屆的同學(xué)能夠加上去, 使這個系統(tǒng)更加完 善。系統(tǒng)能夠識別NC代碼當(dāng)然就會有G代碼解釋模塊了。5.3.1 G 代碼解釋1) 快速定位不一定每一個運動都從原點
43、開始。所以在 G 代碼解釋前,必須有快速定位。 其程序如下:G00(double X, double Y)short rtn;short aix;unsigned short status;rtn=GT_EndList();error(rtn); / 關(guān)閉緩沖區(qū)rtn=GT_GetCrdSts(&status); error(rtn); / 讀取緩沖區(qū)狀態(tài) while(!(status&0x1) / 等待緩沖區(qū)空 rtn=GT_GetCrdSts(&status); error(rtn); /重新復(fù)位GTInitial(); /AxisInitial();rtn=GT_
44、Axis(1);error(rtn);rtn=GT_SetAtlPos(long)m_prePos.X); error(rtn); / 刷新當(dāng)前軸的坐標(biāo)rtn=GT_SetAcc(0.01); rtn=GT_SetVel(MAXSPEED); rtn=GT_SetPos(long)X); rtn=GT_Axis(2);error(rtn);error(rtn);error(rtn); / 以最大速度運動到目標(biāo)位置error(rtn);rtn=GT_SetAtlPos(long)m_prePos.Y); error(rtn); rtn=GT_SetAcc(0.01);error(rtn);rtn
45、=GT_SetVel(MAXSPEED);error(rtn);rtn=GT_SetPos(long)Y);error(rtn);/ 兩軸同時刷新rtn=GT_MltiUpdt(0x5); error(rtn);/error(rtn); / 以后停軸為當(dāng)前軸 error(rtn); / 查詢當(dāng)前軸的軸狀態(tài)寄存器 / 等待定位結(jié)束aix=fabs(X-m_prePos.X)>=fabs(Y-m_prePos.Y)?1:3; / 判斷哪個軸后停 rtn=GT_Axis(aix);rtn=GT_GetSts(&status); while(status&0x400)rtn=GT
46、_GetSts(&status); error(rtn);/再一次初始化坐標(biāo)系運動將各軸的坐標(biāo)刷新保存本次運動的終點坐標(biāo)MotInit(0 , 0);/rtn=GT_Axis(1); / rtn=GT_SetAtlPos(long)X); rtn=GT_Axis(2); rtn=GT_SetAtlPos(long)Y);m_prePos.X=X; m_prePos.Y=Y; / 從上到下,依次做了四件事(已經(jīng)用虛線隔開) : 查詢并等待插補(bǔ)運動結(jié)束 兩軸同時刷新,實現(xiàn)快速定位 查詢并等待定位結(jié)束 重新為插補(bǔ)運動作好初始化 其流程圖見圖 5 2。緩沖區(qū)空調(diào)用MotGOO(X,Y)關(guān)閉緩沖
47、區(qū)查詢坐標(biāo)系狀態(tài)寄存器初始化系統(tǒng)多軸刷新目標(biāo)位置為(X,Y)以后停軸為準(zhǔn)查詢軸狀態(tài)寄存器初始化坐標(biāo)系運動刷新各軸坐標(biāo)并保存該坐標(biāo)圖5-2G代碼解釋流程圖(2) G代碼解釋的編程思想在考慮G代碼之前,我們充分了解運動控制器提供的運動函數(shù),已經(jīng)能夠通過調(diào) 用這些函數(shù)來實現(xiàn)簡單曲線插補(bǔ),使得在底層已經(jīng)具備了走G01和G02/G03的能力。為簡化解釋程序的設(shè)計難度,我們假設(shè)輸入的加工程序都是正確的,這樣就不必對 加工程序進(jìn)行語法的檢測。另外,在功能上,暫時先實現(xiàn) G00、G01、G02、G03四條 基本的準(zhǔn)備指令,以實現(xiàn)運動為目標(biāo),其它的功能可在后續(xù)擴(kuò)充?;镜慕忉屗悸肥?,把一段 G代碼看成一個字符串
48、,對它進(jìn)行掃描,每判斷出一 句程序段,便轉(zhuǎn)入解釋,作相應(yīng)的處理,然后繼續(xù)掃描,判斷出程序段再轉(zhuǎn)入解釋,直 到所有字符都掃描完為止。一般數(shù)控系統(tǒng)的程序段以“N開頭,用“;”作結(jié)束符,但也有些系統(tǒng)沒有結(jié)束符。 考慮到程序段之間一般都要換行,我可以直接拿換行符“n”作為程序段的結(jié)束符。從顯示的效果看我們系統(tǒng)中的 G代碼程序段就沒有結(jié)束符,但在錄入程序時需要注意每 寫一個程序段應(yīng)回車換行才能被有效執(zhí)行。完成解釋工作函數(shù)是 Gcode(char *head, char *end),它有兩個指針形參數(shù)分別指向 一個加工程序段的首字符和尾字符。它的作用就是完成加工程序段的解釋和處理。現(xiàn)在如果輸入兩段加工程序
49、:NOO GOO X100 Y500N01 G01 X100 Y0 F0.5實際在內(nèi)存中的存儲形式見表5- 1:表5- 1存儲形式012345678910111213N00G00X100Y1415161718192021222324252627500nN01G01X1282930313233343536373839404100Y0F0.5n0對字符串進(jìn)行掃描,從第0個字符N開始,到第17個發(fā)現(xiàn)字符“n”程序段結(jié)束,并用head和end來定位起始位置,便可用 Gcode(head, end來解釋。第一段解釋完后, head指向第18個字符“ N ,直到end指向第38個字符“ n”又轉(zhuǎn)入第二段的
50、解釋。 當(dāng)發(fā)現(xiàn)最后的“ 0 ”字符串結(jié)束,不再有加工代碼,程序也至此結(jié)束。這個過程用C語言描述就是:char *s= ” N00 G00 X100 Y500n”;char *head=s;char *end;int n=0;/掃描累加器int lin e=0; /程序段累加器while(*(head+n)!= 0')程序未結(jié)束時if(*(head+n)= n' )/判斷出一個程序段lin e+;end=head+n;定位尾字符Gcode(head, end) 進(jìn)行解釋head=end+;指向下一個程序段的首字符n=0;/掃描累加器清零n+;這里的Gcode函數(shù)可以看成一個黑匣子
51、,只要告訴它一個加工程序段的位置所在, 它就能作出解釋,完成G代碼中的動作。下面,將具體介紹一下,Geode函數(shù)的實現(xiàn)過程。在之前,我們已經(jīng)引入坐標(biāo)系運 動類,它是整個數(shù)控系統(tǒng)的核心。其中的三個成員函數(shù):MotG00(double X, double Y)、MotG01(double X, double Y, double F)、MotG02(double X, double Y, double F, short dir)分 別用來實現(xiàn)快速定位、直線插補(bǔ)和圓弧插補(bǔ)的運動功能。它們是我們在解釋G代碼后需 要調(diào)用的。注意到 MotG02中有個方向參數(shù)dir,當(dāng)dir=1時走順圓,當(dāng)dir=-1時走
52、逆 圓。通過改變參數(shù)來區(qū)分 G02和G03,這樣可以避免定義兩個功能基本幾乎完全相同 的函數(shù)。我們還是以剛才的加工代碼為例,來看第一條程序段:N00 G00 X100 Y500。大多數(shù)G代碼都是由若干個指令字(字母)和數(shù)字(可以是負(fù)數(shù)和小數(shù))組成。而且字母 不會單獨出現(xiàn),每個字母后面必有數(shù)字與它對應(yīng)。這為我們分析G代碼提供了依據(jù)。我們對G代碼進(jìn)行分離,用兩個數(shù)組:char code和double data分別存放代碼中 的字母和數(shù)字。于是有表5-2 :表5-2 :代碼整理后的結(jié)果code012345NGXY0date0123450010050000這一步的完成是關(guān)鍵,接下來的解釋都是圍繞這兩個
53、數(shù)組展開的用兩個指針pCode和pData來分別指向code和data,進(jìn)行掃描。掃描的終點就是 code末尾處的 0'字符。各動作是對字母和相應(yīng)的數(shù)字進(jìn)行判別實現(xiàn)的。過程見表 5-3。表5-3 :字母與動作的對應(yīng)*pCodeNGXY0*pData0123動作無動作執(zhí) 行G00執(zhí) 行G01執(zhí) 行G02執(zhí) 行G03將pData 所指的 數(shù)據(jù)賦 給變量x將pData 所指的 數(shù)據(jù)賦 給變量y掃描結(jié)束對這條G代碼的解釋過程見圖5-3圖5-3代碼解釋示意圖G01和G02/G03的解釋過程與G00類似,無非多了對進(jìn)給量f和r的賦值,而執(zhí)行的是 MotG01(x, y, f),Mot02(x, y
54、, r, f, 1)/MotG02(x, y, f, r, -1) 0(3) G代碼解釋的具體實現(xiàn)上面講的是G代碼解釋的編程思想,在具體實現(xiàn)中,為了提高程序的安全性和可擴(kuò)展性,我們用類來封裝,并將G代碼的分離和執(zhí)行動作分開來,分別用GcodeTrans和GcodeAct來處理,以避免單個函數(shù)的代碼過于冗長,不易調(diào)試排錯。G代碼處理類的聲明為:class TGcode /G代碼處理類public:Tgcode();void GcodeCheck(); /語法檢查void GcodeTra ns(char *head, char *en d);/ 代碼轉(zhuǎn)換short GcodeAct();/代碼執(zhí)
55、行private:char m_code10;/ 指令數(shù)組double m_data10; / 數(shù)據(jù)數(shù)組Tm apMotion m_motio n;/內(nèi)含的運動類m_status; / 保存的代碼狀態(tài)成員函數(shù)中還有一個執(zhí)行語法檢查功能的GcodeCheck(),可以在后續(xù)得以補(bǔ)充,但因時間和精力有限,在我們這次設(shè)計中并沒有添加代碼。G代碼解釋中的數(shù)據(jù)都為私有不與外界交流。其中, m_code10用來存儲分離后的 字母;m_data10用來存儲分離后的數(shù)據(jù);m_motion是一個內(nèi)含的運動對象,用來完成 運動任務(wù);m_status是一個自定義的結(jié)構(gòu)體(TgcdStatus),用來保存G代碼解釋過程中 一系列的狀態(tài)信息,這是一個重要的結(jié)構(gòu)體,模態(tài)指令和相對編程的實現(xiàn)都有賴于它。代碼運行時的狀態(tài)運動參數(shù)工件坐標(biāo)原點代碼標(biāo)志TgcdStatus的聲明為: struct TgcdStatus /G double x;double y;double f;double r;/double x0;/double y0;short
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年滬科版必修3英語上冊月考試卷含答案
- 2025年外研版2024選修2地理上冊階段測試試卷
- 二零二五版門衛(wèi)值班人員設(shè)備維護(hù)聘用合同4篇
- 2025年度新能源汽車電池回收與利用分包合同4篇
- 二零二五年度智能物流解決方案內(nèi)部銷售承包合同4篇
- 二零二五年度木門行業(yè)環(huán)保標(biāo)準(zhǔn)采購合同2篇
- 《包裝設(shè)計》 案例賞析 第4章 香生記品牌包裝設(shè)計
- 2025版內(nèi)退員工勞動合同范本:食品行業(yè)專用4篇
- 2025年度影視基地租賃合同范本及知識產(chǎn)權(quán)保護(hù)協(xié)議3篇
- 2025年農(nóng)場農(nóng)業(yè)廢棄物回收利用服務(wù)合同4篇
- 平安產(chǎn)險陜西省地方財政生豬價格保險條款
- 銅礦成礦作用與地質(zhì)環(huán)境分析
- 30題紀(jì)檢監(jiān)察位崗位常見面試問題含HR問題考察點及參考回答
- 詢價函模板(非常詳盡)
- 《AI營銷畫布:數(shù)字化營銷的落地與實戰(zhàn)》
- 麻醉藥品、精神藥品、放射性藥品、醫(yī)療用毒性藥品及藥品類易制毒化學(xué)品等特殊管理藥品的使用與管理規(guī)章制度
- 一個28歲的漂亮小媳婦在某公司打工-被老板看上之后
- 乘務(wù)培訓(xùn)4有限時間水上迫降
- 2023年低年級寫話教學(xué)評語方法(五篇)
- DB22T 1655-2012結(jié)直腸外科術(shù)前腸道準(zhǔn)備技術(shù)要求
- GB/T 16474-2011變形鋁及鋁合金牌號表示方法
評論
0/150
提交評論