二維碼
工博士官方客服微信
聯(lián)系方式
聯(lián)系方式
電話:18621383605
服務時間 8:30~18:00
返回首頁
回到頂部
庫卡機器人干貨分享:如何利用KRL編程?
2018-03-02 17:34:40
程序流程控制
除了純運動指令和通訊指令(切換和等待功能)之外,在機器人程序中還有大量用于控制程序流程的程序。 其中包括:
循環(huán) | 循環(huán)是控制結(jié)構(gòu)。 它不斷重復執(zhí)行指令塊指令,直至出現(xiàn)終止條件。
無限循環(huán)
計數(shù)循環(huán)
當型和直到型循環(huán)
分支 | 使用分支后,便可以只在特定的條件下執(zhí)行程序段。
條件分支
多分支結(jié)構(gòu)
無限循環(huán) :在無限循環(huán)中無止境地重復指令段。 然而,卻可通過一個提前出現(xiàn)的中斷(含 EXIT 功能)退出循環(huán)語句。
LOOP 指令舉例:
無 EXIT:永久執(zhí)行對 P1 和 P2 的運動指令
帶 EXIT:一直執(zhí)行對 P1 和 P2 的運動指令,直到輸入端 30 切換到 TRUE。
計數(shù)循環(huán) :用計數(shù)循環(huán) (FOR 循環(huán)語句)可使指令重復定義的次數(shù)。 循環(huán)的次數(shù)借助于一個計數(shù)變量控制。
一個 FOR 循環(huán)語句舉例: 將輸出端 1 至 5 依次切換到 TRUE。 用整數(shù)(Integer) 變量 “i” 來對一個循環(huán)語句內(nèi)的循環(huán)進行計數(shù)。
當型循環(huán): WHILE 循環(huán)是一種當型或者先判斷型循環(huán),這種循環(huán)會在執(zhí)行循環(huán)的指令部分前先判斷終止條件是否成立。
WHILE 循環(huán)示例: 輸出端 17 被切換為 TRUE,而輸出端 18 被切換為FALSE,并且機器人移入 Home 位置,但僅當循環(huán)開始時就已滿足條件 (輸入端 22 為 TRUE)時才成立。
直到型循環(huán): REPEAT 循環(huán)是一種直到型或者檢驗循環(huán),這種循環(huán)會在第一次執(zhí)行完循環(huán)指令部分后才會檢測終止條件。
REPEAT 循環(huán)示例:輸出端 17 被切換為 TRUE,而輸出端 18 被切換為FALSE,并且機器人移入 Home 位置。 這時才會檢測條件。
條件性分支 :條件性分支 (IF 語句)由一個條件和兩個指令部分組成。 如果滿足條件,則可處理第一個指令。 如果未滿足條件,則執(zhí)行第二個指令。
但是,對 IF 語句也有替代方案:
第二個指令部分可以省去: 無 ELSE 的 IF 語句。 由此,當不滿足條件時緊跟在分支后便繼續(xù)執(zhí)行程序。
多個 IF 語句可相互嵌套 (多重分支): 問詢被依次處理,直到有一個條件得到滿足。
IF 語句舉例: 如果滿足條件 (輸入端 30 必須為 TRUE),則機器人運動到點P3,否則到點 P4。
分配器: 一個 SWITCH 分支語句是一個分配器或多路分支。 此處首先分析一個表達式。然后,該表達式的值與一個案例段 (CASE) 的值進行比較。 值一致時執(zhí)行相應案例的指令。
對帶有名稱 “ 狀態(tài) ” 的整數(shù)變量 (Integer),首先要檢查其值。 如果變量的值為1,則執(zhí)行案例 1 (CASE 1): 機器人運動到點 P5。 如果變量的值為 2,則執(zhí)行案例 2 (CASE 2): 機器人運動到點 P6。 如果變量的值未在任何案例中列出(在該例中為 1 和 2 以外的值),則將執(zhí)行默認分支: 故障信息。
機器人程序結(jié)構(gòu)化設計的方法:
機器人程序的結(jié)構(gòu)是體現(xiàn)其使用價值的一個十分重要的因數(shù)。 程序結(jié)構(gòu)化越規(guī)范,程序就越易于理解、執(zhí)行效果越好、越便于讀取、越經(jīng)濟。 為了使程序得到結(jié)構(gòu)化設計,可以使用以下技巧:
注釋 | 注解和印章
縮進 | 空格
隱藏 | Folds (“ 折疊 ”)
模塊化 | 子程序
注釋和印章 :添加注釋為在機器人程序中存儲僅針對程序讀者的文本提供了可能性。 即機器人解釋器不讀入該文本。 該文本只是為了提高程序的可讀性。
在機器人程序中可以在許多地方使用注釋:
有關程序文本的信息 | 作者、版本、創(chuàng)建日期
程序文本的分段 | 主要使用畫圖符號 (特殊符號 #、*、~ 等)
添加注釋 :(專家層面) | 通過在程序行的起始位置添加分號來使該程序行 “變成注釋 ”,即該文本作為注釋來識別,而不進入程序執(zhí)行。
對行的解釋
以及對需執(zhí)行的工作的說明 | 標識未完成的程序段
注意:只有不斷更新,注釋才有意義。 如果之后更改過指令,則也必須更新注釋!
可以使用三種不同的注釋方式:
添加分號 (專家層面) | 通過插入分號 (“;”)使一行中的后面部分變成注釋。
插入聯(lián)機表格 “ 注釋
插入聯(lián)機表格“印章” | 在此還另外插入一個時間戳記。 此外,還可以插入編輯者的姓名。
插入注釋和印章的操作步驟:
1. 標定其后應插入注釋或印章的那一行。
2. 選擇菜單序列指令 > 注釋 > 正?;蛴≌?。
3. 輸入所希望的數(shù)據(jù)。 如果事先已經(jīng)插入了注釋或印章,則聯(lián)機表格中還保留著相同數(shù)據(jù)。
插入注釋時,可用新文本來清空注釋欄,以便輸入新的文字。
插入印章時,還可用新時間來更新系統(tǒng)時間,并用新名稱清空名稱欄。
4. 用指令 OK 存儲。
程序行的縮進 提高機器人程序可讀性的一個有效手段是縮進程序行。 由此可提高程序單元之間關聯(lián)的清晰度。
注意:縮進效應只是視覺上的。 縮進的程序行在程序運行時與未縮進的程序行一樣得到處理。
通過 Fold 隱藏程序行:
KUKA 機器人編程語言可將程序行折疊和隱藏到 Fold 中。 用戶因此而看不到這些程序行。這使程序的閱讀變得更加簡潔方便。 以后可在專家用戶組中打開和編輯 Fold。
Fold 的顏色:
子程序技術: 利用子程序技術可將機器人程序模塊化,因而可以有效結(jié)構(gòu)設計程序。 目的是不將所有指令寫入一個程序,而是將特定的流程、計算或過程轉(zhuǎn)移到單獨的程序中。
通過使用子程序產(chǎn)生了一系列的優(yōu)點:
由于程序長度減短,主程序結(jié)構(gòu)更清晰并更易讀。
可獨立開發(fā)子程序: 編程花費可分攤,*小化錯誤源。
子程序可多次反復應用。
原則上可將子程序分為兩種不同的類型
全局子程序
一個全局子程序是一個獨立的機器人程序,可從另一個機器人程序調(diào)用??筛鶕?jù)具體要求對程序進行分支,即某一程序可在某次應用中用作主程序,而在另一次則用作子程序。
局部子程序
局部子程序是集成在一個主程序中的程序,即指令包含在同一個 SRC 文件中。 子程序的點坐標相應存放在同一個 DAT 文件中。
調(diào)用子程序的過程: 每個程序都以 DEF 行開始并以 END 行結(jié)束。 如果要在主程序中調(diào)用子程序,則正常情況下子程序會從 DEF 運行至 END。 到達 END 行后,程序運行指針重新跳入發(fā)出調(diào)用指令的程序 (主程序)。
注意:為了能提早退出子程序 (即在 END 行之前),可以在子程序中編入 RETURN 指令。 程序讀到該程序行時,即可提前終止子程序的運行。
調(diào)用子程序的操作步驟:
為了對子程序調(diào)用進行編程,必須已選擇用戶組 “ 專家 ”。 子程序調(diào)用的句法為:
??( )
1. 在主菜單中選擇 配置 > 用戶組。 將顯示出當前用戶組。
2. 若欲切換至其它用戶組,則: 按下登錄 …。 選定用戶組專家。
3. 輸入密碼 kuka,然后用登錄確認。
4. 用打開將所需的主程序載入編輯器
5. 將光標定位在所需的行內(nèi)
6. 輸入子程序名稱和括號,例如:myprog( )
7. 用關閉圖標關閉編輯器并保存修改