首页 宏程式操作程式手册

宏程式操作程式手册

举报
开通vip

宏程式操作程式手册15用戶宏程序雖然子程序對編製相同加工操作的程序非常有用,但用戶宏程序由於允許使用變量、算數和邏輯運算及條件轉移,使得編製相同加工操作的程序更方便,更容易.可將相同加工操作編為通用程序,如型腔加工宏程序和固定加工循環宏程序,和調用子程序完全一樣.變量普通加工程序直接用數值指定G代碼和移動距離;例如,G01和X100.0.使用用戶宏程序時,數值可以直接指定或用變量指定.當用變量時,變量值可用程序或用MDI面板上的操作改變.#1=#2+100;G01X#1F300;說明變量的表示數算機允勍使用變量名,用戶宏程序不行.變...

宏程式操作程式手册
15用戶宏程序雖然子程序對編製相同加工操作的程序非常有用,但用戶宏程序由於允許使用變量、算數和邏輯運算及條件轉移,使得編製相同加工操作的程序更方便,更容易.可將相同加工操作編為通用程序,如型腔加工宏程序和固定加工循環宏程序,和調用子程序完全一樣.變量普通加工程序直接用數值指定G代碼和移動距離;例如,G01和X100.0.使用用戶宏程序時,數值可以直接指定或用變量指定.當用變量時,變量值可用程序或用MDI面板上的操作改變.#1=#2+100;G01X#1F300;說明變量的表示數算機允勍使用變量名,用戶宏程序不行.變量用變量符號(#)和後面的變量號指定例如;#1表達式可以用於指定變量號.此時,表達式必須封閉在括號中.例如;#[#1+#2-12]變量的類型變量根據變量號可以分成四種類型變量號變量類型功能#0空變量該變量總是空,沒有值能賦給該變量.#1-#33局部變量局部變量只能用在宏程序中存儲數據,例如,運算結果.當斷電時局部變量被初始化為空.調用宏程序時,自變量對局部變量賦值.#100-#199公共變量公共變量在不同的宏程序中的意義相同.當斷電時,變量#100-#199#500-#999#1000—初始化為空.變量#500-#999的數據保存,即使斷電也不丟失系統變量系統變量用於讀和寫CN(運行時各種數據的變化,例如,刀具的當前位置和補償值變量值的範圍局部變量和公共變量可以有0值或下面範圍中的值-1047到-10-29或-10-29到1047如果計算結果超出有效範圍,則發出P/S報警No.111.小數點的省略當在程序中定義變量值時,小數點可以省略例:當定義#1=123;變量#1的實際值是123.000.變量的引用為在程序中使用變量值,指定後跟變量號的地址.當用表達式指定變量時,要把表達釋放在擴號中.例如:G01X[#1+#2]F#3;被引用變量的值根據地址的最小設定單位自動地舍入.例如:當GOOX#/;以1/1000mm的單位執行時,CNC把12.3456賦值給變量#1,實際指令值爲G00X12.3456;.改變引用變量的值的符號,要把負號(-)放在#的前面.例如:G00X—#1;當引用未定義的變量時,變量及地址字都被忽略.例如:當變量#1的值是0,並且變量#2的值是空時,G00X#1Y#2的執行結果爲G00X0;.雙軌跡(雙軌跡控制)的公共變量對雙軌跡控制,系統爲每一軌跡都提供了單獨的宏變量•但是,根據參數No.6036和6037的設定,某些公共變量可同時用於兩個軌跡.未定義的變量當變量值未定義時,這樣的變量成爲”空”變量.變量#0總是空變量,它不能寫,只能讀.(a)引用當引用一個未定義的變量時,地址本身也被忽略.當#1=<空>當#1=0G90X100Y#1G90X100Y#1G90X100G90X100Y0(b)運算除了用<空>賦值以外,其籲請況下<空>與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(c)條件表達式EQ和NE中的<空>不同於0.當#1=<空>時當#1=0時#1EQ#0#1EQ#0成立不成立#1NE#0#1NE#0成立不成立#1GE#0#1GE#0成立不成立#1GT#0#1GT#0不成立不成立變量值的顯示當變量值是空白時,變量是空.符號********表示溢出(當變量的絕對值大於999999999時)或下溢出(當變量的絕對值小於0.0000001時).限制程式號,順序號和任選程序段跳轉號不能使用變量.例如:下面情況不能使用變量O#1/#2G00X100.0N#3Y200.015..2系統變量系統變量用於讀和寫NC內部數據,例如,刀具偏置值和當前位置數據.但是,某些系統變量只能讀.系統變量是自動控制和通用加工程序開發的基礎.說明接口信號是可編程機床控制器(PMC)和用戶宏程序之間交換的信號.表15.2(a)接口信號的系統變量變量號功能#1000-#1015把16位信號從PMC送到用戶宏程序.變量#1000到#1015用於按位讀取信號.變量#1032用於一次讀取一個16位信號#1100-#1115把16位信號從用戶宏程序送到PMC.變量#1100到#1115用於按位寫信號.變#1132量#1132用於一次寫一個16位信號.#1133變量#1133用於從用戶宏程序一次寫一個32位的信號到PMC.注意,#1133的值為從-99999999到+99999999.詳細情況,請見連接說明書(B-63503C-1).刀具補償值用系統變量可以讀和寫刀具補償值.表15.2(b)刀具補償存儲器C的系統變量補償號刀具長度補償(H)刀具半徑補償(D)幾何補償磨損補償幾何補償磨損補償1#11001(#2201)#10001#13001#12001(#2001)200#11201(#2400)#10201400#11400(#2200)#13400#12400#10400當偏置組數小於等於200時,也可使用#2001~#2400.宏程序報警表15.2(c)宏程序報警的系統變量變量號功能#3000當變量#3000的值爲0~200時,CN停止運行且報警.在表達式後為不超過26個字符的報警信息.CRT屏幕上顯示報警號和報警信息,其中報警號爲變量#3000的值加上3000例:#3000=1(TOOLNOTFOUN)D.報警屏幕上顯示“3001TOOLNOTFOUND”.(刀具未找到).程序執行停止並顯示信息.停止和信息顯示報警號功能#3006在宏程序中指令“#3006=1(MESSAGE);”時,程序執行前面程序段並停止.當最多到26個字符的信息,由控制輸入”(“和控制輸出”)“括住,在同一程序段中編程時,信息被顯示在外部操作信息屏幕.時間信息可以讀和寫.時間信息表15.2(d)時間信息的系統變量變量號功能#3001該變量爲一個計時器,以1毫秒爲計時單位.當電源接通時,該變量值復位爲0.當達到2147483648毫秒時,該計時器的值返回到0.#3002該變量爲一個計時器,當循環啟動燈亮時以一小時爲單位計時.該計時器即使在電源斷電時也保存該值.當達到9544.371767小時,該計時器的值返回到0.#3011該變量用於讀取當前的日期(年/月/日).年/月/日信息轉換成十進制數.例如,1994年9月8日表示爲19940928.#3012該變量用於讀取當前的時間(時/分/秒).時/分/秒信息轉換成十進制數.例如,下午3點34分56秒表示為153456.自動運行控制可以改變自動運行的控制狀態.表15.2(e)自動運行控制的系統變量(#3003)#3003單程序段輔助功能的完成0有效等待1無效等待2有效不等待3無效不等待當電源接通時,該變量的值爲0.當單程序段停止無效時,即使單程序段開關設為ON,也不執行單程序段停止.當不指定等待輔助功能(M,S和T功能)完成時,在輔助功能完成之前,程序執行到下列程序段.而且分配完成信號DEN不輸出.表15.2(f)自動運行控制的系統變量(#3004)#3004進給暫停進給速度倍率準確停止0有效有效有效1無效有效有效2有效無效有效3無效無效有效4有效有效無效5無效有效無效6有效無效無效7無效無效無效當電源接通時,該變量的值為0當進給暫停無效時:當進給暫停按鈕被按下時,機床在單段停止方式停止.但是,當用變量#3003使單程序段方式無效時,單程序段停止不執行.當進給暫停按鈕壓下又松開時,進給暫停燈亮,但是,機床不停止;程序繼續執行,並且機床停在進給暫停有效的第一個程序段.當進給速度倍率無效時,總是100%的倍率,而不管機床操作面板上的進給速度倍率開關的設置.當準確停止檢測無效時,即使那些不執行切削的程序段也不進行準確停止檢測(位置檢測).圖15.2(a)攻絲循環中使用變量3004的例子SETTING值SETTING值可用變量讀和寫••二進制數變爲十進制數•鏡像使用外部開關或SETTING操作設置的各軸鏡像狀態可以通過輸出信號(鏡像檢測信號)讀出.鏡像執行時的鏡像狀態可以檢測(見川—4.8節)得到的二進制值轉換成十進制.當用鏡像信號和SETTING兩者對某軸設置鏡像功能時,信號值和設定值相或,然後輸出當控制軸以外的軸的鏡像功能接通時,它們也被讀進系統變量#3007.系統變量#3007是寫保護的系統變量•如果試圖在變量中寫數據.則發出P/S116報警“WRITEPROTECTEDVARIAABLE”.已加工的零件數要求的零件數(目標數)和已加工的零件數(完成數)可以讀和寫.表15.2(g)要求的零件數和已加工的零件數的系統變量變量號功能#3001已加工的零件數(完成數)#3902要求的零件數(目標數)注:不能用負值模态信息正在處理的程序段以前的模态信息可以讀出表15.2(h)模态信息的系統變量例:當執行#1=#4002;時,在#1中得到的值是17,18或19.G代碼,則發出P/S報警.如果閱讀模态信息指定的系統變量為不能用的當前位置位置信息不能寫,只能讀.表15.2(i)位置信息的系統變量變量號位置信號坐標系#5001—#5004工件坐標系工件坐標系#5021—#5024當前位置機床坐標系#5041—#5044當前位置工件坐標系#5061—#5064跳轉信號位置#5081—#5084刀具長度補償值#5101—#5104伺服位置誤差第1位代表軸號(從1到4).刀具補償值運動時的讀操作不包含可能包含不可能可能不可能,不是後面的程序段的處理值變量#5081~#5088存儲的刀具長度偏置值是當前的執行值在G31(跳轉功能)程序段中跳轉信號接通時的刀具位置貯存在變量#5061到#5068中.當G31程序段中的跳轉信號不接通時,這些變量中貯存指定程序段的終點值.移動期間不能讀是指由於緩衝(預讀)功能的原因,不能讀期望值.工件坐標系補償(工件零點偏移值)工件零點偏移值可以讀和寫.表15.2(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軸工件零點偏移值(G54.1P1)#7004第4軸工件零點偏移值(G54.1P1)#7021第1軸工件零點偏移值(G54.1P2)#7024第4軸工件零點偏移值(G54.1P2)#7941第1軸工件零點偏移值(G54.1P48)#7944第4軸工件零點偏移值(G54.1P48)15.3算术和邏輯運算表15.3(a)中列出的運算可以在變量中執行•運算符右邊的表達時可包含常量和/或由函數或運算符組成的變量•表達式中的變量#j和姝可以用常數賦值•左邊的變量也可以用表達式賦值.表15.3(a)算術和邏輯運算說明角度單位函數SIN,COS,ASIN,ACOS,TAN和ATAN的角度單位是度.如90。30表示爲90.5度.ARCSIN#i=ASIN[#J]取值範圍如下:當參數(No.6004#0)NAT位設爲0時,270。~90。當參數(No.6004#0)NAT位設爲1時,-90。~90。當的超出-1到1的範圍時潑出P/S報警No.111.常數可替代變量#j.ARCCOS#i=ACOS[#j]取值範圍從180。~0。.當的超出-1到1的範圍時,發出P/S報警No.111.常數可以替代變量#j.ARCTAN指定兩個邊的長度,並用斜杠(/)分開.#i=ATAN[#j]/[#k];取值範圍如下:當NAT位(參數No.6004,#0)設為0時;0。到360。.[例如]當指定#1=ATAN[-1]/[-1]時,#1=225。.當NAT位(參數No.6004,#0)設為1時;-180。到180。•[例如]當指定#1=ATAN[-1]/[-1]時,#1=-135.0。.常數可以代替變量#j.自然對數#i=LN[#j]注意,相對誤差可能大於10-8.當反對數(#j)爲0或小於0時,發出P/S報警No.111.常數可以代替變量#j.指數函數#i=EXP[#j]注意,相對誤差可能大於10-8.當運算結果超過3.65X1047(j大約是110)時,出現溢出並發出P/S報警No.111.常數可以代替變量#j.ROUND(舍入)函數當算術運算或邏輯運算指令IF或WHILE中包含ROUND函數時,則ROUND函數在第1個小數位置四舍五入.例:當執行#1=ROUND[#2];時,此處#2=1.2345,變量1的值是1.0.當在NC語句地址地址中使用ROUND函數時,ROUND函數根據地址的最小設定單位將指定值四舍五入.例:編製钻削加工程序,按變量#1和#2的值切削,然後返回到初始位置.假定最小設定單位是1/1000mm,變量#1是1.2345,變量#2是2.3456,則,G00G91X-#1;移動1.235mmG01X-#2F300;移動2.3456mmG00X[#1+#2];由於1.2345+2.3456=3.5801,移動距離為3.580,刀具不返回到初始位置.該誤差來自於舍入之前還是舍入之後相加.必須指定G00X-[ROUND[#1]+ROUND[#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.算術與邏輯運算指令的縮寫程序中指令函數時,函數名的前—個字符可以用於指定該函數(見川一9.7節).例如:ROUNDROFIXFI運算次序①函數①乘和除運算(*、/、AND③加和減運算(+、-、OR、XOR)擴號嵌套括號用於改變運算次序.括號可以使用5級,包括函數內部使用的括號.當超過5級時,出現P/S報警No.118.限制擴號([,])用於封閉表達式.注意,圓括號用於注釋運算誤差運算時,可能出現誤差.表15.3(b)運算中的誤差運算平均誤差曰-P壬口辛人誤差類型a=b*c1.55X10-10-104.66X10相對誤差(*1)-10a=b/c4.66X101.88X10|-|aa、..b-91.24X10-93.73X10a=b+c-102.33X10-105.32X10(*2)a=b-c最小丨—丨,,丨—1bca=SIN[b]-95.0X10-81.0X10絕對昫差(*3)a=COS[b]a=ATAN[b]/[c]1.-68X10-63.6X101el度(*4)注1.相對誤差取決於運算結果使用兩類誤差的較小者絕對誤差是常數,而不管運算結果•函數TAN執行SIN/COS.如果SIN、CO或TAN函數的運算結果小於10X10-8或由於運算精度的限制不爲0的話,設定參數N0.6004#1爲1,運算結果可以規算爲0.變量值的精度約爲8位十進制數.當在加/減速中處理非常大的數時,將得不到期望的結果.例:當試圖把下面的值賦給變量#1和#2時:#1=9876543210123.456#2=9876543277777.777變量值變成:#1=9876543200000.000#2=9876543300000.000此時,當計算#3=#2-#1;時,結果爲#3=100000.000.(該計算的實際結果稍有誤差,因爲是以二進制執行的.)還應該意識到,使用條件表達式EQ,NE,GE,GT,LE和LT時可能造成誤差.例如:IF[#1EQ#2]的運算會受#1和#2的誤差的影響,由此會造成錯誤的判斷.因此,應該用IF[ABS[#1-#2]LT0.001]代替上述語句,以避免兩個變量的誤差.當兩個變量的差值未超過允許極限(此處爲0.001)時,則認爲兩個變量的值是相等的.使用下取整指令時應小心.例如:當計算#2=#2*1000式中#1=0.002時,變量#2的結果值不是準確的2,可能是1.99999997.這裡,當指定#3=FIX[#2]時,變量3的結果值不是2,而是1.0.此時,可先糾正誤差,再執行下取整,或是用如下的四捨五入操作,即可得到正確結果.#3=FIX[#2+0.001]#3=ROUND[2]除數當在除法或TAN[90]中指定爲0的除數時,出現P/S報警No.112.15.4宏程序語句和NC語句F面的程序段爲宏程序語句包含算術或邏輯運算(=)的程序段.包含控制語句(例如,GOTODOEND的程式段•包含宏程序調用指令(例如,用G65,G66,G67或其它G弋碼,M代碼調用宏程序)的程序段•除了宏程序語句以外的任何程序段都爲NC語句•說明與NC語句的不同即使置於單程序段運行方式,機床也不停止•但是,當參數N0.6000#5SBN設定爲1時,在單程序段方式中,機床停止•在刀具半徑補償方式中宏程序語句段不做爲不移動程序段處理(II-15.7節).與宏程序語句有相同性質的C語句含有子程序調用指令(例如,用M98或其它M代碼或用T代碼調用子程序)但沒有除QN或L地址之外的其它地址指令的NC吾句其性質與宏程序相同•不包含除O.N.P或L以外的指令地址的程序段其性質與宏程序語句相同15.5轉移和循環在程序中,使用GOT語句和IF語句可以改變控制的流向•有三種轉移和循環操作可供使用:轉移和循環GOT語句(無條件轉移)IF語句(條件轉移:IF…THEN-)WHILE吾句(當…時循環)15.5.1無條件轉移(GOTO語句)轉移到標有順序號n的程序段•當指定1到99999以外的順序號時,出現P/S報警No.128.可用表達式指定順序號•GOTOn;n:順序號(1到99999)例:GOTO1;GOTO#10;15.5.2條件轉移(IF語句)[<條件表達式>]IF之後指定條件表達式•IF[<條件表達式>]GOTOn如果指定的條件表達式滿足時,轉移到標有順序號n的程序段.如果指定的條件表達式不滿足執行下個程序段•如果變量#1的值大於10,轉移到順序號N2的程序段.如果條件不滿足IF[#1GT10]GOTO2程序如果條件滿足N2G00G91X10.0;IF[<條件表達式>]THEN如果條件表達式滿足,執行預先決定的宏程序語句.只執行一個宏程序語句如果#1和#2的值相同,0賦給#3.IF[#1EQ#2]THEN#3=0;說明條件表達式條件表達式必須包括算符.算符插在兩個變量中間或變量和常數中間,並且用擴號([,])封閉.表達式可以替代變量.運算符運算符由2個字母組成,用於兩個值的比較,以決定它們是相等還是一個值小於或大於另一個值.注意,不能使用不等號.表15.5.2運算符運算符含義EQ等於(=)NE不等於仟)GT大於(>)GE大於或等於(仝)LT小於(V)LE小於或等於(W)典型程序下面的程序計算數值1~10的總和O9500#1=0;存儲和數變量的初值#2=1;被加數變量的初值N1IF[#2GT10]GOTO2;……當被加數大於10時轉移到N2#1=#1+#2;計算和數#2=#2+#1;………………………下一個被加數GOTO1;…………………………轉到N1N2M30;…………………………程序結束15.5.3循環(WHILE語句)在WHILE後指定一個條件表達式•當指定條件滿足時,執行從DOiUEN[之間的程序.否則,轉到EN酸的程序段.WHILE[條件表達式]DOm;(m=1,2,3)如果條件不滿足如果條件滿足程序ENDm;當指定的條件滿足時,執行WHILESDOiUEND之間的程許.否則,轉而執行END之後的程序段,這種指令格式適用於IF語句.DO後的號和END後的號是指定程序執行範圍的標號,標號值爲1,2,3.若用1,2,3以外的值會發生P/S報警No.126.嵌套在DO-ENDf環中的標號(1到3)可根據需要多次使用•但是,當程序有交叉重復循環(DO範圍的重疊)時,出現P/S報警No.124.說明無限循環當指定DO而沒有指定WHILE語句時,產生從DO^END勺無限循環.處理時間當在GOT語句中有標號轉移的語句時,進行順序號檢索•反向檢索的時間要比正向檢索長•用WHILE語句實現循環可減少處理時間.未定義的變量在使用EC或NE的條件表達式中,<空〉和零有不同的效果.在其它形式的條件表達式中,<空>被當作零.典型程序下面的程序計算數值1到10的總和.O0001#1=0;#2=1;WHILE[#2LE10]DO1;#1=#1+#2;#2=#2+1;END1;M30;15.6宏程序調用用下面的 方法 快递客服问题件处理详细方法山木方法pdf计算方法pdf华与华方法下载八字理论方法下载 調用宏程序:宏程序調用非模態調用(G65)模態調用(G66G67)用G弋碼調用宏程序用M弋碼調用宏程序用M弋碼調用子程序用T代碼調用子程序限制宏程序調用和子程序調用之間的差別宏程序調用(G65)不同于子程序調用(G98),如下所述.用G65,可以指定自變量(數據傳送到宏程序).M98沒有該功能•當M98程序段包含另一個NC指令(例如,G01X100.0M98Pp)時,在指令執行之後調用子程序相反,G65無條件地調用宏程序•M98程序段包含另一個NC旨令(例如,G01X100.0M98Pp)時,在單程序段方式中,機床停止•相反,G65機床不停止用G65,改變局部變量的級別•用M98,不改變局部變量的級別•15.6.1非模態調用(G65)當指定G65時,以地址P指定的用戶宏程序被調用•數據(自變量)能傳遞到用戶宏程序體中•說明呼調在G65之後,用地址P指定用戶宏程序的程序號•當要求重復時,在地址L後指定從1到9999的重復次數•省略L值時,認爲L等於1.使用自變量指定,其值被賦值到相應的局部變量•自變量指定可用兩種形式的自變量指定•自變量指定I使用除了G,L,O,N和P以外的字母,每個字母指定一次•自變量指定H使用A,B,C和li,Ji,和K(i爲1~10).根據使用的字母,自動地決定自變量指定的類型•自變量指定I地址變量號地址變量號地址變量號A#1I#4T#20B#2J#5U#21C#3K#6V#22D#7M#13W#23E#8Q#17X#24F#9R#18Y#25H#11S#19Z#26地址G,L,N,Q和P不能在自變量中使用不需要指定的地址可以省略,對應於省略地址的局部變量設為空.地址不需要按字母順序指定•但應符合字地址的格式•但是,I,J和K需要按字母順序指定例:B_A_D_…J_K_正確B_A_D_…J_I_不正確自變量指定n自變量指定n使用A,B,和C各1次,I,J,K1O次•自變量指定n用於傳遞諸如三維坐標值的變量.地址變量號地址變量號地址變量號A#1K3#12J7#23B#2I4#13K7#24C#3J4#14I8#25I1#4K4#15J8#26J1#5I5#16K8#27K1#6J5#17I9#28I2#7K5#18J9#29J2#8I6#19K9#30K2#9J6#20I10#31I3#10K6#21J10#32J3#11I7#22K10#33I,J,K的下標用於確定自變量指定的順序,在實際編程中不寫•限制格式任何自變量前必須指定G65.自變量指定i、n的混合CNC內部自動識別自變量指定I和自變量指定n•如果自變量指定I和自變量指定n混合指定的話,後指定的自變量類型有效•小數點的位置沒有小數點的自變量數據的單位為各地址的最小設定單位•傳遞的沒有小數點的自變量的值根據機床實際的系統配置變化•在宏程序調用中使用小數點可使程序兼容性好•調用嵌套調用可以嵌套4級,包括非模態調用(G65)和模態調用(G66)•但不包括子程序調用(M98).局部變量的級別局部變量嵌套從0到4級.主程序是0級.宏程序每調用1次(用G65或G66),局部變量級別加1•前1級的局部變量值保存在CNC中•當宏程序中執行M99時,控制返回到調用的程序•此時,局部變量級別減1;並恢復宏程序調用時保存的局部變量•典型程序(園周螺栓孔)編製一個宏程序加工輪園上的孔•園周的半徑爲I,起始角爲A,間隔爲B,钻孔數爲H,園的中心是(X,Y).指令可以用絕對值或增量值指定.順時針方向钻孔時B應指定负值.調用格式G65P9100XxYyZzRrIiAaBbHh;X:園心的X坐標(絕對值或增量值指定)(#24)Y:園心的Y坐標(絕對值或增量值指定)(#25)Z:孔深(#26)R:快速趨進點坐標(#18)F:切削進給速度(#9)I:園半徑(#4)A:第一孔的角度(#1)B:增量角(指定负值時爲順時針)(#2)H:孔數(#11)宏程序調用程序O0002G90G92X0Y0Z100.0;G65P9100X100.0Y50.0R30.0Z-50.0500I100.0A0B45.0H5;M30;宏程序(被調用的程序)O9100#3=#4003;存儲03組G代碼G81Z#26R#18F#9K0;(注)钻孔循環注:也可以使用L0IF[#3EQ90]GOTO1;在G90方式轉移到N1#24=#5001+#24;計算園心的X坐標#25=#5002+#25;計算園心的Y坐標N1WHILE[#11GT0]DO1;直到剩餘孔數爲0#5=#24+#4*COS[#1];計算X軸上的孔位#6=#25+#4*SIN[+1];計算X軸上的孔位G90X#5Y#6;移動到目標位置之後執行钻孔#1=#1+#2;更新角度#11=#11-1;孔數-1END1;G#3G80;返回原始狀態的G代碼M99;變量的含義#3:貯存03組的G代碼#5:下個孔的X坐標#6:下個孔的Y坐標15.6.2模態調用(G66)一旦發出G66則指定模態調用,即指定沿移動軸移動的程序段後調用宏程序•G67取消模態調用.說明調用在G66之後,用地址P指定模態調用的程序號•當要求重複時,地址L後指定從1到9999的重複次數.與非模態調用(G65)相同,自變量指定的數據傳遞到宏程序體中•取消指定G67代碼時,其後面的程序段不再執行模態宏程序調用•調用嵌套調用可以嵌套4級.包括非模態調用(G65)和模態調用(G66).但不包括子程序調用(M98).模態調用嵌套在模態調用期間,指定另一個G66代碼,可以嵌套模態調用•限制在G66程序段中,不能調用多個宏程序•G66必須在自變量之前指定.在只有諸如輔助功能但無移動指令的程序段中不能調用宏程序.局部變量(自變量)只能在G66程序段中指定.注意,每次執行模態調用時,不再設定局部變量.典型程序用宏程序編製G81固定循環的操作•加工程序使用模態調用•爲了簡化程序,使用絕對值指定全部的钻孔數據.調用格式G65P9110XxYyZzRrFfLl;X:孔的X坐標(由絕對值指定)(#24)Y:孔的Y坐標(由絕對值指定)(#25)Z:Z點的坐標(由絕對值指定)(#26)R:R點坐標(由絕對值指定)(#18)F:切削進給速度(#9)L:重複次數調用宏程序的程序Ooooi;G28G91X0Y0Z0;G92X0Y0Z50.0;G00G90X100.0Y50.0;G66P9110Z-20.0R.0F500;G90X20.0Y20.0;X50.0;Y50.0;X0.0Y80.0;G67;M30;宏程序(被調用的程序)O9110:#1=#4001;貯存G00/G01#2=#4003;貯存G90/G91#3=#4109;貯存切削進給速度#5=#5003;貯存钻孔開始的Z坐標G00G90Z#18;定位在R點G01Z#26F#9;切削進給到Z點IF[#4010EQ98]GOTO1;返回到1點G00Z#18;定位在R點GOTO2;N1G00Z#5;定位在1點N2G#1G#3F#4;恢復模態信息.M99;15.6.3用G代碼調用宏程序在參數中設置調用宏程序的G代碼,與非模態調用(G65)同樣的方法用該代碼調用宏程序•說明在參數(No.6050到No.6059)中設置調用用戶宏程序(O9010到O9019)的G代碼號(從1到9999),調用戶宏程序的方法與G65相同.例如,設置參數,使宏程序O9010由G81調用,不用修改加工程序,就可以調用由用戶宏程序編製的加工循環.參數號和程序號之間的對應關係程序號參數號O90106050O90116051O90126052O90136053O90146054O90156055O90166056O90176057O901860586059O9019—.、A--重複與非模態調用一樣,地址L可以指定從1到9999的重複次數自變量指定與非調用模態一樣,兩種自變量指定是有效的:自變量指定I和自變量指定H.根據使用的地址自動地決定自變量的指定類型.限制使用G代碼的宏調用的嵌套在G代碼調用的程序中,不能用一個G代碼調用多個宏程序•這種程序中的G代碼被處理爲普通G代碼.在用M或T代碼作爲子程序調用的程序中,不能用一個G代碼調用多個程序•這種程序中的G代碼也被處理爲普通G代碼.15.6.4用M代碼調用宏程序在參數中設置調用宏程序的M代碼,與非模態調用(G650)的方法一樣用該代碼調用宏程序.說明在參數(No.6080到No.6089)中設置調用用戶宏程序(O9021到O9029)的M代碼(從1到99999999),用戶宏程序能與G65同樣的方法調用•參數號和程序號之間的對應關係程序號參數號90206080902160819022608290236083902460849025608590266086902760879028608890296089與非模態調用一樣,地址L可以指定從1到9999的重複次數•自變量指定與非模態調用一樣,兩種自變量的指定是有效的:自變量指定I和自變量指定H.根據使用的地址自動地決定自變量指定的類型.限制調用宏程序的M代碼必須在程序段的開頭指定.用G代碼調用的宏程序或用M代碼或T代碼作爲子程序調用的程序中,不能用於M代碼調用多個宏程序•這種宏程序或程序中的M代碼被處理爲普通M代碼.15.6.5用M代碼調用子程序在參數中設置調用子程序(宏程序)的M代碼號,可與子程序調用(M98)相同的方法用該代碼調用宏程序.說明在參數(No.6071到No.6079)中設置調用子程序的M代碼(從1到99999999),相應的用戶宏程序(O9001到O9009)可與M98同樣的方法用該代碼調用.參數號和程序號之間的對應關係程序號參數號O90016071O90026072O90036073O90046074O90056075O90066076O90076077O90086078O90096079重復與非模態調用一樣,地址L可以指定從1到9999的重複次數.自變量指定不允許自變量指定.M代碼在宏程序中調用的M代碼被處理爲普通的M代碼.限制用G代碼調用的宏程序,或用M或T代碼調用的程序中,使用一個M代碼不能調用幾個子程序這種宏程序或程序中的M代碼被處理爲普通的M代碼.15.6.6用T代碼調用子程序在參數中設置調用的子程序(宏程序)的T代碼,每當在加工程序中指定T代碼時,即調用宏程序.說明調用設置參數No.6001的5位TCS=1,當在加工程序中指定T代碼時,可以調用宏程序O9000.在加工程序中指定的T代碼賦值到公共變量#149.限制用G代碼調用的宏程序中或用M或T代碼調用的程序中,一個M代碼不能調用多個子程序.這種宏程序或程序中的T代碼被處理爲普通T代碼.15.6.7典型程序用M代碼調用子程序的功能,調用測量每把刀具的累積使用時間的宏程序.條件測量T01到T05各把刀具的累積使用時間.刀號大於T05的刀具不進行測量.下面的變量用於貯存刀號和測量的時間.#501刀號1的累積使用時間#502刀號2的累積使用時間#503刀號3的累積使用時間#504刀號4的累積使用時間#505刀號5的累積使用時間當指定M03時,開始計算使用時間,當指定M05時,停止計算.在循環啟動燈亮期間,用系統變量#3002測量該時間.進給暫停和單段停止期間,時間不計算,但要計算換刀和交換工作台的時間.運行檢查參數設置參數No.6071中設置3,參數No.6072中設置05.變量值設置變量#501到#505中設置0.調用宏程序的程序Ooooi;T01M06;M03;M05;改變#501T02M06;M03;M05;改變#502T03M06;M03;M05;改變#503T04M06;M03;M05;改變#504T05M06;M03;M05;改變#505M30;宏程序(被調用的程序)O9001(M03);啟動計算的宏程序M01;IF[#4120EQ0]GOTO9;沒有指定刀具IF[#4120GT5]GOTO9;超出刀號範圍#3002=0;計時器清0N9M03;以正向旋轉主軸M99;O9002(M05);結束計算的宏程序M01;IF[#4120EQ0]GOTO9;沒有指定刀具IF[#4120GT5]GOTO9;超出刀具範圍#[500+#120]=#3002+#[500+4120];計算累積時間N9M05;停止主軸M99;15.7宏程序語句的處理爲了平滑加工,CNC預讀下一個要執行的NC語句.這種運行稱爲緩衝•在刀具半徑補償方式(G41,G42)中,NC爲了找到交點提前預讀2或3個程序段的NC後語句.算術表達式和條件轉移的宏程序語句在它們被讀進緩衝寄存器後立即被處理•包含M00,M01,M02或M30的程序段,包含由參數No.3411到No.3420設置的禁止緩衝的M代碼的程序段,以及包含G31的程序段不預讀•說明當下個程序段不緩衝時(不緩衝的M代碼,G31等)在除了刀具半徑補償方式(G41,G42)以外的方式中,緩衝下個程序段(正常預讀一個程序段)當執行N1時,下個NC語句(N4)被讀入緩衝器.N1和N4之間的宏語句(N2,N3)在N1執行期間被處理•在刀具半徑補償方式(G41,G42)中緩衝下個程序段當N1正在執行時,在下2個程序段(直到N5)中的NC語句被讀進緩衝寄存器•在N1和N5之間的宏語句(N2,N4)在N1的執行期間被處理•在刀具補償半徑方式C(G41,G42)中,當下個程序段包含沒有移動的程序段時當NC1程序段正在執行時,下兩個程序段(直到N5)中的NC語句被讀進緩衝寄存器•由於N5是不移動的程序段,不能計算交點•此時,下面三個程序段(直到N7)中的NC語句被讀入•在N1和N7之間的宏語句(N2,N4和N6)在執行N1時被處理•15.8用戶宏程序的存儲用戶宏程序與子程序相似•可用與子程序同樣的方法進行存儲和編程,存儲容量由子程序和宏程序的總容量決定.15.9限制MDI運行在MDI方式中可以指定宏程序調用指令•但是,在自動運行期間,宏程序調用不能切換到MDI方式.順序號檢索用戶宏程序不能檢索順序號.單程序段即使宏程序正在執行,在單程序段方式,程序段也能停止.包含宏程序調用指令(G65,G66或G67)的程序段中,即使在單程序段方式也不能停止•當設定SBM(參數No.6000的5位)爲1時,包含算術運算指令和控制指令的程序段可以停止單程序段運行用於調試用戶宏程序•注意,在刀具半徑補償C方式中,當宏程序語句中出現單程序段停止時,該語句被認爲不包含移動的程序段,並且,在某些情況下,不能執行正確的補償(嚴格地講,該程序段被當作指定移動距離爲0的移動.)任選程序段跳過在V表達式〉中間出現的/符號(在算術表達式的右邊,封閉在擴號[]中)被認爲是除法運算符;不作爲任選程序段跳過代碼.在EDIT方式中的運行設定參數NE8(參數No.3202的0位)和NEP(參數No.3202的4位)爲1,可對程序號8000到8999和9000到9999的用戶宏程序和子程序進行保護.當存儲器全清時(電源接通時,同時按下RESET和DELET鍵),存儲器的全部內容包括宏程序都被清除•復位當復位時,局部變量和#100到#149的公共變量被清除爲空值•設定CLV和CCV(參數6001的第7位和第6位),它們可以不被清除•系統變量#1000到#1133不被清除•復位操作清除任何用戶宏程序和子程序的調用狀態及DO狀態並返回到主程序•程序再啟動的顯示和M98—樣,子程序調用使用的M,T代碼不顯示•進給暫停在宏程序語句的執行期間,進給暫停有效時,當宏語句執行之後機床停止•當復位或出現報警時,機床也停止•V表達式〉中可以使用的常數值+0.0000001到+99999999-99999999到-0.0000001有效數值是8位(十進製),如果超過這個範圍,出現P/S報警No.003.15.10外部輸出指令除了標準的用戶宏指令外,還可用下面的宏程序指令•它們被稱作外部輸出指令•-BPRNT-DPRNT-POPEN-PCLOS通過閱讀機/穿孔機接口,用這些指令輸出變量值和字符.說明按下列順序指定這些指令:打開指令:POPEN在指定數據輸出命令的順序之前,指定該指令,以建立與外部輸入/輸出設備的鏈接.數據輸出指令:BPRNT或DPRNT指定需要的輸出數據.關閉指令:PCLOS當全部數據輸出指令已經完成時,指定PCLO以解除與外部輸入/輸出設備的鏈接.打開指令POPENPOPENPOPE建立與外部輸入/輸出設備的鏈接.必須在數據輸出指令的順序之前指定.根據該指令CN(輸出DC2控制代碼•數據輸出指令BPRNTBPRNT[a#b[c]…]小數的有效位數變量字符BPRNT指令以二進製輸出字符和變量值•指定的字符根據輸出時的設定數據(ISO)轉換成代碼•可指定的字符如下:—字母(A到Z)-數字—特殊字符(*,/,+,-,等)星號(*)用空格輸出•所有變量都以小數點存儲•指定一個變量時,變量後要用擴號指定小數的有效位數•變量值處理成爲2個字(32位)數據•包括小數位•輸出爲二進製數據,從最高字節開始輸出•當指定的數據輸出時,根據設定代碼(ISO)輸出EOB代碼.空變量認爲是0.數據輸出指令DPRNTBPRNT[a#b[cd]…]小數點後的有效位數整數部份中的有效位數變量字符BPRN指令,根據SETTING(ISO)的代碼設定,輸出字符和變量中的各位數值.對DPRN指令的說明,請見對BPRN指令說明的⑴、(2)和(4)項.當輸出變量時,要指定#和後面的變量號,然後,在擴號中指定整數部分中的位數和小數點後的位數.數據從高位輸出,每位數都按相應的代碼輸出,代碼由(ISO)設定•小數點也按(ISO)設定的代碼輸出.每個變量必須是最多8位數組成的數字值•當高位數是零時,如果PRT(參數6001的1位)是1的話,這些零不輸出•如果參數PRT是0,每當遇到0時輸出空格代碼•當小數的有效位數不是零時,小數部分總是輸出•如果小數的有效位數是零,則不輸出小數點•當PRT(參數6001的1位)是0時,輸出空格代替+號表示正數;如果參數PRT是1,不輸出代碼•關閉指令PCLOSPCLOS;PCLOS指令解除於外部輸入/輸出設備的鏈接•當所有數據輸出指令結束時,指定該指令•根據該指令CNC輸出DC4控制代碼•要求的設定指定設定(SETTING)數據中的通道(I/O通道)•根據這些數據,指定閱讀機/穿孔機接口的數據(例如,波特率)•I/O通道0:參數(No.101,No.102和No.103)I/O通道1:參數(No.111,No.112和No.113)I/O通道2:參數(No.112,No.122和No.123)輸出裝置不要指定FANUC磁帶盒或軟盤盒•當指定DPRNT指令輸出數據時,用參數PRT(參數6001的1位)爲1或0指定是否輸出數據的前零•數據行結束時輸出LF或LF,CF,用參數#6001的第4位CRO設定•注不必總是在一起指定打開指令(POPEN),數據輸出指令(BPRNT,DPRNT)以及關閉指令(PCLOS)•一旦在程序的開頭指定了打開指令後,除非指定了關閉指令,不需要再次指令打開指令•必須成對指定打開指令和關閉指令•在程序的末尾指定關閉指令•但是,如果沒有指定打開指令,就不必指定關閉指令•當數據輸出指令正在執行時,若執行復位操作,輸出停止並且後面的數據被清除•因此,當復位操作時由代碼,例如,執行數據輸出程序的結束代碼M30時,在程序的結束部分應指定關閉指令,使M30的處理不執行,確保全部數據被輸出•在擴號中的縮寫宏程序字保持不變•但是,當擴號中的字符被分開並輸入多次時,第2和以後的縮寫被轉換並輸入•O可以在擴號[]中指定•注意,當擴號[]中的字符被分開並輸入多次時,O在第2和以後的輸入中被忽略•15・11中斷型用戶宏程序當程序正在執行時,來自機床的中斷輸入信號(UINT)可以調用另一個程序•該功能稱爲中斷型用戶宏程序功能.以下面的格式編程中斷指令:指令格式M96P0000;用戶宏程序中斷有效M97;用戶宏程序中斷無效說明中斷型用戶宏程序功能允許在程序執行期間在任一程序段調用另一個程序.這就可使程序根據隨時變化的條件實時地運行.當檢測到刀具的異常狀態時,用外部信號啟動異常過程的處理.加工運行的順序由另一個加工操作中斷而不取消現在的運行.以固定的間隔,讀取與現在加工有關的信息.上面敘述的中斷型用戶宏程序功能類似於適應控制.圖15.11中斷型用戶宏程序功能當在程序中指定M96PXX時由於中斷信號(UINT)的輸入,中斷了後面的程序運行,轉爲執行由PXX指令的程序.在M97旨定後,中斷信號(UINT,在圖15.11中用*標記)的輸入被忽略.並且,在中斷程序執行期間,不得輸入中斷信號.指定方法說明中斷條件用戶宏程序只能在程序執行期間有效.在下列條件下使用:-存儲器運行或MDI運行時-STL(起動燈)亮時-目前不處理用戶宏中斷時指定一般情況下,指定M96使中端信號(UINT)有效,可以執行用戶宏程序中斷功能.M97使信號無效.一旦指定M96中斷信號(UINT)的輸入使用戶宏程序中斷開始.直到指定M97或NC复位後,中斷型宏程序功能取消•在指定M97或NC复位以後,即使中斷信號(UINT)輸入,用戶宏程序中斷也不執行,中斷信號被忽略直到指定另一個M96.指定M96後,中斷信號(UINT)生效•在M97方式中,即使輸入信號,也被忽略•當在M97方式中斷信號輸入並保持接通直到M96指定時,(用狀態觸發形式時)立即執行宏程序中斷•當使用邊沿觸發形式時,即使指定M96,用戶宏程序也不執行•注狀態觸發和邊沿觸發形式,見H—15.11.2”戶宏程序中斷信號”.功能的詳細說明說明子程序型中斷和宏程序型中斷由兩種形式的用戶宏程序中斷:子程序型中斷和宏程序型中斷.使用的中斷類型是由MSB參數6003的5位)選擇的.(a)子程序型中斷中斷程序作為子程序調用.這意味著在中斷的前後局部變量的級別保持不變.中斷不包含在子程序調用的嵌套級中.(b)宏程序型中斷中斷程序作為宏程序調用.這意味著在中斷的前後局部變量的級別要改變.中斷不包含在子程序調用的嵌套級中.當在中斷程序內執行子程序調用或用戶宏程序調用時,這個調用包含在子程序調用或宏程序調用的嵌套級中.即使用戶宏程序中斷是宏程序型中斷時,自變量也不能從現在程序傳遞.用戶宏程序中斷控制的M弋碼在一般情況下,用戶宏程序中斷由M96和M97控制•但是,這些代碼可能已被某些機床製造廠用於其它用途(例如,M功能或宏程序M弋碼調用)•由於這個原因,可用MPR參數6003的4位)設定用戶宏程序中斷控制的M弋碼•當設定該參數指定用M弋碼調用中斷型宏程序時,應將M弋碼設在參數6033和6034中:在參數6033中設定使用戶宏程序中斷有效的M弋碼.而在參數6034中設定使用戶宏程序中斷無效的M代碼.當指定不用參數設定的M弋碼時,M96和M97用作中斷型用戶宏程序控制調用的M代碼,而不管參數6033和6034的設定如何•用作用戶宏程序中斷控制的M代碼被內部處理(它們不輸出到外部裝置)•但是,從程序的兼容性考慮,不希望使用M96和M97以外的M弋碼控制用戶宏程中斷•用戶宏程序中斷和NC語句當執行用戶宏程序中斷時,用戶有時希望中斷正在執行的NC吾句,或者希望執行完當前的程序段後再執行中斷•這時,可用參數MIN參數6003的2位)選擇是在程序段的中間執行中斷,還是等到程序段結束後再執行中斷•I型在程序段中執行中斷)(1)當中斷信號(UINT)輸入時,任何正在執行的移動或暫停都被立即停止,轉而執行中斷程序•⑵如果在中斷程序中有NC吾句,在中斷程序段中的指令被放棄並執行中斷程序中的NC吾句•當控制返回到被中斷的程序時,程序從被中斷的程序段之後的下個程序段重新開始•如果在中斷程序中沒有NC吾句,控制由M99返回到中斷程序,然後,程序從被中斷的程序段中的指令重新開始•n型(程序段結束後執行中斷)如果正在執行的程序段不是由幾個循環動作組成的程序段,例如,钻孔固定循環和自動返回參考點(G20中斷的執行過程如下:當中斷信號(UINT)輸入時,在中斷程序的宏程序語句立即執行,除非在中斷程序中遇到NC吾句•直到當前的程序段執行結束後,才執行NC吾句•如果正在執行的程序段是由幾個循環動作組成的程序段,中斷執行如下:當循環運行中的最後的移動開始時,執行中斷程序中的宏程序語句,除非遇到NC吾句•在全部循環動作完成之後執行NC吾句•用戶宏程序中斷信號的有效和無效條件在中斷型用戶宏程序的M96程序段開始執行之後,中斷信號變爲有效•當M97的程序段開始執行時,該信號變為無效.當中斷程序正在執行時,該中斷信號變爲無效.當控制從中斷程序返回以後,主程序中緊接被中斷的程序段的開始執行時,該信號又變爲有效•在I型中斷中,如果中斷程序只包含宏語句,則在控制從中斷返回以後,中斷程序段開始執行時,該中斷信號變爲有效.包含循環動作的程序段執行期間的用戶宏程序中斷I型即使循環動作在進行中,移動也被中斷,而執行中斷程序•如果中斷程序不包含NC吾句,在控制返回到被中斷的程序之後,循環動作重新開始•如果有NC吾句,則放棄中斷循環中的剩餘動作,而執行下個程序段.n型當循環動作的最後的移動開始時,執行中斷程序中的宏語句,除非遇到NC吾句.當循環動作完成後,執行NC吾句.用戶宏程序中斷信號(UINT)用戶宏程序中斷信號(UINT)的輸入有兩種方式:狀態觸發方式和邊沿觸發方式•使用狀態觸發方式時,當它接通時,信號有效.使用邊沿觸發方式時,當它從斷開狀態切換到接通狀態時的上升沿該信號變爲有效.用TSE:參數6003的3位)選擇兩種方式之一.當用這個參數選擇狀態觸發方式時,如果中斷信號(UINT)是接通狀態同時信號變爲有效的話,則產生用戶宏程序中斷•使中斷信號(UINT)保持持續接通狀態,可重複執行中斷程序.當選擇邊沿觸發方式時,中斷信號(UINT)僅在它的上升沿變爲有效•因此,僅在瞬間執行中斷程序(當程序僅有宏語句
本文档为【宏程式操作程式手册】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
个人认证用户
zhouhe
暂无简介~
格式:doc
大小:64KB
软件:Word
页数:27
分类:交通与物流
上传时间:2021-11-23
浏览量:3