版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
492186520更多論文請加QQ1634189238第一章緒論4921865201.1工業(yè)機器人的發(fā)展及分類1.1.1工業(yè)機器人的發(fā)展工業(yè)機器人的發(fā)展通??梢?guī)劃分為三代:第一代工業(yè)機器人:通常是指目前國際上商品化與使用化的“可編程的工業(yè)機器人”,又稱“示教再現工業(yè)機器人”即為了讓工業(yè)機器人完成某項作業(yè),首先由操作者將完成該作業(yè)所需要的各種知識(如運動軌跡、作業(yè)條件、作業(yè)順序和作業(yè)時間等),通過直接或間接手段,對工業(yè)機器人進行“示教”工業(yè)機器人將這些知識記憶下來后,即可根據“再現”指令,在一定精度范圍內,忠實的重復再現各種被示教的動作。1962年美國萬能自動化公司的第一臺Unimate工業(yè)機器人在美國通用汽車公司投入使用,標志著第一代工業(yè)機器人的誕生。第二代工業(yè)機器人:通常是指具有某種智能(如觸覺、力覺、視覺等)功能的“智能機器人”。即有傳感器得到觸覺、力覺和視覺等信息計算機處理后,控制機器人的操作機完成相應的適當操作。1982年美國通用汽車在裝配線上為工業(yè)機器人裝備了視覺系統(tǒng),從而宣布了新一代智能工業(yè)機器人的問世。第三代工業(yè)機器人:即所謂的“只治式工業(yè)機器人”。它不僅具有感知功能,而且還有一定的決策及規(guī)劃能力。第一代工業(yè)機器人目前仍處在實驗室研究階段。工業(yè)機器人經歷了誕生---成長---成熟期后,已成為制造業(yè)中不可缺少的核心裝備,世界上有約75萬臺工業(yè)機器人正與工人朋友并肩戰(zhàn)斗在個條生產線上,特種機器人作為機器人家族的后起之秀,由于其用途廣泛而大有后來居上之勢,仿人機器人、農業(yè)機器人、服務機器人、水下機器人、醫(yī)療機器人、軍用機器人、娛樂機器人等各種用途發(fā)特種機器人紛紛面世,而且正以飛快的速度向實用化邁進。我國的工業(yè)機器人從80年代“七五”科技攻關開始起步,在國家的支持下,通過“七五”、“八五”科技攻關,目前已基本掌握了機器人的操作機的設計制造技術、控制系統(tǒng)硬件和軟件設計技術、運動學和軌跡規(guī)劃技術、生產了部分機器人的關鍵元器件,開發(fā)出噴漆、焊弧、點焊、裝配、搬運等機器人;其中有130多臺配套噴漆機器人在二十與家企業(yè)的近30條自動噴漆生產線上獲得規(guī)模應用,弧焊機器人已應用在汽車制造廠的焊裝線上。但總的來看,我國的工業(yè)機器人技術及其工程應用水平和國外比還有一定的距離,如:可靠性低于國外產品;機器人應工程起步較晚,應用領域窄,生產線系統(tǒng)技術與國外比有差距;在應用規(guī)模上,我國已安裝的國產工業(yè)機器人約200臺,約占全球已安裝臺數的萬分之四。以上原因主要是沒有形成機器人產業(yè),當前我國的機器人生產都是應用戶的要求,“一客戶,一次重新設計”,品種規(guī)格多、批量小、零部件通用化程度低、供貨周期長、成本也不低,而且質量、可靠性不穩(wěn)定。因此迫切需要解決產業(yè)化前期的關鍵技術,對產品進行全面規(guī)劃,搞好系列化、通用化、模化設計,積極推進產業(yè)化進程。1.1.2工業(yè)機器人的分類工業(yè)機器人按不同的方法可分下述類型工業(yè)機器人按操作機坐標形式分以下幾類:(坐標形式是指操作機的手臂在運動時所取的參考坐標系的形式。)(1)直角坐標型工業(yè)機器人其運動部分由三個相互垂直的直線移動(即PPP)組成,其工作空間圖形為長方形。它在各個軸向的移動距離,可在各個坐標軸上直接讀出,直觀性強,易于位置和姿態(tài)的編程計算,定位精度高,控制無耦合,結構簡單,但機體所占空間體積大,動作范圍小,靈活性差,難與其他工業(yè)機器人協(xié)調工作。(2)圓柱坐標型工業(yè)機器人其運動形式是通過一個轉動和兩個移動組成的運動系統(tǒng)來實現的,其工作空間圖形為圓柱,與直角坐標型工業(yè)機器人相比,在相同的工作空間條件下,機體所占體積小,而運動范圍大,其位置精度僅次于直角坐標型機器人,難與其他工業(yè)機器人協(xié)調工作。(3)球坐標型工業(yè)機器人又稱極坐標型工業(yè)機器人,其手臂的運動由兩個轉動和一個直線移動(即RRP,一個回轉,一個俯仰和一個伸縮運動)所組成,其工作空間為一球體,它可以作上下俯仰動作并能抓取地面上或教低位置的協(xié)調工件,其位置精度高,位置誤差與臂長成正比。(4)多關節(jié)型工業(yè)機器人又稱回轉坐標型工業(yè)機器人,這種工業(yè)機器人的手臂與人一體上肢類似,其前三個關節(jié)是回轉副(即RRR),該工業(yè)機器人一般由立柱和大小臂組成,立柱與大臂見形成肩關節(jié),大臂和小臂間形成肘關節(jié),可使大臂做回轉運動和俯仰擺動,小臂做仰俯擺動。其結構最緊湊,靈活性大,占地面積最小,能與其他工業(yè)機器人協(xié)調工作,但位置精度教低,有平衡問題,控制耦合,這種工業(yè)機器人應用越來越廣泛。(5)平面關節(jié)型工業(yè)機器人它采用一個移動關節(jié)和兩個回轉關節(jié)(即PRR),移動關節(jié)實現上下運動,而兩個回轉關節(jié)則控制前后、左右運動。這種形式的工業(yè)機器人又稱(SCARA(SeletiveComplianceAssemblyRobotArm)裝配機器人。在水平方向則具有柔順性,而在垂直方向則有教大的剛性。它結構簡單,動作靈活,多用于裝配作業(yè)中,特別適合小規(guī)格零件的插接裝配,如在電子工業(yè)的插接、裝配中應用廣泛。工業(yè)機器人按驅動方式分以下幾類:(1)氣動式工業(yè)機器人這類工業(yè)機器人以壓縮空氣來驅動操作機,其優(yōu)點是空氣來源方便,動作迅速,結構簡單造價低,無污染,缺點是空氣具有可壓縮性,導致工作速度的穩(wěn)定性較差,又因氣源壓力一般只有6kPa左右,所以這類工業(yè)機器人抓舉力較小,一般只有幾十牛頓,最大百余牛頓。(2)液壓式工業(yè)機器人液壓壓力比氣壓壓力高得多,一般為70kPa左右,故液壓傳動工業(yè)機器人具有較大的抓舉能力,可達上千牛頓。這類工業(yè)機器人結構緊湊,傳動平穩(wěn),動作靈敏,但對密封要求較高,且不宜在高溫或低溫環(huán)境下工作。(3)電動式工業(yè)機器人這是目前用得最多的一類工業(yè)機器人,不僅因為電動機品種眾多,為工業(yè)機器人設計提供了多種選擇,也因為它們可以運用多種靈活控制的方法。早期多采用步進電機驅動,后來發(fā)展了直流伺服驅動單元,目前交流伺服驅動單元也在迅速發(fā)展。這些驅動單元或是直接驅動操作機,或是通過諸如諧波減速器的裝置來減速后驅動,結構十分緊湊、簡單。1.2工業(yè)機器人控制系統(tǒng)1.2.1工業(yè)機器人控制系統(tǒng)的特點工業(yè)機器人的控制技術是在傳統(tǒng)機械系統(tǒng)的控制技術的基礎上發(fā)展起來的,因此兩者之間并無根本的不同但工業(yè)機器人控制系統(tǒng)也有許多特殊之處。其特點如下:(1)工業(yè)機器人有若干個關節(jié),典型工業(yè)機器人有五六個關節(jié),每個關節(jié)由一個伺服系統(tǒng)控制,多個關節(jié)的運動要求各個伺服系統(tǒng)協(xié)同工作。(2)工業(yè)機器人的工作任務是要求操作機的手部進行空間點位運動或連續(xù)軌跡運動,對工業(yè)機器人的運動控制,需要進行復雜的坐標變換運算,以及矩陣函數的逆運算。(3)工業(yè)機器人的數學模型是一個多變量、非線性和變參數的復雜模型,各變量之間還存在著耦合,因此工業(yè)機器人的控制中經常使用前饋、補償、解耦和自適應等復雜控制技術。(4)較高級的工業(yè)機器人要求對環(huán)境條件、控制指令進行測定和分析,采用計算機建立龐大的信息庫,用人工智能的方法進行控制、決策、管理和操作,按照給定的要求,自動選擇最佳控制規(guī)律。工業(yè)機器人的控制系統(tǒng)發(fā)基本要求有:(1)實現對工業(yè)機器人的位置、速度、加速度等控制功能,對于連續(xù)軌跡運動的工業(yè)機器人還必須具有軌跡的規(guī)劃與控制功能。(2)方便的人---機交互功能,操作人員采用直接指令代碼對工業(yè)機器人進行作用指示。使用工業(yè)機器人具有作業(yè)知識的記憶、修正和工作程序的跳轉功能。(3)具有對外部環(huán)境(包括作業(yè)條件)的檢測和感覺功能。為使工業(yè)機器人具有對外部狀態(tài)變化的適應能力,工業(yè)機器人應能對諸如視覺、力覺、觸覺等有關信息進行測量、識別、判斷、理解等功能。在自動化生產線中,工業(yè)機器人應用與其它設備交換信息,協(xié)調工作的能力。1.2.2工業(yè)機器人控制系統(tǒng)的分類:工業(yè)機器人控制系統(tǒng)可以從不同角度分類,如控制運動的方式不同,可為關節(jié)控制、笛卡爾空間運動控制和自適應控制;按軌跡控制方式的不同,可分為點位控制和連續(xù)軌跡控制;按速度控制方式的不同,可分為速度控制、加速度控制、力控制。程序控制系統(tǒng):給每個自由度施加一定規(guī)律的控制作用,機器人就可實現要求的空間軌跡。自適應控制系統(tǒng):當外界條件變化時,為保證所要求的品質或為了隨著經驗的積累而自行改善控制品質,其過程是基于操作機的狀態(tài)和伺服誤差的觀察,再調整非線性模型的參數,一直到誤差消失為止。這種系統(tǒng)的結構和參數能隨時間和條件自動改變。人工智能系統(tǒng):事先無法編制運動程序,而是要求在運動過程中根據所獲得的周圍狀態(tài)信息,實時確定控制作用。當外界條件變化時,為保證所要求的品質或為了隨著經驗的積累而自行改善控制品質,其過程是基于操作機的狀態(tài)和伺服誤差的觀察,再調整非線性模型的參數,一直到誤差消失為止。這種系統(tǒng)的結構和參數能隨時間和條件自動改變。因而本系統(tǒng)是一種自適應控制系統(tǒng)。第二章基于運動卡的控制系統(tǒng)的建立2.1總體系統(tǒng)的構建2.1.1總體方案的確定機器人控制系統(tǒng)是一種典型的多軸實時運動控制系統(tǒng)。傳統(tǒng)的機器人控制系統(tǒng)基本上是設計者基于自己的獨立結構和生產目的而開發(fā),它采用了專用計算機、專用機器人語言、專用微處理器的封閉式體系結構。這種結構的控制器存在制造和使用成本高,開發(fā)周期長,升級換代困難,無法添加系統(tǒng)的新功能等一系列缺點。該系統(tǒng)基于TRIO運動控制卡的開放式結構機器人控制系統(tǒng),采用IPC+DSP的結構來實現機器人的控制。這種機器人控制系統(tǒng)采用開放式硬件、軟件結構,可以根據需要方便地擴展功能,具有良好的開放性和擴展性,能適應于不同類型機器人或機器人自動生產線。通過運動控制卡在工業(yè)機器人控制系統(tǒng)中的應用,根據運動控制的相關理論和直流伺服電機的具有不易受干擾、易于用微機實現數字控制、無積累誤差等特性以及其動作迅速、反映快、維護簡單、可實現過載自動保護等特點作為相關背景的基礎之上提出了基于TRIO運動控制卡的自動化程度和定位精度均較高的工業(yè)機器人控制系統(tǒng)。這種機器人控制系統(tǒng)的重要特點在于它采用通用個人計算機加DSP-多控制回路的開放式體系結構以及它的網絡控制特性。2.1.2可行性論證目前,由于高起動轉矩、大轉矩、低慣量的交、直流伺服電動機在工業(yè)機器人中得到廣泛應用一般負載1000N(相當100kgf)以下的工業(yè)機器人大多采用電伺服驅動系統(tǒng)。所采用的關節(jié)驅動電動機主要是AC伺服電動機。其中,交流伺服電動機、直流伺服電動機、直流驅動電動機(DD)均采用位置閉環(huán)控制,一般應用于高精度、高速度的機器人驅動系統(tǒng)中。利用運動控制卡(運動控制和邏輯算法有機的結合,輕松實現多種運動形式的運動控制器)對機器人驅動系統(tǒng)進行控制能夠有效地提高整個機器人系統(tǒng)的性能及開發(fā)效率。由于機器人需要精確的控制和精準的定位,采用合適的直流電機調速器和光電軸角編碼器即能滿足要求。PCI—208是TrioMotion公司的一款基于PC的PCI總線控制的數字運動控制卡,該控制卡采用了獨立的120MHZ大DSP微處理器技術,提高了電機運動和計算速度。該控制卡可以控制2—8軸的伺服電機或步進電機或者二者的任意結合;32-bit的33MZ,2.2版本的PCI總線。采用100-pin的高精度屏蔽電纜與外部轉接板模塊連接,提高了設備的抗干擾信號的能力。提供ActiveX可以用VB、VC、C/C++等高級語言根據設備的需要進行二次開發(fā),還有CAN總線口,可以根據設備的需要對I/O和摸擬輸入口進行擴展,能夠滿足要求。由于所選用的硬件設備都是市場上成熟的,綜上所述,本設計題目的理論基礎、整體的構想和所實施的方案是切實可行的,在老師的指導下,借鑒相關書籍,通過通過自己的學習,能夠達到本次設計的要求。2.1.3系統(tǒng)的構成該系統(tǒng)主要由個人PC、PCI—208系列TRIO運動控制卡、運動卡外接線板、ZK4系列直流電機調速器、光電軸角編碼器、系統(tǒng)工作狀態(tài)檢測輸入行程開關等組成。TRIO運動控制卡通過對直流電機調速器發(fā)出模擬電壓信號對直流伺服電動機的轉上速、角位移、正、反轉等進行控制,從而外控制輸出電機驅動;且還在系統(tǒng)中采用光電軸角編碼器對電機的參數運行狀態(tài)以及程序的運行狀態(tài)進行反饋;另外還設置行程開關對電機的行程位置進行控制。2.1.4機器人控制工作原理機器人具有三個自由度(即:RRP一大臂回旋、仰角、小臂伸縮三個運動)和一個爪開合動作,采用全電機驅動控制。機器人本體由機身、大臂、小臂、手找等組成。機身固定在機械小車上;大臂可以繞著機身在水平面內和垂直面內旋轉;小臂在絲桿的傳動下,可以前后進行伸縮。在大臂和小臂的共同作用下,機械手的手爪能夠接近要抓的物體。當物體被控制在手爪的控制范圍內時,手爪夾緊物體,然后通過大臂的旋轉和小臂的伸縮運動,最終將物體置于規(guī)定的位置。機器人大臂回旋運動和大臂仰角運動均采用直流電動機、諧波減速器傳動,PWM脈寬調速器控制,可實現20—2000mm/Min無級調速控制。機器人本體結構如下圖:1—機械手爪2一機械手小臂3一機械手大臂4一機身手爪開合采用連桿及螺旋機構,同步電機驅動,其結構簡單,無調速器,電路控制方便。由于在機械結構設計中采用了諧波減速器、滾珠絲桿、滾珠直線導軌等精密傳動裝置,機器人手爪定位可達到較高的精度??刂葡到y(tǒng)電氣原理圖如圖,其工作原理如下:機器人大臂回旋運動和大臂仰角運動均采用直流電動機M1和M2控制,小臂伸縮采用直流電動機M3控制,手爪的開合由單相交流電動機M4控制,每個電動機均由兩個中間繼電器控制其正、反轉。首先是各運動軸分別復位,電動機m1、m2、m3反轉輸出端口OUT11、OUT13、OUT15輸出24V電壓各軸正向運動。當它們踏上了各自的行程開關時外接24V分別輸入到INPUT0、INPUT1、INPUT2的輸入端口由運動控制卡進行判斷并作為運動的原點。然后,當運動控制卡的24V電壓輸出端口OUT11輸出指令時,接通繼電器KA4,電動機M1得點正轉,機器人大臂向上仰運動,到達極限位置時撞下前限位開關ST1,繼電器KA4線圈斷電機停止運轉。當運動控制卡電壓輸出端口OUT12輸出指令時,繼電器KA5線圈得電,電動機M1得電反轉機器人大臂向下仰運動,到達極限位置時撞下后限位開光ST2,繼電器KA5斷電,電機停止運轉。電動機M1的運動控制由運動控制卡的+10/-10V模擬電壓輸出端口OUT0輸出的指令控制。當運動控制卡電壓輸出端口OUT13輸出指令時,繼電器KA6線圈得電,電動機M2得電正轉,機器人大臂向左旋運動,到達極限位置時撞下前限位開關ST3,繼電器KA6斷電,電
機停止運轉。當運動控制卡電壓輸出端口OUT14輸出指令時,繼電器KA7線圈得電,電動機M2得電反轉,機器人大臂向右旋運動,到達極限位置時撞下后限位開關ST4,繼電器KA7斷電,電機停止運轉,電動機M2的運轉速度由運動控制卡+10/-10V模擬電壓輸出端口OUT1發(fā)出指令控制。當運動控制卡電壓輸出端口OUT15輸出指令時,繼電器KA8線圈得電,電動機M3得電正轉,機器人小臂向前伸運動,到達極限位置時撞下前限位開關ST5,繼電器KA8線圈斷電,電機停止運轉,當運動控制卡輸出斷口OUT16輸出指令時繼電器KA9線圈得電,電動機M3得電反轉,機器人小臂向后縮運動到過極限位置時撞下后限位開關ST6,繼電器KA9斷電,電機停止運動,電動機M3運轉速度由運動控制卡+10/-10V模擬電壓輸出端口OUT2發(fā)出指令控制。繼電器KA1和KA2分別控制機器人手爪的開合當向前伸時OUTPUT8輸出24V,撞到前限位開關停止運動;當OUTPUT9輸出時向后伸縮撞到后限位開關停止運動。光電軸角編碼器由三個編碼器輸入端口反饋回各軸的實際運動位置給運動控制卡。2.2軟件介紹2.2.1軟件編程語言的特點TRIOBasic一種類似欲BASIC的語言,簡單明了,易學易用。OCXComponent在VB、VC、Delphi、C++Builder中,直接調用運動函數PCI—208的安裝運行Install_TrioPCMotion_1_2_3.exe程序。該程序將a)自動將PCI208的設備驅動文件TrioPCI.sys安裝到c:\windows\system32\driver\目錄下;b)自動將Active控件TrioPC.ocx及其幫助文件TrioPcMotionActiveX.chm安裝到C:\ProgramFiles\TrioMotion\TrioPCMotion\目錄下。安裝成功后,在“設備管理器”中可查看有關PCI208的相關信息,如下圖示譯環(huán)境中,直接運行(F5),
程序操作畫面及介紹如下:譯環(huán)境中,直接運行(F5),歡迎使用PCI20815動控制界面進入首先進入Forml顯示“歡迎使用PCI208運動控制操作界面”,單擊進入按扭便進入Form2程序界面。如果單擊打開按扭TRIOPCI由紅色小方塊變?yōu)榫G色小方框,表明PCI208和OCX之間已成功建立連接。如果仍然為紅色表明PCI208和OCX之間的連接未成功建立。在此程序中,可進行運動控制和軸位置及I/O狀態(tài)顯示等功能。運動控制主要是OUTPUT8-17的輸出的開關控制,還有INPUT33-35的原點檢測控制,及運動距離輸出控制等方面。其中關閉按扭是關閉trio軟件的連接;運動按扭是根據輸入的距離值進行運動;復位按扭是進行各軸的原點復位運動;單擊退出操作便結束程序的執(zhí)行。2.2.2OCXComponent向工程中添加TrioPCOCX控件如圖A田IUiJ&>A田IUiJ&>■I國工程1-FoebI工程1-FoebI(Foim)女件(I)編輯(I)祖圖成)工程(1)格式伯調試(1)運行?查詢(?圖表匚)工度:(;)外摟程序⑥案匚如幫戢0,[封、宜滲吁苫晤?hec.11.恩曾明替燧國盅A團i□-I|78』±J§&曰_|?程序框圖界面:
0,[頊牛Lsfiiu..!iDPil-."f?.IL:r.?lJ.士行.L.JA.rlu.nt.11Iq!■.■.-|」闿滬0.V!.■.!?flrIII.貝?-白-狠囹若甘癸■0頊牛Lsfiiu..!iDPil-."f?.IL:r.?lJ.士行.L.JA.rlu.nt.11Iq!■.■.-|」闿滬0.V!.■.!?flrIII.貝?-白-狠囹若甘癸■0JJ]I■■■H..:AFl,C]IJjhlTEILHb?L]3FqzkI0a_iPiou.tpu.tL3ou.tpu.tL-1LHb*L]EFan2fT3VktBSul-CE41BU1.-1L_C11■:>QDLr?Lap?nXxBaal■wTi3aTCI}|aLiA.ddr?xi=fvil1KdxLAddra-ikIriaTCI.Ilom-d.=fk_jiD*?jlLtEg日口u■!bop4ii=7±l■:>BCI.Cip?jiijXjLDifijiilthink,d£_Ji|i白fwaliHoddlCiQlUpd4t(lSii11qt£I.A14iH女血女擊ETidSobcTriv^liSulCmwBtn.d2Click0~IEIriflTCIIsOpiTiCik_D.dtfsraltN<ide)Then.TrioTCr.C103tL比_nd我m1圳詞由)EndIfCkllUpda-Li-B*xkt-3TSLkt?i.Ei-£ri-xhEndSubva14SubCc-fuiiihIl-13_C1j-k0C£lL1InitAjL?5ItlxitiJCI.I^Op-aiiij£>_ad^fdu!dl-id?jTh皿C£illjutr況歸白皿EndIf~ErijS~ob■PrivateSul-Cm*?tH_ClickOTin.hci-■ArIrit?ctrDLr?LakMBedJ?noi.DLradr??dbiQXxDnu.*bJ.-iIETr3aFCI(^k_D■日■EvulEflv日■]Than.thmmiLcr?=TrueIt£_l±"ini£LLlL£fell07£:Di4DlPearJuzii=0To£Uk=TriofCL.flpi;l£+2*:心“/l¥:lACCEL:指定軸加速度DATUM_IN:指定原點輸入點MPOS:讀取實際位置DAC:設置模擬量輸出FHOLD_IN:設置進給保持輸入點運動指令MOVE:相對運動FORWARD:恒速正向運動RAPIDSTOP:停止MOVEMODIFY:運動中改變目標位置DECEL:指定軸減速度OFFPOS:位置偏置DPOS:讀取指令位置AIN:讀取模擬量輸入FHSPEED:設置進給保持速度MOVEABS:絕對運動REVERSE:恒速負向運動DATUM:回原點DEFPOS:重新定義當前位置ADD_DAC:全閉環(huán)控制輸入、輸出指令AIN:讀取模擬量輸入IN:讀取開關量輸入PSWITCH:位置比較輸出程序流程控制IF……THEN-.ELSE-.ENDIF:條件判斷GOTO:無條件跳轉ON-GOTO:條件跳轉REPEAT..UNTIL:重復執(zhí)行控制WAITIDLE:等待運動結束WA:延時WDOG:輸出使能DAC:設置模擬量輸出OP:設置開關量輸出PRINT:顯示FOR-TO..STEP-NEXT:循環(huán)控制GOTOSUB:調用子程序ON..GOTOSUB:條件調用子程序WHILE:條件判斷WAITUNTIL:等待運算處理指令1、算術運算:+、-、*、/、SQR、EXP2、邏輯運算:=、<>、>、<、>=、<=、AND、NOT、OR、XOR2.2.4運動控制程序如下:PrivateSubCommand1_Click()Form2.ShowUnloadForm1EndSubPrivateSubForm_Load()Label1.Caption=”歡迎使用PCI208運動控制界面”Label1.FontSize=18Label1.Font=楷體_GB2312Form1.BackColor=&HFFFF80EndSubOptionExplicitDimg_brunningIOAsBooleanDimg_brunningMoveAsBooleanDimg_nIOCountAsIntegerDimg_nMoveNoAsIntegerConstgk_sDefaultHostAddressAsString="50”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="onCallreadIOLoopIfLabel(33+Axis).Caption="on"Then
bok=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)Then
axTrioPC.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.SetViriable(”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(”數據過大”)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")EndIfEndSub2.2.5運動控制程序運行過程的簡介:當程序運行時,自動進入窗體一(Forml)點擊進入按扭通過調用窗體顯示程序進入窗體二(Form2)。進入后首先應該通過控件打開VB與MotionPerfect軟件的連接,這個可通過界面的打開按扭運用OPEN命令即可打開與軟件的連接,并通過調用子程序UpdateButtonStates更新其狀態(tài)。打開了軟件連接后,機器人各軸的位置應該回到初始狀態(tài),這個功能的實現了是通過復位程序來實現的。當點擊復位按扭時就運行復位程序復位,在程序運行之前還要通過子程序InitAxes()進行各軸的參數進行設置,而設置參數是通過連接命令SetVariable來分別進行設置的。設置完后而復位過程就通過循環(huán)來復位,即當各軸進行復位時分別通過控件連接的命令OP(即OUTPUT)輸出電動機的反轉電信號(24V電壓)這時在軟件中相應的輸出角狀態(tài)變?yōu)镺N。在各軸的復位運行過程中通過子程序readIO分別循環(huán)檢測各軸的原點開關輸入信號(24V電壓)的狀態(tài)是否為ON并顯示各輸入輸出的狀態(tài),而該狀態(tài)的讀取是通過控件連接命令IN輸入的。如果為該狀態(tài)就退出循環(huán)通過OP命令來輸出OFF來關斷反轉電信號即該軸就回到了原點,隨后再通過子程序ReadAxisPostions顯示編碼器反饋回的各軸的位置,該數據的讀取是讀取軸參數DPOS的值并通過連接命令GetVariable進行獲取到變量postions通過賦值顯示并把該位置做為一個相對原點坐標這樣整個復位程序運行完成了。各軸復位完成以后,我們要進行運動數據的輸入,即該軸要運動的距離。由于各軸運動的距離有限,所以在每次運行時都要進行文本框距離數據的判斷,假如距離值超過了設定值即要顯示一個對話框顯示數據過大。如果數據在正常的范圍之內,就通過控件OP命令分別輸出各電動機的正轉運動信號,并通過控件連接命令MoveAbs相對與反饋位置點運動一斷相對距離,運動完成后再通過ReadAxisPostions子程序進行位置顯示和readIO子程序進行輸出狀態(tài)顯示,同樣通過GetVariable命令來獲取反饋值之后再通過OP輸出OFF關閉各軸的運動電信號,這些運動的實現是在子程序proccessStateRun()完成的。當點擊運動按扭時就調用該子程序實現整個運動的過程。這樣各軸的運動距離通過循環(huán)運行子程序就到了預定的運動位置。最后在運動過程完成以后就要通過控件連接命令Close關閉與軟件的連接,并調用子程序UpdateButtonStates刷新按扭的狀態(tài),通過點擊退出按扭便退出操作就這樣整個程序的循環(huán)與檢測再運行過程就結束了。第三章TRIOBASIC指令系統(tǒng)編程3.1運動及軸命令說明或編程ACC類型:軸指令語法:ACC(acc率)注意:這個指令用來和舊的Trio控制器兼容。加速度率和減速度率可用ACCEL和DECEL軸參數設定。說明:同時設定加速度率和減速度率參數:acc率:參數單位決定于單位軸參數。加速度因子從UNITS/SEC/SEC輸入。應用:ACC(100)AXIS類型:修改指令語法:AXIS(軸數)說明:AXIS修改設置單軸運動指令或單軸參數讀寫。AXIS參數在命令行或程序行特別有效。使用BASE指令改變基本軸。參數:軸數任何有效的BASIC表達式特定軸數。注意:AXIS指令可用于修改以下指令的軸參數:ADDAX,CAM,CAMBOX,CANCEL,CONNECT,DATUM,DEFPOS,FORWARD,MOVEABS,MOVECIRC,MOVELINK,MOVE,MOVEMODIFY,REVERSE,REGIST,WAITIDLEWAITLOADED。參閱:BASE()應用:例子1PRINTMPOSAXIS(3)例子2MOVE(300)AXIS(2)例子3REPDISTAXIS(3)=100BASE類型:運動控制指令語法:BASE(軸1,軸2,軸3)BASE參數:BA(軸1,軸2,軸3)BA說明:BASE指令用于導向下一個運動指令軸的參數讀/寫入特定軸或軸組,設置的缺省值
依次為:0,1,2...每一個過程有其自己的BASE基本軸組,每個程序能單獨賦值。TrioBasic程序與控制軸運動的運動發(fā)生器分開。每個軸的運動發(fā)生器有其獨立的功能,,因此每個軸能以自己的速度、加速度等進行編程,單獨運動,或者通過插補或鏈接運動鏈接在一起。AXIS()命令只要應用正在進行的單命令可以重新導向不同的軸。而BASE()指令除非規(guī)定軸號,否則導向接下來的所有指令。參數:軸號:軸號或軸組號成為新的基準軸排列,即軸號或軸組發(fā)送運動指令給多軸指令里的第一個軸。基本軸的軸數和順序軸在軸組用于多軸運動。應用:例子1BASE(BASE(1)UNITS=2000SPEED=100ACCEL=5000BASE(2)UNITS=2000SPEED=125ACCEL=10000‘設置軸1的轉換因子?!O置軸1的速度‘設置軸1的加速度‘設置軸2的轉換因子‘設置軸2的速度‘設置軸2的加速度CANCEL類型:運動控制指令語法:CANCEL/CANCEL(1)備選:CA說明:CANCEL指令取消軸插補軸組的當前運動。速度軌跡(FORWARD,REVERSE,MOVE,MOVEABS,MOVECIRC)將會以DECEL參數減速直到停止。其它運動會立即停止。CANCEL(1)指令取消已緩存的運動而不影響正在執(zhí)行的運動,CANCEL工作在缺省軸,除非使用AXIS參數定義臨時基本軸。注意:1.CANCEL只能取消當前執(zhí)行的運動。如果在緩存中還有運動,它會繼續(xù)被加載。在當前運動的減速過程中,另外的CANCELS會被忽略。CANCEL(1)只取消當前緩存中的運動。存儲在任務緩存中的運動由PMOVE參數定義,可以被加載到緩存一旦緩存運動被取消。參閱:AXIS,MTYPE,NTYPE,PMOVE,RAPIDSTOP應用:例子1FORWARDWA(10000)CANCEL例子2MOVE(1000)MOVEABS(3000)CANCEL取消運動到3000,而運動到4000。MOVEABS(4000)注意MOVEMODIFY是修改運動結束點最好方法。DATUMDATUM原點搜尋類型:運動控制指令語法:DATUM(sequence)說明:DATUM指令執(zhí)行6種方法中的一種搜尋原點位置,其為絕對位置同時可以重置跟隨誤差。伺服驅動器機構原點搜尋用于軸0。軸1用于MC控制單元機構。DATUM使用CREEP速度和目標速度用于原點搜尋。伺服驅動器用于軸0。爬行速度用CREEP參數設定。目標速度用SPEED參數設定。原點搜尋輸入數由DATUM_IN參數決定,用于3或7中。DATUM(0)用于軸出錯時重新啟動系統(tǒng),位置不變。。參數:sequence0DATUM(0)指令清除跟隨誤差。將當前位置設定為目標位置同時AXISSTATUS狀態(tài)會被清除。注如果產生錯誤的問題仍然存在,誤差不能被清除。1軸以爬行速度(CREEP)正向運行直到發(fā)現Z信號。目標位置重置為0同時糾正測量位置,維持跟隨誤差。2軸以爬行速度(CREEP)反向運行直到發(fā)現Z信號。目標位置重置為0同時糾正測量位置,維持跟隨誤差。3軸以目標速度(SPEED)正向運行,直到碰到原點開關。隨后軸以爬行速度正向運動直到原點開關復位。目標位置重置為0同時糾正測量位置,維持跟隨誤差。4軸以目標速度(SPEED)反向運行,直到碰到原點開關。隨后軸以爬行速度正向運動直到原點開關復位。目標位置重置為0同時糾正測量位置,維持跟隨誤差。5軸以目標速度(SPEED)正向運行,直到碰到原點開關。隨后軸以爬行速度正向運動直到碰到Z信號。目標位置重置為0同時糾正測量位置,維持跟隨誤差。6軸以目標速度(SPEED)反向運行,直到碰到原點開關。隨后軸以爬行速度正向運動直到碰到Z信號。目標位置重置為0同時糾正測量位置,維持跟隨誤差。注意:原點輸入低電平有效。當輸入OFF時設置原點開關。feedhold,reversejog,forwardjog,forward,reverselimitinputs均是低電平有效。低電平輸入用于使能自動防護接線。例子:DATUyIN=10DATUM(5)MOVE類型:運動控制指令語法:MOVE(dist_1[,dist_2[,dist_3]])
備選:MO(dist_1[,dist_2[,dist_3]])說明:MOVE指令使一軸或多軸在目標速度,加速度和減速度下以增量的方式運動到特定位置。在多軸運動中,速度,加速度,減速度是基于基本軸的插補運動。特定長度的比例由轉換因子UNITS參數設定。例如,一軸編碼器是4000edges/mm,于是軸的單元數設為4000,MOVE(12.5)將會移動12.5毫米。MOVE工作在缺省軸,除非AXIS定義臨時基本軸。參數dist_1定義為缺省軸,dist_2作為另一個軸等等。通過改變軸在獨立運動,非插補,非同步可以獲得多軸運動。增量運動可以合并成連續(xù)運動軌跡,通過設置MERGE=ON。考慮兩軸運動,每軸速度可以由以下等式計算得到。指令MOVE(x1,x2)和速度Vp由SPEED,22£=中[十叼.ACCEL和DECEL參數計算得到。多軸運動距離L。每軸任何時候的獨立速度計算如下:軸i任何時刻的分速度vi由以下公式計算參數:dist_IX■V
.=V-任意軸I的運動距離,從用戶定義的基本軸開始。參閱:AXIS,MOVEABS,UNITS應用:例子1系統(tǒng)轉換因子為1和1000線的編碼器。因此,需要如下指令使電機運動10圈。(1000線編碼器給出4000edges/turn)。MOVE(10)AXIS(0)MOVE(10)AXIS(1)MOVE(10)AXIS(2),例子2在這個例子中參數運動。MOVE(40000)軸0,1,2獨立運動(沒有插補)。每軸會以程序的速度和其它例子3X-Y平面在工作范圍內可以在任意位置寫文本。獨立運動可以被定義成相對與起始點相對運動。因此在任何位置都可以使用相同的指令。字母”m”的子程序如下:,例子2在這個例子中參數運動。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指令使一軸或多軸在目標速度,加速度和減速度下以絕對的方式運動到特定位置。在多軸運動中,速度,加速度,減速度是基于基本軸的插補運動。特定長度的比例由轉換因子UNITS參數設定。例如,一軸編碼器是4000edges/mm,于是軸的單元數設為4000,MOVEABS(12.5)將會從起始點移動12.5毫米。MOVEABS工作在缺省軸除非AXIS定義臨時基本軸。參數dist_1定義為缺省軸,dist_2作為另一個軸等等。通過改變軸在獨立運動,非插補,非同步可以獲得多軸運動。增量運動可以合并成連續(xù)運動軌跡,通過設置MERGE=ON??紤]兩軸運動,每軸速度可以由以下等式計算得到。指令MOVE(ax1,ax2)和當前位置(ay1,ay2),速度Vp由SPEED,ACCEL和DECEL參數計算得到。多/.=J一「+=山&―"」]軸運動距離L。每軸任何時候的獨立速度計算如下:參數:pos_i任意軸I的運動距離,從用戶定義的基本軸開始。參閱:AXIS,MOVE,UNITS應用:例子1X-Y平面有一個筆,圓盤的位置相對與起始點固定。改變筆的位置,當指令執(zhí)行時,圓盤的絕對運動與平面位置不相關。MOVEABS(20,350)例子2一個貨盤由小格組成,容器離包裝機器85毫米。從固定點取容器,貨盤的開始位置用DEFPOS指令定義成原點(0,0)。到容器的一部分程序如下:xloop:forx=0to5yloop:fory=0to7MOVEABS(-340,-516.5)‘運動到撿起點GOSUBpick‘跳轉到撿起子程序PRINT“MOVETOPOSITION:“;X*6+Y+1MOVEABS(x*85,y*85)GOSUBplace‘轉到place子程序NEXTyNEXTxREVERSE類型:運動控制指令語法:REVERSE備選:RE說明:REVERSE反向連續(xù)運動,速度由SPEED參數設置。加速率由ACCEL參數設置。REVERSE工作在缺省基本軸,除非AXIS定義臨時基本軸。注意:反向運動可以被CANCEL或RAPIDSTOP指令停止?;虻竭_反向限位,禁止或原點返回。參閱:AXIS,CANCEL,FORWARD,RAPIDSTOP應用:back:REVERSEWAITUNTILIN(0)=ON‘等待停止信號CANCEL3.2輸入/輸出指令說明或編程AIN類型:系統(tǒng)參數語法:AIN(模擬通道)說明:從模擬輸入口讀取數值,各種模擬輸入模塊可與運動控制器連接。有的運動控制器本身具有1至2個模擬輸入。返回的值是十進位的,與讀自A至D轉換器的二進制數字相等。參數:模擬輸入通道0...710...31P325CAN模擬輸入通道31.39運動控制器本身模擬輸入通道40...71P225模擬輸入子板AIN2通道的S_RATE參數可每分鐘將數據轉換成接近的值。對于AIN1和AIN3通道,T_RATE參數可將數據轉換成扭矩的百分率。附錄:IN,S_RATE,T_RATE應用:生產線的速度由材料供給的速率決定。材料供給通過安裝有超聲傳感器裝置上松散的環(huán)安排。超聲傳感器輸出范圍在0V—4V,4V時環(huán)最長。MOVE(-50Q0)REPEATa=AIN(l)IFa<0THENa=0SPEEDF0.25UNTILMTYPE=0模擬輸入值盡管應為正的值但也需檢查確保大于0。當值為負時進來的信號有噪音,由于除FORWARD或REVERSE外負速對與任一類型運動無效而引起錯誤。注意:模擬反應速度取決于所發(fā)生的模塊。P324以10msec更新,P225以SERVO_PERIOD更新,內置的模擬端口以1msec更新。如果未安裝P325總線模塊,AIN(0)和AIN(1)將讀取內置的通道以保持與老版本的兼容。HEX類型:指令說明:HEX指令用于打印語句,輸出一個十六進制格式的數。HEX指令不用在MC202或MC216應用:PRINT#5,HEX(IN(8,16))IN()IN類型:I/O功能語法:IN(input_number[,final_input_number])/ININ說明:IN功能返回數字輸入的值。IN(input_number,final_input_number)將會返回輸入的二進制。兩個參數必須小于24分隔。IN(input_number)包括輸入值小于32將會返回特定通道的值。IN(withoutarguments)將會返回前24個輸入的二進制。(IN(0,23))。參考3-3-2參數:input_number輸入返回的值。值是在0到31的整數。Final_input_number最后輸入返回的值。值是在0到31的整數。應用:例子1下行可用于運動手輪與因子乘積的位置。手輪與輸入4,5,6,7連結,輸出BCD。Moveloop:Moveabs(IN(4,7)*1.5467)WaitidleGotomoveloopOP類型:I/O功能/指令語法:OP[([outputno,]value)]說明:OP指令設置一個或多個輸出或返回前24個輸出狀態(tài)。OP有三種不同形式決定于參數。指令OP(output_number,value)設置單輸出通道。output_number的范圍[8,17]。值為0或1。指令OP(binary_pattern)依據binary_pattern的值設置24個輸出的二進制形式。?功能OP返回24個輸出的狀態(tài)。這就允許多輸出設置而不需要改變其它不需要改變的。參考3-3-2說明:前8個輸出(0-7),在MC控制單元中不實際存在,他們不能被寫入,并返回零。參數:outputno設置輸出數value被輸出的值,OFF或ON。所有非零值被看作ON。參閱:IN應用:例子1以下兩行等價。OP(44,1)OP(44,ON)PRINT類型:指令語法:PRINT指令讓TrioBasic輸出一系列字符串到串口,或合適的光纖端口。PRINT指令可以輸出參數,固定ascii串,單個ascii字符串。只要多個項目用逗號,或分號分隔,都可以通過單個PRINT語句打印。逗號,分號控制輸出字串的格式。應用:PRINT"CAPITALSandlowercaseCANBEPRINTED"3.3程序循環(huán)和結構編程IF..THEN..ELSE..ENDIF類型:結構指令語法:IFconditionTHEN<commands>[else<commands>]ENDIFIFconditonTHEN<commands>說明:IF...THEN...ELSE...ENDIF結構依據條件結果控制程序流程。如果條件真,接下來的THEN到ELSE將會執(zhí)行。如果條件假,ELSE將會執(zhí)行或程序會跳到ENDIF如果沒有ELSE。ENDIF用于標記條件段的結束。注意:IF...THEN[ELSE]ENDIF過程可以沒有限制的嵌套。對于多行IF...THEN結構,在THEN后沒有任何陳述。單結構不用ENDIF。參數:cindition任何有效的邏輯表達式。commands任何有效的邏輯表達式。應用:例子1IFMPOS>(0。22*VR(0))THENGOTOexceeds_length例子2IFIN(0)=ONThenCount=count+1PRINT“COUNTS="countFail=0ElseFail=fail+1EndifFOR..TO..STEP..NEXT類型:循環(huán)和條件結構指令語法: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個指令。參數:variable任何有效的BASIC表達式。既可以是一個環(huán)形變量或者是一個本地變量start任何有效的BASIC表達式end任何有效的BASIC表達式increment任何有效的BASIC表達式(可選)參閱:REPEAT,WHILE應用:例子1以下例子將輸出10到18置ONFORopnum=10to18OP(opnum,on)NEXTOPNUMON..GOSUB類型:結構指令語法:ONexpressionGOSUBlabel{,label}說明:ON...GOSUB結構使能條件跳轉。整數表達式用于從列表中選擇label。如果表達式的值是1,使用第一個label,對于值2使用第二個label,以此類推。依據GOSUB指令執(zhí)行子程序或跳轉。注意:如果表達式無效,不會執(zhí)行跳轉。參數:expression任何有效的BASIC表達式。Label程序中任何有效的標志。參閱:GOSUB,GOTO應用:REPEATGET#5,charUNTIL1<=charandchar<=3OncharGOSUBmover,stopper,changeON..GOTO類型:結構指令語法:ONexpressionGOSUBlabel{,label}說明:ON.GOTO結構使能條件跳轉。整數表達式用于從列表中選擇label。如果表達式的值是1,使用第一個label,對于值2使用第二個label,以此類推。依據GOTO指令執(zhí)行子程序或跳轉。注意:如果表達式無效,不會執(zhí)行跳轉。參數:expression任何有效的BASIC表達式。Label程序中任何有效的標志。參閱:GOSUB,GOTO應用:REPEATGET#5,charUNTIL1<=charandchar<=3OncharGOTOmover,stopper,changeWA類型:系統(tǒng)指令語法:WA(time)說明:WA指令暫停程序執(zhí)行一段時間。指令只能用在程序中。參數:time暫停程序的毫秒數。應用:以下例子將輸出11置OFF兩秒鐘后輸出17置ON。OP(11,OFF)WA(2000)OP(17,ON)WAIT..UNTIL類型:系統(tǒng)指令語法:WAITUNTILcondition說明:WAITUNTIL指令重復評估條件直到變成真。此后程序繼續(xù)執(zhí)行。指令只能用在程序中。參數:condition任何有效BASIC邏輯表達式。應用:例子1此例中,程序等待軸0的測量位置超出150,然后開始軸1的運動。WAITUNTILMPOSAXIS(0)>150MOVE(100)AXIS(1)例子2表達式的復雜程度可由用戶來定WAITUNTILDPOSAXIS(2)<=0ORIN(1)=ON以上行會等待軸2的目標位置小于或等于0或輸入1置ON。WHILE..WEND類型:結構指令語法:Whilecondition說明:WHILE...WEND結構程序之間的指令連續(xù)執(zhí)行,直到條件變成FALSE。此時程序會繼續(xù)執(zhí)行WEND后的程序。注意:WHILE...WEND可以無限制嵌套。參數:condition任何有效的邏輯BASIC表達式。參閱:FOR,REPEAT應用:WHILEIN(12)=OFFMOVE(200)WAITIDLEOP(10,OFF)MOVE(-200)WAITIDLEOP(10,ON)WENDWAITUNTIL類型:系統(tǒng)指令語法:WAITUNTILcondition說明:WAITUNTIL指令重復評估條件直到變成真。此后程序繼續(xù)執(zhí)行。指令只能用在程序中。參數:condition任何有效BASIC邏輯表達式。應用:例子1此例中,程序等待軸0的測量位置超出150,然后開始軸1的運動。WAITUNTILMPOSAXIS(0)>150MOVE(100)AXIS(1)3.4恒量FALSE類型:常數說明:FALSE常數返回數值零。注:常數為只讀。應用:test:res=IN(0)ORIN(2)IFres=FALSETHENPRINT“inputareoff”EndifOFF類型:常量說明:OFF常量返回數值0。注:常量為只讀。應用:OP(lever,OFF)以上設置輸出名為lever的設置成OFF。ON類型:常量說明:ON常量返回值1。注:此參數為只讀。應用:OP(lever,ON)以上命令將輸出名為lever設置成ON。PI類型:常量說明:PI常量返回數值3。1416。注:此常量位只讀。應用:circum=100PRINT“Radius=”;circum/(2*PI)TRUE類型:常量說明:TRUE常量返回數值-1。注:常量為只讀。應用:test:T=IN(0)ANDIN(2)IFT=TRUETHENPRINT“inputareON”ENDIF3.5軸參數說明或編程ACCEL類型:軸的參數說明:ACCEL參數包括軸的加速率。單位units/s2。參數可以是任意正數包括零。參閱:AXIS,DECEL,UNITS應用:BASE(0)ACCEL=100‘設置加速率PRINT“Accelerationrate:";"mm/s/s"ACCELAXIS(2)=100‘設置軸2的加速率ADDAX_AXIS類型:軸的參數說明:ADDAX_AXIS參數返回由ADDAX連接的軸數。注:此參數為只讀參數。參閱:AXIS,ADDAX應用:>>BASE(0)>>ADDAX(2)>>PRINTADDAX_AXIS2.0000類型:軸的參數ATYPE說明:ATYPE參數設置軸的類型。軸數軸的類型ATYPE值0伺服13(固定)1虛擬軸0伺服軸2編碼器輸入3(缺?。┚幋a器輸出142虛擬軸0(固定)開始上電時ATYPE參數設置成軸的缺省值。參考3-3。參閱:AXIS應用:以下指令將軸1設置成編碼器輸出。>>ATYPEAXIS(1)=14AXISSTATUS類型:軸的參數說明:AXISSTATUS參數包括軸的狀態(tài)。AXISSTATUS參數對三軸定義如下。位數描述值字符(用在MotionPerfect軸0(伺服軸)軸1(編碼器輸入/輸出/虛擬軸2(虛擬軸)中)軸)0-1----1跟隨誤差報警2WX--2伺服驅動器通訊錯誤4AX--3伺服驅動器報警8MX--4正向限位16FXXX5反向限位32RXXX6原點搜尋64DXXX7反饋限制輸入128HXXX8跟隨誤差限制256EX--9正向軟件限位512XXXX10反向軟件限位1024YXXX11取消運動2048CXXX12編碼器輸出超速4096O-X-AXISATATUS參數用于處理運動錯誤。參考8-2注:此為只讀參數。參閱:AXISERRORMASK應用:IF(AXISSTATUSAND16)>0THENPRINT“inforwardlimit”CREEP類型:軸的參數說明:CREEP包括軸的爬行速度。爬行速度用于進行原點搜尋。CREEP允許任何正值(包括0)。CREEP速度單位為units/s。使用因子轉換。例如,如果轉換因子設為編碼器數edges/inch,速度設為inchs/s。參閱:AXIS,DATUM,UNITS應用:BASE(2)CREEP=10SPEED=500DATUM(4)CREEPAXIS(1)=10SPEEDAXIS(1)=500DATUM(4)AXIS(1)DAC類型:軸的參數說明:當SERVO=OFF時寫進此軸參數允許用戶強加一個指定電壓到伺服候。12位DAC能采用的值范圍為:DAC=2048相應于10V電壓DAC=-2047相應于-10V電壓16位DAC能采用的值范圍為:DAC=32767相應于10V電壓DAC=-32768相應于-10V電壓DECEL類型:軸的參數說明:DECEL參數包括軸的減速率。單位為units/s2。參數可以是任意正數包括零。參閱:ACCEL,AXIS,UNITS應用:DECEL=100‘設置減速率PRINT“Decelerationrateis“;"mm/s/s“I_GAIN類型:軸的參數說明:I_GAIN參數包括軸的積分增益。積分輸出通過計算跟隨誤差的總和。-缺省值是0。疊加積分增益到伺服系統(tǒng)減少靜止或運動時的位置誤差。他可以減少超調,振動。因此適用系統(tǒng)工作在常速和慢加速的場合。Oi=Kix十e注意:為了避免系統(tǒng)的不穩(wěn)定性,伺服增益需在SERVO=OFF時改變。參閱:D_GAIN,OV_GAIN,P_GAIN,VFF_GAINMPOS類型:軸的參數說明:MPOS參數表示用戶單位的測量位置,從編碼器得到。這個參數可應用DEFPOS指令設置。OFFPOS參數可用于移動起始點。MPOS在上電時重置成零。測量位置的范圍由REPDIST和REP_OPTION參數控制。注:此參數為只讀。參閱:AXIS,DEFPOS,DPOS,ENCODER,FE,OFFPOS,REPDIST,REP_OPTION,UNITS應用:WAITUNTILMPOS>=1250SPEED=2.5MTYPE類型:軸的參數說明:MTYPE參數包括當前執(zhí)行的運動類型。下面給出可能值。運動數運動類型0IDLE1MOVE2MOVEABS3MHELICAL4MOVECIRC5MOVEMODIFY10FORWARD11REVERSE12DATUM13CAM14JOG_FORWARD15JOG_REVERSE20CAMBOX21CONNECT22MOVELINKMTYPE可用于決定運動是否完成或運動類型已經改變。非空閑并不意味著軸在運動。它可以是零速運動或輔助其它軸做插補運動,而本身沒有運動。注:此參數為只讀。參閱:AXIS,NTYPENTYPE類型:軸的參數說明:NTYPE參數包括緩存中下一運動的類型。一旦當前運動結束,將會執(zhí)行顯示在NTYPE緩存中的運動。此值與MTYPE的參數相同。NTYPE通過CANCEL(1)指令取消。注:此參數為只讀。參閱:AXIS,MTYPEOFFPOS類型:軸的參數說明:OFFPOS參數包括應用在目標位置的偏移,不影響運動。測量位置隨之改變。當系統(tǒng)加載偏移OFFPOS的值會被重置成零。注意:偏移在下一伺服周期起作用。其它指令可能會在下一伺服周期之前執(zhí)行。確定這些指令不是假想已經發(fā)生位置移動。這可以使用WAITUNTIL(看例子)。參閱:AXIS,DEFPOS,DPOS,MPOSUNITS應用:以下指令定義當前目標位置為零。OFFPOS=-DPOSWAITUNTILOFFPOS=0‘等到執(zhí)行這個例子等價于DEFPOS(0)。SERVO類型:軸的參數說明:SERVO參數決定基本軸工作在伺服控制(SERVO=ON)還是開環(huán)控制(SERVO=OFF)。在閉環(huán)中,運動控制算法將會輸出速度參考信號,取在開環(huán)中,速度參考完全取決于S_RTE參數。參閱:AXIS,FELIMIT,S_RE,S_REF_OUT,WDOG。應用:SERVOAXIS(0)=ON‘軸0是伺服控制SERVOAXIS(1)=OFF‘軸1開環(huán)SPEED類型:軸的參數說明:SPEED參數包括目標速度units/s,它可以是任意正值(包括零)。目標速度是運動指令的最大速度。參閱:ACCEL,AXIS,DATUM,DECEL,FORWARD,MOVE,MOVEABS,MOVECIRC,MOVEMODIFY,REVERSE,UNITS應用:SPEED=1000PRINT“Setspeed=”;SPEEDUNITS類型:軸的參數說明:UNITS參數包括單位轉換因子。單位轉換因子使用戶單位定義更方便,例如米,毫米或電機分辨率。軸的參數象速度,加速度,減速度和電機控制指令都以用戶單位為基礎。注意:UNITS參數可以是任何非零值,但是推薦用戶單位與編碼器整數脈沖相一致。改變UNITS將會影響軸的所有參數。UNITS參數保持系統(tǒng)相同的動力特性。參閱:AXIS,PP_STEP應用:滾珠絲杠的導程5毫米,1000線的編碼器。單位必須設置成毫米。1000pulse/rev將會產生1000*4=4000edges/rev。旋轉一圈等于5毫米。因此,4000/5=800edges/mm。單位因此設置成以下:>>UNITS=1000*4//5PP_STEP類型:軸的參數說明:PP_STEP參數包括與輸入編碼器線數成比例的整數值。輸入編碼器的線數會被PP_STEP倍頻。比例用于匹配電機的高分辨率或機器沿圓弧運動編碼器的線數與軸上的不同。有效范圍:[-1023,-1]和[1,1023]。缺省值為1。說明:改變PP_STEP的值會影響位置控制環(huán)。相應的需要修改控制增益。參閱:AXIS,MOVECIRC,UNITS應用:電機20000steps/rev。MC控制單元內部加工40000count/rev。連結2500線的電機。它會產生10000counts/rev。需要乘以4才能時10000counts/rev匹配電機的40000counts/rev。以下用于軸0:PP_STEPAXIS(0)=4第四章TRIOACTIVEX控件的使用使用TRIOACTIVEX控件MotionCoordinatorTechnicalReferenceManual運動控制器技術參考手冊4.1要求說明:計算機具有USB或者以太網接口Windows98,ME,2000或XP操作系統(tǒng)TrioUSB驅動TrioPCI驅動TrioPCOCX控件?通過TrioPCActiveX連接控制Trio運動控制器的知識TrioBASIC編程語言的相關知4.2ActiveX控件的安裝啟動程序“Install_TrioPCMotion”并且按照屏幕提示執(zhí)行。TrioUSB驅動和TrioPCocx#會在您的計算機中安裝并注冊。一個幫助文件根據需要可以在完成安裝后被立即顯示出來。4.3使用控件TrioPC控件必須添加到您的工程環(huán)境中。這里用VisualBasic舉例說明,但確切的使用過程以所使用的軟件版本而定。從VB界面菜單中選擇“Project”下的“Components”…(或者使用快捷方式ctrl+T)。當控件對話框彈出后,托動滾動條,找到“TrioPCActiveXControlModule”并點擊(在該條前會出現一個勾)。在點擊“確定”后,此時控件會顯示在屏幕左邊的“控制面板”中,它所顯示的名字為“TPC”。一旦您完成添加TrioPC控件后,您就可以建立您的軟件工程并使用TrioPC控件了4.4連接命令應用Open描述:在TrioPCActiveX控件與運動控制器之間建立初始化連接命令。鏈接可以通過PCI、USB或以太網接口打開,在同步或異步兩種模式下操作。同步模式下,所有的TrioBasic下的方法都是可用的。在異步模式下,TrioBasic下的方法不可用,相反用戶必須調用“SendData()”向運動控制器寫數據,同時通過響應“OnReceiveChannelx”事件,調用“GetData()”函數從運動控制器中接收數據。在這種方式下,用戶的應用程序可以響應發(fā)生在
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年裝箱單在應對外貿出口貿易救濟措施中的策略合同3篇
- 二零二五版國際貿易特許經營合同主體欺詐風險管理與合同解除合同3篇
- 二零二五年電子顯示屏廣告租賃合同樣本3篇
- 二零二五版代辦房地產前期開發(fā)手續(xù)與建筑工程質量檢測服務合同3篇
- 二零二五年采棉機駕駛員職業(yè)素養(yǎng)提升與勞動合同3篇
- 二零二五版能源行業(yè)凍庫租賃合同含能源物資儲備協(xié)議3篇
- 二零二五年酒店客房部服務員勞動合同書3篇
- 天津事業(yè)單位2025年度合同制聘用人員管理規(guī)范3篇
- 二零二五年度裝修合同范本:環(huán)保裝修保障您的生活品質6篇
- 二零二五版地產經紀居間合同糾紛處理指南3篇
- 【公開課】同一直線上二力的合成+課件+2024-2025學年+人教版(2024)初中物理八年級下冊+
- 高職組全國職業(yè)院校技能大賽(嬰幼兒照護賽項)備賽試題庫(含答案)
- 2024年公安部直屬事業(yè)單位招聘筆試參考題庫附帶答案詳解
- 健康教育工作考核記錄表
- 裝飾工程施工技術ppt課件(完整版)
- SJG 05-2020 基坑支護技術標準-高清現行
- 汽車維修價格表
- 司爐崗位應急處置卡(燃氣)參考
- 10KV供配電工程施工組織設計
- 終端攔截攻略
- 藥物外滲處理及預防【病房護士安全警示教育培訓課件】--ppt課件
評論
0/150
提交評論