vhdl變數賦初值 B巨集與A巨集變數的方法

2021-10-11 23:58:58 字數 4010 閱讀 6801

b巨集的用法

b類巨集程式的變數與a類巨集程式的變數基本相似,但也略有不同,主要區別有以下幾個方面。

(1)變數的表示: b類巨集程式除可採用a類巨集程式的交量表示方法外,還可以用表示式表示,但表 達式必須封閉在方括號「[ ]」中。程式的圓括號「( )」用於注釋。

例# [#1+#2+10] 當#1=10, #2=100時, 該變數表示#120。

(2)變數的引用,引用變數也可以用表示式表示。

例g01 x [#100-30.0] y-#101 f [#101+#103]

當#100=100時、#101=50、 #103=80時,上式即表示為g01 x70.0 y-50.0 f130

(3)變數的種類:b類與a類巨集程式的變數種類相同

2.變數的賦值

(1)直接賦值:變數可以在操作面板上用mid方式直接賦值,也可在程式中以等式方式賦值,在等號左邊不能用表示式。

例#100=100.0; #100 =30.0+20.0

(2)引數賦值巨集程式以子程式方式出現,所用的變數可在巨集呼叫時賦值。如下所示: :

例g65 p1000 x100.0 y30.0 z20.0 f 100.0

此處的x、y、z不代表座標字,f也不代表進給字,而是對應與巨集程式中的變數號,變數的具體數值由引數後的數值決定;引用巨集程式體中的變數對應關係有兩種,見表2-4-2及表2-4-3.此兩種方法可以混用,其中g、l、n、o、p不能作為引數替變數賦值。

例:變數賦值方法1

g65p0030 a50.0 140.0 j100.0 k0 120 j10.0 k40.0

經賦值後#1=50.0, #4=40.0, #5=100.0,#6=0,#7-20.0, #8-10.0, #9=40.0。

變數賦值方法2

g65 p0o20 a50.0 x40.0 f 100

經賦值後#1=50.0, #24=40.0,#9=100.0。

變數的賦值方法1、2混合

g65 p0030 a50.0 d40.0 1100.0 k0 120.0

經賦值後,120.0與d40.0同時分配給變數#7,則後乙個#7有效,所以變數#7=20.0,其餘同上。

採用賦值後前面a類巨集程式例題精加工程式可改寫成如下形式:

0010 (主程式)

g65 p0210x28.0z-20. 0 a20.0bo r20.0 (賦值後, 24=28. 0, #26=-20.0, #1=20. 0, #2=0, #18=20. 0)

0210; (精加工巨集程式)

n1000 g01z#26;

x#24

go2 x#24 y0 1-#24 j0;

#2=#2+0.1;

#1=sqrt[#18*#18-#2*#2]

#24=#1+8.0;

#26=-20.0+#2;

ip[#26 lb 0]goto 1000

g01z20;

go1x0.0 y40.0;

m99;

3.運算指令

b類巨集程式的運算指令與a類巨集程式的運算指令有很大區別,它的運算類似於數**算,用各種數學符號來表示。常用運算指令見表2-4-4.

巨集程式計算說明如下

(1) 函式sincos等的角度單位是度,分和秒要換算成帶小數點的度。如9o" 30' 表示90.5"。 而30º18'表示30.3"。

(2)巨集程式數**算計算的次序依次為:函式運算(sin cos atan等),乘和除運算(*、/、 and 等),加和減運算(+、-、or、xor等)

例#1=#2+#3*sin[#4]:

運算次數為:

①函式sin[ # ]4

②乘和除運算3*sin[ #4]

③加和減運算#2+#3*sin[#4]

(3)函式中的括號用於改變運算次序,函式中的括號允許巢狀使用,但最多隻允許巢狀5級。 例#1=sin[[[#2+#3]*4+#5]/ #6]

(4) 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:

控制指令:控制指令到控制程式流向的作用。

(1)分支語句

格式一goton:

例goto 1000

格式一所示無條件轉移語句,當執行該程式時,無條件轉移到n1000程式段執行。

格式二if[條件表示式]goton;

例if[ #1 gt #100]g0t01000

格式二所示有條件轉移語句,如果條件成立,則轉到n程式段執行,如果條件不成立,則執行下一句程式。條件式的種類見表2-4-5.

(2)迴圈指令

while[條件式]dom (m=1、2、3.)。

endm;

當條件式滿足時,就迴圈執行while與end之間的程式段m次,當條件不滿足時,就執行endm的下乙個程式段。

三、程式設計例項與練習課題

例1用b類巨集程式編寫如圖2-4-3所示橢圓凸台加工程式。

00020; (主程式)

g90 g80 g40 g21 g17 g94; (程 序初始化)

g91 g28 z0. 0;

g90 g54;

goo x40.0 yo. 0;

g43 z20. 0 h01;

s600 mo3;

g01 z0. 0 f200;

m98 p0120 l9; (去餘量, z向分層切削,每次切深2mm)

g90 g01 z20. 0;

go1 x40.0 yo;

m98 p0220; (呼叫巨集程式,加工橢圓錐臺)

g91 g28 z0. 0;

m05;

m30;

00120;(粗加工去餘量子程式)

g91 g01 z-2.0;

g90;

#103=360; (角度變數賦初值)

n100 #104=18.0 * cos [# 103]; (x 座標值變數)

#105=24.0 * sin[#103]; (y 座標值變數)

g41 g01 x#104 y#105 d01;

#103=#103-1.0; (角度每次增量為-1° )

if [#103 ge 0.0] goto 100: (如果角度大於等於0°,則返回執行迴圈。)

g40 g01 x40.0 yo;

m99;

00220 (精加工橢圓錐子程式)

#110=0; (刀尖到底平面高度,見圖2)

#111=-18.0; (刀尖z座標值)

#101=18.o; (短半軸半徑)

#102=24.o; (長半軸半徑)

n200#103-360.0; (角度變數)

g01 z#111 f100;

n300#104=#101 * cos [#103]; (刀尖x座標值)

#105=#102 * sin [#103]; (刀尖y座標值)

g41 g01 x#104 y#105 do1;

#103=#103-1.0;

if [#103 ge 0.0] goto 300; (迴圈加工橢圓)

g40 g01 x40.0 yo;

#110=#110+0.1;

#111=#111+0.1; (刀尖z座標值)

#101=18.0-#110*tan [30. 0]; (短半軸半徑變數)

#102=24.0-#110*tan [30. 0]; (長半軸半徑變數)

if [#111 le o.0] goto 200; (迴圈加工橢圓錐臺)

對Java巨集變數與巨集替換的理解

一 巨集變數 先說說什麼是巨集變數,滿足三個必須條件即是巨集變數 1 該變數必須是final修飾的變數 2 該變數必須在開始時就指定初始值 3 該初始值必須是在編譯時期就可以確定。二 巨集替換 public class finaltest 結果 true false truenb定義了finalte...

const變數與巨集的區別

const的用法有四種 引數 返回值 函式,另一種沒有想起來 用const修飾變數將限定變數為唯讀,該變數值不允許被改變。下面是const用於定義陣列大小的乙個簡單例子 const int arraysize 10 int array arraysize 僅限於c 可以這樣表示。const變數必須初...

VHDL變數與訊號的差異

1,賦值方式的不同 變數 表示式 訊號 表示式 2,硬體實現的功能不同 訊號代表電路單元,功能模組間的互聯,代表實際的硬體連線 變數代表電路單元內部的操作,代表暫存的臨時資料 3,有效範圍不同 訊號 全域性量 程式包,實體,結構體 變數 區域性量 程序,子程式 注 在程序和子程式中,訊號只能被使用,...