從一個(gè)主程序中可以將參數(shù)傳遞到局部或全局子程序和函數(shù)中。
怎樣傳遞參數(shù)有 2 種方式:
作為 IN 參數(shù)
變量值在主程序中保持不變。
這種傳遞方式也稱為 “ 值傳遞 (Call by Value)”。
作為 OUT 參數(shù)
子程序讀取并更改該值,然后將新值寫回到主程序中。
這種傳遞方式也稱為 “Call by Reference”。
建議:始終將一個(gè)參數(shù)傳遞到相同數(shù)據(jù)類型的變量中。可以將參數(shù)傳遞到另一個(gè)數(shù)據(jù)類型中,但是有特定的限制。
將參數(shù)傳遞給局部子程序:
兩類參數(shù)列表:
傳值調(diào)用:IN
引用調(diào)用:OUT
例:
1 DEF MY_PROG( )
2 DECL REAL r,s
3 ...
4 CALC_1(r) 調(diào)用子程序 CALC_1 并傳遞參數(shù) “r”。
5 ...
6 CALC_2(s)調(diào)用子程序 CALC_2 并傳遞參數(shù) “s”。
7 ...
8 END
_______________________________________
9 DEF CALC_1(num1:IN)
num1:要將值 “r” 傳遞到其上的變量名稱。IN 表示:只為讀取傳遞 “r”。
10 DECL REAL num1 必須聲明要將數(shù)值傳遞到其上的變量。
11 ...
12 END
_______________________________________
13 DEF CALC_2(num2:OUT)
num2:要將值 “s” 傳遞到其上的變量名稱。
OUT 表示:傳遞、更改 “s” 并將其寫回到主程序中。
14 DECL REAL num2必須聲明要將數(shù)值傳遞到其上的變量。
15 ...
16 END
將參數(shù)傳遞給全局函數(shù):
主程序 MY_PROG( ):
1 DEF MY_PROG( )
2 DECL REAL result, value
3 value = 2.0 給 “value” 賦值 “2.0”。
4 result = CALC(value)調(diào)用函數(shù) CALC,并傳遞 “value” 的值。給變量 “result” 分配函數(shù)的返還值。
5 ...
...
END
在將該值作為 IN 參數(shù)傳遞時(shí)發(fā)生了什么?
帶 IN 的函數(shù) CALC():
1 DEFFCT REAL CALC(num:IN)
將 “value” 的值作為 IN 參數(shù)傳遞給 “num”。該值還為 2.0。
2 DECL REAL return_value, num
3 num = num + 8.0 更改 “num” 的值。該值現(xiàn)在為 10.0。
4 return_value = num * 100.0
5 RETURN(return_value)
計(jì)算 “return_value” 的值并將該值發(fā)回到主程序的變量“result” 中。該值為 1000.0。
6 ENDFCT
函數(shù)已結(jié)束,從行 5 起繼續(xù)執(zhí)行主程序。
提示:主程序中 “value” 的值未更改,為 2.0
在將該值作為 OUT 參數(shù)傳遞時(shí)發(fā)生了什么?
帶 OUT 的函數(shù) CALC():
1 DEFFCT REAL CALC(num:OUT)
將 “value” 的值作為 OUT 參數(shù)傳遞給 “num”。該值還為 2.0。
2 DECL REAL return_value, num
3 num = num + 8.0
更改 “num” 的值。該值現(xiàn)在為 10.0。
4 return_value = num * 100.0
5 RETURN(return_value)
計(jì)算 “return_value” 的值并將該值發(fā)回到主程序的變量“result” 中。該值為 1000.0。
6 ENDFCT
函數(shù)已結(jié)束,從行 5 起繼續(xù)執(zhí)行主程序。
提示:主程序中 “value” 的值現(xiàn)在為 10.0。
傳遞多個(gè)參數(shù):
將哪個(gè)參數(shù)傳遞給什么自動(dòng)通過順序確定:第一個(gè)參數(shù)被傳遞到子程序中的第一個(gè)參數(shù)上,第二個(gè)參數(shù)被傳遞到子程序中的第二個(gè)參數(shù)上,以此類推。
1 DEF MY_PROG( )
2 DECL REAL w
3 DECL INT a, b
4 ...
5 CALC(w, b, a)
將 “w” 作為 OUT 參數(shù)傳遞給 “ww”。
將 “b” 作為 IN 參數(shù)傳遞給 “bb”。
將 “a” 作為 OUT 參數(shù)傳遞給 “oo”。
6 ...
7 CALC(w, 30, a)
將 “w” 作為 OUT 參數(shù)傳遞給 “ww”。
將 “30” 作為 IN 參數(shù)傳遞給 “bb”。
將 “a” 作為 OUT 參數(shù)傳遞給 “oo”。
8 ...
9 END
_______________________________________
10 DEF CALC(ww:OUT, bb:IN, oo:OUT)
11 DECL REAL ww
12 DECL INT oo, bb
13 ...
14 END
也可以不將任何值傳遞給子程序中的 “ 接收器 ” 變量,前提是在子程序中不需要該值。這將簡化根據(jù)變化的過程調(diào)整程序。示例:CALC (w, ,a)
始終可以將數(shù)值傳遞至相同的數(shù)據(jù)類型。傳遞至另一個(gè)數(shù)據(jù)類型時(shí),有:
主程序中的類型 | 子程序中的類型 | 作用 |
BOOL | INT、REAL、CHAR | 無法傳遞;錯(cuò)誤信息 |
INT、REAL、CHAR | BOOL | |
INT | REAL | INT 值被用作 REAL 值 |
INT | CHAR | 使用 ASCII 表中的字符 |
CHAR | INT | 使用 ASCII 表中的 INT 值 |
CHAR | REAL | 使用 ASCII 表中的 REAL 值 |
REAL | INT | REAL 值被四舍五入 |
REAL | CHAR | REAL 值被四舍五入,使用 ASCII 表中的字符 |
審核編輯 :李倩
-
機(jī)器人
+關(guān)注
關(guān)注
210文章
28212瀏覽量
206557 -
參數(shù)
+關(guān)注
關(guān)注
11文章
1786瀏覽量
32093 -
函數(shù)
+關(guān)注
關(guān)注
3文章
4307瀏覽量
62433
原文標(biāo)題:KUKA 機(jī)器人:將參數(shù)傳遞到子程序或函數(shù)中V1.28版.....
文章出處:【微信號(hào):gh_a8b121171b08,微信公眾號(hào):機(jī)器人及PLC自動(dòng)化應(yīng)用】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論