FOXBOT编程手册.docx
《FOXBOT编程手册.docx》由会员分享,可在线阅读,更多相关《FOXBOT编程手册.docx(95页珍藏版)》请在冰豆网上搜索。
FOXBOT编程手册
富士康.工業機器人
FOXBOT
編程手冊
(Ver.2007.1)
簡介
FOXBOT的編程手冊由FOXBOT指令手冊和CypressEnable編輯器語言參考手冊組成。
FOXBOT指令手冊主要用于機器人的運動控制指令;CypressEnable主要用于程序的變量命名﹑流程控制﹑子程序等。
程序編輯界面是CypressEnable編輯器﹐程序中的語句語法要求應符合CypressEnable的要求。
FOXBOT
指令手冊
目錄
ACCEL1
CURPOS1
DECEL1
DEFIO1
DEFPOS2
DELAY2
DEFJNT2
DIST2
DRIVE3
DRIVEA3
FIG3
GOHOME3
HOME4
IN4
J2P5
MOVE5
OUT6
POSRX7
POSRY7
POSRZ7
POSX7
POSY8
POSZ8
RESETIO8
ROBOTSTOP8
ROTATE9
SETIO9
SPEED10
WAIT10
附錄10
ACCEL
功能:
指定內部加速度比例
格式:
ACCEL<加速度比例>
範例:
ACCEL50
CURPOS
功能:
取得目前的位置(typeP格式)
格式:
Positiontype變數=CURPOS
說明:
範例:
DEFPOSlp1
lp1=CURPOS
MSGBOXPOSX(lp1)&chr(13)&chr(10)&_
POSY(lp1)&chr(13)&chr(10)&_
POSZ(lp1)&chr(13)&chr(10)&_
POSRX(lp1)&chr(13)&chr(10)&_
POSRY(lp1)&chr(13)&chr(10)&_
POSRZ(lp1)&chr(13)&chr(10)&_
FIG(lp1)
DECEL
功能:
指定內部減速度比例
格式:
DECEL<減速度比例>
說明:
範例:
DECEL50
DEFIO
功能:
聲明IO變數
格式:
DEFIO<變量名稱>=,<端口地址>
說明:
通過變量名聲明指定變量作為一個IO變量
選擇IO變量的類型。
IO變量的類型包括﹕BIT(1位)﹑BYTE(8位)﹑INTEGER(16位)
<端口地址>指定輸入輸出IO的開始號
相關指令﹕INOUTSETRESET
範例:
DimaASInteger
DEFIOsamp1=INTEGER,0
’聲明一個來自端口15的IO字類型變量。
Sampl返回值是16位的來自從0到15端口整型
INa=samp1
Msgbox
Notes:
對于字或整型,使用MSB作為一個信號位。
Byte
允許數字值范圍﹐MSB端口號:
開始端口地址+7
Integer
允許數字值范圍﹐MSB端口號:
開始端口地址+15
DEFPOS
功能﹕聲明一個位置類型變量
格式﹕DEFPOS<變量名>
舉例﹕DEFPOSlpx‘聲明lpx作為位置類型變量
注意﹕一個語句只能聲明一個位置變量類型
相關指令poseP
格式﹕DimlpxasposeP
DELAY
功能﹕暫停程序處理,延時一個指定的周期時間,
格式﹕DELAY
說明﹕程序處理停止直到暫停時間到。
單位:
ms
舉例﹕
DIMli1AsInteger
Delay100
‘延時100ms(0.1s)
Delayli1+10
‘延時li1+10ms
DEFJNT
功能﹕聲明一個關節類型變量
格式﹕DEFJNT<變量名>
舉例﹕
DEFJNTljx
‘聲明ljx作為一個關節類型變量
DIST
功能﹕返回兩點之間的距離
格式﹕DIST(<位置類型變量1>,<位置類型變量2>)
說明﹕獲得位置1和位置2之間的距離
舉例﹕
Dimlf1ASSingle
DEFPOSlp1
DEFPOSlp2
lp1=CURPOS
lp1.x=lp2.x+10
lp1.y=lp2.y+10
lp1.z=lp2.z+10
lp1.rx=lp2.rx+10
lp1.ry=lp2.ry+10
lp1.rz=lp2.r2+10
lf1=DIST(lp1,lp2)
‘lf1等于lp1和lp2之間的距離
MSGBOXlf1
DRIVE
功能:
執行每個軸的相對運動
格式:
DRIVE(<軸號>﹐<相對運動量>)
說明﹕移動指定軸﹐移動量用角度來表示,角度的正負表示移動的方向。
舉例﹕DRIVE1,30
'移動1軸﹐30度。
DRIVEA
功能﹕執行每個軸的絕對運動
格式﹕DRIVEA<軸號>﹐<角度>
說明﹕移動指定軸到指定角度
舉例﹕
DRIVEA1,-30
‘移動1軸到-30度。
FIG
功能﹕提取一個形態。
格式﹕FIG(位置類型變量)
說明:
從位置數據提取一個形態
舉例﹕
DIMlp1ASposeP
li1=FIG(lp1)
‘指定一個lp1的形態給li1
GOHOME
功能﹕移動到HOME語句定義的坐標位置
格式:
GOHOME
說明:
移動機器人使用PTP控制從當前位置到HOME位置
使用HOME語句聲明一個原點位置
如果沒有設置HOME﹐執行這個語句將會出現錯誤。
舉例﹕GOHOME
‘機器人從當前位置移動到原點位置
HOME
功能﹕聲明任意位置為原點位置
格式﹕HOME<位置類型變量>
說明﹕聲明任意的位置類型的坐標作為原點位置
舉例﹕DimJJAsposeJ
Speed30
JJ.J5=20
'賦值20度給JJ.J5,其他JJ的組成是0
HomeJJ
'設置JJ作為原點位置
GoHome
'移動到原點位置
End
IN
功能﹕IO變量值賦給指定變量
格式﹕IN<變量名>=<IO變量>
舉例﹕
'!
TITLE"EXAMPLE_IN"
Dimli1AsInteger
'Declareli1andli2asInteger
Dimli2AsInteger
'Declaresamp1asTypeIOvariable,
DEFIOsamp1=Integer,48
'lengthis16(integer),startingfromIO(48)
'GetthecurrentIOstatusdefinedinsamp1
'intointegerformatandassignittoli1
Inli1=samp1
'GetIOstatusstartingfrom56intoaninteger
'andassignittoli2
Inli2=IO(56)
'Showli1andli2
'(ifonlyIO(56)ison,li1=256meaning100000000
'inbinarystartingfromport48andli2=1)
MsgBox"li1="&li1&Chr(13)&Chr(10)_
&"li2="&li2
J2P
功能﹕關節類型變量轉換成位置類型變量。
格式﹕J2P<關節類型變量>,<位置類型變量>
舉例﹕
Dimlj1asposeJ
Dimlp1asposeP
lj1.j1=0
lj1.j2=0
lj1.j3=0
lj1.j4=0
lj1.j5=0
lj1.j6=0
J2Plj1,lp1
Msgboxlp1.x&“”lp1.y&“”lp1.z_
lp1.rx&“”lp1.ry&“”lp1.rz
MOVE
功能﹕移動機器人末端操作器到指定坐標。
格式﹕MOVE<插補方法>,@<到達目標位置確認形式>,<路徑目標位置>,
說明﹕移動機器人從當前位置到指定的目標位置。
對于<位置>﹐位置類型
,關節類型可以使用。
插補方法
說明
P(PTP)
PTP(點到點)﹕運動從一個點到另一個點﹐機器人移動的路徑依賴機器人的姿態﹐不是一條直線。
運動路徑可以不是一條直線
L
CP控制,到達目標位置的路徑是一條直線
運動路徑是一條直線
機器人手臂從一個運動到另一個運動有三種方法確定第一個運動的完成。
@0:
運動位置到達目標位置就算到達。
@P:
實際位置到達目標位置附近即算到達,且不減速而往下一位置。
@E:
編碼器值核實點,實際位置到達目標位置,停下來﹐檢查編碼器的值是否在一定時間內不超出一定範圍才算到達。
下面的例子都是機器人從當前位置P1經過P2
到達P3﹕
‘PROGRAMPASS_MOVE
‘TAKEARM
MOVEP,@P,P
(2),S=10
MOVEP,@0,P(3),S=10
END
PROGRAMEND_MOVE
TAKEARM
MOVEL,@0,P
(2),S=10
MOVEL,@0,P(3),S=10
END
PROGRAMENCODER_MOVE
TAKEARM
MOVEL,@E,P
(2),S=10
MOVEL,@0,P(3),S=10
END
OUT
功能﹕給輸出IO變量賦值
格式﹕OUT=<變量名>
舉例﹕'!
TITLE"EXAMPLE_OUT"
Dimli1AsInteger
'Declareli1asInteger
'Declaresamp1asTypeIOvariable,lengthis16(integer),startingfromIO(30)
DEFIOsamp1=Integer,30
'assign2^5-1=31(11111inHexvalue)toli1
li1=2^5-1
'Outputtheli1datafromtheportdeclaredinsamp1
Outsamp1=li1
'Delay3seconds
Delay3000
'assign2^5-1=31(11111inHexvalue)toli1
li1=2^5-1
'Outputtheli1datafromtheport38
OutIO(38)=li1
POSRX
功能﹕獲得繞X軸旋轉的角度
格式﹕POSRX<位置類型變量>
舉例﹕
Dimlf1AsSingle
DEFPOSlp
lp1=CURPOSE
lf1=POSRX(lp1)
‘指定X軸旋轉lp1部分給lf1
POSRY
功能﹕獲得繞Y軸旋轉的角度
格式﹕POSRY<位置類型變量>
舉例﹕
Dimlf1AsSingle
DEFPOSlp
lp1=CURPOSE
lf1=POSRY(lp1)
‘指定Y軸旋轉lp1部分給lf1
POSRZ
功能﹕獲得繞Z軸旋轉的角度
格式﹕POSRZ<位置類型變量>
說明﹕從位置坐標系中提出繞Z軸旋轉部分
舉例﹕Dimlf1AsSingle
DEFPOSlp
lp1=CURPOSE
lf1=POSRZ(lp1)
‘指定Z軸旋轉lp1部分給lf1
POSX
功能﹕獲得X坐標
格式﹕POSX<位置類型變量>
舉例﹕DIMlf1AsSingle
DEFPOSlp1
lf1=POSX(lp1)
‘指定lp1的X部分給lf1
POSY
功能﹕獲得Y坐標
格式﹕POSY<位置類型變量>
說明﹕從位置類型或向量類型坐標值提出Y部分。
舉例﹕
DIMlf1AsSingle
DIMlp1AsposeP
lf1=POSY(lp1)
‘指定lp1的Y部分給lf1
POSZ
功能﹕獲得Z坐標
格式﹕POSZ<位置類型變量>
說明﹕從位置類型變量坐標值提出Z部分。
舉例﹕DIMlf1AsSingle
DIMlp1AsposeP
lf1=POSZ(lp1)
‘指定lp1的Z部分給lf1
RESETIO
功能﹕設置一個IO口為OFF
格式﹕RESETIO
說明﹕設置通過IO變量標明的端口為OFF
舉例﹕
‘!
titile“example_setio”
‘takearm
RESETIOIO(40)
‘設置IO40為OFF
ROBOTSTOP
功能﹕機器人運行停止
格式﹕ROBOTSTOP
說明﹕機器人進入持續停止狀態﹐關閉馬達電源﹐關閉機器人正在操作的輸出信號。
舉例﹕‘PROGRAMTSR1
ROBOTSTOP
‘停止機器人
END
ROTATE
功能﹕繞指定向量執行旋轉運動
格式﹕ROTATE<旋轉平面>,<角度>,<向量>,<速度百分比>
說明﹕
旋轉平面﹕XYH,XZH,YZH;XY,XZ,YZ
旋轉平面與XYH,XZH,YZH平行,向量是相對工具坐標系,
旋轉平面與XY,YZ,YZ平行﹐向量是相對工件坐標系
半徑應是向量在指定平面的投影距離。
注意﹕機器人6軸端面與指定旋轉平行﹐才能畫圓。
范例﹕
'AssignJ(0)position
J(0).J1=0
J(0).J2=0
J(0).J3=90
J(0).J4=0
J(0).J5=30
J(0).J6=0
'MovetoJ(0)
MOVEP,J(0),S=50
'AssignJ(0).J2anewposition
J(0).J2=60
'MovetonewJ(0)
MOVEP,J(0),S=50
'Rotate360degreeonXYplanaroundavectorV(0)describedinToolCoordinate
ROTATEXYH,360,V(0),S=100
'AssignJ(0).J2anewposition
J(0).J2=0
'MovetonewJ(0)
MOVEP,J(0),S=50
End
SETIO
功能﹕設置一個IO口為ON。
格式﹕SETIO(IO變量)
說明﹕設置指定IO為ON
舉例‘!
titile“example_setio”
‘takearm
SETIO(40)
‘設置IO(24)點為ON
SPEED
功能﹕指定內部關節合成速度。
格式﹕SPEED<運動速度>
說明﹕運動速度是內部關節合成最大速度的百分比(%)﹐范圍:
0.1-100
最大速度是指TCP點的最大速度
舉例﹕
SPEED50
機器人有內部速度和外部速度。
外部速度是指示教器上設定的速度
內部速度是指用SPEED指令設定的值。
實際速度=最大速度*內部速度*外部速度
例如﹕
內部速度=70%
外部速度30%
實際速度=最大速度*0.7*0.3
舉例﹕
SPEED50
WAIT
功能﹕程序停止直到條件滿足。
格式﹕WAIT<條件表達>
說明:
程序被停止直到條件被滿足。
舉例:
WAITIO(10)=ON
’程序等一直到IO(10)為ON
附錄
指令
說明
頁數
ACCEL
指定內部加速度比例
CURPOS
取得目前的位置(typeP格式)
DECEL
指定內部減速度比例
DEFIO
宣告IO變數
DEFJNT
宣告Jointtype變數
DEFPOS
宣告Positiontype變數
DELAY
使程式執行延遲一段指定的時間
DIST
取得兩點間的距離
DRIVE
執行單軸之相對運動
DRIVEA
執行單軸之絕對運動
FIG
取得一typeP變數之figure值
GOHOME
移動至HOME指令所指定之位置(Home位置)
HOME
指定Home位置
IN
將IO埠狀態資料給一變數(此資料定義於一IO變數內)
J2P
關節變量轉換成位置變量
MOVE
移動至指定的位置
OUT
輸出IO狀態資料至IO埠(此IO埠定義於一IO變數內)
POSRX
取得一typeP變數之RX值
POSRY
取得一typeP變數之RY值
POSRZ
取得一typeP變數之RZ值
POSX
取得一typeP變數之X值
POSY
取得一typeP變數之Y值
POSZ
取得一typeP變數之Z值
RESETIO
使一個IO埠設為OFF
ROBOTSTOP
使robot停止並SERVOOFF
ROTATE
對某一指定向量作旋轉運動
SETIO
使一個IO埠設為ON
SPEED
指定內部速度比例
WAIT
根據某一狀況暫停程式執行
CypressEnable
編輯器
語言參考手冊
目錄
CypressEnable程序編寫規范0
注釋0
數字0
變量和常量名0
變量類型1
其他數據類型2
控制結構3
子程序和函數5
ByRef&ByVal參數傳遞5
文件輸入輸出6
數組7
腳本語言概述8
函數和語句快速參考8
語言參考A-Z12
Abs函數12
Asc函數12
Atn函數13
CBool函數13
CDate函數13
CDbl函數14
Chr函數14
CInt函數15
CLng函數15
Close語句15
Const語句16
Cos函數17
CSng函數17
CStr函數17
CVar函數18
Date函數18
Day函數19
Dim語句19
Do...Loop語句20
End語句20
EOF函數21
Exit語句21
Exp函數22
FileCopy函數22
FileLen函數22
Fix函數22
Foreach…Next語句23
For...Next語句23
FreeFile函數24
Function語句24
Global語句25
GoTo語句26
Hour函數26
If...Then...Else語句26
Input#語句27
Input函數28
InStr函數28
Int函數29
IsArray函數29
IsDate函數29
函數IsEmpty30
IsNull函數30
IsNumeric函數30
Kill語句31
LBound函數31
Lcase函數32
Left函數32
Len函數33
Let語句33
LineInput#語句34
LOF函數34
Log函數34
函數Mid35
Minute函數35
Month函數36
Name語句36
Now函數36
OnError語句36
Open語句37
OptionBase語句38
OptionExplicit語句38
Print方法39
Randomize語句41
ReDim語句41
Rem語句41
Right函數42
Rnd函數43
Second函數43
Seek函數44
Seek語句44
SelectCase語句45
SendKeys函數46
Sin函數46
Space函數47
Sqr函數47
Static語句48
Stop語句48
Str函數49
StrComp函數49
String函數50
Sub語句50
Tan函數51
Time函數51
Timer事件51
Trim,Ltrim﹐Rtrim函數52
Type語句52
Ubound函數53
UCase函數54
Val函數54
VarType54
Weekday函數55
While...Wend語句55
Write#語句56
Year函數56
CypressEnable程序編寫規范
這部分主要描述Enable語言的一般元素,包括注釋﹑語句﹑數字的不同表達形式﹑變量數據類型(包括用戶定義類型)﹑多流程程序控制結構等。
注釋
格式﹕’注釋內容
說明﹕注釋是不可執行的代碼行﹐是為了便于編程人員閱讀程序而加入的。
注釋目前只能單獨占一行﹐Enable將忽略出現在撇號或者Rem之后的任何文本。
Rem和所有其他的關鍵字以及Enable的大部分名稱都是大小寫不敏感的。
范例﹕
MsgBoxMsg'顯示信息
語句
說明﹕在Enable里沒有語句結束符﹐一行可以放多條語句﹐通過“:
”隔開。
范例﹕
x.AddPoint(25,100):
x.AddPoint(0,75)
等價于﹕
x.AddPoint(25,100)
x.AddPoint(0,75)
續行符
在Enable中續行符用下划線“_”表示﹐在續行符”_”前后都要有空格。
范例﹕
x.AddPoint_
(25,100)
數字
CypressEnable支持三種數字表達形式﹕十進制﹑八進制和十六進制。
本手冊中所使用的大部分數字用十進制表示。
使用八進制或者十六進制需要分別在數字前加前綴”&O”或”&H”。
變量和常量名
變量和常量名必須以字母開頭﹐可以包含大寫字母A~Z﹑小寫字母a~z﹑下划線”_”和數字0~9。
變量與常量名都不超過40個字符﹐也不能使用保留字(可參見本手冊語言概述部分的保留字表)。
但是對象成員名和屬性名不受此項規則的限制﹐可以使用保留字。
變量類型
Variant變體變量
說明﹕與VB類似﹐當在CypressEnable中引入變量時不必在首行聲明(如果使用了optionexplicit則例外﹐可參見optionexplicit說明)。
如果使用一個變量但沒有事先聲明則系統隱式聲明其為Variant類型。
Variant變量也可以使用”Asvariant”以DimxAsVariant的形式顯式地聲明。
Variant數據類型能夠存儲數值﹑字符串﹑日期和時間。
使用Variant類型變量時不必顯式地從一個類型轉換到另外一個類型﹐數據類型轉換是自動完成的。
格式﹕Dim變量名As變量類型
范例﹕
SubMain
Dimx'va