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