1. 本人非常想學宏程序如何入手
學好宏程序其實不難,人家花巨資開發就是為了方便使用。下面我給你詳細說說它的各系統的不同之處和使用方法:
不同的系統有不同編程語法。西門子明顯與三菱、法那科、華中、哈斯等系統不同。但編程思想是相通的。你的這個問題太寬泛了,我先說說相同的地方吧(西門子除外):
1.變數:正如計算機程序設計中的變數一樣,數控程序中也需要使用變數。要進行程序流程式控制制,變數是必不可少的。數控編程中的變數用符號#跟一個整數表示。例如 #1就是一個變數。給變數賦值的方法和計算機編程一樣,如#1=5。(相當於basic或C語言的a=5,pascal的a:=5。)
數控編程中的變數按作用域可分為三類:局部變數、全局變數、系統變數。#1~#33是局部變數,局部變數只在本程序內起作用;#100~#199、#500~#599(現在很多系統都不止599了)是全局變數,在所有程序中起作用;#1000以上的是系統變數,控制著機床運行的各種狀態,不要輕易修改。局部變數不能在程序運行時再加以修改,只能由程序控制。在使用局部變數時,必須在程序中賦初值。全局變數可以程序運行時人為地加以修改。在使用全局變數時,可以不在程序中賦初值,而在加工時打入所需值。補償量的本質是變數。
#0是空變數(相當於pascal的nil,C的NULL),不能給#0賦值。注意:空變數和0是不同的。正像在pascal里定義一個指針型變數p,則如下兩句程序是不同的:p:=nil、p^:=0。(或者C語言里的p=NULL、*p=0)當#1為0時,G1X100Y#1相當於G1X100Y0,而當#1為空時,G1X100Y#1相當於G1X100。當#1為0時,G#1X100相當於G0X100,而當#1為空時,G#1X100相當於X100。
表示變數的#號後面的數也可以是表達式或變數。例如,已知#1=5,#2=30,#3=25,#4=0,#5=80則#6=#[#1]相當於#6=80;#[3+4]=128相當於#7=128;#8=#[#4]相當於#8為空;#9=#[#2-#3]相當於#9=80;G#4X#2*#1Y#[#4]相當於G0X150。
變數可以自增或自減,變數經過運算後的值可以賦給自身。例如,當前#1=3;則執行#1=#1+1後#1的值是4。(相當於匯編語言里的INC AL;basic里的i=i+1;pascal里的inc(i);C語言里的i++。)再如,當前#1=3,則執行#1=#1EQ3後,#1的值是1。
2.算術運算和邏輯運算:①算術運算就是加減乘除(+-*/)。計算四則混合運算式時,先算乘除後算加減,如果有括弧則先算括弧里的。例如1+2*(7-4)=7。通常計算機程序設計里的括弧用圓括弧表示,但數控編程里用方括弧表示。數控編程里的圓括弧表示注釋(相當於匯編語言的分號、basic里的rem、pascal里的{}或(*…*)、C語言里的/*…*/。)②邏輯運算常見的有以下4種:與(and)、或(or)、非(not)、異或(xor)。與、或、非是基本邏輯運算,異或不是基本邏輯運算。A和B相異或的結果是AB+AB。「與」的運算規則是全1出1,有0出0,如1 and 1=1; 0 and 1=0;「或」的運算規則是全0出0,有1出1,如1 or 1=1; 0 or 1=1;「非」是單目運算符,即0變1,1變0。程序設計中的邏輯值(也叫布爾值,即「真」和「假」)在計算機中用1和0表示,通常1表示「真」,0表示「假」。如果是兩個整數進行邏輯運算,則是這兩個數的二進制的各位進行運算,例如5 and 6=4; 5 or 6=7。具體用法你可以回憶一下計算機程序設計中的用法,數控編程中也同樣使用。and、or、not、xor四種運算符分別相當於匯編、basic或pascal里的and、or、not、xor;C語言里的&、|、!、^。③數控編程中也可以使用取余運算(mod),例如10 mod 3=1。mod相當於匯編、basic或pascal里的mod、C語言的%。④數控編程中的比較運算符和匯編語言(指Intel80x86匯編語言)里的相同,即EQ(等於)、NE(不等於)、LT(小於)、LE(小於等於)、GT(大於)、GE(大於等於)。相當於basic或pascal里的=、<>、<、<=、>、>=,C語言里的==、!=、<、<=、>、>=。
3.常用數學函數:數控編程中用到的函數主要是數學函數。一般數控系統均提供下列函數:絕對值函數abs(x);平方根函數sqrt(x);三角函數sin(x);cos(x);tan(x) (單位是度,但華中是弧度);反三角函數asin(x);acos(x);atan(x);對數函數ln(x);指數函數exp(x);四捨五入取整函數round(x);截斷取整函數fix(x);進位取整函數fup(x);以及把8421BCD碼轉二進制的函數bin(x) 和把二進制轉8421BCD碼的函數bcd(x)。大多數數控系統要求函數名必須用大寫,括弧則必須用方括弧。例如G[#1GT30]X[50+2*ABS[#1]],當#1=20時相當於G0X90。
4.程序流程式控制制:程序流程可以進行無條件轉移、條件轉移、循環,還可以調用子程序或宏程序。
無條件轉移的格式是GOTO_。GOTO後面的數是要轉移到的程序行的標號(即N_)。如果無條件往回跳轉,則有可能造成死循環(即程序無法自然執行結束)。條件轉移的格式是IF[……]GOTO_或IF[……]THEN……。方括弧內是一個邏輯值,通常使用一個判斷表達式表示。循環的格式是WHILE[條件表達式]DO m …… END m。DO m和END m之間的部分是循環體,m是一個整數,用於說明哪個END和哪個DO配對。m可重復使用,只有在循環嵌套時才需要改變m。在進行程序跳轉時,可由循環體內跳轉至循環體外,但不能循環體外跳轉至循環體內(各種編程語言均如此)。
宏程序(用G65調用或直接寫成G××)和子程序(用M98調用或直接寫成M××)主要有以下區別:
①宏程序可以傳遞參數,子程序不能傳遞參數。
②M98指令可以指定標號,故可以把子程序和主程序寫在一個程序中(因系統而異);G65指令不能指定標號,宏程序必須單獨寫成一個程序。
③子程序里的變數不區分層次,主程序里的#1和子程序里的#1是同一個變數;宏程序里的變數區分層次,主程序里的#1和宏程序里的#1不是同一個變數。這類似於pascal里的函數嵌套(C語言不允許函數嵌套)。
各系統還有自己的特點,如三菱可以寫G#1+#2,法那科必須寫成G[#1+#2];三菱可以寫IF[#1]GOTO1(想想C語言里的if(a)...)法那科不行;西門子的變數是R1、R2,無條件轉移是gotof、gotob等,細節的差別太多了,你參考一下系統說明書。
宏程序可以定義成G代碼(如G200,只要系統沒用到),用法和系統原帶的幾乎沒有區別。實際上系統原帶的G代碼除了一些基本的(如G0~G4等)大都是用宏程序實現的,如G73~G89(孔加工)、M6(換刀)等。(我交待一句:你可以打開它們的宏程序看看,但不要修改!)
我花很大工夫給你回帖,不知你覺得有用沒有。請問你是學生還是已經參加工作了?在什麼地方?你要是參加工作了,我可以再詳細說說怎麼編宏程序,其中涉及到程序設計思想、數學計算、系統變數、參數傳遞方法等等。我也願意多交流交流經驗。如果你是學生,我再多說恐怕你嫌太枯燥了。
2. 西門子的宏程序怎麼編
西門子的宏程序都是用R參數來編輯的 要用到的量 再程序里定義好數據類型就可以了
給你發一個 砂輪修整的宏程序你可以參考一下
具體資料可以參考西門子高級編程
%_N_DressAUTO_MPF
;$PATH=/_N_MPF_DIR
;R00 Workpiece Zero position(X axis)
;R01 grinder diameter
;R02 cutting in value
;R03 Mdress times
;R04 linear speed of grinder
;R05 grinder speed
;M27 :diamond start
;M28 :diamond stop
;M31 :cutting in 切入
N000 IF $A_IN[10]==1 GOTOF DMOK
N001 MSG("the wheel not runing")
N002 M00
N003 GOTOF End
DMOK:
N004 R90=0
;N005 IF $A_IN[19]==1 GOTOF DCYCST;到起始位置
;N006 M64 ;tape corrector return
;N007 M62 ;tape corrector to original position
;N008 IF $A_IN[19]==1 GOTOF DCYCST
;N009 MSG("the tape corrector not in original position")
;N015 M00
;N020 GOTOF End
;DCYCST
N010 M27 M23 ;diamond roll start
N015 G0 V0 w0
;N017 DCYC:M31 ;cutting in
N010 R10=41 R11=0 ; R10 修整量設定,R11 修整次數設定
N030 V41
N040 AAA:G01 V=R10+65 F400
N050 R10=R10+150
N060 G0 V=R10
N070 R11=R11+1
N080 IF R11<6 GOTOB AAA
N090 G01 V1004 F400
N100 R12=1004 R13=0
N105 BBB:G01 V=R12-65 F400
N110 R12=R12-150
N115 G0 V=R12
N110 R13=R13+1
N125 IF R13<6 GOTOB BBB
N130 G01 V39 F400
N135 G0 V0
N140 STOPRE
;N145 R90=R90+1 R01=R01-2*R02 R00=R00-R02
;N150 R05=R04*60*1000/(R01*3.142)
;N155 IF R90<R03 GOTOB DCYC
N160 M28 ;diamond stop
End: M30
3. 跪求西門子802D數控車床宏程序入門及編程運用
n20
g00
x80
z100
m05
m09
n25
m00
n30
t2d1
m03
s800
m08
(外圓精車刀)
n35
r105=5
(設置坯料切削循環參數)
n40
lcyc95
(調用坯料切削循環精加工)
n45
g00
x80
z100
m05
m09
n50
m00
n55
t3d1
m03
s300
m08
(切槽車刀,刀寬4mm)
n60
g00
x37
z-23
n65
g01
x26
f0.1
n70
g01
x37
n75
g01
z-22
n80
g01
x25.8
n85
g01
z-23
n90
g01
x37
n95
g00
x80
z100
m05
m09
n100
m00
n105
t4d1
m03
s300
m08
(三角形螺紋車刀)
r100=29.8
r101=-3
r102=29.8
(設置螺紋切削循環參數)
r103=-18
r104=2
r105=1
r106=0.1
r109=4
r110=2
r111=1.24
r112=0
r113=5
r114=1
n110
lcyc97
(調用螺紋切削循環)
n115
g00x80
z100
m05
m09
n120
m00
n125
t3d1
m03
s300
m08
(切斷車刀,刀寬4mm)
n130
g00
x45
z-60
n135
g01
x0
f0.1
n140
g00
x80
z100
m05
m09
n145
m02
子程序
l01.spf
n05
g01x0
z12
n10
g03
x24
z0
cr=12
n15
g01
z-3
n20
g01
x25.8
n25
g01
x29.8
z-5
n30
g01
z-23
n35
g01
x33
n40
g01
x35
z-24
n45
g01
z-33
n50
g02
x36.725
z-37.838
cr=14
n55
g01
x42
z-45
n60
g01
z-60
n65
g01
x45
n70
m17
4. 自學數控車床宏程序怎樣才能入門
宏程序編程與計算機編程相似,所以能學會一種計算機編程語言,能讓你有一種信手拿來的感覺。比如:條件語句、循環語句、變數的使用等。其語法表現形式不一樣,但其邏輯思維方式、編程方法是一致的。
5. 西門子宏程序怎麼編
你是問宏指令還是子程序 還是變數 西門子帶宏字眼的只有一個 就是宏指令 但是整個高級編程幾乎全是講得宏技術 很廣的的 就是我花一星期沒日沒夜的講 也講不完 不過勸你先學好最基礎的東西然後再看看基礎編程就夠你用的了 如果愛好的話再學學高級編程
6. 我想學數控編程的宏程序求怎麼入門先學什麼
從確定走刀路線、選擇合適的G命令等細節出發,分析在數控車削中程序的編制方法。
准備一:分析零件圖樣
分析形狀和位置公差要求:對於數控切削加工中,零件的形狀和位置誤差主要受機床機械運動副精度的影響。在車削中,如沿Z坐標軸運動的方向與其主軸軸線不平形時,則無法保證圓柱度這一形狀公差要求;又如沿X坐標軸運動的方向與其主軸軸線不垂直時,則無法保證垂直度這一位置公差要求。因此,進行編程前要考慮進行技術處理的有關方案。
准備二:合理確定走刀路線,並使其最短
確定走刀路線的工作是加工程序編制的重點,由於精加工切削程序走刀路線基本上都是沿其零件輪廓順序進行的,因此主要內容是確定粗加工及空行程的走刀路線。走刀路線泛指刀具從對刀點開始運動起,直到返回該點並結束加工程序所經過的路徑。
准備三:合理調用G命令使程序段最少
按照每個單獨的幾何要素(即直線、斜線和圓弧等)分別編制出相應的加工程序,其構成加工程序的各條程序即程序段。在加工程序的編制工作中,總是希望以最少的程序段數即可實現對零件的加工,以使程序簡潔,減少出錯的幾率及提高編程工作的效率。
准備四:合理安排「回零」路線
在編制較復雜輪廓的加工程序時,為使其計算過程盡量簡化,既不易出錯,又便於校核,編程者有時將每一刀加工完後的刀具終點通過執行「回零」指令(即返回對刀點),使其全返回對刀點位置,然後在執行後續程序。
總結:數控車床的編程總原則是先粗後精、先進後遠、先內後外、程序段最少、走刀路線最短,這就要求我們在編程時,特別注意理論聯系實際,並在大量的實踐中,對所學的知識進行驗證或修正,做到編制的程序最實用。
7. 數控宏程序怎麼入門
宏程序編程簡言之,變數編程,所以
1.首先理解變數。簡單理解變數就是裝數據的容器。
2.變數之間的計算。其實編程中常量之間也是可以計算的,例如在直徑100的圓周上加工6個均布孔,那麼六個孔的孔位坐標(原點在直徑100圓的圓心)為(50,0)、(50*cos[60],50*sin[60])、(50*cos[120],50*sin[120])、------- 可以直接以計算的方式寫入程序,讓系統自行計算點坐標。
3.循環、跳轉。那就要求邏輯思維能力要強一些。
總之,自學的話就是先看別人的程序,看懂後,根據自己的理解試著寫跟你看過很類似的程序,多練習練習,慢慢自然而然就會了,然後再試著寫一些復雜的程序。
8. 求西門子宏程序,編程實例
眾所周知,西門子系統的一大亮點就是包含豐富的手動測量功能及各種各樣的測量循環。但本期給大家介紹一下如何簡單的編寫一個西門子測量宏程序,用於測試測頭的狀態或者進行定製化的測量。
SINUMERIK系統支持MEAS或者MEAW指令進行測量宏程序的編程。其中MEAS指令用於在測量信號觸發後,刪除程序段中實際位置與給定位置之間的剩餘行程的編程,而MEAW指令則用於在任何時候都需要到達給定位置這一特殊情況下。MEAS和MEAW指令均為非模態指令,它們跟軸的運動指令一起編程,其進給率、插補方式和插補軸數應根據不同的測量任務來決定。一般情況下均使用MEAS指令,刪除剩餘行程,根據使用的測量信號及其測量信號的有效電平,其測量生效有如下四種情況:
傳奇十年,特請成龍代言!
廣告
其中進給率F,插補軸X、Y、Z之間的選擇及目標坐標位置均根據測量的實際情況確定,當測量探頭信號生效或者編程位置到達後,測量程序段結束。當編程了測量某一幾何軸,其所有幾何軸的測量結果均被存儲。
如果測量探頭生效,則系統變數$AC_MEA[n]被置位,若測量程序段結束後,並且測量探頭信號未生效,則系統變數$AC_MEA[n]不被置位,其中n代表生效的測量探頭,為1表示測量探頭1,為2表示測量探頭2 。測量開始時,該變數自動復位。
9. 西門子加工中心宏程序編程
第一次玩這個。望朋友們別罵我!
無論加工內外錐,可用下面這種R參數程序很方便的。現用上述:大端直徑29.95、角度全形6度、刀具直徑16、(不用刀具半徑補償)舉例如下:
(29.95+16)/2=22.975+(0.05值為Z軸每次進刀的2/1)所得R1=23.025
角度全形6度除2等於3所得R2=TAN(3)
R3=—0.1
R1=23.025
R2=TAN(3)
R3=0
G54G0X0Y0
********
********
AA:G0Z=R3
G1Y=R1+R2*R3F;;;
如果是外錐只需把R1值改變成小端直徑值,加號改變成減號即可
G3J=-(R1+R2*R3)
G0Y0
R3=R3-0.1
IF
R3>=—24.5
GOTO
AA
M02
直徑尺寸大小控制修改R1值,角度改變修改R2值,即可加工內外圓錐,不同直徑大小和角度的圓錐面。
10. 西門子840D系統,宏程序咋用
這個在西門子中叫R參數,具體的用法和宏程序一樣,先要賦值,我也不是經常用,這個就是凡是能用數學表達式的幾何圖形都可以:比如說橢圓吧
r1=35 賦值長半軸35
r2=15 短半軸15
r3=0 變數的起始點
g0 x=r1+r10 y=r11 這個就是下刀點,也可以不賦值,採用具體的數值。
g1 z-5 f100 最終深度
AAA: 表示條件循環的指令,
r4=r1*cos(r3)+r10 用變數表示新的變數,相當於函數。其中r10,r11表示的剛才的下刀點。
r5=r2*sin(r3)+r11
g1 x=r4 y=r5 f100 工部走新的變數。
r3=r3+1 參數賦值,計算出新的節點
if r3<=360 gotob AAA 條件跳轉。
g0 z200 抬刀
m02 程序結束。如果是圓的話只需r1=r2不過現在很少用這個了,應為計算機編程,加上有u盤或軟盤,程序也比較快,慢慢的這個已經比遺忘了。