巨集程式程式設計

2022-10-15 07:30:02 字數 4475 閱讀 7904

使用者巨集程式

雖然子程式對編制相同加工操作的程式非常有用,但使用者巨集程式由於允許使用變數、算術和邏輯運算及條件轉移,使得編制相同加工操作的程式更方便,更容易。可將相同加工操作編為通用程式,如型腔加工巨集程式和固定加工迴圈巨集程式。使用時,加工程式可用一條簡單指

令調出使用者巨集程式,和呼叫子程式完全一樣。

一、變數

普通加工程式直接用數值指定g**和移動距離;例如,g01和x100。

使用使用者巨集程式時,數值可以直接指定或用變數指定。當用變數時,變數值可用程式或用mdi面板上的操作改變。

#1=#2+100;

g01 x#1 f300;

說明:1、變數的表示

計算機允許使用變數名,使用者巨集程式不行。變數用變數符號(#)和後面的變數號指定。

例如:#1

表示式可以用於指定變數號。此時,表示式必須封閉在括號中。

例如:#[#1+#2-12]

2、變數的型別

變數根據變數號可以分成四種型別。

3、變數值的表示範圍

區域性變數和公共變數可以有0值或下面範圍中的值:

-1047至-10-29 或 10-29到1047

如果計算結果超出有效範圍,則發出p/s報警no.111。

4、小數點的省略

當在程式中定義變數值時,小數點可以省略。

例:當定義#1=123;變數#1的實際值是123.000;

5、變數的引用

為在程式中使用變數值,指定後跟變數號的位址。當用表示式指定變

量時,要把表示式放在括號中。

例如:g01x[#1+#2]f#3;

被引用變數的值根據位址的最小設定單位自動地捨入。

例如:當g00x#1;以1/1000mm的單位執行時,cnc把12.3456賦值給

變數#1,實際指令值為g00x12.346;

改變引用變數的值的符號,要把負號(一)放在#的前面。

例如:goox-#1;

當引用未定義的變數時,變數及位址字都被忽略。

例如:當變數#1的值是0,並且變數#2的值是空時,g00x#1 y#2的執行結果為g00x0;。

6、 未定義的變數

當變數值未定義時,這樣的變數成為「空」變數。變數#0總是空變數。

它不能寫,只能讀。

(a)引用

當引用乙個未定義的變數時,位址本身也被忽略。

(b)運算

(c)條件表示式

eq和ne中的《空》不同於0。

7、 限制

程式號,順序號和任選程式段跳轉號不能使用變數。

例:下面情況不能使用變數:

o#1;

/#2g00x100;

n#3y200;

二、算術和邏輯運算

下表中列出的運算可以在變數中執行。運算子右邊的表示式可包含常量和/或由函式或運算子組成的變數。表示式中的變數#j和#k可以用常數賦值。左邊的變數也可以用表示式賦值。

算術和邏輯運算

說明:角度單位

函式sin,cos,asin,acos,tan和atan的角度單位是度。如90°30表示為90.5度。

三、巨集程式語句和nc語句

下面的程式段為巨集程式語句:

·包含算術或邏輯運算(=)的程式段。

·包含控制語句(例如,goto,do,end)的程式段。

·包含巨集程式呼叫指令(例如,用g65,g66,g67或其它g**,m**呼叫巨集程式)的程式段。

除了巨集程式語句以外的任何程式段都為nc語句。

說明1、與nc語句的不同

即使置於單程式段執行方式,工具機也不停止。但是,當引數no。6000#5

sbm設定為1時,在單程式段方式中,工具機停止。

在刀具半徑補償方式中巨集程式語句段不做為不移動程式段處理。

2、與巨集程式語句有相同性質的nc語句

含有子程式呼叫指令(例如,用m98或其它m**或用t**呼叫子程式)但沒有除o,n或l位址之外的其它位址指令的nc語句其性質與巨集程式相同。

不包含除o.n.p或l以外的指令位址的程式段其性質與巨集程式語句相同。

四、轉移和迴圈

在程式中,使用goto語句和if語句可以改變控制的流向。有三種轉移和迴圈操作可供使用:

轉移和迴圈goto語句(無條件轉移)

if語句(條件轉移:if…then…)

while語句(當…時迴圈)

a、 無條件轉移(goto語句)

轉移到標有順序號n的程式段。當指定1到99999以外的順序號時,出現p/s報警no.128。可用表示式指定順序號。

goto n; n:順序號(1到99999)

例:goto 1;

goto #10

b、 條件轉移(if語句if之後指定條件表示式。

if[《條件表示式》] goto n

如果指定的條件表示式滿足時,轉移到標有順序號n的程式段。如果指定的條件表示式不滿足,執行下個程式段。

if[《條件表示式》] then

如果條件表示式滿足,執行預先決定的巨集程式語句。只執行乙個巨集程式語句。

說明1、 條件表示式

條件表示式必須包括算符。算符插在兩個變數中間或變數和常數中間,並且用括號([,])封閉。表示式可以替代變數。

2、 運算子

運算子由2個字母組成,用於兩個值的比較,以決定它們是相等還是乙個值小於或大於另乙個值。注意,不能使用不等號。

運算子典型程式

下面的程式計算數值1-10的總和

o9500;

#1=0;儲存和數變數的初值

#2=1;被加數變數的初值

n1 if[#2 gt 10]goto 2; 當被加數大於10時轉移到n2

#1= #1+#2計算和數

#2= #2+#1下乙個被加數

goto 1轉到n1

n2 m30程式結束

c、 迴圈(while語句)

在while後指定乙個條件表示式。當指定條件滿足時,執行從do到end之間的程式。否則,轉到end後的程式段。

while [條件表示式] do m;(m=1,2,3)

如果條件不滿足

如果條件滿足程式

endm;

說明1、 當指定的條件滿足時,執行while從do到end之間的程式。否則,轉而執行end之後的程式段。這種指令格式適用於if語句。

do後的號和end後的號是指定程式執行範圍的標號,標號值為1,2,3。

若用1,2,3以外的值會產生p/s報警no.126。

2、 巢狀

在do—end迴圈中的標號(1到3)可根據需要多次使用。但是,當程式有交叉重複迴圈(do範圍的重疊)時,出現p/s報警no.124。

a、 標號(1到3)可以根據要求多次使用.

while […] do 1;

程式end 1;

…while […] do 1;

程式end 1;

b、 do的範圍不能交又.

while […] do 1;

程式while […] do 2;

end 1;

程式end2;

c、 do迴圈可以巢狀3級.

while […] do 1;

while […] do 2;

while […] do 3;

程式end3;

end2;

end1;

d、 控制可以轉到迴圈的外邊.

while […] do 1;

if […] goto n;

end 1;

nnf、 轉移不能進入迴圈區內.

if […] goto n;

while[…]do 1;

nn...;

end l;

說明無限迴圈

當指定do而沒有指定while語句時,產生從do到end的無限迴圈。

處理時間

當在goto語句中有標號轉移的語句時,進行順序號檢索。反向檢索的時間要比正向檢索長。用while語句實現迴圈可減少處理時間。

典型程式

下面的程式計算數值1到10的總和

o0001;

#1=0;

#2=1;

while [#2 le 10] do 1;

#1= #1+#2;

#2= #2+1:

end l;

m30;

五、巨集程式的呼叫

用下面的方法呼叫巨集程式:

巨集程式呼叫非模態呼叫(g65)

模態呼叫(g66,g67)

用g**呼叫巨集程式

用m**呼叫巨集程式

用m**呼叫子程式

用t**呼叫子程式

巨集程式呼叫(g65)和子程式呼叫(m98)的不同之處如下:

a、 用g65,可以指定自變數(資料傳送到巨集程式)。m98沒有該功能。

b、 當m98程式段包含另乙個nc指令(例如,g01 x100 m98 pp)時,在指令執行之後呼叫子程式。相反,g65無條件地呼叫巨集程式。

c、 m98程式段包含另乙個nc指令(例如,g01 x100 m98 pp)時,在單程式段方式中,工具機停止。相反,g65工具機不停止。

Mach3對刀巨集程式詳解

自動對刀是您有安裝了對刀器時使用,對刀分兩次進行,取中間值做為補償值,補償方式為絕對座標。對刀精度0.005mm 具體根據您的對刀器 與對刀器接線 此方式是開關型對刀器的接線,in7 與 gnd 接到對刀器的觸發開關,開關必須為常開型的。當對刀器是霍爾光電型的,把觸發使能線接到 in7 輸入端,此時...

數控加工中巨集程式的應用技巧

作者 徐州機電工程高等職業學校徐昆鵬張欣 巨集程式簡介在程式設計工作中,我們經常把能完成某一功能的一系列指令像子程式那樣存人儲存器,用乙個總指令來代表它們,使用時只需給出這個總指令就能執行其功能所存人的這一系列指令稱作使用者巨集程式本體,簡稱巨集程式。這個總指令稱作使用者巨集程式呼叫指令。在程式設計...

巨集程式自變數的兩種賦值方法

注意 i j k 有先後順序。巨集程式的呼叫格式,自變數的賦值不能出現g l n o p 非模態指令 g65p l 模態指令 g66 p l 使用者巨集程式本體 1,格式o o9000 o9999 24 41 18cos 1 g0x 24.if 20g 6 g0 709 m9m99 用9開頭便於長期...