簡(jiǎn)介:ABB機(jī)器人雙工位預(yù)約程序 1)有如下雙工位生產(chǎn) 2)工藝過(guò)程如下: 人工完成1#工位上料后按按鈕di_1(按鈕不帶保持,即人手松開信號(hào)為0))機(jī)器人焊接1#工位。 此過(guò)程中人工對(duì)2#工位上下料,完成后按di_2完成預(yù)約(即不需要等機(jī)器人完成1#工作)。 機(jī)器人完成……
1)有如下雙工位生產(chǎn)
2)工藝過(guò)程如下:
人工完成1#工位上料后按按鈕di_1(按鈕不帶保持,即人手松開信號(hào)為0))機(jī)器人焊接1#工位。
此過(guò)程中人工對(duì)2#工位上下料,完成后按di_2完成預(yù)約(即不需要等機(jī)器人完成1#工作)。
機(jī)器人完成1#工作后,由于收到過(guò)di_2預(yù)約信號(hào),機(jī)器人自動(dòng)去完成2#工位
3)我們通過(guò)中斷來(lái)實(shí)現(xiàn)。
4)中斷的意義為,機(jī)器人后臺(tái)在不斷掃描(類似PLC),和機(jī)器人前臺(tái)運(yùn)動(dòng)不沖突。后臺(tái)實(shí)時(shí)掃描到信號(hào)就會(huì)去執(zhí)行設(shè)定的中斷程序,中斷程序里沒有運(yùn)動(dòng)指令,前臺(tái)機(jī)器人不停,不影響運(yùn)動(dòng)
5)新建一個(gè)例行程序,取名tr_1,注意:類型選中斷(trap)

6)進(jìn)入中斷程序,插入指令如下,即當(dāng)機(jī)器人執(zhí)行中斷程序時(shí),給bool量置true同理設(shè)置第二個(gè)中斷程序

7)進(jìn)入主程序,設(shè)置中斷及對(duì)應(yīng)的io信號(hào)
37行的意思是,任何時(shí)候di_1信號(hào)0變1,就會(huì)觸發(fā)執(zhí)行tr_1中斷程序,即置flag1為
35-40行程序只要運(yùn)行過(guò)一遍即可,類似于設(shè)置開關(guān),不需要反復(fù)運(yùn)行
8)主要程序如下。即如果沒有人給di信號(hào),機(jī)器人就在home位等待。
9)
5、與相機(jī)通訊的Socket收發(fā)數(shù)據(jù)處理與提取
1)相機(jī)通常發(fā)送字符串給機(jī)器人,比如”1.23,4.56,7.89D”,即x為1.23,y為4.56,z的角度為7.89,用D作為結(jié)束符,數(shù)據(jù)之間用“,”隔開。
2)如果機(jī)器人收到上述字符串,如何把字符串提取出來(lái)并付給變量deltaX,deltaY,和thetaZ?
3)建立若干num變量,用以存儲(chǔ)過(guò)程數(shù)據(jù),比如StartBit1,表示x的數(shù)據(jù)從第幾位開始,Endbit1表示x的數(shù)據(jù)結(jié)束是第幾位,Lenbit1表示x數(shù)據(jù)的長(zhǎng)度,s1表示提取的x的值的字符串
4)
5)先假設(shè)x的第一位是1,給Startbit1賦值為
6)插入函數(shù)strfind,查找第一個(gè)“,”在第幾位,得到EndBit1值
7)
8)EndBit1減去StartBit1就是x的數(shù)據(jù)長(zhǎng)度
9)同理得到y(tǒng)和theta的信息
10)通過(guò)StrPart函數(shù),提取從StartBit1開始到LenBit1結(jié)束的字符串,即x的值的字符串
11)
12) 同理得到y(tǒng)和z的字符串
13)通過(guò)StrToVal函數(shù),把s1轉(zhuǎn)為num型,付給delta_x, StrToVal函數(shù)的反饋值為bool量,即轉(zhuǎn)換成功為true不成功為
14)同理得到delta_y和
15) 成功后可以寫屏測(cè)試,如下圖

文章來(lái)源,
工業(yè)機(jī)器人維修官網(wǎng):etongyue.com