版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領
文檔簡介
更多論文請加QQ1634189238492186520第一章緒論1.1工業(yè)機器人的開展及分類工業(yè)機器人的開展工業(yè)機器人的開展通??梢?guī)劃分為三代:第一代工業(yè)機器人:通常是指目前國際上商品化與使用化的“可編程的工業(yè)機器人〞,又稱“示教再現(xiàn)工業(yè)機器人〞,即為了讓工業(yè)機器人完成某項作業(yè),首先由操作者將完成該作業(yè)所需要的各種知識〔如運動軌跡、作業(yè)條件、作業(yè)順序和作業(yè)時間等〕,通過直接或間接手段,對工業(yè)機器人進行“示教〞,工業(yè)機器人將這些知識記憶下來后,即可根據(jù)“再現(xiàn)〞指令,在一定精度范圍內(nèi),忠實的重復再現(xiàn)各種被示教的動作。1962年美國萬能自動化公司的第一臺Unimate工業(yè)機器人在美國通用汽車公司投入使用,標志著第一代工業(yè)機器人的誕生。第二代工業(yè)機器人:通常是指具有某種智能〔如觸覺、力覺、視覺等〕功能的“智能機器人〞。即有傳感器得到觸覺、力覺和視覺等信息計算機處理后,控制機器人的操作機完成相應的適當操作。1982年美國通用汽車在裝配線上為工業(yè)機器人裝備了視覺系統(tǒng),從而宣布了新一代智能工業(yè)機器人的問世。第三代工業(yè)機器人:即所謂的“只治式工業(yè)機器人〞。它不僅具有感知功能,而且還有一定的決策及規(guī)劃能力。第一代工業(yè)機器人目前仍處在實驗室研究階段。工業(yè)機器人經(jīng)歷了誕生---成長---成熟期后,已成為制造業(yè)中不可缺少的核心裝備,世界上有約75萬臺工業(yè)機器人正與工人朋友并肩戰(zhàn)斗在個條生產(chǎn)線上,特種機器人作為機器人家族的后起之秀,由于其用途廣泛而大有后來居上之勢,仿人機器人、農(nóng)業(yè)機器人、效勞機器人、水下機器人、醫(yī)療機器人、軍用機器人、娛樂機器人等各種用途發(fā)特種機器人紛紛面世,而且正以飛快的速度向?qū)嵱没~進。我國的工業(yè)機器人從80年代“七五〞科技攻關(guān)開始起步,在國家的支持下,通過“七五〞、“八五〞科技攻關(guān),目前已根本掌握了機器人的操作機的設計制造技術(shù)、控制系統(tǒng)硬件和軟件設計技術(shù)、運動學和軌跡規(guī)劃技術(shù)、生產(chǎn)了局部機器人的關(guān)鍵元器件,開發(fā)出噴漆、焊弧、點焊、裝配、搬運等機器人;其中有130多臺配套噴漆機器人在二十與家企業(yè)的近30條自動噴漆生產(chǎn)線上獲得規(guī)模應用,弧焊機器人已應用在汽車制造廠的焊裝線上。但總的來看,我國的工業(yè)機器人技術(shù)及其工程應用水平和國外比還有一定的距離,如:可靠性低于國外產(chǎn)品;機器人應工程起步較晚,應用領域窄,生產(chǎn)線系統(tǒng)技術(shù)與國外比有差距;在應用規(guī)模上,我國已安裝的國產(chǎn)工業(yè)機器人約200臺,約占全球已安裝臺數(shù)的萬分之四。以上原因主要是沒有形成機器人產(chǎn)業(yè),當前我國的機器人生產(chǎn)都是應用戶的要求,“一客戶,一次重新設計〞,品種規(guī)格多、批量小、零部件通用化程度低、供貨周期長、本錢也不低,而且質(zhì)量、可靠性不穩(wěn)定。因此迫切需要解決產(chǎn)業(yè)化前期的關(guān)鍵技術(shù),對產(chǎn)品進行全面規(guī)劃,搞好系列化、通用化、?;O計,積極推進產(chǎn)業(yè)化進程。工業(yè)機器人的分類工業(yè)機器人按不同的方法可分下述類型工業(yè)機器人按操作機坐標形式分以下幾類:〔坐標形式是指操作機的手臂在運動時所取的參考坐標系的形式?!场?〕直角坐標型工業(yè)機器人其運動局部由三個相互垂直的直線移動〔即PPP〕組成,其工作空間圖形為長方形。它在各個軸向的移動距離,可在各個坐標軸上直接讀出,直觀性強,易于位置和姿態(tài)的編程計算,定位精度高,控制無耦合,結(jié)構(gòu)簡單,但機體所占空間體積大,動作范圍小,靈活性差,難與其他工業(yè)機器人協(xié)調(diào)工作?!?〕圓柱坐標型工業(yè)機器人其運動形式是通過一個轉(zhuǎn)動和兩個移動組成的運動系統(tǒng)來實現(xiàn)的,其工作空間圖形為圓柱,與直角坐標型工業(yè)機器人相比,在相同的工作空間條件下,機體所占體積小,而運動范圍大,其位置精度僅次于直角坐標型機器人,難與其他工業(yè)機器人協(xié)調(diào)工作。〔3〕球坐標型工業(yè)機器人又稱極坐標型工業(yè)機器人,其手臂的運動由兩個轉(zhuǎn)動和一個直線移動〔即RRP,一個回轉(zhuǎn),一個俯仰和一個伸縮運動〕所組成,其工作空間為一球體,它可以作上下俯仰動作并能抓取地面上或教低位置的協(xié)調(diào)工件,其位置精度高,位置誤差與臂長成正比?!?〕多關(guān)節(jié)型工業(yè)機器人又稱回轉(zhuǎn)坐標型工業(yè)機器人,這種工業(yè)機器人的手臂與人一體上肢類似,其前三個關(guān)節(jié)是回轉(zhuǎn)副〔即RRR〕,該工業(yè)機器人一般由立柱和大小臂組成,立柱與大臂見形成肩關(guān)節(jié),大臂和小臂間形成肘關(guān)節(jié),可使大臂做回轉(zhuǎn)運動和俯仰擺動,小臂做仰俯擺動。其結(jié)構(gòu)最緊湊,靈活性大,占地面積最小,能與其他工業(yè)機器人協(xié)調(diào)工作,但位置精度教低,有平衡問題,控制耦合,這種工業(yè)機器人應用越來越廣泛?!?〕平面關(guān)節(jié)型工業(yè)機器人它采用一個移動關(guān)節(jié)和兩個回轉(zhuǎn)關(guān)節(jié)〔即PRR〕,移動關(guān)節(jié)實現(xiàn)上下運動,而兩個回轉(zhuǎn)關(guān)節(jié)那么控制前后、左右運動。這種形式的工業(yè)機器人又稱〔SCARA(SeletiveComplianceAssemblyRobotArm)裝配機器人。在水平方向那么具有柔順性,而在垂直方向那么有教大的剛性。它結(jié)構(gòu)簡單,動作靈活,多用于裝配作業(yè)中,特別適合小規(guī)格零件的插接裝配,如在電子工業(yè)的插接、裝配中應用廣泛。工業(yè)機器人按驅(qū)動方式分以下幾類:〔1〕氣動式工業(yè)機器人這類工業(yè)機器人以壓縮空氣來驅(qū)動操作機,其優(yōu)點是空氣來源方便,動作迅速,結(jié)構(gòu)簡單造價低,無污染,缺點是空氣具有可壓縮性,導致工作速度的穩(wěn)定性較差,又因氣源壓力一般只有6kPa左右,所以這類工業(yè)機器人抓舉力較小,一般只有幾十牛頓,最大百余牛頓?!?〕液壓式工業(yè)機器人液壓壓力比氣壓壓力高得多,一般為70kPa左右,故液壓傳開工業(yè)機器人具有較大的抓舉能力,可達上千牛頓。這類工業(yè)機器人結(jié)構(gòu)緊湊,傳動平穩(wěn),動作靈敏,但對密封要求較高,且不宜在高溫或低溫環(huán)境下工作?!?〕電動式工業(yè)機器人這是目前用得最多的一類工業(yè)機器人,不僅因為電動機品種眾多,為工業(yè)機器人設計提供了多種選擇,也因為它們可以運用多種靈活控制的方法。早期多采用步進電機驅(qū)動,后來開展了直流伺服驅(qū)動單元,目前交流伺服驅(qū)動單元也在迅速開展。這些驅(qū)動單元或是直接驅(qū)動操作機,或是通過諸如諧波減速器的裝置來減速后驅(qū)動,結(jié)構(gòu)十分緊湊、簡單。1.2工業(yè)機器人控制系統(tǒng)工業(yè)機器人控制系統(tǒng)的特點工業(yè)機器人的控制技術(shù)是在傳統(tǒng)機械系統(tǒng)的控制技術(shù)的根底上開展起來的,因此兩者之間并無根本的不同但工業(yè)機器人控制系統(tǒng)也有許多特殊之處。其特點如下:〔1〕工業(yè)機器人有假設干個關(guān)節(jié),典型工業(yè)機器人有五六個關(guān)節(jié),每個關(guān)節(jié)由一個伺服系統(tǒng)控制,多個關(guān)節(jié)的運動要求各個伺服系統(tǒng)協(xié)同工作?!?〕工業(yè)機器人的工作任務是要求操作機的手部進行空間點位運動或連續(xù)軌跡運動,對工業(yè)機器人的運動控制,需要進行復雜的坐標變換運算,以及矩陣函數(shù)的逆運算。〔3〕工業(yè)機器人的數(shù)學模型是一個多變量、非線性和變參數(shù)的復雜模型,各變量之間還存在著耦合,因此工業(yè)機器人的控制中經(jīng)常使用前饋、補償、解耦和自適應等復雜控制技術(shù)。〔4〕較高級的工業(yè)機器人要求對環(huán)境條件、控制指令進行測定和分析,采用計算機建立龐大的信息庫,用人工智能的方法進行控制、決策、管理和操作,按照給定的要求,自動選擇最正確控制規(guī)律。工業(yè)機器人的控制系統(tǒng)發(fā)根本要求有:〔1〕實現(xiàn)對工業(yè)機器人的位置、速度、加速度等控制功能,對于連續(xù)軌跡運動的工業(yè)機器人還必須具有軌跡的規(guī)劃與控制功能?!?〕方便的人---機交互功能,操作人員采用直接指令代碼對工業(yè)機器人進行作用指示。使用工業(yè)機器人具有作業(yè)知識的記憶、修正和工作程序的跳轉(zhuǎn)功能?!?〕具有對外部環(huán)境〔包括作業(yè)條件〕的檢測和感覺功能。為使工業(yè)機器人具有對外部狀態(tài)變化的適應能力,工業(yè)機器人應能對諸如視覺、力覺、觸覺等有關(guān)信息進行測量、識別、判斷、理解等功能。在自動化生產(chǎn)線中,工業(yè)機器人應用與其它設備交換信息,協(xié)調(diào)工作的能力。工業(yè)機器人控制系統(tǒng)的分類:工業(yè)機器人控制系統(tǒng)可以從不同角度分類,如控制運動的方式不同,可為關(guān)節(jié)控制、笛卡爾空間運動控制和自適應控制;按軌跡控制方式的不同,可分為點位控制和連續(xù)軌跡控制;按速度控制方式的不同,可分為速度控制、加速度控制、力控制。程序控制系統(tǒng):給每個自由度施加一定規(guī)律的控制作用,機器人就可實現(xiàn)要求的空間軌跡。自適應控制系統(tǒng):當外界條件變化時,為保證所要求的品質(zhì)或為了隨著經(jīng)驗的積累而自行改善控制品質(zhì),其過程是基于操作機的狀態(tài)和伺服誤差的觀察,再調(diào)整非線性模型的參數(shù),一直到誤差消失為止。這種系統(tǒng)的結(jié)構(gòu)和參數(shù)能隨時間和條件自動改變。人工智能系統(tǒng):事先無法編制運動程序,而是要求在運動過程中根據(jù)所獲得的周圍狀態(tài)信息,實時確定控制作用。當外界條件變化時,為保證所要求的品質(zhì)或為了隨著經(jīng)驗的積累而自行改善控制品質(zhì),其過程是基于操作機的狀態(tài)和伺服誤差的觀察,再調(diào)整非線性模型的參數(shù),一直到誤差消失為止。這種系統(tǒng)的結(jié)構(gòu)和參數(shù)能隨時間和條件自動改變。因而本系統(tǒng)是一種自適應控制系統(tǒng)。第二章基于運動卡的控制系統(tǒng)的建立2.1總體系統(tǒng)的構(gòu)建總體方案確實定機器人控制系統(tǒng)是一種典型的多軸實時運動控制系統(tǒng)。傳統(tǒng)的機器人控制系統(tǒng)根本上是設計者基于自己的獨立結(jié)構(gòu)和生產(chǎn)目的而開發(fā),它采用了專用計算機、專用機器人語言、專用微處理器的封閉式體系結(jié)構(gòu)。這種結(jié)構(gòu)的控制器存在制造和使用本錢高,開發(fā)周期長,升級換代困難,無法添加系統(tǒng)的新功能等一系列缺點。該系統(tǒng)基于TRIO運動控制卡的開放式結(jié)構(gòu)機器人控制系統(tǒng),采用IPC+DSP的結(jié)構(gòu)來實現(xiàn)機器人的控制。這種機器人控制系統(tǒng)采用開放式硬件、軟件結(jié)構(gòu),可以根據(jù)需要方便地擴展功能,具有良好的開放性和擴展性,能適應于不同類型機器人或機器人自動生產(chǎn)線。通過運動控制卡在工業(yè)機器人控制系統(tǒng)中的應用,根據(jù)運動控制的相關(guān)理論和直流伺服電機的具有不易受干擾、易于用微機實現(xiàn)數(shù)字控制、無積累誤差等特性以及其動作迅速、反映快、維護簡單、可實現(xiàn)過載自動保護等特點作為相關(guān)背景的根底之上提出了基于TRIO運動控制卡的自動化程度和定位精度均較高的工業(yè)機器人控制系統(tǒng)。這種機器人控制系統(tǒng)的重要特點在于它采用通用個人計算機加DSP—多控制回路的開放式體系結(jié)構(gòu)以及它的網(wǎng)絡控制特性??尚行哉撟C目前,由于高起動轉(zhuǎn)矩、大轉(zhuǎn)矩、低慣量的交、直流伺服電動機在工業(yè)機器人中得到廣泛應用一般負載1000N〔相當100kgf〕以下的工業(yè)機器人大多采用電伺服驅(qū)動系統(tǒng)。所采用的關(guān)節(jié)驅(qū)動電動機主要是AC伺服電動機。其中,交流伺服電動機、直流伺服電動機、直流驅(qū)動電動機〔DD〕均采用位置閉環(huán)控制,一般應用于高精度、高速度的機器人驅(qū)動系統(tǒng)中。利用運動控制卡〔運動控制和邏輯算法有機的結(jié)合,輕松實現(xiàn)多種運動形式的運動控制器〕對機器人驅(qū)動系統(tǒng)進行控制能夠有效地提高整個機器人系統(tǒng)的性能及開發(fā)效率。由于機器人需要精確的控制和精準的定位,采用適宜的直流電機調(diào)速器和光電軸角編碼器即能滿足要求。PCI—208是TrioMotion公司的一款基于PC的PCI總線控制的數(shù)字運動控制卡,該控制卡采用了獨立的120MHZ大DSP微處理器技術(shù),提高了電機運動和計算速度。該控制卡可以控制2—8軸的伺服電機或步進電機或者二者的任意結(jié)合;32-bit的33MZ,2.2版本的PCI總線。采用100-pin的高精度屏蔽電纜與外部轉(zhuǎn)接板模塊連接,提高了設備的抗干擾信號的能力。提供ActiveX可以用VB、VC、C/C++等高級語言根據(jù)設備的需要進行二次開發(fā),還有CAN總線口,可以根據(jù)設備的需要對I/O和摸擬輸入口進行擴展,能夠滿足要求。由于所選用的硬件設備都是市場上成熟的,綜上所述,本設計題目的理論根底、整體的設想和所實施的方案是切實可行的,在老師的指導下,借鑒相關(guān)書籍,通過通過自己的學習,能夠到達本次設計的要求。2.1.該系統(tǒng)主要由個人PC、PCI—208系列TRIO運動控制卡、運動卡外接線板、ZK4系列直流電機調(diào)速器、光電軸角編碼器、系統(tǒng)工作狀態(tài)檢測輸入行程開關(guān)等組成。TRIO運動控制卡通過對直流電機調(diào)速器發(fā)出模擬電壓信號對直流伺服電動機的轉(zhuǎn)上速、角位移、正、反轉(zhuǎn)等進行控制,從而外控制輸出電機驅(qū)動;且還在系統(tǒng)中采用光電軸角編碼器對電機的參數(shù)運行狀態(tài)以及程序的運行狀態(tài)進行反響;另外還設置行程開關(guān)對電機的行程位置進行控制。機器人控制工作原理機器人具有三個自由度〔即:RRP—大臂盤旋、仰角、小臂伸縮三個運動〕和一個爪開合動作,采用全電機驅(qū)動控制。機器人本體由機身、大臂、小臂、手找等組成。機身固定在機械小車上;大臂可以繞著機身在水平面內(nèi)和垂直面內(nèi)旋轉(zhuǎn);小臂在絲桿的傳動下,可以前后進行伸縮。在大臂和小臂的共同作用下,機械手的手爪能夠接近要抓的物體。當物體被控制在手爪的控制范圍內(nèi)時,手爪夾緊物體,然后通過大臂的旋轉(zhuǎn)和小臂的伸縮運動,最終將物體置于規(guī)定的位置。機器人大臂盤旋運動和大臂仰角運動均采用直流電動機、諧波減速器傳動,PWM脈寬調(diào)速器控制,可實現(xiàn)20—2000mm/Min無級調(diào)速控制。機器人本體結(jié)構(gòu)如下列圖:1—機械手爪2—機械手小臂3—機械手大臂4—機身手爪開合采用連桿及螺旋機構(gòu),同步電機驅(qū)動,其結(jié)構(gòu)簡單,無調(diào)速器,電路控制方便。由于在機械結(jié)構(gòu)設計中采用了諧波減速器、滾珠絲桿、滾珠直線導軌等精密傳動裝置,機器人手爪定位可到達較高的精度??刂葡到y(tǒng)電氣原理圖如圖,其工作原理如下:機器人大臂盤旋運動和大臂仰角運動均采用直流電動機M1和M2控制,小臂伸縮采用直流電動機M3控制,手爪的開合由單相交流電動機M4控制,每個電動機均由兩個中間繼電器控制其正、反轉(zhuǎn)。首先是各運動軸分別復位,電動機m1、m2、m3反轉(zhuǎn)輸出端口OUT11、OUT13、OUT15輸出24V電壓各軸正向運動。當它們踏上了各自的行程開關(guān)時外接24V分別輸入到INPUT0、INPUT1、INPUT2的輸入端口由運動控制卡進行判斷并作為運動的原點。然后,當運動控制卡的24V電壓輸出端口OUT11輸出指令時,接通繼電器KA4,電動機M1得點正轉(zhuǎn),機器人大臂向上仰運動,到達極限位置時撞下前限位開關(guān)ST1,繼電器KA4線圈斷電機停止運轉(zhuǎn)。當運動控制卡電壓輸出端口OUT12輸出指令時,繼電器KA5線圈得電,電動機M1得電反轉(zhuǎn)機器人大臂向下仰運動,到達極限位置時撞下后限位開光ST2,繼電器KA5斷電,電機停止運轉(zhuǎn)。電動機M1的運動控制由運動控制卡的+10/-10V模擬電壓輸出端口OUT0輸出的指令控制。當運動控制卡電壓輸出端口OUT13輸出指令時,繼電器KA6線圈得電,電動機M2得電正轉(zhuǎn),機器人大臂向左旋運動,到達極限位置時撞下前限位開關(guān)ST3,繼電器KA6斷電,電機停止運轉(zhuǎn)。當運動控制卡電壓輸出端口OUT14輸出指令時,繼電器KA7線圈得電,電動機M2得電反轉(zhuǎn),機器人大臂向右旋運動,到達極限位置時撞下后限位開關(guān)ST4,繼電器KA7斷電,電機停止運轉(zhuǎn),電動機M2的運轉(zhuǎn)速度由運動控制卡+10/-10V模擬電壓輸出端口OUT1發(fā)出指令控制。當運動控制卡電壓輸出端口OUT15輸出指令時,繼電器KA8線圈得電,電動機M3得電正轉(zhuǎn),機器人小臂向前伸運動,到達極限位置時撞下前限位開關(guān)ST5,繼電器KA8線圈斷電,電機停止運轉(zhuǎn),當運動控制卡輸出斷口OUT16輸出指令時繼電器KA9線圈得電,電動機M3得電反轉(zhuǎn),機器人小臂向后縮運動到過極限位置時撞下后限位開關(guān)ST6,繼電器KA9斷電,電機停止運動,電動機M3運轉(zhuǎn)速度由運動控制卡+10/-10V模擬電壓輸出端口OUT2發(fā)出指令控制。繼電器KA1和KA2分別控制機器人手爪的開合當向前伸時OUTPUT8輸出24V,撞到前限位開關(guān)停止運動;當OUTPUT9輸出時向后伸縮撞到后限位開關(guān)停止運動。光電軸角編碼器由三個編碼器輸入端口反響回各軸的實際運動位置給運動控制卡。2.2軟件介紹2.2TRIOBasic一種類似欲BASIC的語言,簡單明了,易學易用。OCXComponent在VB、VC、Delphi、C++Builder中,直接調(diào)用運動函數(shù)PCI—208的安裝運行Install_TrioPCMotion_1_2_3.exe程序。該程序?qū))自動將PCI208的設備驅(qū)動文件TrioPCI.sys安裝到c:\windows\system32\driver\目錄下;b)自動將Active控件TrioPC.ocx及其幫助文件TrioPcMotionActiveX.chm安裝到C:\ProgramFiles\TrioMotion\TrioPCMotion\目錄下。安裝成功后,在“設備管理器〞中可查看有關(guān)PCI208的相關(guān)信息,如下列圖示程序界面在VB6.0中翻開工程文件“Project1.vbp〞,在編譯環(huán)境中,直接運行〔F5〕,程序操作畫面及介紹如下:首先進入Form1顯示“歡送使用PCI208運動控制操作界面〞,單擊進入按扭便進入Form2程序界面。如果單擊翻開按扭TRIOPCI由紅色小方塊變?yōu)榫G色小方框,說明PCI208和OCX之間已成功建立連接。如果仍然為紅色說明PCI208和OCX之間的連接未成功建立。在此程序中,可進行運動控制和軸位置及I/O狀態(tài)顯示等功能。運動控制主要是OUTPUT8-17的輸出的開關(guān)控制,還有INPUT33-35的原點檢測控制,及運動距離輸出控制等方面。其中關(guān)閉按扭是關(guān)閉trio軟件的連接;運動按扭是根據(jù)輸入的距離值進行運動;復位按扭是進行各軸的原點復位運動;單擊退出操作便結(jié)束程序的執(zhí)行。OCXComponent向工程中添加TrioPCOCX控件如圖在工程中調(diào)用函數(shù)圖:程序框圖界面:2.2〔1〕軸指令BASE、AXIS:指定以下運動指令所對應的軸號UNITS:指定每一個編程單位所對應的指令脈沖數(shù)ATYPE:指定軸類型SPEED:指定軸運行速度ACCEL:指定軸加速度DECEL:指定軸減速度DATUM_IN:指定原點輸入點OFFPOS:位置偏置MPOS:讀取實際位置DPOS:讀取指令位置DAC:設置模擬量輸出AIN:讀取模擬量輸入FHOLD_IN:設置進給保持輸入點FHSPEED:設置進給保持速度〔2〕運動指令MOVE:相對運動MOVEABS:絕對運動FORWARD:恒速正向運動REVERSE:恒速負向運動RAPIDSTOP:停止DATUM:回原點MOVEMODIFY:運動中改變目標位置DEFPOS:重新定義當前位置ADD_DAC:全閉環(huán)控制WDOG:輸出使能〔3〕輸入、輸出指令AIN:讀取模擬量輸入DAC:設置模擬量輸出IN:讀取開關(guān)量輸入OP:設置開關(guān)量輸出PSWITCH:位置比擬輸出PRINT:顯示〔4〕程序流程控制IF……THEN….ELSE….ENDIF:條件判斷FOR…TO..STEP…NEXT:循環(huán)控制GOTO:無條件跳轉(zhuǎn)GOTOSUB:調(diào)用子程序ON…GOTO:條件跳轉(zhuǎn)ON..GOTOSUB:條件調(diào)用子程序REPEAT..UNTIL:重復執(zhí)行控制WHILE:條件判斷WAITIDLE:等待運動結(jié)束WAITUNTIL:等待WA:延時〔5〕運算處理指令1、算術(shù)運算:+、-、*、/、SQR、EXP2、邏輯運算:=、<>、>、<、>=、<=、AND、NOT、OR、XOR運動控制程序如下:PrivateSubCommand1_Click()Form2.ShowUnloadForm1EndSubPrivateSubForm_Load()Label1.Caption="歡送使用PCI208運動控制界面"Label1.FontSize=18Label1.Font=楷體_GB2312Form1.BackColor=&HFFFF80EndSubOptionExplicitDimg_brunningIOAsBooleanDimg_brunningMoveAsBooleanDimg_nIOCountAsIntegerDimg_nMoveNoAsIntegerConstgk_sDefaultHostAddressAsString="192.168.0.250"Constgk_nDefaultPciBoardAsInteger=0Constgk_nDefaultLinkAsInteger=0Constgk_ndefaultModeAsInteger=0Constgk_nMaxAxesAsInteger=8Constgk_nAxesInUseAsInteger=3PrivateSubCommand1_Click()DimbopenAsBooleanTrioPCI.HostAddress=gk_sDefaultHostAddressTrioPCI.Board=gk_nDefaultPciBoardbopen=TrioPCI.Open(gk_nDefaultLink,gk_ndefaultMode)CallUpdateButtonStatesRefreshEndSubPrivateSubCommand2_Click()IfTrioPCI.IsOpen(gk_ndefaultMode)ThenTrioPCI.Close(gk_ndefaultMode)EndIfCallUpdateButtonStatesRefreshEndSubPrivateSubCommand3_Click()CallInitAxesIfTrioPCI.IsOpen(gk_ndefaultMode)ThenCallproccessStateRunEndIfEndSubPrivateSubCommand4_Click()DimAxisAsIntegerDimbokAsBooleanDimdreadvalAsDoubleIfTrioPCI.IsOpen(gk_ndefaultMode)Theng_brunningMove=TrueIfg_brunningMoveThenForAxis=0To2bok=TrioPCI.Op(12+2*Axis,1#)DoUntilLabel(33+Axis).Caption="on"CallreadIOLoopIfLabel(33+Axis).Caption="on"Thenbok=TrioPCI.Op(12+2*Axis,0#)EndIfCallReadAxisPostionsNextnAxisg_brunningMove=FalseCallUpdateButtonStatesEndIfEndIfEndSubPrivateSubCommand5_Click()EndEndSubPrivateSubForm2_Load()g_brunningIO=Falseg_brunningMove=FalsetimUpdate.Enabled=Trueg_nIOCount=0g_nMoveNo=0UpdateButtonStateEndSubPrivateSubForm_Load()Label27.Caption="運動距離的輸入:"Label27.FontSize=15Label31.Caption="軸位置顯示:"Label31.FontSize=15Label32.Caption="I/O狀態(tài)顯示:"Label32.FontSize=15Form2.BackColor=&HC0FFC0EndSubPrivateSubForm_Unload(CancelAsInteger)IfTrioPCI.IsOpen(gk_ndefaultMode)ThenaxTrioPC.Close(gk_ndefaultMode)EndIfEndSubOptionExplicitPrivateSubInitAxes()DimbokAsBooleanDimnAxiseAsIntegerDimnBases(gk_nAxesInUse)AsIntegerDimdreadvalAsDoubleIfTrioPCI.IsOpen(gk_ndefaultMode)Thenbok=TrioPCI.GetVariable("WDOG",dreadval)Ifdreadval>0.5Thenbok=TrioPCI.SetVariable("WDOG",0#)EndIfFornAxis=0Togk_nAxesInUse-1nBases(0)=nAxisbok=TrioPCI.Base(1,nBases)IfbokThenbok=TrioPCI.SetVariable("SERVO",0#)EndIfIfbokThenbok=TrioPCI.SetVariable("ATYPE",0#)EndIfIfbokThenbok=TrioPCI.SetVariable("UNITS",100#)EndIfIfbokThenbok=TrioPCI.SetVariable("REPDIST",1#)EndIfIfbokThenbok=TrioPCI.SetVariable("SPEED",100#)EndIfIfbokThenbok=TrioPCI.SetVariable("ACCEL",100#)EndIfIfbokThenbok=TrioPCI.SetVariable("DECEL",100#)EndIfIfbokThenbok=TrioPCI.SetVariable("FELIMIT",1000#)EndIfIfbokThenbok=TrioPCI.SetVariable("SERVO",1#)EndIfNextnAxisbok=TrioPCI.SetVariable("WDOG",1#)EndIfEndSubPrivateSubUpdateButtonStates()DimbopenAsBooleanbopen=TrioPCI.IsOpen(0)Command1.Enabled=NotbopenCommand2.Enabled=bopenAndNot(g_brunningIOOrg_brunningMove)Command3.Enabled=bopenAndNot(g_brunningIOAndg_brunningMove)EndSubPrivateSubReadAxisPostions()DimnAxisAsIntegerDimnAxes(gk_nMaxAxes)AsIntegerDimdpositionAsDoubleDimnMBRAsIntegerDimbokAsBooleanIfTrioPCI.IsOpen(gk_ndefaultMode)ThenFornAxis=0Togk_nAxesInUse-1nAxes(0)=nAxisIfTrioPCI.Base(1,nAxes)Thenbok=TrioPCI.GetVariable("DPOS",dposition)IfbokThenLabel(nAxis+1).Caption=Int(dposition)Label(nAxis+1).RefreshElsenMBR=MsgBox("errorreadingaxispositon")nAxis=gk_nAxesInUseEndIfElsenMBR=MsgBox("errorsettingbaseforreadingaxisposition")nAxis=gk_nAxesInUseNextnAxisElsenMBR=MsgBox("connectionnotopen")EndIfEndSubPrivateSubproccessStateRun()DimbokAsBooleanDimnAxisAsIntegerDimdreadvalAsDoubleDimnIOAsIntegerg_brunningIO=TrueIfg_brunningIOThennIO=0CallReadAxisPostionsFornIO=0To2CallreadIOIfVal(Text(nIO+1).Text)>50ThenMsgBox("數(shù)據(jù)過大")Elsebok=TrioPCI.Op(12+2*nIO,1#)bok=TrioPCI.MoveAbs(3,Val(Text(nIO+1).Text),nIO)CallReadAxisPostionsbok=TrioPCI.Op(11+2*nIO,0#)nIO=nIO+1EndIfNextnIOg_brunningIO=FalseCallUpdateButtonStatesEndIfEndSubPrivateSubreadIO()DimIIOAsLongDimnBitAsIntegerDimnMBRAsIntegerDimIBitAsIntegerDimInptAsLongIfTrioPCI.IsOpen(gk_ndefaultMode)ThenIfTrioPCI.In(8,17,IIO)ThenFornBit=7To16IfIIO<>0ThenLabel(nBit).Caption="on"Label(nBit).ForeColor=vbBlueElseLabel(nBit).Caption="off"Label(nBit).ForeColor=vbRedEndIfLabel(nBit).RefreshNextnBitElsenMBR=MsgBox("errorreadingIO")EndIfIfTrioPCI.In(0,2,Inpt)ThenForIBit=33To35IfInpt<>0ThenLabel(IBit).Caption="on"Label(nBit).ForeColor=vbBlueElseLabel(nBit).Caption="off"Label(nBit).ForeColor=vbRedEndIfLabel(IBit).RefreshNextnBitElsenMBR=MsgBox("errorreadingIO")EndIfElsenMBR=MsgBox("connectionnotopen")EndIfEndSub運動控制程序運行過程的簡介:當程序運行時,自動進入窗體一〔Form1〕點擊進入按扭通過調(diào)用窗體顯示程序進入窗體二〔Form2〕。進入后首先應該通過控件翻開VB與MotionPerfect軟件的連接,這個可通過界面的翻開按扭運用OPEN命令即可翻開與軟件的連接,并通過調(diào)用子程序UpdateButtonStates更新其狀態(tài)。翻開了軟件連接后,機器人各軸的位置應該回到初始狀態(tài),這個功能的實現(xiàn)了是通過復位程序來實現(xiàn)的。當點擊復位按扭時就運行復位程序復位,在程序運行之前還要通過子程序InitAxes()進行各軸的參數(shù)進行設置,而設置參數(shù)是通過連接命令SetVariable來分別進行設置的。設置完后而復位過程就通過循環(huán)來復位,即當各軸進行復位時分別通過控件連接的命令OP〔即OUTPUT〕輸出電動機的反轉(zhuǎn)電信號〔24V電壓〕這時在軟件中相應的輸出角狀態(tài)變?yōu)镺N。在各軸的復位運行過程中通過子程序readIO分別循環(huán)檢測各軸的原點開關(guān)輸入信號(24V電壓)的狀態(tài)是否為ON并顯示各輸入輸出的狀態(tài),而該狀態(tài)的讀取是通過控件連接命令IN輸入的。如果為該狀態(tài)就退出循環(huán)通過OP命令來輸出OFF來關(guān)斷反轉(zhuǎn)電信號即該軸就回到了原點,隨后再通過子程序ReadAxisPostions顯示編碼器反響回的各軸的位置,該數(shù)據(jù)的讀取是讀取軸參數(shù)DPOS的值并通過連接命令GetVariable進行獲取到變量postions通過賦值顯示并把該位置做為一個相對原點坐標這樣整個復位程序運行完成了。各軸復位完成以后,我們要進行運動數(shù)據(jù)的輸入,即該軸要運動的距離。由于各軸運動的距離有限,所以在每次運行時都要進行文本框距離數(shù)據(jù)的判斷,假設距離值超過了設定值即要顯示一個對話框顯示數(shù)據(jù)過大。如果數(shù)據(jù)在正常的范圍之內(nèi),就通過控件OP命令分別輸出各電動機的正轉(zhuǎn)運動信號,并通過控件連接命令MoveAbs相對與反響位置點運動一斷相對距離,運動完成后再通過ReadAxisPostions子程序進行位置顯示和readIO子程序進行輸出狀態(tài)顯示,同樣通過GetVariable命令來獲取反響值之后再通過OP輸出OFF關(guān)閉各軸的運動電信號,這些運動的實現(xiàn)是在子程序proccessStateRun()完成的。當點擊運動按扭時就調(diào)用該子程序?qū)崿F(xiàn)整個運動的過程。這樣各軸的運動距離通過循環(huán)運行子程序就到了預定的運動位置。最后在運動過程完成以后就要通過控件連接命令Close關(guān)閉與軟件的連接,并調(diào)用子程序UpdateButtonStates刷新按扭的狀態(tài),通過點擊退出按扭便退出操作就這樣整個程序的循環(huán)與檢測再運行過程就結(jié)束了。第三章TRIOBASIC指令系統(tǒng)編程3.1運動及軸命令說明或編程ACC類型:軸指令語法:ACC(acc率)注意:這個指令用來和舊的Trio控制器兼容。加速度率和減速度率可用ACCEL和DECEL軸參數(shù)設定。說明:同時設定加速度率和減速度率參數(shù):acc率:參數(shù)單位決定于單位軸參數(shù)。加速度因子從UNITS/SEC/SEC輸入。應用:ACC(100)AXIS類型:修改指令語法:AXIS〔軸數(shù)〕說明:AXIS修改設置單軸運動指令或單軸參數(shù)讀寫。AXIS參數(shù)在命令行或程序行特別有效。使用BASE指令改變根本軸。參數(shù):軸數(shù)任何有效的BASIC表達式特定軸數(shù)。注意:AXIS指令可用于修改以下指令的軸參數(shù):ADDAX,CAM,CAMBOX,CANCEL,CONNECT,DATUM,DEFPOS,F(xiàn)ORWARD,MOVEABS,MOVECIRC,MOVELINK,MOVE,MOVEMODIFY,REVERSE,REGIST,WAITIDLE,WAITLOADED。參閱:BASE()應用:例子1PRINTMPOSAXIS〔3〕例子2MOVE〔300〕AXIS〔2〕例子3REPDISTAXIS〔3〕=100BASE類型:運動控制指令語法:BASE〔軸1,軸2,軸3〕BASE參數(shù):BA〔軸1,軸2,軸3〕BA說明:BASE指令用于導向下一個運動指令軸的參數(shù)讀/寫入特定軸或軸組,設置的缺省值依次為:0,1,2…每一個過程有其自己的BASE根本軸組,每個程序能單獨賦值。TrioBasic程序與控制軸運動的運動發(fā)生器分開。每個軸的運動發(fā)生器有其獨立的功能,,因此每個軸能以自己的速度、加速度等進行編程,單獨運動,或者通過插補或鏈接運動鏈接在一起。AXIS〔〕命令只要應用正在進行的單命令可以重新導向不同的軸。而BASE〔〕指令除非規(guī)定軸號,否那么導向接下來的所有指令。參數(shù):軸號:軸號或軸組號成為新的基準軸排列,即軸號或軸組發(fā)送運動指令給多軸指令里的第一個軸。根本軸的軸數(shù)和順序軸在軸組用于多軸運動。應用:例子1每軸可以有自己的速度,加速度和其它參數(shù)。BASE〔1〕UNITS=2000‘設置軸1的轉(zhuǎn)換因子。SPEED=100‘設置軸1的速度ACCEL=5000‘設置軸1的加速度BASE〔2〕UNITS=2000‘設置軸2的轉(zhuǎn)換因子SPEED=125‘設置軸2的速度ACCEL=10000‘設置軸2的加速度CANCEL類型:運動控制指令語法:CANCEL/CANCEL〔1〕備選:CA說明:CANCEL指令取消軸插補軸組的當前運動。速度軌跡〔FORWARD,REVERSE,MOVE,MOVEABS,MOVECIRC〕將會以DECEL參數(shù)減速直到停止。其它運動會立即停止。CANCEL〔1〕指令取消已緩存的運動而不影響正在執(zhí)行的運動,CANCEL工作在缺省軸,除非使用AXIS參數(shù)定義臨時根本軸。注意:1.CANCEL只能取消當前執(zhí)行的運動。如果在緩存中還有運動,它會繼續(xù)被加載。2.在當前運動的減速過程中,另外的CANCELS會被忽略。3.CANCEL〔1〕只取消當前緩存中的運動。存儲在任務緩存中的運動由PMOVE參數(shù)定義,可以被加載到緩存一旦緩存運動被取消。參閱:AXIS,MTYPE,NTYPE,PMOVE,RAPIDSTOP應用:例子1FORWARDWA〔10000〕CANCEL例子2MOVE〔1000〕MOVEABS〔3000〕CANCEL‘取消運動到3000,而運動到4000。MOVEABS〔4000〕注意MOVEMODIFY是修改運動結(jié)束點最好方法。DATUMDATUM原點搜尋類型:運動控制指令語法:DATUM〔sequence〕說明:DATUM指令執(zhí)行6種方法中的一種搜尋原點位置,其為絕對位置同時可以重置跟隨誤差。伺服驅(qū)動器機構(gòu)原點搜尋用于軸0。軸1用于MC控制單元機構(gòu)。DATUM使用CREEP速度和目標速度用于原點搜尋。伺服驅(qū)動器用于軸0。爬行速度用CREEP參數(shù)設定。目標速度用SPEED參數(shù)設定。原點搜尋輸入數(shù)由DATUM_IN參數(shù)決定,用于3或7中。DATUM〔0〕用于軸出錯時重新啟動系統(tǒng),位置不變。。參數(shù):sequence0DATUM〔0〕指令去除跟隨誤差。將當前位置設定為目標位置同時AXISSTATUS狀態(tài)會被去除。注如果產(chǎn)生錯誤的問題仍然存在,誤差不能被去除。1軸以爬行速度〔CREEP〕正向運行直到發(fā)現(xiàn)Z信號。目標位置重置為0同時糾正測量位置,維持跟隨誤差。2軸以爬行速度〔CREEP〕反向運行直到發(fā)現(xiàn)Z信號。目標位置重置為0同時糾正測量位置,維持跟隨誤差。3軸以目標速度〔SPEED〕正向運行,直到碰到原點開關(guān)。隨后軸以爬行速度正向運動直到原點開關(guān)復位。目標位置重置為0同時糾正測量位置,維持跟隨誤差。4軸以目標速度〔SPEED〕反向運行,直到碰到原點開關(guān)。隨后軸以爬行速度正向運動直到原點開關(guān)復位。目標位置重置為0同時糾正測量位置,維持跟隨誤差。5軸以目標速度〔SPEED〕正向運行,直到碰到原點開關(guān)。隨后軸以爬行速度正向運動直到碰到Z信號。目標位置重置為0同時糾正測量位置,維持跟隨誤差。6軸以目標速度〔SPEED〕反向運行,直到碰到原點開關(guān)。隨后軸以爬行速度正向運動直到碰到Z信號。目標位置重置為0同時糾正測量位置,維持跟隨誤差。注意:原點輸入低電平有效。當輸入OFF時設置原點開關(guān)。feedhold,reversejog,forwardjog,forward,reverselimitinputs均是低電平有效。低電平輸入用于使能自動防護接線。例子:DATUMIN=10DATUM〔5〕MOVE類型:運動控制指令語法:MOVE〔dist_1[,dist_2[,dist_3]]〕備選:MO〔dist_1[,dist_2[,dist_3]]〕說明:MOVE指令使一軸或多軸在目標速度,加速度和減速度下以增量的方式運動到特定位置。在多軸運動中,速度,加速度,減速度是基于根本軸的插補運動。特定長度的比例由轉(zhuǎn)換因子UNITS參數(shù)設定。例如,一軸編碼器是4000edges/mm,于是軸的單元數(shù)設為4000,MOVE〔12.5〕將會移動12.MOVE工作在缺省軸,除非AXIS定義臨時根本軸。參數(shù)dist_1定義為缺省軸,dist_2作為另一個軸等等。通過改變軸在獨立運動,非插補,非同步可以獲得多軸運動。增量運動可以合并成連續(xù)運動軌跡,通過設置MERGE=ON??紤]兩軸運動,每軸速度可以由以下等式計算得到。指令MOVE〔x1,x2〕和速度Vp由SPEED,ACCEL和DECEL參數(shù)計算得到。多軸運動距離L。每軸任何時候的獨立速度計算如下:軸i任何時刻的分速度vi由以下公式計算參數(shù):dist_I任意軸I的運動距離,從用戶定義的根本軸開始。參閱:AXIS,MOVEABS,UNITS應用:例子1系統(tǒng)轉(zhuǎn)換因子為1和1000線的編碼器。因此,需要如下指令使電機運動10圈。〔1000線編碼器給出4000edges/turn〕。MOVE〔40000〕例子2在這個例子中,軸0,1,2獨立運動〔沒有插補〕。每軸會以程序的速度和其它參數(shù)運動。MOVE〔10〕AXIS〔0〕MOVE〔10〕AXIS〔1〕MOVE〔10〕AXIS〔2〕例子3X-Y平面在工作范圍內(nèi)可以在任意位置寫文本。獨立運動可以被定義成相對與起始點相對運動。因此在任何位置都可以使用相同的指令。字母〞m〞的子程序如下:M:Move〔0,12〕‘A->BMove〔3,-6〕‘A->CMove〔3,6〕‘C->DMove〔0,-12〕‘D->EMOVEABS類型:運動控制指令語法:MOVEABS〔pos_1[,pos_2[,pos_3]]〕備選:MA〔pos_1[,pos_2[,pos_3]]〕說明:MOVEABS指令使一軸或多軸在目標速度,加速度和減速度下以絕對的方式運動到特定位置。在多軸運動中,速度,加速度,減速度是基于根本軸的插補運動。特定長度的比例由轉(zhuǎn)換因子UNITS參數(shù)設定。例如,一軸編碼器是4000edges/mm,于是軸的單元數(shù)設為4000,MOVEABS〔12.5〕將會從起始點移動12.MOVEABS工作在缺省軸除非AXIS定義臨時根本軸。參數(shù)dist_1定義為缺省軸,dist_2作為另一個軸等等。通過改變軸在獨立運動,非插補,非同步可以獲得多軸運動。增量運動可以合并成連續(xù)運動軌跡,通過設置MERGE=ON??紤]兩軸運動,每軸速度可以由以下等式計算得到。指令MOVE〔ax1,ax2〕和當前位置〔ay1,ay2〕,速度Vp由SPEED,ACCEL和DECEL參數(shù)計算得到。多軸運動距離L。每軸任何時候的獨立速度計算如下:參數(shù):pos_i任意軸I的運動距離,從用戶定義的根本軸開始。參閱:AXIS,MOVE,UNITS應用:例子1X-Y平面有一個筆,圓盤的位置相對與起始點固定。改變筆的位置,當指令執(zhí)行時,圓盤的絕對運動與平面位置不相關(guān)。MOVEABS〔20,350〕例子2一個貨盤由小格組成,容器離包裝機器85毫米。從固定點取容器,貨盤的開始位置用DEFPOS指令定義成原點〔0,0〕。到容器的一局部程序如下:xloop:forx=0to5yloop:fory=0to7MOVEABS〔-340,-516.5〕‘運動到撿起點GOSUBpick‘跳轉(zhuǎn)到撿起子程序PRINT“MOVETOPOSITION:“;X*6+Y+1MOVEABS〔x*85,y*85〕GOSUBplace‘轉(zhuǎn)到place子程序NEXTyNEXTxREVERSE類型:運動控制指令語法:REVERSE備選:RE說明:REVERSE反向連續(xù)運動,速度由SPEED參數(shù)設置。加速率由ACCEL參數(shù)設置。REVERSE工作在缺省根本軸,除非AXIS定義臨時根本軸。注意:反向運動可以被CANCEL或RAPIDSTOP指令停止。或到達反向限位,禁止或原點返回。參閱:AXIS,CANCEL,F(xiàn)ORWARD,RAPIDSTOP應用:back:REVERSEWAITUNTILIN〔0〕=ON‘等待停止信號CANCEL3.2輸入/輸出指令說明或編程AIN類型:系統(tǒng)參數(shù)語法:AIN〔模擬通道〕說明:從模擬輸入口讀取數(shù)值,各種模擬輸入模塊可與運動控制器連接。有的運動控制器本身具有1至2個模擬輸入。返回的值是十進位的,與讀自A至D轉(zhuǎn)換器的二進制數(shù)字相等。參數(shù):模擬輸入通道0…710…31P325CAN模擬輸入通道31…39運動控制器本身模擬輸入通道40…71P225模擬輸入子板AIN2通道的S_RATE參數(shù)可每分鐘將數(shù)據(jù)轉(zhuǎn)換成接近的值。對于AIN1和AIN3通道,T_RATE參數(shù)可將數(shù)據(jù)轉(zhuǎn)換成扭矩的百分率。附錄:IN,S_RATE,T_RATE應用:生產(chǎn)線的速度由材料供應的速率決定。材料供應通過安裝有超聲傳感器裝置上松散的環(huán)安排。超聲傳感器輸出范圍在0V—4V,4V時環(huán)最長。模擬輸入值盡管應為正的值但也需檢查確保大于0。當值為負時進來的信號有噪音,由于除FORWARD或REVERSE外負速對與任一類型運動無效而引起錯誤。注意:模擬反響速度取決于所發(fā)生的模塊。P324以10msec更新,P225以SERVO_PERIOD更新,內(nèi)置的模擬端口以1msec更新。如果未安裝P325總線模塊,AIN(0)和AIN(1)將讀取內(nèi)置的通道以保持與老版本的兼容。HEX類型:指令說明:HEX指令用于打印語句,輸出一個十六進制格式的數(shù)。HEX指令不用在MC202或MC216應用:PRINT#5,HEX(IN(8,16))IN()IN類型:I/O功能語法:IN〔input_number[,final_input_number]〕/ININ說明:IN功能返回數(shù)字輸入的值。IN〔input_number,final_input_number〕將會返回輸入的二進制。兩個參數(shù)必須小于24分隔。IN〔input_number〕包括輸入值小于32將會返回特定通道的值。IN〔withoutarguments〕將會返回前24個輸入的二進制?!睮N〔0,23〕〕。參考3-3-2參數(shù):input_number輸入返回的值。值是在0到31的整數(shù)。Final_input_number最后輸入返回的值。值是在0到31的整數(shù)。應用:例子1下行可用于運動手輪與因子乘積的位置。手輪與輸入4,5,6,7連結(jié),輸出BCD。Moveloop:Moveabs〔IN〔4,7〕*1.5467〕WaitidleGotomoveloopOP類型:I/O功能/指令語法:OP[([outputno,]value)]說明:OP指令設置一個或多個輸出或返回前24個輸出狀態(tài)。OP有三種不同形式?jīng)Q定于參數(shù)。指令OP〔output_number,value〕設置單輸出通道。output_number的范圍[8,17]。值為0或1。指令OP〔binary_pattern〕依據(jù)binary_pattern的值設置24個輸出的二進制形式。功能OP返回24個輸出的狀態(tài)。這就允許多輸出設置而不需要改變其它不需要改變的。參考3-3-2說明:前8個輸出〔0-7〕,在MC控制單元中不實際存在,他們不能被寫入,并返回零。參數(shù):outputno設置輸出數(shù)value被輸出的值,OFF或ON。所有非零值被看作ON。參閱:IN應用:例子1以下兩行等價。OP〔44,1〕OP〔44,ON〕PRINT類型:指令語法:PRINT指令讓TrioBasic輸出一系列字符串到串口,或適宜的光纖端口。PRINT指令可以輸出參數(shù),固定ascii串,單個ascii字符串。只要多個工程用逗號,或分號分隔,都可以通過單個PRINT語句打印。逗號,分號控制輸出字串的格式。應用:PRINT"CAPITALSandlowercaseCANBEPRINTED"3.3程序循環(huán)和結(jié)構(gòu)編程IF..THEN..ELSE..ENDIF類型:結(jié)構(gòu)指令語法:IFconditionTHEN<commands>[else<commands>]ENDIFIFconditonTHEN<commands>說明:IF…THEN…ELSE…ENDIF結(jié)構(gòu)依據(jù)條件結(jié)果控制程序流程。如果條件真,接下來的THEN到ELSE將會執(zhí)行。如果條件假,ELSE將會執(zhí)行或程序會跳到ENDIF如果沒有ELSE。ENDIF用于標記條件段的結(jié)束。注意:IF…THEN[ELSE]ENDIF過程可以沒有限制的嵌套。對于多行IF…THEN結(jié)構(gòu),在THEN后沒有任何陳述。單結(jié)構(gòu)不用ENDIF。參數(shù):cindition任何有效的邏輯表達式。commands任何有效的邏輯表達式。應用:例子1IFMPOS>〔0。22*VR〔0〕〕THENGOTOexceeds_length例子2IFIN〔0〕=ONThenCount=count+1PRINT“COUNTS=〞countFail=0ElseFail=fail+1EndifFOR..TO..STEP..NEXT類型:循環(huán)和條件結(jié)構(gòu)指令語法:FORvariable=starttoend[stepincrement]<commands>nextvariable說明:FOR…NEXT允許將FOR和NEXT之間的局部重復執(zhí)行屢次。進入這個循環(huán),變量初始化成start同時指令局部開始執(zhí)行,直到執(zhí)行到NEXT指令。variable以增量方式增加。直到step值,step值可正可負。如果省略認為是1。當variable小于或等于end時。重復執(zhí)行指令區(qū),直到variable大于end。在next之后的程序繼續(xù)執(zhí)行。注意:FOR…NEXT在BASIC程序中可以嵌套8個指令。參數(shù):variable任何有效的BASIC表達式。既可以是一個環(huán)形變量或者是一個本地變量start任何有效的BASIC表達式end任何有效的BASIC表達式increment任何有效的BASIC表達式〔可選〕參閱:REPEAT,WHILE應用:例子1以下例子將輸出10到18置ONFORopnum=10to18OP〔opnum,on〕NEXTOPNUMON..GOSUB類型:結(jié)構(gòu)指令語法:ONexpressionGOSUBlabel{,label}說明:ON…GOSUB結(jié)構(gòu)使能條件跳轉(zhuǎn)。整數(shù)表達式用于從列表中選擇label。如果表達式的值是1,使用第一個label,對于值2使用第二個label,以此類推。依據(jù)GOSUB指令執(zhí)行子程序或跳轉(zhuǎn)。注意:如果表達式無效,不會執(zhí)行跳轉(zhuǎn)。參數(shù):expression任何有效的BASIC表達式。Label程序中任何有效的標志。參閱:GOSUB,GOTO應用:REPEATGET#5,charUNTIL1<=charandchar<=3OncharGOSUBmover,stopper,changeON..GOTO類型:結(jié)構(gòu)指令語法:ONexpressionGOSUBlabel{,label}說明:ON…GOTO結(jié)構(gòu)使能條件跳轉(zhuǎn)。整數(shù)表達式用于從列表中選擇label。如果表達式的值是1,使用第一個label,對于值2使用第二個label,以此類推。依據(jù)GOTO指令執(zhí)行子程序或跳轉(zhuǎn)。注意:如果表達式無效,不會執(zhí)行跳轉(zhuǎn)。參數(shù):expression任何有效的BASIC表達式。Label程序中任何有效的標志。參閱:GOSUB,GOTO應用:REPEATGET#5,charUNTIL1<=charandchar<=3OncharGOTOmover,stopper,changeWA類型:系統(tǒng)指令語法:WA〔time〕說明:WA指令暫停程序執(zhí)行一段時間。指令只能用在程序中。參數(shù):time暫停程序的毫秒數(shù)。應用:以下例子將輸出11置OFF兩秒鐘后輸出17置ON。OP〔11,OFF〕WA〔2000〕OP〔17,ON〕WAIT..UNTIL類型:系統(tǒng)指令語法:WAITUNTILcondition說明:WAITUNTIL指令重復評估條件直到變成真。此后程序繼續(xù)執(zhí)行。指令只能用在程序中。參數(shù):condition任何有效BASIC邏輯表達式。應用:例子1此例中,程序等待軸0的測量位置超出150,然后開始軸1的運動。WAITUNTILMPOSAXIS〔0〕>150MOVE〔100〕AXIS〔1〕例子2表達式的復雜程度可由用戶來定WAITUNTILDPOSAXIS〔2〕<=0ORIN〔1〕=ON以上行會等待軸2的目標位置小于或等于0或輸入1置ON。WHILE..WEND類型:結(jié)構(gòu)指令語法:Whilecondition說明:WHILE…WEND結(jié)構(gòu)程序之間的指令連續(xù)執(zhí)行,直到條件變成FALSE。此時程序會繼續(xù)執(zhí)行WEND后的程序。注意:WHILE…WEND可以無限制嵌套。參數(shù):condition任何有效的邏輯BASIC表達式。參閱:FOR,REPEAT應用:WHILEIN〔12〕=OFFMOVE〔200〕WAITIDLEOP〔10,OFF〕MOVE〔-200〕WAITIDLEOP〔10,ON〕WENDWAITUNTIL類型:系統(tǒng)指令語法:WAITUNTILcondition說明:WAITUNTIL指令重復評估條件直到變成真。此后程序繼續(xù)執(zhí)行。指令只能用在程序中。參數(shù):condition任何有效BASIC邏輯表達式。應用:例子1此例中,程序等待軸0的測量位置超出150,然后開始軸1的運動。WAITUNTILMPOSAXIS〔0〕>150MOVE〔100〕AXIS〔1〕3.4恒量FALSE類型:常數(shù)說明:FALSE常數(shù)返回數(shù)值零。注:常數(shù)為只讀。應用:test:res=IN〔0〕ORIN〔2〕IFres=FALSETHENPRINT“inputareoff〞EndifOFF類型:常量說明:OFF常量返回數(shù)值0。注:常量為只讀。應用:OP〔lever,OFF〕以上設置輸知名為lever的設置成OFF。ON類型:常量說明:ON常量返回值1。注:此參數(shù)為只讀。應用:OP〔lever,ON〕以上命令將輸知名為lever設置成ON。PI類型:常量說明:PI常量返回數(shù)值3。1416。注:此常量位只讀。應用:circum=100PRINT“Radius=〞;circum/〔2*PI〕TRUE類型:常量說明:TRUE常量返回數(shù)值-1。注:常量為只讀。應用:test:T=IN〔0〕ANDIN〔2〕IFT=TRUETHENPRINT“inputareON〞ENDIF3.5軸參數(shù)說明或編程ACCEL類型:軸的參數(shù)說明:ACCEL參數(shù)包括軸的加速率。單位units/s2。參數(shù)可以是任意正數(shù)包括零。參閱:AXIS,DECEL,UNITS應用:BASE〔0〕ACCEL=100‘設置加速率PRINT“Accelerationrate:“;〞mm/s/s〞ACCELAXIS〔2〕=100‘設置軸2的加速率ADDAX_AXIS類型:軸的參數(shù)說明:ADDAX_AXIS參數(shù)返回由ADDAX連接的軸數(shù)。注:此參數(shù)為只讀參數(shù)。參閱:AXIS,ADDAX應用:>>BASE〔0〕>>ADDAX〔2〕>>PRINTADDAX_AXIS2.0000類型:軸的參數(shù)ATYPE說明:ATYPE參數(shù)設置軸的類型。軸數(shù)軸的類型ATYPE值0伺服13〔固定〕1虛擬軸0伺服軸2編碼器輸入3〔缺省〕編碼器輸出142虛擬軸0〔固定〕開始上電時ATYPE參數(shù)設置成軸的缺省值。參考3-3。參閱:AXIS應用:以下指令將軸1設置成編碼器輸出。>>ATYPEAXIS〔1〕=14AXISSTATUS類型:軸的參數(shù)說明:AXISSTATUS參數(shù)包括軸的狀態(tài)。AXISSTATUS參數(shù)對三軸定義如下。位數(shù)描述值字符〔用在MotionPerfect中〕軸0〔伺服軸〕軸1〔編碼器輸入/輸出/虛擬軸〕軸2〔虛擬軸〕0-1----1跟隨誤差報警2WX--2伺服驅(qū)動器通訊錯誤4AX--3伺服驅(qū)動器報警8MX--4正向限位16FXXX5反向限位32RXXX6原點搜尋64DXXX7反響限制輸入128HXXX8跟隨誤差限制256EX--9正向軟件限位512XXXX10反向軟件限位1024YXXX11取消運動2048CXXX12編碼器輸出超速4096O-X-AXISATATUS參數(shù)用于處理運動錯誤。參考8-2注:此為只讀參數(shù)。參閱:AXISERRORMASK應用:IF〔AXISSTATUSAND16〕>0THENPRINT“inforwardlimit〞CREEP類型:軸的參數(shù)說明:CREEP包括軸的爬行速度。爬行速度用于進行原點搜尋。CREEP允許任何正值〔包括0〕。CREEP速度單位為units/s。使用因子轉(zhuǎn)換。例如,如果轉(zhuǎn)換因子設為編碼器數(shù)edges/inch,速度設為inchs/s。參閱:AXIS,DATUM,UNITS應用:BASE〔2〕CREEP=10SPEED=500DATUM〔4〕CREEPAXIS〔1〕=10SPEEDAXIS〔1〕=500DATUM〔4〕AXIS〔1〕DAC類型:軸的參數(shù)說明:當SERVO=OFF時寫進此軸參數(shù)允許用戶強加一個指定電壓到伺服候。12位DAC能采用的值范圍為:DAC=2048相應于10V電壓DAC=-2047相應于-10V電壓16位DAC能采用的值范圍為:DAC=32767相應于10V電壓DAC=-32768相應于-10V電壓DECEL類型:軸的參數(shù)說明:DECEL參數(shù)包括軸的減速率。單位為units/s2。參數(shù)可以是任意正數(shù)包括零。參閱:ACCEL,AXIS,UNITS應用:DECEL=100‘設置減速率PRINT“Decelerationrateis“;“mm/s/s“I_GAIN類型:軸的參數(shù)說明:I_GAIN參數(shù)包括軸的積分增益。積分輸出通過計算跟隨誤差的總和。-缺省值是0。疊加積分增益到伺服系統(tǒng)減少靜止或運動時的位置誤差。他可以減少超調(diào),振動。因此適用系統(tǒng)工作在常速和慢加速的場合。Oi=Kix⊕e注意:為了防止系統(tǒng)的不穩(wěn)定性,伺服增益需在SERVO=OFF時改變。參閱:D_GAIN,OV_GAIN,P_GAIN,VFF_GAINMPOS類型:軸的參數(shù)說明:MPOS參數(shù)表示用戶單位的測量位置,從編碼器得到。這個參數(shù)可應用DEFPOS指令設置。OFFPOS參數(shù)可用于移動起始點。MPOS在上電時重置成零。測量位置的范圍由REPDIST和REP_OPTION參數(shù)控制。注:此參數(shù)為只讀。參閱:AXIS,DEFPOS,DPOS,ENCODER,F(xiàn)E,OFFPOS,REPDIST,REP_OPTION,UNITS應用:WAITUNTILMPOS>=1250SPEED=2.5MTYPE類型:軸的參數(shù)說明:MTYPE參數(shù)包括當前執(zhí)行的運動類型。下面給出可能值。運動數(shù)運動類型IDLEMOVE2MOVEABS3 MHELICAL4MOVECIRC5MOVEMODIFY10FORWARD11REVERSE12DATUM13CAM14JOG_FORWARD15JOG_REVERSE20CAMBOX21CONNECTMOVELIN
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 出租車協(xié)議書16篇
- 2023房子轉(zhuǎn)讓買賣協(xié)議書七篇
- (可行性報告)紗窗可行性報告
- (2024)螢石礦采選技改工程項目可行性研究報告建議書(一)
- 三年級下冊英語一課一練-Module 7 unit2 it's warm today∣外研社(三起)(含解析)小學英語教學教材課件
- 2023年氫氣項目融資計劃書
- 啤酒行業(yè)消費研究報告
- 黑龍江省齊齊哈爾市甘南縣六校聯(lián)考2023-2024學年七年級上學期期末數(shù)學試卷(含解析)
- 養(yǎng)老院老人生活照料服務標準制度
- 養(yǎng)老院老人健康飲食營養(yǎng)師福利待遇制度
- DB31T 634-2020 電動乘用車運行安全和維護保障技術(shù)規(guī)范
- 商業(yè)綜合體項目建設成本及經(jīng)營測算(自動計算)
- 基坑土釘墻及鋼管樁支護施工方案
- 中藥材及飲片性狀鑒別1總結(jié)課件
- 中醫(yī)內(nèi)科學-噎膈(已完成)課件
- 玉米精品課件
- 干法超高分子量聚乙烯纖維開發(fā)現(xiàn)狀與發(fā)展趨勢儀征化纖楊勇
- 2022年秋季學期小學勞動教育實施方案六篇合集
- 德國工業(yè)戰(zhàn)略2030(德文)
- 客戶服務與管理教學ppt課件(完整版)
- GB 18582-2020 建筑用墻面涂料中有害物質(zhì)限量
評論
0/150
提交評論