關(guān)于變量命名對(duì)于編程者都有自己的習(xí)慣,而別人卻不一定懂得或理解,所以對(duì)于一個(gè)公司必須有統(tǒng)一的規(guī)范,否則調(diào)試編程人員需要去適應(yīng)其他編程調(diào)試人員。基于之前在GB公司的工作經(jīng)驗(yàn),他們?cè)诠緲?biāo)準(zhǔn)化方面確實(shí)做得成熟,正是那段經(jīng)歷讓我收獲頗多。后面我也會(huì)分享Excel及Excel VBA或者Python在標(biāo)準(zhǔn)化上面的示例。(本文只是個(gè)人習(xí)慣,不代表其他人)
1.1 變量命名規(guī)則
KRL是KUKA的編程語(yǔ)言,在對(duì)機(jī)器人進(jìn)行編程時(shí),變量是在機(jī)器人程序運(yùn)行中出現(xiàn)的各種計(jì)算值的存儲(chǔ)器。每個(gè)變量都屬于一個(gè)專門的數(shù)據(jù)類型,在應(yīng)用前必須聲明數(shù)據(jù)類型;變量按照存儲(chǔ)位置可劃分為局部變量和全局變量。一個(gè)全局變量,適用于所有程序。一個(gè)局部變量建立于某程序模塊中,因此僅適用于此程序模塊。變量定義規(guī)則如下:①變量名稱長(zhǎng)度最多允許24個(gè)字符。②變量名稱允許含有字母 (A ~ Z)、數(shù)字 (0 ~ 9) 以及特殊字符“_” 和“$”。③變量名稱不允許以數(shù)字開頭。④變量名稱不允許使用系統(tǒng)關(guān)鍵詞。⑤變量名稱不區(qū)分大小寫(但還是建議使用駝峰規(guī)則來(lái)定義變量)。⑥變量命名最好沒有下劃線,推薦使用駝峰命名規(guī)則。當(dāng)變量沒有下劃線時(shí),可以在KCP快速訪問變量,而且沒必要變量名中是否有下劃線。⑦變量應(yīng)根據(jù)其數(shù)據(jù)類型添加前綴,并且其名稱應(yīng)以簡(jiǎn)潔的方式簡(jiǎn)短地說(shuō)明其功能
1.1.1 變量名稱
1.輸入輸出信號(hào)變量:①單個(gè)輸入信號(hào) (1 位)-以前綴i開始表示單個(gè)輸入信號(hào): SIGNAL iVacuumOk $IN[1]
②多個(gè)輸入信號(hào)(》 1 位)-以前綴gi開始表示輸入信號(hào)組: SIGNAL giSt12PlateType $IN[1281] TO $IN[1296]
③單個(gè)輸出信號(hào) (1 位)-以前綴o開始表示單個(gè)輸入信號(hào): SIGNAL oErrorTarget $OUT[1265]
④多個(gè)輸出信號(hào)(》 1 位)-以前綴go開始表示輸出信號(hào)組: SIGNAL goStartValueEnc1 $OUT[705] TO $OUT[721]
⑤模擬輸入信號(hào)-以前綴ai開始表示模擬輸入信號(hào): SIGNAL aiWeldVoltage $ANIN[1]
⑥模擬輸出信號(hào)-以前綴ao開始表示模擬輸出信號(hào): SIGNAL aoActPower $ANOUT[1]
2.布爾型變量-以前綴b開始表示布爾類型: DECL BOOL bGripperEmpty= TRUE
3.有符號(hào)整形變量-以前綴z開始表示布爾類型: DECL INT zTarget = 2
4.單精度浮點(diǎn)類型變量-以前綴r開始表示布爾類型: DECL REAL rCenterOffset= 0.0
5.FRAME型變量-以前綴f開始表示布爾類型: DECL FRAME fStackCorrection[2]
6.枚舉型變量-以前綴e開始表示布爾類型: DECL ENUM ePostion HOME,STACK12,STACK34,CULLET,DROPOFF_CONV,RAZING
DECL ePostion POSITION = #HOME
7.結(jié)構(gòu)體類型變量-以前綴s定義結(jié)構(gòu)體類型但變量定義前無(wú)任何前綴: DECL STRUC sRackData INT nActType,… DECL sRackData Stack[2] Stack[1]= {nActType 1,…}
8.POS / AXIS/E6POS/E6AXIS位置類型變量-以前綴x定義變量: ①計(jì)算獲得的變量-以前綴mx定義變量: DECL POS mxAfterTouched[2]
②通過示教獲得的位置變量-以前綴x定義變量: DECL E6POS xStack12A = {X … }
9.字符及字符串類型變量-以前綴s定義變量: DECL CHAR sCharacter= “A”
1.1.2 基本準(zhǔn)測(cè)1.對(duì)于所有變量類型,常量前面都帶有c,然后緊接著變量前綴(見1.1.1): DECL INT czCompMin = 30
2.對(duì)于所有變量類型,局部變量均以l (local)開頭: DECL INT lzCompMin = 30
3.對(duì)于所有變量類型,運(yùn)行過程變量前面都帶有一個(gè)n: DECL INT nzActStack
4.對(duì)于通過外部信號(hào)插入程序的所有變量類型,若為輸入信號(hào),則第二個(gè)字符為i;若為輸出信號(hào),則第二個(gè)字符為o: DECL BOOL biProgramEnd= FALSE
DECL INT zoPlateType = 1
5.坐標(biāo)點(diǎn)/坐標(biāo)位置命名規(guī)則必須保持標(biāo)準(zhǔn)化的點(diǎn)名稱,以使運(yùn)動(dòng)易于閱讀。
⑴起點(diǎn)/ 終點(diǎn):例如xHomeA,xStack12A,等。①?gòu)囊粋€(gè)工站到另一個(gè)工站的運(yùn)動(dòng)永遠(yuǎn)不會(huì)使用起點(diǎn)。②點(diǎn)的名稱總是指定位置,而不是功能!(例如xConveyor1而不是xDropOff)。③每個(gè)路徑都有單獨(dú)的起點(diǎn)和終點(diǎn)!
⑵從一個(gè)工站到另一個(gè)工站的運(yùn)動(dòng):每個(gè)起點(diǎn)基本上都有兩條通向每個(gè)目標(biāo)點(diǎn)的路徑,只從Home位開始的這些工站除外:① ServicePosition ②Cullet1 ③ Cullet2例如:沿著路徑A從原點(diǎn)Home到工站Stack12的運(yùn)動(dòng)路徑: Home_Stack12(#A) ①起始預(yù)備點(diǎn): xHome_Stack12A1 (最接近起點(diǎn)的點(diǎn)或距離終點(diǎn)最遠(yuǎn)的點(diǎn)) ②中間點(diǎn): xHome_Stack12A2(注釋掉,如果沒有必要) ③中間點(diǎn): xHome_Stack12A3 (注釋掉,如果沒有必要) ④終點(diǎn)預(yù)備點(diǎn): xHome_Stack12A4 (距離終點(diǎn)最近的點(diǎn)) ⑤終點(diǎn): xStack12A例如:沿著路徑A從工站Stack12到工站Stack34的運(yùn)動(dòng)路徑: Stack12_Stack34(#A) ①起始預(yù)備點(diǎn): xStack12_Stack34A1 (最接近起點(diǎn)的點(diǎn)或距離終點(diǎn)最遠(yuǎn)的點(diǎn)) ②中間點(diǎn): xStack12_Stack34A2 (注釋掉,如果沒有必要) ③中間點(diǎn): xStack12_Stack34A3 (注釋掉,如果沒有必要) ④終點(diǎn)預(yù)備點(diǎn): xStack12_Stack34A4 (距離終點(diǎn)最近的點(diǎn)) ⑤終點(diǎn): xStack34A例如:沿著路徑B從工站Stack12到工站Stack34的運(yùn)動(dòng)路徑: Stack12_Stack34(#B)
①起始預(yù)備點(diǎn): xStack12_Stack34B1 (最接近起點(diǎn)的點(diǎn)或距離終點(diǎn)最遠(yuǎn)的點(diǎn)) ②中間點(diǎn): xStack12_Stack34B2 (注釋掉,如果沒有必要) ③中間點(diǎn): xStack12_Stack34B3 (注釋掉,如果沒有必要) ④終點(diǎn)預(yù)備點(diǎn): xStack12_Stack34B4 (距離終點(diǎn)最近的點(diǎn)) ⑤終點(diǎn): xStack34B
1.1.3 變量位置/路徑:1. 必須在全局系統(tǒng)文件R1System$Config.Dat中聲明對(duì)外部設(shè)備或站的輸入和輸出2. 全局變量必須在R1ProgramDat文件夾中的相應(yīng)數(shù)據(jù)類型文件中聲明,例如,必須在文件b_bool.dat中聲明一個(gè)布爾變量。數(shù)據(jù)文件說(shuō)明
b_bools.dat 存放所有用戶定義的全局Bool類型變量
z_intergers.dat 存放所有用戶定義的全局Int類型變量
r_reals.dat存放所有用戶定義的全局Real類型變量
f_frames.dat存放所有用戶定義的全局Frame類型變量
Structs.dat存放所有用戶定義的全局Struc類型變量
e_enums.dat存放所有用戶定義的全局Enum類型變量
x_Points_Movements.dat存放所有直接運(yùn)動(dòng)或間接運(yùn)算的全局且固定位置點(diǎn)變量
mx_Points.dat存放所有可變的全局位置點(diǎn)類型變量
Strings.dat存放所有用戶定義的全局CHAR類型變量(如:報(bào)警信息)
3. 盡可能避免使用常量,而應(yīng)使用變量.4. 運(yùn)動(dòng)點(diǎn): ①外部計(jì)算或模擬的點(diǎn)將傳輸?shù)饺止病癉A文件”。點(diǎn)坐標(biāo)和相關(guān)參考空間參數(shù)(BASE,TOOL)必須在文件x_points_movements.dat中全局聲明。②計(jì)算和計(jì)算的點(diǎn)也存儲(chǔ)在單獨(dú)的全局公共“DAT文件”中。點(diǎn)坐標(biāo)和相關(guān)參考空間參數(shù)(Base,TCP)必須在以下文件中全局聲明:x_points.dat③可變點(diǎn)數(shù)據(jù)必須在mx_points.dat中聲明。
1.2 子程序及函數(shù)
⑴ fl前綴: 局部函數(shù)
⑵ ul前綴: 局部子程序⑶ ip前綴: 中斷程序⑷ o前綴: 將輸出變量寫入控制器輸出信號(hào)的函數(shù)⑸ i前綴: 從控制器輸入信號(hào)讀取輸入變量的函數(shù)
責(zé)任編輯:pj
-
機(jī)器人
+關(guān)注
關(guān)注
213文章
29748瀏覽量
212926 -
儲(chǔ)存
+關(guān)注
關(guān)注
3文章
202瀏覽量
22739
發(fā)布評(píng)論請(qǐng)先 登錄
明遠(yuǎn)智睿SSD2351開發(fā)板:語(yǔ)音機(jī)器人領(lǐng)域的變革力量
盤點(diǎn)#機(jī)器人開發(fā)平臺(tái)
【「# ROS 2智能機(jī)器人開發(fā)實(shí)踐」閱讀體驗(yàn)】機(jī)器人入門的引路書
【「具身智能機(jī)器人系統(tǒng)」閱讀體驗(yàn)】2.具身智能機(jī)器人的基礎(chǔ)模塊
《具身智能機(jī)器人系統(tǒng)》第10-13章閱讀心得之具身智能機(jī)器人計(jì)算挑戰(zhàn)
開源項(xiàng)目!能夠精確地行走、跳舞和執(zhí)行復(fù)雜動(dòng)作的機(jī)器人—Tillu
舜銘存儲(chǔ)鐵電存儲(chǔ)器SF24C512(MB85RS512)工廠自動(dòng)化系統(tǒng)機(jī)器人HMI中的應(yīng)用

評(píng)論