


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