局部變量和公共變量的區別?
一、變量
1、變量的表示
FANUC系統使用“#”表示變量,例如:#1、#100等。變量根據變量號可以分成四種類型,見下表。
變量號 變量類型 功能
#0 空變量 該變量總是空,任何值都不能賦給該變量
#1~#33
局部變量 局部變量只能用在宏程序中存儲數據,例如,運算結果。當斷電時,局部變量被初始化為空。調用宏程序時,自變量對局部變量賦值
#100~#109
#500~#999 公共變量 公共變量在不同的宏程序中的意義相同。當斷電時,變量#500~#999的數據保存,即使斷電也不會丟失
#1000以上 系統變量 系統變量用于讀寫CNC運行時的各種數據,例如,刀具當前位置和補償
2、關于變量的說明
(1)變量引用時,為在程序中使用變量值,指定后跟變量號的地址。當用表達式指定變量時,要把表達式放在括號中,例如,GO X[#1+#2]F#3。式中X后的坐標什即是由#1、#2這兩個變量組成的表達式來表示。
(2)表達式可以用于指定變量號。此時,表達式必須封閉在括號中,例如,#[#1+#2-12]。
注意:
1) 宏程序中,方括號用于封閉表達式,圓括號只表示注釋內容,使用變量時必須注意,FANUC系統通過參數來切換圓括號和方括號。
2) 表達式可以表示變量號和變量。這兩者并不一樣,例如,X#[#1+#2]并不等于X[#1+#2]。
3) 當在程序中定義變量時,小數點可以省略。例如,當定義#1=123;變量#1的實際值是123.000。
4) 被引用變量的值根據地址的最小設定單位自動舍入。例如:G00X #1。
5) 改變引用的變量值的符號,要把負號放在“#”的前面。例如:G00X-#1。
6) 當變量值未定義時,這樣的變量成為“空”變量。當引用未定義的變量時,變量及地址字都被忽略。例如,當變量#1的值是0,并且變量#2的值是空時,G00X#1Z#2的執行結果為G00X0。
7) 變量#0總是空變量。它不能寫,只能讀。
二、變量的運算
1、算術、邏輯運算和運算符(見下表)
功能 格式 備注
定義 #i=#j
加法 #i=#j+#k
減法 #i=#j-#k
乘法 #i=#j*#k
除法 #i=#j/#k
正弦 #i=SIN[#j] 角度以度指定。90°30’表示90.5°
反正弦 #i=ASIN[#j]
余弦 #i=COS[#j]
反余弦 #i=ACOS[#j]
正切 #i=TAN[#j]
反正切 #i=ATAN[#j]/[#k]
平方根 #i=SQRT[#j]
絕對值 #i=ABS[#j]
舍入 #i=ROUND[#j]
上取整 #i=FUP[#j]
下取整 #i=FIX[#j]
自然對數 #i=LN[#j]
指數函數 #i=EXP[#j]
或 #i=#jOR#k 邏輯運算一位一位地按二進制數執行
異或 #i=#jXOR#k
與 #i=#jEXP#k
從BCD轉為BIN #i=BIN[#j] 用于與PMC的信號交換
從BIN轉為BCD #i=BCD[#j]
2、關于運算符的說明
(1)角度單位
函數SIN、COS、ASIN、ACOS、TAN和ATAN的角度單位是度(°)
(2)上取整和下取整
CNC處理數值運算時,若操作后產生的整數絕對大于原數的絕對值時為上取整;若小于原數的絕對值為下取整。對于負數的處理應小心。
例如:假定#1=1.2,并且#2=-1.2。
當執行#3=FUP[#1]時,2.0賦給#3。
當執行#3=FIX[#1]時,1.0賦給#3。
當執行#3=FUP[#2]時 ,-2.0賦給#3。
當執行#3=FIX[#2]時,-1.0賦給#3。
(3)運算符的優先級
按優先的先后順序依次是函數→乘和除運算(*、∕、AND、MOD)→加和減運算(+、﹣、OR、XOR)。
(4)括號嵌套
括號用于改變運算優先級。括號最多可以嵌套使用5級,包括函數內部使用的括號。
三、功能語句
1、無條件轉移(GOTO)語句——轉移到有順序號n的程序段
格式:
GOTOn ;n指行號
例如:
GOTO1 轉移至第一行
GOTO#10 轉移至變量#10所決定的行
2、運算符(見下表)
運算符 含義 運算符 含義
EQ 等于(=) GE 大于或等于(≥)
NE 不等于(≠) LT 小于(<)
GT 大于(>) LE 小于或等于(≤)
3、條件轉移(IF)語句
(1)IF[表達式] GOTOn
說明:如果指定的條件表達式滿足時,轉移到標有順序號n的程序段;如果指定的條件表達式不32滿足時,則執行下一個程序段。
(2)IF[表達式]THEN
說明:如果表達式滿足,執行預先決定的宏程序語句,且只執行一個宏程序語句。例如,條件語句IF[#1EQ#2]THEN#3=0表示如果#1和#2的值相同,0賦給#3。
4、循環功能(WHILE)語句
格式:WHILE[表達式]DOm ;(m=1,2,3)
……
ENDm
說明:在WHILE后指定一個條件表達式,當指定條件滿足時,執行從DO到END之間的程序;否則,轉到END后的程序段。
提示:通過上述介紹,完全可以借助系統提供的二次開發功能定制出個性化的宏程序,例如,可以將例4—23中刀具軌跡路徑定制在宏程序中,然后通過G65方式或直接用G代碼調用.常見結構的宏程序定制是有效提高編程效率的手段之一.