该【宏程式操作程式手册 】是由【东风倩倩】上传分享,文档一共【29】页,该文档可以免费在线阅读,需要了解更多关于【宏程式操作程式手册 】的内容,可以使用淘豆网的站内搜索功能,选择自己适合的文档,以下文字是截取该文章内的部分文字,如需要获得完整电子版,请下载此文档到您的设备,方便您编辑和打印。15用戶宏程序
雖然子程序對編製同样加工操作的程序特别实用,但用戶宏程序由於允許使用變量、算數和
邏輯運算及條件轉移,使得編製同样加工操作的程序更方便,
通用程序,如型腔加工宏程序和固定加工循環宏程序,和調用子程序完整一樣.
變量
一般加工程序直接用數值指定G代碼和移動距離;比如,G01和.
使用用戶宏程序時,,變量值可用程序或用MDI
面板上的操作改變.
#1=#2+100;
G01X#1F300;
說明
變量的表示
數算機允勍使用變量名,(#)和後面的變量號指定
比如;#1
,表達式必須封閉在括號中.
比如;#[#1+#2-12]
變量的類型
變量根據變量號能够分红四種類型.
變量號
變量類型
功能
#0
空變量
該變量總是空,沒有值能賦給該變量.
#1-#33
局部變量
局部變量只好用在宏程序中存儲數據
,比如,,
,自變量對局部變量賦值.
#100-#199
公共變量
公共變量在不一样的宏程序中的意義同样
.當斷電時,變量#100-
#199
#500-#999
#500-#999的數據保留,即便斷電也不丟失.
#1000–
系統變量
系統變量用於讀和寫CNC運行時各種數據的變化,比如,刀具的
當前地点和補償值.
變量值的範圍
局部變量和公共變量能够有0值或下边範圍中的值;
-1047到–10-29
或
–10-29到1047
假如計算結果高出有效範圍,則發出P/S報警.
小數點的省略
當在程序中定義變量值時,小數點能够省略.
例:當定義#1=123;變量#1的實際值是.
變量的引用
為在程序中使用變量值,,要把表達釋放在擴
號中.
比如:G01X[#1+#2]F#3;
被引用變量的值根據地点的最小設定單位自動地舍入.
比如:
當G00X#/;以1/1000mm的單位執行時,CNC把賦值給變量#1,實際指令值為;.
改變引用變量的值的符號,要把負號(-)放在#的前面.
比如:G00X-#1;
當引用不决義的變量時,變量及地点字都被忽视.
比如:
當變量#1的值是0,並且變量#2的值是空時,G00X#1Y#2的執行結果為G00X0;.
雙軌跡(雙軌跡控制)的公共變量
對雙軌跡控制,,根據參數和6037的設定,某些
公共變量可同時用於兩個軌跡.
不决義的變量
當變量值不决義時,這樣的變量成為”空”#0總是空變量,它不可以寫,只好讀.
引用
當引用一個不决義的變量時,地点自己也被忽视.
當#1=<空>
當#1=0
G90X100Y#1
G90X100
G90X100Y#1
G90X100Y0
運算
除了用<空>賦值以外,其籲請況下<空>與0同样.
當#1=<空>時
當#1=0時
#2=#1
#
2=#1
#2=<空>
#
2=0
#2=#1*5
#
2=#1*5
#2=0
#
2=0
#2=#1+#1
#
2=#1+#1
#2=0
#
2=0
條件表達式
EQ和NE中的<空>不一样於0.
當#1=<空>時
#1EQ#0#
當#1=0時
1EQ#0
成立
不可以立
#1NE#0
#
1NE#0
成立
不可以立
#1GE#0
#1
GE#0
成立
不可以立
#1GT
#0
#
1GT#0
不可以立
不可以立
變量值的顯示
當變量值是空白時,變量是空.
符號********表示溢出(當變量的絕對值大於9時)或下溢出(當變量的絕對值小於時).
限制
程式號,順序號和任選程序段跳轉號不可以使用變量.
比如:
下边情況不可以使用變量
O#1
/#
N#
15..2系統變量
系統變量用於讀和寫NC內部數據,比如,,某些系統變
.
說明
接口信號
是可編程機床控制器(PMC)和用戶宏程序之間交換的信號.
表(a)接口信號的系統變量
變量號
功能
#1000-#1015
#1000到#1015用於按位讀守信號.
變量#1032用於一次讀取一個
16位信號
#1100-#1115
把16位信號從用戶宏程序送到
#1100到#1115用於按位寫信號.
變
#1132
量#1132用於一次寫一個16位信號.
#1133
變量#1133用於從用戶宏程序一次寫一個
32位的信號到PMC.
注意,#1133的值為從-到+.
詳細情況,請見連接說明書(B-63503C-1).
刀具補償值
用系統變量能够讀和寫刀具補償值.
表(b)刀具補償存儲器C的系統變量
補償號
刀具長度補償
(H)
刀具半徑補償
(D)
幾何補償
磨損補償
幾何補償
磨損補償
1
#
11001(#2201)
#
10001
#
13001
#
12001
(#
2001)
200
#
11201(#2400)
#
10201
400
#
11400
(#
2200)
#
13400
#
12400
#10400
當偏置組數小於等於200時,也可使用#2001~#2400.
宏程序報警
表(c)宏程序報警的系統變量
變量號
功能
#3000
當變量#3000的值為0~200時,CNC停止運行且報警.
在表達式後為不超過26個字符的報警信息.
CRT屏幕上顯示報警號和報警信息,此中報警號為變量
#3000的值加上
3000
例:
#3000=1(TOOLNOTFOUND).
報警屏幕上顯示“3001TOOLNOTFOUND”.
程序執行停止並顯示信息.
(
刀具未找到
).
停止和信息顯示
報警號
功能
#3006
在宏程序中指令
“#3006=1(MESSAGE);”時,程序執行前面程序段並停
止.
當最多到
26個字符的信息
,
由控制輸入”
(
“和控制輸出”
)
“括住,
在同一程序段中編程時
,信息被顯示在外面操作信息屏幕
.
時間信息能够讀和寫.
時間信息
表(d)時間信息的系統變量
變量號
功能
#3001
該變量為一個計時器
,,
該變量值復位為
0.
當達到48毫秒時,
該計時器的值返回到0.
#3002
該變量為一個計時器
,當循環啟動燈亮時以一小時為單位計時
.該計時器即
使在電源斷電時也保留該值
.當達到小時,該計時器的值返回到0.
#3011
該變量用於讀取當前的日期
(年/月/日).
年/月/日信息轉換成十進制數.
比如,1994年9月8日表示為.
#3012
該變量用於讀取當前的時間
(時/分/秒).
時/分/秒信息轉換成十進制數.
比如,
下午3點34分56秒表示為153456.
自動運行控制
能够改變自動運行的控制狀態.
表(e)自動運行控制的系統變量(#3003)
#3003單程序段輔助功能的达成
0有效等候
1無效等候
2
有效
不等候
3
無效
不等候
當電源接通時,該變量的值為0.
當單程序段停止無效時,
即便單程序段開關設為
ON,也不執行單程序段停止.
當不指定等候輔助功能
(M,S和T功能)
达成時,
在輔助功能达成从前
,程序執行到以下程
序段.
并且分派达成信號
DEN不輸出.
表(f)
自動運行控制的系統變量(#3004)
#3004
進給暫停
進給速度倍率
準確停止
0
有效
有效
有效
1
無效
有效
有效
2
有效
無效
有效
3
無效
無效
有效
4
有效
有效
無效
5
無效
有效
無效
6
有效
無效
無效
7
無效
無效
無效
當電源接通時,該變量的值為0
當進給暫停無效時:
當進給暫停按鈕被按下時,,當用變量#3003使單程序段方式無效時,單程序段停止不執行.
當進給暫停按鈕壓下又松開時,進給暫停燈亮,可是,機床不断止;程序繼續執行,並且
機床停在進給暫停有效的第一個程序段.
當進給速度倍率無效時,總是100%的倍率,而不论機床操作面板上的進給速度倍率開關的設
置.
當準確停止檢測無效時
,即便那些不執行切削的程序段也不進行準確停止檢測
(地点檢測
).
圖(a)
攻絲循環中使用變量
3004的例子
SETTING值
SETTING值可用變量讀和寫
..
二進制數變為十進制數
.
鏡像
使用外面開關或
SETTING操作設置的各軸鏡像狀態能够通過輸出信號
(鏡像檢測信號
)讀出.
鏡像執行時的鏡像狀態能够檢測(見Ⅲ-節)
获得的二進制值轉換成十進制.
當用鏡像信號和SETTING兩者對某軸設置鏡像功能時,信號值和設定值相或,然後輸出.
當控制軸以外的軸的鏡像功能接通時,它們也被讀進系統變量#3007.
系統變量#
“WRITEPROTECTEDVARIAABLE”.
已加工的部件數
要求的部件數(目標數)和已加工的部件數(达成數)能够讀和寫.
表(g)要求的部件數和已加工的部件數的系統變量
變量號功能
#3001已加工的部件數(达成數)
#3902要求的部件數(目標數)
注:不可以用負值
模态信息
正在處理的程序段从前的模态信息能够讀出
表(h)模态信息的系統變量例:
當執行#1=#4002;時,在#1中获得的值是17,18或19.
假如閱讀模态信息指定的系統變量為不可以用的G代碼,則發出P/S報警.
當前地点
地点信息不可以寫,
只好讀.
表(i)地点信息的系統變量
變量號
地点信號
坐標系
#5001-#5004
工件坐標系
工件坐標系
#5021-#5024
當前地点
機床坐標系
#5041-#5044
當前地点
工件坐標系
#5061-#5064
跳轉信號地点
#5081-#5084
刀具長度補償值
#5101-#5104
伺服地点誤差
第1位代表軸號
(從1到4).
刀具補償值運動時的讀操作
不包含可能
包含不可以能
可能
不可以能
變量#5081~#5088存儲的刀具長度偏置值是當前的執行值,不是後面的程序段的處理值.
在G31(跳轉功能)程序段中跳轉信號接通時的刀具地点貯存在變量#5061到#
程序段中的跳轉信號不接通時,這些變量中貯存指定程序段的終點值.
移動期間不可以讀是指由於緩衝(預讀)功能的原由,不可以讀希望值.
工件坐標系補償(工件零點偏移值)
工件零點偏移值能够讀和寫.
表(j)工件零點偏移值的系統變量
變量號
功能
#5201
第1軸外面工件零點偏移值
#5204
第4軸外面工件零點偏移值
#5221
第1軸G54工件零點偏移值
#5224
第4軸G54工件零點偏移值
#5241
第1軸G55工件零點偏移值
#5244
第4軸G55工件零點偏移值
#5261
第1軸G56工件零點偏移值
#5264
第4軸G56工件零點偏移值
#5281
第1軸G57工件零點偏移值
#5284
第4軸G57工件零點偏移值
#5301
第1軸G58工件零點偏移值
#5304
第4軸G58工件零點偏移值
#5321
第1軸G59工件零點偏移值
#5324
第4軸G59工件零點偏移值
#7001
第1軸工件零點偏移值P1)
#7004
第4軸工件零點偏移值P1)
#7021
第1軸工件零點偏移值P2)
#7024
第4軸工件零點偏移值P2)
#7941
第1軸工件零點偏移值P48)
#7944
第4軸工件零點偏移值P48)
算术和邏輯運算
表(a)
#j和#.
表(a)算術和邏輯運算
說明
角度單位
。’
函數SIN,COS,ASIN,ACOS,.
取值範圍以下:
。。
當參數(#0)NAT位設為0時,270~90
。。
當參數(#0)NAT位設為1時,-90~90
當#j高出-1到1的範圍時,發出P/S報警.
常數可代替變量#j.
ARCCOS#i=ACOS[#j]
取值範圍從180。~0。.
當#j高出-1到1的範圍時,發出P/S報警.
常數能够代替變量#j.
ARCTAN
指定兩個邊的長度,並用斜杠(/)分開.
#i=ATAN[#j]/[#k];
取值範圍以下:
當NAT位(參數,#0)設為0時;0。到360。.
[比如]當指定#1=ATAN[-1]/[
-1
。
]時,#1=225.
。
。
當NAT位(參數,#0)設為1時;-180
到180.
[比如]當指定#1=ATAN[-1]/[
-1
。
]時,#1=.
常數能够取代變量#j.
自然對數#i=LN[#j]
注意,相對誤差可能大於10-8.
當反對數(#j)為0或小於0時,發出P/S報警.
常數能够取代變量#j.
指數函數#i=EXP[#j]
注意,相對誤差可能大於10-8.
當運算結果超過×1047(j大約是110)時,出現溢出並發出P/S報警.
常數能够取代變量#j.
ROUND舍(入)函數
當算術運算或邏輯運算指令IF或WHILE中包含ROUND函數時,則ROUND函數在第1個小數地点
四舍五入.
例:
當執行#1=ROUND[#2];時,此處#2=,變量1的值是.
當在NC語句地点地点中使用ROUND函數時,ROUND函數根據地点的最小設定單位將指定值四
舍五入.
例:
編製钻削加工程序,按變量#1和#2的值切削,
1/1000mm,變量
#1是,
變量#2是,則,
G00G91X-#1;
移動
G01X-#2F300;
移動
G00X[#1+#2];
由於+=,移動距離為,刀具不返回到初始地点.
該誤差來自於舍入从前還是舍入之後相加
.必須指定G00X-[ROUND[#1]+ROUND[#2]]以使刀
具返到初始地点.
上取整和下取整
CNC處理數值運算時,若操作後產生的整數絕對直大於原數的絕對值時為上取整
.對於負數的
:
假設#1=,#2=-.
當執行#3=FUP[#
1]
時,
賦給#3.
當執行#3=FIX[#
1]
時,
賦給#3.
當執行#3=FUP[#
2]
時,
-賦給#3.
當執行#3=FIX[#
2]
時,
-賦給#3.
算術與邏輯運算指令的縮寫
程序中指令函數時,函數名的前二個字符能够用於指定該函數(見Ⅲ-節).
比如:
ROUNDRO
FIXFI
運算序次
○1函數
○2乘和除運算(*、/、AND)
○3加和減運算(+、–、OR、XOR)
擴號嵌套
,,出現P/S
報警.
限制
擴號
([,]),圓括號用於注釋.
運算誤差
運算時,可能出現誤差.
表(b)運算中的誤差
運算
均匀誤差
最大誤差
誤差類型
a=b*c
×10-10
×10-10
相對誤差(*1)
a=b/c
×10
-10
-9
|
|
×10
a
a
b
×10-9
×10-9
a=b+c
×10
-10
×10-10
(*2)
a=b–c
最小||,,||
b
c
a=SIN[b]
×10
-9
×10-8
絕對昫差(*3)
a=COS[b]
a=ATAN[b]/[c]
×10
-6
×10-6
|ε|度
(*4)
注
相對誤差取決於運算結果.
使用兩類誤差的較小者.
絕對誤差是常數,而不论運算結果.
函數TAN執行SIN/COS.
假如SIN、COS或TAN函數的運算結果小於10×10-8或由於運算精度的限制不為0的話,設定參數#1為1,運算結果能够規算為0.
,將得不到希望的結果.
例:
當試圖把下边的值賦給變量
#1和#2時:
#1=
#2=
變量值變成
:
#1=
#2=
此時,當計算#3=#2-#1;時,結果為#3=.
(該計算的實際結果稍有誤差,因為是以二進制執行的
還應該意識到,使用條件表達式EQ,NE,GE,GT,LE
.)
和LT時可能造成誤差
.
比如:
IF[#1EQ#2]的運算會受#1和#2的誤差的影響
所以,應該用IF[ABS[#1-#2]]取代上述語句
當兩個變量的差值未超過允許極限(此處為時
,由此會造成錯誤的判斷.
,以防止兩個變量的誤差.
,則認為兩個變量的值是相等的
.
使用下取整指令時應当心
.
比如:
當計算#2=#2*1000,式中#1=時,變量#2的結果值不是準確的
這裡,當指定#3=FIX[#2]時,變量3的結果值不是2,而是.
或是用以下的四捨五入操作,即可获得正確結果.
2,可能是1..
此時,可先糾正誤差
,再執行下取整
,
#3=FIX[#2+]
#3=ROUND[2]
除數
當在除法或TAN[90]中指定為0的除數時,出現P/S報警.
宏程序語句和NC語句
下边的程序段為宏程序語句:
包含算術或邏輯運算(=)的程序段.
包含控制語句(比如,GOTO,DO,END)的程式段.
包含宏程序調用指令(比如,用G65,G66,G67或其余G代碼,M代碼調用宏程序)的程序段.
除了宏程序語句以外的任何程序段都為NC語句.
說明
與NC語句的不一样
即便置於單程序段運行方式,,當參數#5SBM設定為1時,在單程序段方式
中,機床停止.
在刀具半徑補償方式中宏程序語句段不做為不移動程序段處理(Ⅱ-節).
與宏程序語句有同样性質的C語句
含有子程序調用指令(比如,用M98或其余M代碼或用T代碼調用子程序)但沒有除O,N或L地点以外的其余地点指令的NC語句其性質與宏程序同样.
不包含除或L以外的指令地点的程序段其性質與宏程序語句同样.
宏程式操作程式手册 来自淘豆网m.daumloan.com转载请标明出处.