速度, 加減速設定
Integer slow, accSlow, accFast, fast, decSlow, decFastFunction accTest slow = 20 '低速的設置 fast = 100 '高速的設置 accSlow = 20 '低加速度的設置 decSlow = 20 '低減速度的設置 accFast = 100 '高加速度的設置 decFast = 100 '高減速度的設置Accel accSlow, decSlow
Speed slow
Accel accFast, decFast
Speed fast
檔案寫入
'寫檔案練習Function writeFileTest Integer fileNum, ifileNum = FreeFile
'寫檔案 WOpenWOpen "Test.DAT" As #fileNum
For i = 0 To 100
Print #fileNum, i
NextClose #fileNum
' 繼續寫 AOpen AOpen "Test.DAT" As #fileNum
For i = 101 To 200
Print #fileNum, i
NextClose #fileNum
Fend
知道目前座標位置及姿態 Print Here
Function whereAmI Print "###進料區###"Go InitPos
Print Here
Wait (2)
Go InputTop
Print Here
Go InObj1PickFront
Print Here
Wait (2)
Move InObj1Pick
Print Here
Wait (2)
Move InObj1PickFront
Print Here
Go InputTop
Print Here
Go InitPos
Print Here
Fend
跑完輸出結果, 每移動至新座標後, 列印出目前位置及姿態
###進料區###
X: 415.000 Y: 0.000 Z: 570.000 U: 0.000 V: -90.000 W: -180.000 /R /A /NF /J6F0 /J4F0 /0
X: 298.526 Y: -288.283 Z: 570.000 U: 0.000 V: -90.000 W: 136.000 /R /A /NF /J6F0 /J4F0 /0
X: 452.691 Y: -55.625 Z: 227.363 U: -44.000 V: -88.705 W: 180.000 /R /A /F /J6F0 /J4F0 /0
X: 564.160 Y: -163.270 Z: 223.860 U: -44.000 V: -88.705 W: 180.000 /R /A /F /J6F0 /J4F0 /0
X: 452.691 Y: -55.625 Z: 227.363 U: -44.000 V: -88.705 W: 180.000 /R /A /F /J6F0 /J4F0 /0
X: 298.526 Y: -288.283 Z: 570.000 U: 0.000 V: -90.000 W: 136.000 /R /A /NF /J6F0 /J4F0 /0
X: 415.000 Y: 0.000 Z: 570.000 U: 0.000 V: -90.000 W: -180.000 /R /A /NF /J6F0 /J4F0 /0
Boolean 使用範例: 一維陣列
'Boolean 範例Function booleanTest Integer i; Boolean A(10) Print "-----修改前-----------------"For i = 1 To 10
Print A(i)
Next Print "-----修改後-----------------" A(2) = True A(4) = TrueFor i = 1 To 10
Print A(i)
Next Print "-----自定義列印-----------------"For i = 1 To 10
If A(i) = True Then
Print i, ":True" Else Print i, ":False" EndIf NextFend
輸出結果
-----修改前-----------------
0
0
0
0
0
0
0
0
0
0
-----修改後-----------------
0
-1
0
-1
0
0
0
0
0
0
-----自定義列印-----------------
1:False 2:True 3:False 4:True 5:False 6:False 7:False 8:False 9:False10:False
Boolean 使用範例: 二維陣列
'Boolean 使用範例: 二維陣列Function booleanTest2D Integer i, j; Boolean A(3, 3) Print "-----修改前-----------------"For i = 1 To 3
For j = 1 To 3
Print "(", i, j, ")", A(i, j)
Next Next A(1, 2) = True Print "-----修改後-----------------"For i = 1 To 3
For j = 1 To 3
Print "(", i, j, ")", A(i, j)
Next NextFend
輸出結果
-----修改前-----------------
( 1 1) 0
( 1 2) 0
( 1 3) 0
( 2 1) 0
( 2 2) 0
( 2 3) 0
( 3 1) 0
( 3 2) 0
( 3 3) 0
-----修改後-----------------
( 1 1) 0
( 1 2) -1
( 1 3) 0
( 2 1) 0
( 2 2) 0
( 2 3) 0
( 3 1) 0
( 3 2) 0
( 3 3) 0
偵測進入感興趣空間Box
定義4個感興趣空間Box
'Box 測試Function boxShowBox 1, 600, 700, -300, -200, 0, 500
Box 2, 500, 600, -400, -300, 0, 500
Box 3, 400, 500, -500, -400, 0, 500
Box 4, 300, 400, -600, -500, 0, 500
Fend
當手臂進入感興趣空間1時, 會清除感興趣空間1
Function boxTest Print "###進料區###" 'Call boxShowGo InitPos
Print Here
Wait (2)
Go InputTop
Print Here
Go InObj1PickFront
Print Here
If BoxDef(1) = True Then
BoxClr 1
EndIfWait (2)
Move InObj1Pick
Print Here
Wait (2)
Move InObj1PickFront
Print Here
Go InputTop
Print Here
Go InitPos
Print Here
Fend
Call 使用範例
新增副程式檔案名稱 Init
在Init.prg新增副程式 InitRobot
Function InitRobotIf Motor = Off Then
Motor On EndIfPower High
Speed 50
Accel 75, 75
Fend
在Main.prg新增副程式 GetInObj1
到進料區夾取Object #1
'到進料區夾取Object #1Function GetInObj1 Print "###進料區###" 'Call boxShowGo InitPos
Print Here
Wait (2)
Go InputTop
Print Here
Go InObj1PickFront
Print Here
If BoxDef(1) = True Then
BoxClr 1
EndIfWait (2)
Move InObj1Pick
Print Here
Wait (2)
Move InObj1PickFront
Print Here
Go InputTop
Print Here
Go InitPos
Print Here
Fend
主程式只需呼叫副程式InitRobot和GetInObj1
'Call呼叫副程式Function CallSubroutine Call InitRobot Call GetInObj1Fend
清除EPSON RC+ 7.0 的Run 視窗
' 清除EPSON RC+ 7.0 的Run 視窗Function ClsTest Integer i Randomize '用於進行亂數系列的初始化。 DoFor i = 1 To 10
Print Rnd(10) '產生亂數 0~10 實數 NextWait 3
Cls
LoopFend
輸出結果
設置路徑運動 CP On/Off
一般點到點動作會像是下圖中(通常動作, CP Off),
若打開CP On, 則會變成路徑運動, 會將點到點變成一個連續軌跡運動, 不會發生停頓現象
CP 使用範例
CP OnMove P1
Move P2
CP Off
在IO標籤編輯器自訂輸入IO, 編號8~11:分別為取得進料區料號1~4
編輯完成後按下CTRL+S, 則在IO監視器可以看到剛才新贈的標籤
Xqt 執行某一個io任務
Oport 與Sw 的差異
Oport 與Sw 命令存在明顯差異。兩者都用於檢查I/O 狀態,但檢查的I/O 類型不同。Sw 命令用於檢
查輸入位元。Oport 命令用於檢查標準及擴展硬體的輸出位元。這些硬體埠用於與控制器外部裝置進
行相互通訊的獨立輸出位元。
以下範例為監控輸入腳位8, 預設為False
Function xqtTestXqt 2, iotask
Fend
Function iotask Boolean flagflag = False '紀錄某個IO是否已經被啟動
DoIf Sw(8) = True And flag = False Then
flag = True Print "啟動..." ElseIf Sw(8) = False Then
flag = False Print "停止..." Else Print "執行中..." EndIf EndIfWait 5
LoopFend
根據I/O觸發, 加入對應手臂動作
Sw 函數
用作返回指定輸入位元狀態的函數。
SetSw 用於設置虛擬I/O 的輸入。
SetSw 使用範例
setsw 2, on '將第2 個輸入位元設為ONTime 函數
Print "The current time is:", Time$





留言列表
