速度, 加減速設定
Integer slow, accSlow, accFast, fast, decSlow, decFast
Function 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, i
fileNum = FreeFile
'寫檔案 WOpen
WOpen "Test.DAT" As #fileNum
For i = 0 To 100
Print #fileNum, i
Next
Close #fileNum
' 繼續寫 AOpen
AOpen "Test.DAT" As #fileNum
For i = 101 To 200
Print #fileNum, i
Next
Close #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) = True
For 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
Next
Fend
輸出結果
-----修改前-----------------
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:False
10: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
Next
Fend
輸出結果
-----修改前-----------------
( 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 boxShow
Box 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 boxShow
Go InitPos
Print Here
Wait (2)
Go InputTop
Print Here
Go InObj1PickFront
Print Here
If BoxDef(1) = True Then
BoxClr 1
EndIf
Wait (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 InitRobot
If Motor = Off Then
Motor On
EndIf
Power High
Speed 50
Accel 75, 75
Fend
在Main.prg新增副程式 GetInObj1
到進料區夾取Object #1
'到進料區夾取Object #1
Function GetInObj1
Print "###進料區###"
'Call boxShow
Go InitPos
Print Here
Wait (2)
Go InputTop
Print Here
Go InObj1PickFront
Print Here
If BoxDef(1) = True Then
BoxClr 1
EndIf
Wait (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 GetInObj1
Fend
清除EPSON RC+ 7.0 的Run 視窗
' 清除EPSON RC+ 7.0 的Run 視窗
Function ClsTest
Integer i
Randomize '用於進行亂數系列的初始化。
Do
For i = 1 To 10
Print Rnd(10) '產生亂數 0~10 實數
Next
Wait 3
Cls
Loop
Fend
輸出結果
設置路徑運動 CP On/Off
一般點到點動作會像是下圖中(通常動作, CP Off),
若打開CP On, 則會變成路徑運動, 會將點到點變成一個連續軌跡運動, 不會發生停頓現象
CP 使用範例
CP On
Move 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 xqtTest
Xqt 2, iotask
Fend
Function iotask
Boolean flag
flag = False '紀錄某個IO是否已經被啟動
Do
If Sw(8) = True And flag = False Then
flag = True
Print "啟動..."
Else
If Sw(8) = False Then
flag = False
Print "停止..."
Else
Print "執行中..."
EndIf
EndIf
Wait 5
Loop
Fend
根據I/O觸發, 加入對應手臂動作
Sw 函數
用作返回指定輸入位元狀態的函數。
SetSw 用於設置虛擬I/O 的輸入。
SetSw 使用範例
setsw 2, on '將第2 個輸入位元設為ON
Time 函數
Print "The current time is:", Time$