【文章內(nèi)容簡介】
).Refresh Else nMBR = MsgBox(error reading axis positon) nAxis = gk_nAxesInUse End If Else nMBR = MsgBox(error setting base for reading axis position) nAxis = gk_nAxesInUse Next nAxis Else nMBR = MsgBox(connection not open) End IfEnd Sub Private Sub proccessStateRun() Dim bok As Boolean Dim nAxis As Integer Dim dreadval As Double Dim nIO As Integer g_brunningIO = True If g_brunningIO Then nIO = 0 Call ReadAxisPostions For nIO = 0 To 2 Call readIO If Val(Text(nIO + 1).Text) 50 Then MsgBox (數(shù)據(jù)過大) Else bok = (12 + 2 * nIO, 1) bok = (3, Val(Text(nIO + 1).Text), nIO) Call ReadAxisPostions bok = (11 + 2 * nIO, 0) nIO = nIO + 1 End If Next nIO g_brunningIO = False Call UpdateButtonStates End IfEnd Sub Private Sub readIO() Dim IIO As Long Dim nBit As Integer Dim nMBR As Integer Dim IBit As Integer Dim Inpt As Long If (gk_ndefaultMode) Then If (8, 17, IIO) Then For nBit = 7 To 16 If IIO 0 Then Label(nBit).Caption = on Label(nBit).ForeColor = vbBlue Else Label(nBit).Caption = off Label(nBit).ForeColor = vbRed End If Label(nBit).Refresh Next nBit Else nMBR = MsgBox(error reading IO) End If If (0, 2, Inpt) Then For IBit = 33 To 35 If Inpt 0 Then Label(IBit).Caption = on Label(nBit).ForeColor = vbBlue Else Label(nBit).Caption = off Label(nBit).ForeColor = vbRed End If Label(IBit).Refresh Next nBit Else nMBR = MsgBox(error reading IO) End If Else nMBR = MsgBox(connection not open) End IfEnd Sub 運動控制程序運行過程的簡介: 當(dāng)程序運行時,自動進(jìn)入窗體一(Form1)點擊進(jìn)入按扭通過調(diào)用窗體顯示程序進(jìn)入窗體二(Form2)。進(jìn)入后首先應(yīng)該通過控件打開VB與Motion Perfect 軟件的連接,這個可通過界面的打開按扭運用OPEN命令即可打開與軟件的連接,并通過調(diào)用子程序UpdateButtonStates更新其狀態(tài)。打開了軟件連接后,機(jī)器人各軸的位置應(yīng)該回到初始狀態(tài),這個功能的實現(xiàn)了是通過復(fù)位程序來實現(xiàn)的。當(dāng)點擊復(fù)位按扭時就運行復(fù)位程序復(fù)位,在程序運行之前還要通過子程序InitAxes()進(jìn)行各軸的參數(shù)進(jìn)行設(shè)置,而設(shè)置參數(shù)是通過連接命令SetVariable來分別進(jìn)行設(shè)置的。設(shè)置完后而復(fù)位過程就通過循環(huán)來復(fù)位,即當(dāng)各軸進(jìn)行復(fù)位時分別通過控件連接的命令OP(即OUTPUT)輸出電動機(jī)的反轉(zhuǎn)電信號(24V電壓)這時在軟件中相應(yīng)的輸出角狀態(tài)變?yōu)镺N。在各軸的復(fù)位運行過程中通過子程序readIO分別循環(huán)檢測各軸的原點開關(guān)輸入信號(24V電壓) 的狀態(tài)是否為ON并顯示各輸入輸出的狀態(tài),而該狀態(tài)的讀取是通過控件連接命令I(lǐng)N輸入的。如果為該狀態(tài)就退出循環(huán)通過OP命令來輸出OFF來關(guān)斷反轉(zhuǎn)電信號即該軸就回到了原點,隨后再通過子程序ReadAxisPostions顯示編碼器反饋回的各軸的位置,該數(shù)據(jù)的讀取是讀取軸參數(shù)DPOS的值并通過連接命令GetVariable進(jìn)行獲取到變量postions通過賦值顯示并把該位置做為一個相對原點坐標(biāo)這樣整個復(fù)位程序運行完成了。各軸復(fù)位完成以后,我們要進(jìn)行運動數(shù)據(jù)的輸入,即該軸要運動的距離。由于各軸運動的距離有限,所以在每次運行時都要進(jìn)行文本框距離數(shù)據(jù)的判斷,假如距離值超過了設(shè)定值即要顯示一個對話框顯示數(shù)據(jù)過大。如果數(shù)據(jù)在正常的范圍之內(nèi),就通過控件OP命令分別輸出各電動機(jī)的正轉(zhuǎn)運動信號,并通過控件連接命令MoveAbs相對與反饋位置點運動一斷相對距離,運動完成后再通過ReadAxisPostions子程序進(jìn)行位置顯示和readIO子程序進(jìn)行輸出狀態(tài)顯示,同樣通過GetVariable命令來獲取反饋值之后再通過OP輸出OFF關(guān)閉各軸的運動電信號,這些運動的實現(xiàn)是在子程序proccessStateRun()完成的。當(dāng)點擊運動按扭時就調(diào)用該子程序?qū)崿F(xiàn)整個運動的過程。這樣各軸的運動距離通過循環(huán)運行子程序就到了預(yù)定的運動位置。最后在運動過程完成以后就要通過控件連接命令Close關(guān)閉與軟件的連接,并調(diào)用子程序UpdateButtonStates刷新按扭的狀態(tài),通過點擊退出按扭便退出操作就這樣整個程序的循環(huán)與檢測再運行過程就結(jié)束了。第三章 TRIO BASIC指令系統(tǒng)編程ACC類型: 軸指令語法: ACC(acc率)注意: 這個指令用來和舊的Trio控制器兼容。加速度率和減速度率可用ACCEL 和DECEL軸參數(shù)設(shè)定。說明:同時設(shè)定加速度率和減速度率參數(shù):acc率: 參數(shù)單位決定于單位軸參數(shù)。加速度因子從UNITS/SEC/SEC輸入。應(yīng)用:ACC(100)AXIS類型: 修改指令語法: AXIS(軸數(shù))說明: AXIS修改設(shè)置單軸運動指令或單軸參數(shù)讀寫。AXIS參數(shù)在命令行或程序行特別有效。使用BASE指令改變基本軸。參數(shù): 軸數(shù) 任何有效的BASIC表達(dá)式特定軸數(shù)。注意:AXIS指令可用于修改以下指令的軸參數(shù):ADDAX,CAM,CAMBOX,CANCEL,CONNECT,DATUM,DEFPOS,F(xiàn)ORWARD,MOVEABS,MOVECIRC,MOVELINK,MOVE,MOVEMODIFY,REVERSE,REGIST,WAIT IDLE,WAIT LOADED。參閱: BASE()應(yīng)用:例子1 PRINT MPOS AXIS(3) 例子2 MOVE(300) AXIS(2) 例子3 REPDIST AXIS(3)=100BASE類型: 運動控制指令語法: BASE(軸1,軸2,軸3) BASE參數(shù): BA(軸1,軸2,軸3) BA說明: BASE指令用于導(dǎo)向下一個運動指令軸的參數(shù)讀/寫入特定軸或軸組,設(shè)置的缺省值依次為:0,1,2…每一個過程有其自己的BASE基本軸組,每個程序能單獨賦值。Trio Basic 程序與控制軸運動的運動發(fā)生器分開。每個軸的運動發(fā)生器有其獨立的功能,因此每個軸能以自己的速度、加速度等進(jìn)行編程,單獨運動,或者通過插補或鏈接運動鏈接在一起。AXIS()命令只要應(yīng)用正在進(jìn)行的單命令可以重新導(dǎo)向不同的軸。而BASE()指令除非規(guī)定軸號,否則導(dǎo)向接下來的所有指令。參數(shù): 軸號:軸號或軸組號成為新的基準(zhǔn)軸排列,即軸號或軸組發(fā)送運動指令給多軸指令里的第一個軸。 基本軸的軸數(shù)和順序軸在軸組用于多軸運動。應(yīng)用:例子1 每軸可以有自己的速度,加速度和其它參數(shù)。 BASE(1) UNITS=2000 ‘設(shè)置軸1的轉(zhuǎn)換因子。 SPEED=100 ‘設(shè)置軸1的速度 ACCEL=5000 ‘設(shè)置軸1的加速度 BASE(2) UNITS=2000 ‘設(shè)置軸2 的轉(zhuǎn)換因子 SPEED=125 ‘設(shè)置軸2的速度 ACCEL=10000 ‘設(shè)置軸2的加速度CANCEL類型: 運動控制指令語法: CANCEL/ CANCEL(1)備選: CA說明: CANCEL指令取消軸插補軸組的當(dāng)前運動。速度軌跡(FORWARD,REVERSE,MOVE,MOVEABS,MOVECIRC)將會以DECEL參數(shù)減速直到停止。其它運動會立即停止。 CANCEL(1)指令取消已緩存的運動而不影響正在執(zhí)行的運動, CANCEL工作在缺省軸,除非使用AXIS參數(shù)定義臨時基本軸。注意:。如果在緩存中還有運動,它會繼續(xù)被加載。 ,另外的CANCELS會被忽略。 (1)只取消當(dāng)前緩存中的運動。存儲在任務(wù)緩存中的運動由PMOVE參數(shù)定義,可以被加載到緩存一旦緩存運動被取消。參閱: AXIS,MTYPE,NTYPE,PMOVE,RAPIDSTOP應(yīng)用: 例子1 FORWARD WA(10000) CANCEL 例子2 MOVE(1000) MOVEABS(3000) CANCEL ‘取消運動到3000,而運動到4000。 MOVEABS(4000)注意MOVEMODIFY是修改運動結(jié)束點最好方法。DATUMDATUM 原點搜尋類型: 運動控制指令語法: DATUM(sequence)說明: DATUM指令執(zhí)行6種方法中的一種搜尋原點位置,其為絕對位置同時可以重置跟隨誤差。伺服驅(qū)動器機(jī)構(gòu)原點搜尋用于軸0。軸1用于MC控制單元機(jī)構(gòu)。DATUM使用CREEP速度和目標(biāo)速度用于原點搜尋。伺服驅(qū)動器用于軸0。爬行速度用CREEP參數(shù)設(shè)定。目標(biāo)速度用SPEED參數(shù)設(shè)定。原點搜尋輸入數(shù)由DATUM_IN參數(shù)決定,用于3或7中。DATUM(0)用于軸出錯時重新啟動系統(tǒng),位置不變。參數(shù): sequence0 DATUM(0)指令清除跟隨誤差。將當(dāng)前位置設(shè)定為目標(biāo)位置同時AXISSTATUS狀態(tài)會被清除。注如果產(chǎn)生錯誤的問題仍然存在,誤差不能被清除。1 軸以爬行速度(CREEP)正向運行直到發(fā)現(xiàn)Z信號。目標(biāo)位置重置為0同時糾正測量位置,維持跟隨誤差。2 軸以爬行速度(CREEP)反向運行直到發(fā)現(xiàn)Z信號。目標(biāo)位置重置為0同時糾正測量位置,維持跟隨誤差。3 軸以目標(biāo)速度(SPEED)正向運行,直到碰到原點開關(guān)。隨后軸以爬行速度正向運動直到原點開關(guān)復(fù)位。 目標(biāo)位置重置為0同時糾正測量位置,維持跟隨誤差。4 軸以目標(biāo)速度(SPEED)反向運行,直到碰到原點開關(guān)。隨后軸以爬行速度正向運動直到原點開關(guān)復(fù)位。 目標(biāo)位置重置為0同時糾正測量位置,維持跟隨誤差。5 軸以目標(biāo)速度(SPEED)正向運行,直到碰到原點開關(guān)。隨后軸以爬行速度正向運動直到碰到Z信號。 目標(biāo)位置重置為0同時糾正測量位置,維持跟隨誤差。6 軸以目標(biāo)速度(SPEED)反向運行,直到碰到原點開關(guān)。隨后軸以爬行速度正向運動直到碰到Z信號。 目標(biāo)位置重置為0同時糾正測量位置,維持跟隨誤差。注意: 原點輸入低電平有效。當(dāng)輸入OFF時設(shè)置原點開關(guān)。feedhold,reverse jog,forward jog,forward,reverse limit inputs均是低電平有效。低電平輸入用于使能自動防護(hù)接線。例子:DATUM IN=10 DATUM(5)MOVE類型: 運動控制指令語法: MOV