Epson機器人程式設計初級階(二)

别动我的猫發表於2024-07-15

Wait

等待時間與訊號控制,時間預設單位是秒

Wait Sw(0) =On:等待輸入0變為On狀態
Wait 60.5:等待60.5秒後執行
Wait Sw(0) = Off And Sw(1) = On:等待輸入0變為Off並且出入1變為On狀態
Wait Memsw(0) = On Or Memsw(1) = On:等待儲存位0變為啥On或儲存位1變為On狀態
Wait 1;On 1:等待1秒鐘,然後將輸出1變為On
Wait In(0) Mask 7 = 1:在輸入埠0的低3位變為1之前進行待機
Wait giCounter > 10:等待變數的值大於10
Wait giCounter = 30000,10:在變數的值到達30000之前,待機10秒鐘

Tmr 函式

用於以秒為單位返回計時器開始計時之後的經過時間。
格式 :Tmr (計時器編號)
引數 :計時器編號以表示式或數值指定整數(063),以確定對 64 個計時器中的哪個計時器進行檢查。
返回值 :以實值(單位:秒)返回指定計時器的經過時間。計時器的範圍為 0~約 1.7E+31。計時器的解析度為0.001 秒。

說明 :用於返回指定計時器開始計時之後的經過時間。與 ElapsedTime 函式不同,此函式還要將程式暫停狀態的時間作為經過時間來計算。

可利用 TmReset 重置計時器。

Real overhead
TmReset 0
overHead = Tmr(0)
參閱 ElapsedTime 函式、TmReset

Tmr 函式使用示例

TmReset 0 '重置計時器 0
For i = 1 To 10 '執行 10 次
GoSub Cycle
Next
Print Tmr(0) / 10 '計算並顯示迴圈時間

DO...LOOP

在條件一致期間或者在不一致時到條件一致為止,反覆 DO...LOOP 區段。

格式 1無限迴圈:

Do [{ While | Until } 條件表示式]
    [語句]
[Exit Do]
    [語句]
Loop

格式2指定條件下迴圈:

Do
    [語句]
[Exit Do]
    [語句]
Loop [{ While | Until } 條件表示式]

Do Loop 語句格式中有條件表示式和語句。

條件表示式 表示 True False 的數字或字串表示式。當條件表示式為空(Null)時,條件將作 False 來處理。可省略。

  作為退出 Do...Loop 的另一種方法,在 Do...Loop 中可以隨時隨地插入 Exit Do 語句。Exit Do 常在用於評價 If...Then 等幾個條件之後使用。如果在 If...Then 中使用 Exit Do 語句,則將控制移至 Loop 下一語句。

如果在巢狀的 Do...Loop 語句中使用,則 Exit Do 將控制移至發生迴圈的上 1 級迴圈

If…Then…Else…EndIf

按照指定的條件轉移執行命令。

格式1 :

If 條件表示式 Then
    語句 T1
[ElseIf 條件表示式 Then]
    語句 T1
[Else]
    語句 F1
EndIf

格式2

If 條件表示式 Then 語句 T1 [;語句 T2...] [Else 語句 F1 [;語句 F2...]]

引數

條件表示式:返回真偽值(True/False 的值)的有效條件表示式。真(True)時返回“0”以外的數值,偽(False)時返回“0”。(請參閱下述條件表示式示例。)
語句 T1 :條件表示式的值為真(True)時,也就是滿足條件時執行語句。(可以將多個語句記述在 If...Then...Else 形式的區段中。)
語句 F1 :條件表示式的值為偽(False)時,也就是滿足條件時執行語句。(可以將多個語句記述在 If...Then...Else 形式的區段中。)

說明

  (1) If...Then...Else 在滿足條件時,執行 T1 以後的語句。如果不滿足條件,執行 F1 以後的語句。If...Then...Else 命令的 Else 部分可省略。如果省略 Else 部分而又未滿足條件,將執行 EndIf 後的語句。請用 EndIf 結束 If...Then...Else 語句段,而與有無 Else 無關。

  (2) If...Then...Else 還可以透過段以外的形式使用。是將 If...Then...Else 的所有語句都記述在同一行的 方法。按照此方法使用 If...Then...Else 時,不需要 EndIf。如果滿足此行記述的條件表示式(如果 有相對於條件表示式的真值(True)),將執行 Then Else 之間的語句。如果不滿足條件表示式 (如果有相對於條件表示式的偽值(False)),將執行 Else 後面的語句。If...Then...Else Else 部分 不是必須的。在不滿足條件表示式的情況下(相對於條件表示式是偽值(False)),如果沒有 Else 鍵字,控制將轉至程式中的下一個語句。

在真值(True)時,條件語句輸出 “1” 以外的數值,偽值(False)時輸出 “0”。

GoSub

用於將程式控制移交給子例程。如果結束執行子例程,控制將返回至 GoSub 命令的下一行。

格式 :GoSub {標籤}
標籤:以標籤指定移動目標。程式執行將轉至有該標籤的行。標籤名請指定在 32 字元以內。
但是,開頭字元不能使用數字,請務必使用字母。便籤名+”:”定義標籤,需要在程式碼塊中能找到,標籤名區分大小寫。

GoSub 使用示例

Function main
  Integer var1, var2
  GoSub checkio '使用標籤執行 GoSub
    On 1
    On 2
  Exit Function
  checkio: '子例程的起始位置,定義標籤
    var1 = In(0)
    var2 = In(1)
  If var1 = 1 And var2 = 1 Then
    On 1
  Else
    Off 1
  EndIf
  Return '子例程的結束位置
Fend

系統管理相關命令

Reset:將控制器重置為初始狀態。
SysConfig:顯示系統設定引數。
SysErr:返回最新的錯誤狀態或警告狀態。
Date:顯示日期。
Time:顯示時間。
Date$:以字串返回日期的函式。
Time$:以字串返回時間的函式。
Hour :顯示控制器的累計通電時間。
Stat :返回控制器的狀態位。
CtrlInfo:返回控制器的資訊。
RobotInfo:返回機器人的資訊。
RobotInfo$:返回機器人的文字資訊。
TaskInfo:返回任務資訊。
TaskInfo$ :返回任務的文字資訊。
DispDev:設定當前的顯示裝置。
EStopOn:返回緊急停止狀態。
CtrlDev:返回當前的控制裝置的編號。
Cls:清除執行視窗、操作視窗、命令視窗的文字區域以及清除 TP 的列印皮膚。
Toff:關閉 LCD 上執行行的顯示。
Ton:開啟 LCD 上執行行的顯示。
SafetyOn:返回安全門的狀態。
Eval:執行命令視窗的語句並返回錯誤狀態。
ShutDown:關閉 EPSON RC+、關閉或重啟 Windows。
TeachOn:返回示教模式的狀態。
WindowsStatus:返回 Windows 的啟動狀態。

注: 藍色部分是已經測試能在命令視窗正常使用的命令,主要是學會 Cls 消除報錯即可。

For...Next

按照指定次數反覆執行 For...Next 之間的一系列的語句。 最多巢狀16層。

格式 :For 變數名 = 初始值 To 結束值 [Step 增量值]
    語句
Next[變數名]
*Next後面的變數名可以不寫

For...Next 使用示例

Function fornext
    Integer counter
    For counter = 1 to 10
        Go Pctr
    Next counter
        For counter = 10 to 1 Step -1
            Go Pctr
        Next counter
Fend    

Pallet

用於定義托盤和顯示定義托盤。

格式

(1) Pallet [Outside,] [托盤編號, 點編號 1, 點編號 2, 點編號 3 [, 點編號 4], 分割槽數 1, 分割槽數 2]
(2) Pallet [Outside,] 托盤編號, 座標系資料 1, 座標系資料 2, 座標系資料 3 [, 座標系資料 4],分割槽數 1, 分割槽數 2

Pallet引數

Outside:在指定的行和列的範圍以外生成可接近的托盤。可省略。
托盤編號:以表示式或數值指定托盤編號(015 的整數)。
點編號 13:指定用於托盤定義(標準的 3 點定義)的點變數。定義XY軸的起始點長寬距離
點編號 4:進行 4 點定義時,與點編號 13 同時使用。可省略。
分割槽數 1:以整數指定托盤的點編號 1(座標系資料 1)和點編號 2(座標系資料 2)的分割槽數。範圍為 132767。(分割槽數 1×分割槽數_2 < 32767)
分割槽數 2:以整數指定托盤的點編號 1(座標系資料 1)和點編號 3(座標系資料 3)的分割槽數。範圍為 132767。(分割槽數 1×分割槽數 02 < 32767)
座標系資料 13:直接以點資料指定用於托盤定義(標準的 3 點定義)的座標系。
座標系資料 4:進行 4 點定義時,與座標系資料 13 同時使用。可省略。

這裡要重點關注:點編號P1,P2,P3,P4的相對位置,不能隨意打亂,否則影響系統生成矩形範圍。標準生成的是矩形,錯亂生成是菱形。

Xqt

後臺執行程式,多執行緒方式程式
Xqt:呼叫指定的函式,作為一個單獨的任務執行,與call不同的是:使用xqt任務執行後臺程式將在後臺執行,Main函式會立刻執行下一個語句而不需要等待xqt任務完成。

不要使用在機器人的動作控制中

LoadPoints

用於將點檔案讀入到機器人點儲存區域中

語法:LoadPoints 檔名 [, Merge]
Merge :用於讀入新的點之前,不想清除當前的點時進行設定。如果進行設定,則將新的
點新增到設定的點中。檔案中已存在要新增的點時,執行覆寫。可省略。

往往在實際應用中,相同的動作程式可能需要在多個空間中重複操作,那麼就需要示教出多個點位檔案。

LoadPoints 使用示例

Function main
  '將通用的點讀入到當前的機器人中
  LoadPoints "R1Common.pts"
  '合併部件模型 1 的點
  LoadPoints "R1Model1.pts", Merge
機器人 2
  ' 讀入機器人 2 的點檔案
  LoadPoints "R2Model1.ps"
Fend

TCP/IP命令

Setnet:執行時或從命令視窗中設定通訊埠引數
OpenNet:開啟TCP/IP埠
ChkNet:返回埠狀態:等待讀取的位元組數或錯誤值
Print#:從埠傳送字元
Input#:從埠接收字元到一個或多個變數中
WaitNet#:等待網路埠連線成功
CloseNet:關閉TCP/IP埠

Pallet(托盤)動作讀取多點位檔案例項

1.編寫執行程式,分2個函式,1托盤執行程式;2點檔案讀取程式
'1.托盤程式
Function Pat
    Call inition '初始化程式開啟電源,設定速度
    Integer A1 '定義整數變數
    Pallet 0, P11, P12, P13, 4, 4 '運算4*4托盤點位
    For A1 = 1 To 16 '迴圈抓取12次 = 4*4
        Jump P10 '去抓取點
        On 11 '開啟夾爪
        Wait 0.5 '等待0.5秒
        Jump Pallet(0, A1) '放到托盤點
        Off 11 '鬆開夾爪
        Wait 0.5 '等待0.5秒
    Next
    Home '回到起始點
Fend
'2.點檔案示例 Function ReadPoint Do If Sw(10) Then '當輸入訊號位10開啟時,讀取第一個點檔案 LoadPoints "point1.pts" Call Pat EndIf If Sw(11) Then '當輸入訊號位11開啟時,讀取預設的點檔案 LoadPoints "robot1.pts" Call Pat EndIf Loop Fend
2.讀入程式,驗證語法錯誤

3.開啟“執行視窗”,選擇讀取點檔案函式 ReadPoint 執行。然後開啟“I/O監視器” ,滑動到下面,可以看到輸入位10,11都是關閉的

4.開啟simulator模擬裝置,可以看到模擬機器人沒有動作,因為輸入位10,11沒有一個開啟。

5.開啟輸入位10,機器人將往point1的點位托盤裡裝載東西。

6. 開啟輸入位11,機器人將往預設點位托盤裝置東西。

相關文章