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