1、 1 RAPID 參考手冊 指令 張建輝 韓 鵬2 1.指令 1.1 AccSet降低加速度 用途: 當處理較大負載時使用 AccSet 指令。 它允許減慢加速度和減速度,使機器人有一個更平滑的運動。 該指令只能在主任務 T_ROB1 中使用,或者如果處於多運動系統,在 Motion 任務中。 基本範例: AccSet 的基本範例說明如下。 例 1 AccSet 50, 100; 加速度備限制到正常值的 50%。 例 2 AccSet 100, 50; 加速度斜線限制到 正常值的 50%。 項目: AccSet Acc Ramp Acc: 資料類型: num(數值) 加速度和減速度作為正常值的
2、百分比。 100%對應最大加速度。 最大值: 100%。 輸入值 , Ramp : = ; 相關資訊: 有關資訊 參看 在世界坐標系統中控制加速度 第 590 頁 WorldAccLim-在世界坐標系統中控制加速度 沿著路徑降低 TCP 加速度 第 265 頁 PathAccLim沿路徑降低 TCP 加速度 定位指令 RAPID 參 考手冊 -RAPID 概述, RAPID 摘要部分 -運動 3 1.2 ActUnit 啟動一個機械單元 用途: ActUnit 用來啟動一個機械單元。 例如當使用普通驅動單元的時候,它可以用來決定哪一個單元 被啟動。 該指令只能在主任務 T_ROB1 中使用,或
3、者如果處於多運動系統,在 Motion 任務中。 基本範例: ActUnit 的基本範例說明如下: 例 1 ActUnit orbit_a; orbit_a 機械單元的啟動。 項目: AccUnit MechUnit MechUnit: 機械單元 資料類型: mecunit(機械單元) 要啟動的機械單元的名稱。 程式執行: 當機器人的和外部軸的實際路徑準備好以後,整個路徑被清理並且特定的機械單元被啟動。 這意味著它被機器人控制和監視。 如果多個機械單元共用一個普通驅動單元,這些單元 中的一個的啟動,也將把該單元連接到普通驅動單元。 限制: 如果在該指令之前有一個運動指令,那個指令的程式中必須帶
4、有停止點(區域資料 fine),而不是一個通過點,否則將不能進行電源失敗後的重啟。 AccUnit 指令不能在連接到以下任何特定的系統事件的 RAPID 程式中執行: 電源上電, 停止, Q 停止,重啟或者復位。 語法: ActUnit MechUnit : = ; 相關資訊: 相關資訊 參照 廢除機械單元 第 69 頁 DeactUnit廢除一個機械單元 機械單元 第 969 頁 MecUnit機械單元 更多例子 第 69 頁 DeactUnit廢除一個機械單元 4 1.3 Add 增加一個數字數值 用途: Add 用於增加一個數值到一個數位變數或恒量,或者從一個數位變數或者恒量中減去一個數
5、值。 基本範例: Add 的基本範例說明如下: 例 1 Add reg1, 3; 3 被增加到 reg1,即 reg1=reg1+3。 例 2 Add reg1, reg2 從 reg1 減去 reg2,即 reg1=reg1-reg2。 項目: Add Name AddValue Name: 資料類型:數字 將要改變的變數或者恒量的名稱。 AddValue: 資料類型: 數字 要增加的數值。 語法: Add Name : = , AddValue: = ; 相關資訊: 相關的資訊 參看 給變數加 1 Incr增加 1,第 117 頁 改變量減 1 Decr減 1,第 71 頁 使用一個任意的
6、運算式改變資料,例如乘法 : = 賦值,第 19 頁 5 1.4 AliasIO 用別名定義 I/O 用途: AliasIO 用來用別名定義一個任意類型的信號,或者用來在內置( built-in)任務模組中使用信號。 在不同的機器人安裝中,帶別名的信號可以被用來預定義常規程式,而不用在運行之前進行任何的程式更新。 在任何實際信號的使用之前,必須運行 AliasIO 指令。 參看第 17 頁的基本範例來載入模組,第 18 頁更多範例來安裝模組。 基本範例: 指令 AliasIO 的基本範例說明如下: 也可參看第 18 頁更多範例 例 1 VAR signaldo alias_do; PROC P
7、rog_start() AliasIO config_do,alias_do; ENDPROC 程式 prog_start 連結到系統參數的 START 事件。 程式定義的數位輸出信號 alias_do 連結到程式開頭配置的數位輸出信號 config_do。 項目: AliasIO FromSignal, ToSignal; FromSignal: 資料類型: signalxx 或 者字串。 載入的模組: 信號識別字按照配置(資料類型 signalxx)命名,信號描述符也從配置中複製。 信號必須在 IO 配置中定義。 安裝的模組或者載入的系統模組: 一個相關( CONST、 VAR、 PERS
8、 或者它們的參數)包含信號(資料類型 string 字串)的名稱,從該信號中,信號描述符在系統中搜索後被複製。 信號必須在 IO 配置中定義。 ToSignal: 資料類型: signalxx 信號識別字按照程式(資料類型 signalxx)命名,信號描述符複製到該系統中。 信號必須在 RAPID 程式中聲明。 FromSignal 和 ToSignal 專案必須使用(或者找到)相同的資料類型,並且必須是類型 signalxx( signalai,signalao,signaldi,signaldo,signalgi 或者 signalgo)中的一個。 程式執行: 信號描述符數值從 FromS
9、ignal 專案給出的信號複製到 ToSignal 專案給出的信號。 更多範例: 指令 AliasIO 的更多範例說明如下。 例 1 VAR signaldi alias_di; PROC prog_start( ) CONST string config_string :=config_di; AliasIO config_string,alias_di; ENDPROC 程式 prog_start 連結到系統參數中的 START 事件。 程式定義的數位輸入信號 alias_di 連結到程式開頭配置的數位輸入信號 config_di(通過常量 config_string)。 限制: 當開始程
10、式的時候,別名信號直到 AliasIO 指令執行 之後才能使用。 6 指令 AliasIO 必須放置在 或者在程式開始(事件 START)時執行的事件程式中 或者在每一個程式開始之後(信號使用之前)執 行的程式部分。 為了防止錯誤,不推薦使用把 AliasIO 信號動態重新連結到不同的實體信號。 語法: AliasIO FromSignal : = , ToSignal: = ; 相關資訊: 相關資訊 參看 輸入 /輸出指令 RAPID 參 考手冊 -RAPID 概述, RAPID 摘要部分 -輸入和輸出信號 通常的輸入輸出功能性 RAPID 參考手冊 -RAPID 概述,運動和 I/O 原理
11、部分 -I/O 原理 I/O 配置 技術相關手冊 -系統參數 定義事件 程式 技術相關手冊 -系統參數 載入 /安裝任務模組 技術相關手冊 -系統參數 7 1.5 : = 賦值 用途: : =指令用來給資料賦一個新值。 這一個值可以是包括從常量值到任意的運算式中的任何一個。 例如reg1+5*reg3。 基本範例: 指令的基本範例說明如下。 也可參見第 19 頁更多範例。 例 1 reg1: =5; 數值 5 賦給 reg1。 例 2 reg1:=reg2-reg3; reg2-reg3 計算返回的數值賦給 reg1。 例 3 counter:=counter+1; counter 增加 1。
12、 項目: Data: =Value Data: 資料類型: 所有 將被賦新值的數據。 Value: 資料類型: 和 Data 一樣。 期望的數值。 更多範例: 該指令的更多範例說明如下。 例 1 tool1.tframe.trans.x:=tool1.tframe.trans.x+20; tool1 的 TCP 在 X 方向上移動 20 毫米。 例 2 pallet5,8:=Abs(value) pallet 矩陣的一個元素被賦予一個等於 value 變數的絕對值的數值。 限制: 資料(將被改變數值的)不可以是: 常量 非數值資料類型 數值或者資料必須 有相似的(相同的或者別名的)資料類型。
13、語法: (EBNF) : = ; : : =| 相關資訊: 相關資訊 參看 運算式 RAPID 參考手冊 -RAPID 概述,基本特性部分 -運算式 非數值資料類型 RAPID 參考手冊 -RAPID 概述,基本特性部分 -資料類型 給資料賦一個初始數值 操作員手冊 -IRC5 和 FlexPendant, FlexPendant 部分編輯資料實例 8 1.6 BitClear 在一個位元組資料中清除一個特定 位元 用途: BitClear 用來清除(設為 0)定義的位元組資料中一個特定的位元。 基本範例: 該指令的基本範例說明如下。 例 1 CONST num parity_bit:=8;
14、VAR byte data1:=130; BitClear data1,parity_bit; 變數 data1 中位元號 8( parity_bit)將設為 0,例如變數 data1 的內容將從 130 變成 2(整數標記法)。 當使用 BitClear 時資料類型 byte 的位操作在下圖有說明。 項目: BitClear BitData BitPos BitData: 資料類型: 位元組 整型標記法的位元資料,將被改變的資料。 BitPos: 資料類型: 數字 BitData 中將被設為零的位的位置( 1-8)。 限制: 位元組資料類型的範圍是十進位的 0-255。 有效的位的位置為 1
15、-8。 語法: BitClear BitData : =,BitPos:=; 相關資訊: 相關資訊 參看 在位元組資料中設定一個特定的位 BitSet在位元組資料中 設定一個特定的位,第 23 頁 檢查位元組資料中特定的位元是否被設置 BitCheck檢查位元組資料中特定的位元是否被設置,第 654 頁 位的其他功能 RAPID 參考手冊 -RAPID 概述, RAPID 摘要部分 -數學 -位元功能 9 1.7 BitSet 在位元組資料中設定一個特定的位 用途: BitSet 用來在定義的位元組資料中把一個特定位元設為 1。 基本範例: 該指令的基本範例說明如下。 例 1 CONST nu
16、m parity_bit:=8; VAR byte data1:=2; BitSet data1 parity_bit; 變數 data1 中位元號 8( parity_bit)將設為 1,例如變數 data1 的內容將從 2 變成 130(整數標記法)。 當使用 BitClear 時資料類型 byte 的位操作在下圖有說明。 項目: BitSet BitData BitPos BitData: 資料類型: 位元組 整型標記法的位元資料,將被改變的資料。 BitPos: 位的位置 資料類型: 數字 BitData 中將被設為零的位的位置( 1-8)。 限制: 位元組資料類型的範圍是十進位的 0
17、-255。 有效的位 的位置為 1-8。 語法: BitSet BitData : =,BitPos:=; 相關資訊: 相關資訊 參看 在位元組資料中清除一個特定的位 BitClear在位元組資料中清除一個特定的位,第 23 頁 檢查位元組資料中特定的位元是否被設置 BitCheck檢查位元組資料中特定的位元是否被設置,第 654 頁 位的其他功能 RAPID 參考手冊 -RAPID 概述, RAPID 摘要部分 -數學 -位元功能 10 1.8 BookErrNo 定制一個 RAPID 系統錯誤號碼 用途: BookErrNo 用來定制一個新的 RAPID 系統錯誤號碼。 基本範例: 該指令
18、的基本範例說明如下: 例 1 !Introduce a new error number in a glue system !Note: The new error variable must be declared with the initial value 1; VAR errnum ERR_GLUEFLOW:=-1; !Book the new RAPID system error number BookErrNo ERR_GLUEFLOW; 變數 ERR_GLUEFLOW 將被賦給一個空閒的系統錯誤號碼,將在 RAPID 代碼中使用。 ! Use the new error numb
19、er IF dil=0 THEN RAISE ERR_GLUEFLOW; ELSE ENDIF Error handling ERROR IF ERRNO=ERR_GLUEFLOW THEN . ELSE ENDIF 如果數位輸入 dil 是 0,新 定制的錯誤號碼將被提出並且系統錯誤變數 ERRNO 將被設定到新定制的錯誤號碼。 這些使用者產生的錯誤的錯誤處理然後可以像平常一樣在錯誤處理器中處理。 項 目: BookErrNo ErrorName ErrorName: 資料類型: errnum 新的 RAPID 系統錯誤變數名稱。 限制: 新的錯誤變數不可以像程式變數一樣被聲明。 新的錯誤變
20、數必須帶初始值 -1 聲明,這就給出一個資訊: 該錯誤應該是一個 RAPID 系統錯誤。 語法: BookErrNo ErrorName := ; 相關資訊: 相關資訊 參看 錯誤處理 RAPID 參考手冊 -RAPID 概述,基本特性部分 -錯誤恢復 錯誤號碼 Errnum錯誤號碼,第 941 頁 調用一個錯誤處理器 RAISE調用一個錯誤處理器,第 303 頁 11 1.9 Break 跳出程式執行 用途: Break 用來在程式執行中製造一個立即跳出,為了 RAPID 程式碼調試的目的。 基本範例: 該指令的基本範例說明如下。 例 1 Break . 程式執行停止,為了調試目的的分析變數
21、、數值等成為可能。 程式執行: 該指令立即停止 程式執行,不用等機器人或者外部軸到達他們程式設計的當時運動的目的點。 程式執行然後能從下一條指令重新開始。 如果在一些事件程式中有 Break 指令,程式的執行將被打斷,並且沒有停止事件程式將被執行。 下次同一事件發生的時候 事件程式將從開頭執行。 語法: Break; 相關資訊: 相關資訊 參看 程式活動停止 Stop停止程式執行,第 438 頁 致命錯誤後停止 EXIT終止程式執行,第 92 頁 終止程式執行 EXIT終止程式執行,第 92 頁 只停止機器人運動 StopMove停止機器人運動,第 442 頁 12 1.10 CallByVa
22、r 通過一個變數調用程式 用途: CallByVar( Call By Variable)可以使用一個特定的名稱,例如 proc_name1, proc_name2, proc_name3 proc_namex 通過一個變數調用程式。 基本範例: 該指令的基本範例說明如下: 也可參照第 28 頁更多範例。 例 1 reg1: =2; CallByVar proc,reg1; 程式 proc2 被調用。 項目: CallByVar Name Number Name: 資料類型: 字串 程式名稱的第一部分,例如 proc_name。 Number: 資料類型: 數字 程式號碼的數位數值。 該數值將
23、被轉換成一個字串,給出程式名稱的第二部分,例如, 1。 數值必須是一個正整數。 更多範例: 如何作出程式調用的動態和靜態選擇的更多範例。 例 1 程式調用的靜態選擇。 TEST reg1 CASE 1: Lf_door door_loc; Case 2: Rf_door door_loc; Case 3: Lr_door door_loc; Case 4: Rr_door door_loc; DEFAULT: EXIT; ENDTEST 取決於寄存器 reg1 的數值是 1、 2、 3 或者 4,來調用不同的程式來對選擇的門完成合適的工作,門位於項目 door_loc。 例 2 用 RAPID
24、 語法動態選擇程式調用。 Reg1:=2; %proc+NumToStr(reg1,0)% door_loc; 程式 proc2 和專案 door_loc 被調用。 限制: 所有程式必須有一個特定的名稱,例如 proc1,proc2,proc3。 例 3 用 CallByVar 動態選擇程式調用。 Reg1:=2; CallByVar proc,reg1; 13 程式 proc2 被調用。 限制: 所有程式必須有一個特定的名稱,如 proc1,proc2,proc3,並且沒有項目可以被使用。 限制: 只能被用來調用不帶參數的程式。 不能用來調用 LOCAL(本地)程式。 CallByVar 的
25、執行比普通的程式調用要佔用多一點的時間。 錯誤處理: 如果 Number 專案小於零或者不是一個整數,系統參數 ERRNO 被設成 ERR_ARGVALERR。 如果相關到一個未知的程式,系統參數 ERRNO 被設成 ERR_REFUNKPRC。 如果程式調用錯誤(不是程式錯誤) ,系統參數 ERRNO 被設成 ERR_CALLPROC。 這些錯誤可以在錯誤處理器中進行處理。 語法: CallByVar 名稱: = , 號碼: = ; 相關資訊: 相關資訊 參照 調用程式 RAPID 參考手冊 -RAPID 概述,基本特性部分 -程式 操作員手冊 -IRC5 和 FlexPendant 14
26、1.11 CancelLoad 取消模組的載入 用途: CancelLoad 用來取消用 StartLoad 指令正在載入或者已經載入的模組。 CancelLoad 只能用在指令 StartLoad 和 WaitLoad 之間。 基本範例: 該指令的基本範例說明如下。 也可參見第 30 頁的更多範例。 例 1 ConcelLoad load1 載入 load1 被取消。 項目: CancelLoad LoadNo LoadNo: 資料類型: loadsession 相關到被 StartLoad 所開始的載入系列。 更多範例: 如何使用該指令的更多範例說明如下。 例 1 VAR loadsess
27、ion load1; StartLoad HOME:File:=PART_B.MOD,load1; IF CancelLoad Load1; StartLoad HOME:File:=PART_C.MOD,load1; ENDIF WaitLoad load1; 指令 CancelLoad 將取消正在進行的 PART_B.MOD 模組的載入,而要使載入 PART_C.MOD 成為可能。 錯誤處理: 如果專案 LoadNo 指定的變數 沒有在使用,也就是說沒有進行載入,系統變數 ERRNO 將設為ERR_LOADNO_NOUSE。 這個錯誤然後在錯誤處 理器中可能被處理。 語法: CancelL
28、oad LoadNo :=; 相關資訊: 相關資訊 參照 在執行過程中載入一個程式模組 StartLoad在執行過程中載入一個程式模組,第 410 頁 把載入的模組連接到任務中 WaitLoad把載入的模組連接到任務中,第 566 頁 載入系列 Loadsession程式載入系列,第 968 頁 載入一個程式模組 Load在執行過程中載入一個程式模組,第 182 頁 卸載一個程式模組 Unload在執行過程中卸載一個程式模 組,第 553 頁 接受未解決的相關 技術相關手冊 -系統參數,標題控制器部分 -任務類型 -檢查未解決的相關 15 1.12 CirPathMode 在圓形路徑過程中工具
29、再定位 用途: CirPathMode(圓形路徑模式)使在圓周運動中選擇不同的模式再定位工具成為可能。 該指令只能被使用在主任務 T_ROB1,或者如果在多運動系統中,使用在運動任務中。 基本範例: 該指令的基本範例說明如下: 例 1 CirPathMode PathFrame 在所有成功的圓形運行過程中,從開始點到 ToPoint 的實際路徑格式中工具再 定位的標準模式。 這是系統中的缺省值。 例 2 CirPathMode ObjectFrame 在所有成功的圓形運行過程中,從開始點到 ToPoint 的實際物件格式中工具再定位的修改的模式。 例 3 CirPathMode CirPoin
30、tOri 在所有成功的圓形運行過程中,從開始點通過程式中的 CirPoint 再定位到 ToPoint 的工具再定位的標準模式。 描述: PathFrame 以下表格中的圖顯示了標準模式 PathFrame 下的工具再定位。 說明 描述 箭頭顯示了工具從腕部中心點到工具中心點也就是程式設 計點。 腕部 中心點的路徑在圖中用虛線點出。 PathFrame 模式使工具繞圓柱得到相同的角度變得容易。 機器人手腕將不能突破 CirPoint 中程式設計的方向。 以下表格中的圖顯示了用固定工具方向的標準模式 PathFrame 的使用。 說明 描述 該圖片顯示了用傾斜工具和 PathFrame 模式在圓
31、的中心獲得的工具方向。 和下圖中使用 ObjectFrame 模式的相比較。 ObjectFrame 下表中的圖顯示了修改的模式 ObjectFrame 和固定工具方向的使用。 說明 描述 該圖片顯示了用傾斜工具和 ObjectFrame 模式在圓的中心獲得的工具方向。 該模式將做出和 MoveL 用相同方法的工具的線性再定位。 機器人手腕將不能穿過 CirPoint 中程式設計的方向。 和上圖中使用 PathFrame 模式的相比較。 CirPointOri 以下表格中的圖顯示了標準模式 PathFrame 和修改的模式 CirPointOri 之間不同的工具再定位。 說明 描述 箭頭顯示了
32、工具從腕部中心點到工具中心點也就是程式設計點。腕部中心點的不同路徑在圖中用虛線點出。 CirPointOri 模式使機器人手腕突破 CirPoint 中程 式設計的方向。 項目: 16 CirPathMode PathFrame | ObjectFrame | CirPointOri PathFrame 資料類型: switch 在圓周運動過程中,工具的再定位在實際路徑格式中的從開始點方向到 ToPoint 方向連續完成。 這是系統中的標準模式。 ObjectFrame 資料類型: switch 在圓周運動中,工具的再定位在實際物件格式中從開始點方向到 ToPoint 方向連續完成。 CirP
33、ointOri 資料類型: switch 在圓周運動中,工具的再定位在實際物件格式中從開始點方向到程式中 CirPoint 方向再 到 ToPoint 方向連續完成。 只有程式設計的 CirPointMode; 沒有任何轉換導致和 CirPointModePathFrame 相同的結果。 程式執行: 特定的圓形工具再定位模式應用於下一個執行的機器人任意類型的圓周運動( MoveC, SearchC, TriggC,MoveCDO, MoveCSync, ArcC, PaintC )並且直到新的 CirPathMode(或者舊的 CirPathReori)指令執行之前都有效。 標準的圓形再定位程
34、式( CirPathMode PathFrame)在以下情況下自動設定: 冷開機 當載入一個新的程式 當從開頭執行程式時 限制: 該指令只影響圓周運動。 當使用 CirPointOri 模式時, CirPoint 必須在點 A 和點 B 之間,按照下圖是圓周運動在 CirPoint 突破程式中的方向。 如果工作在手腕單一點區域附近並且 SingAreaWrist 指令已經被執行,指令 CirPathMode 將沒有影響,因為系統那時候選擇另一種圓周運動(關節插補)的 工具再定位模式。 該指令代替舊 的指令 CirPathReori(即使在將來也可以使用,但是在文檔中不再介紹。 語法: CirP
35、athMode ; PathFrame | ObjectFrame | CirPointOri 相關資訊: 相關資訊 參照 插補 RAPID 參考手冊 -RAPID 概述,運動和 I/O 原理部分 -程式執行過程中的定位 運動設定資料 Motsetdata運動設定資料,第 971 頁 圓周運動指令 MoveC使機器人圓周運動,第 209 頁 17 1.13 Clear 清除數值 用途: Clear 用來清除一個數位變數或恒量,即把它設為零。 基本範例: 該指令的基本範例說明如下。 例 1 Clear reg1; Reg1 被清除,即 reg1: =0。 項目: Clear Name Name:
36、 資料類型: 數字 即將清除的變數或恒量的名稱。 語法: Clear Name := ; 相關資訊: 相關資訊 參看 給變數加 1 Incr給變數加 1,第 117 頁 使變數減 1 Decr變數減 1,第 71 頁 給變數增加任何值 Add增加數字數值,第 16 頁 使用任意值改變資料 : = 給變數賦值,第 19 頁 18 1.14 ClearIOBuff 清除串列通道的輸入緩衝器 用途: ClearIOBuff 用來清理串列通道的輸入 緩衝器。 所有來自串口通道的緩衝的字母將被丟棄。 基本範例: 該指令的基本範例說明如下。 例 1 VAR iodev channel2; Open com
37、2:, channel2 Bin; ClearIOBuff channel2; WaitTime 0.1; 相關到 channel2 的串列通道的輸入緩 衝器被清空。 等待時間保證足夠時間來完成清空操作。 項目: ClearIOBuff IODevice IODevice: 資料類型: iodev 將被清空緩衝器的串列通道的名稱(相關)。 程式執行: 所有輸入串 列通道的緩衝器的字母被清除。 下一個讀取指令將等待來自通道的新的指令。 限制: 該指令只能被串列通道使用。 不等待操作完成的通知。 在每一次使用中,推薦在指令後使用 0.1 秒的等待時間,來給操作足夠的時間。 錯誤處理: 如果要在一個
38、檔上使用該指令(清除檔),系統變數 ERRNO 將被設成 ERR_FILEACC。 該錯誤可以在錯誤處理器中處理。 語法: ClearIOBuff IODevice := ; 相關資訊: 相關資訊 參看 打開一個串列通道 RAPID 參考手冊 -RAPID 概述, RAPID 摘要部分 -通訊 19 1.15 ClearPath 清除當前路徑 用途: ClearPath 清除當前運動路徑層次上(基本層次或者 StorePath 層次)的整個運動路徑。 運動路徑是指在 ClearPath 執行的時候,從 RAPID 已經執行但是機器人沒有完成的運動開始所有的 運動段落。 在 ClearPath
39、指令執行前機器人必須在停止點位置,或者用 StopMove 指令停止機器人。 基本範例: 該指令的基本範例說明如下。 在下列程式例子中,機器人從初始位置到達 p1 點。 在點 px,信號 dil 將指示有效負載被丟掉。 在陷阱程式gohome 中,繼續執行。 機器人將在 px 停止運動(開始跳出),路徑將被清除,機器人將移動到初始位置。 錯誤將被提高到調用 minicycle 程式,並且整個使用者定義的程式迴圈 proc1, proc2 將被再次從開始執行。 例 1 VAR intnum drop_payload; CONST errnum ERR_DROP_LOAD:=-1; PROC mi
40、nicycle( ) BookErrNo ERR_DROP_LOAD; Proc1; ERROR (ERR_DROP_LOAD) RETRY; ENDPROC PROC proc1( ) proc2; ENDPROC PROC proc2( ) CONNECT drop_payload WITH gohome; IsignalDI Single, dil, 1, drop_payload; MoveL p1,v500,fine,gripper; . Idelete drop_payload 20 ENDPROC TRAP gohome StopMove Quick; ClearPath; Id
41、elete drop_payload; MoveL home, v500, fine, gripper; RAISE ERR_DROP_LOAD; ERROR RAISE; ENDTROP 如果正在運行相同的程式,但是在陷阱程式 gohome 中沒有使用 StopMove 和 ClearPath,在回到初始位置home 之前機器人將繼續運動到 p1 位置。 如果程式設計時在 MoveL home 中使用飛點( zone)代替停止點( fine),在調用 minicycle 程式中的錯誤處理器的過程中,運動將會繼續並且直到運動準備好。 語法: ClearPath ; 相關資訊: 相關資訊 參看
42、停止機器人運動 StopMove停止機器人運動,第 442 頁 錯誤 恢復 RAPID 參考手冊 -RAPID 概述, RAPID 摘 要部分 -錯誤恢復 RAPID 參考手冊 -RAPID 概述,基本特性部分 -錯誤恢復 21 1.16 ClearRawBytes 清除原始位元組資料的內容 用途: ClearRawBytes 用來把原始位元組變數的所有內容設為 0。 基本範例: 指令的基本範例說明如下。 例 1 VAR rawbytes raw_data; VAR num integer :=8 VAR num float :=13.4; PackRawBytes integer, raw_
43、data, 1 IntX :=DINT; PackRawBytes float,raw_data, (RawBytesLen(raw_data)+1) Float4; ClearRawBytes raw_data FromIndex :=5; 在前 4 個位元組裡,放入 integer 的數值(從索引 1 開始),從索引 5 開始的後 4 個位元組裡放入了 float 的數值。 例子中的最後一個指令清除了 Raw_data 的內容,從索引 5 開始,例如 float 將被清除,但是 integer 被保存在 raw_data 中。 當前 Raw_data 中有效位元組的長度被設為 4。 項目:
44、 ClearRawbytes RawData FromIndex RawData: 資料類型: 原始位元組 RawData 是將被清除的資料容器。 FromIndex : 資料類型: 數字 帶有指定的 FromIndex ,將從 FromIndex 開始清除 RawData 的內容。 一直到頭的所有東西都被清除。 如果沒有指定 FromIndex ,從索引 1 開始的所有資料將被清除。 程式執行: 在指定的變數中,從索引 1(缺省)開始或者從 FromIndex 開始的資料被重定到 0。 指定變數 中有效位元組的當前長度被設為 0(缺省)或者如果 FromIndex 使用的話為( FromIn
45、dex-1)。 語法: ClearRawBytes RawData := FromIndex:= ; 相關資訊: 相關資訊 參看 原始位元組的資料 Rawbytes原始資料,第 994 頁 得到原始位元組資料的長度 RawBytesLen得到原始位元組資料的長度,第 806 頁 複製原始位元組資料的內容 CopyRawBytes複 製原始位元組資料的內容,第 58 頁 將設備網標題打包進原始位元組資料 PackDNHeader將設備網標題打包進原始位元組資料,第 258 頁 將資料打包進原始位元組資料 PackRawBytes將資料打包進原始位元組資料,第 261 頁 寫入原始位元組資料 Wr
46、iteRawBytes寫入原始位元組資料,第 604 頁 讀取原始位元組資料 ReadRawBytes讀取原始位元組資料,第 319 頁 從原始位元組資料將資料拆包 UnpackRawBytes從原始位元組資料中將資料拆包,第 556 頁 22 1.17 ClkReset 重定一個用來計時的時鐘 用途: ClkReset 用來重定一個用來計時的停止監視功能的時鐘。 該指令在使用時鐘指令之前使用,用來確保它歸零。 基本範例: 該指令的基本範例說明如下。 例 1 CleReset Clock1; 時鐘 Clock1 被重定。 項目: ClkReset Clock Clock: 資料類型: 時鐘 要
47、重定的時鐘的名稱。 程式執行: 當時鐘被重定,它被設為 0。 如果時鐘正在運行,它將被停止然後復位。 語法: ClkReset Clock := ; 相關資訊: 相關資訊 參看 其他時鐘指令 RAPID 參考手冊 -RAPID 概述, RAPID 摘要部分 -系統和時間 23 1.18 ClkStart 開始一個用來計時的時鐘 用途: ClkStart 用來開始一個用於計時的停止 -監視功能的時鐘。 基本範例: 該指令的基本範例說明如下。 也可參看第 43 頁的更多範例。 例 1 ClkStart Clock1 時鐘 Clock1 開始計時。 項目: ClkStart Clock Clock:
48、 資料類型: 時鐘 將要開始計時的時鐘的名稱。 程式執行: 當時鐘開 始計時,它將運行並且繼續計秒直到它停止。 當讓它開始計時的程式停止的時候,時鐘繼續運行。但是,你想要計時的事件可能不再有效。例如,如果程式測量輸入的等待時間,當程式停止的時候,輸入已經被接收。在這種情況下,當程式停止的時候,程式將不能看到事件的發生。 當機器人電源斷電的時候,只要備份電池保留包含時鐘變數的程式,始終將繼續運行。 如果時鐘正在運行,它可以被讀取、停止或者復位。 更多範例: 該指令的更多範例說明如下。 例 1 VAR clock clock2; VAR num time; ClkReset clock2; ClkStart clock2; WaitUntil dil =1; ClkStop clock2; Time:=ClkRead(clock2); Dil 變成 1 的等待時間被測量。 錯誤處理: 如果時鐘運行了 4, 294, 967 秒( 49 天 17 個小時 2 分鐘 47 秒),它將超載並且系統變數 ERRNO 被設成ERR_OVERFLOW。 該錯誤可以在錯誤處理器中處理。 語法: ClkStart Clock :=