機(jī)械社區(qū)

標(biāo)題: 請(qǐng)教:什么樣的程序是宏程序?宏程序和普通程序的區(qū)別是什么? [打印本頁(yè)]

作者: 耶穌愛(ài)子    時(shí)間: 2013-10-24 18:12
標(biāo)題: 請(qǐng)教:什么樣的程序是宏程序?宏程序和普通程序的區(qū)別是什么?
對(duì)FANUC 系統(tǒng)的宏程序不怎么了解,希望社區(qū)大神指點(diǎn)以下幾個(gè)問(wèn)題:7 B0 E2 G- d- h# W/ E2 W

2 C) d, z' H4 m4 L! l! G/ \7 T什么樣的程序是宏程序?宏程序和普通程序的區(qū)別是什么?; M0 W' W9 a) C2 t
. {9 J$ K: m0 \/ w
怎樣理解“局部變量只能用在宏程序中”?
+ H. {! m1 X( V$ K/ Y% \! ~. n! N# k2 z
宏程序的程序號(hào)都是9000-9999嗎?

# C1 m6 c+ x) i; T# p; ]
作者: 冷月梧桐    時(shí)間: 2013-10-24 18:45
NO1.宏程序之于普通程序主要是引用變量,設(shè)置循環(huán)條件,可以完成相同類似工件的加工,其實(shí)G83就可以理解成是一個(gè)宏程序,等你熟練運(yùn)用宏之后,可以自己編一個(gè)G83功能的宏程序,百度文庫(kù)是你的老師。, x+ U. i; K, u: k
NO2。這一話本身就是錯(cuò)誤的,談何理解。宏程序變量分多種,(變量類似于初中數(shù)學(xué)的X未知數(shù),也可以是已知數(shù),下面主要講他們特殊的功能)。#1-#33被稱為局部變量,主要的特殊功能是在宏程序調(diào)用是傳遞變量值,等你學(xué)會(huì)G65的時(shí)候就知道了,屬于一個(gè)程序的值,程序結(jié)束時(shí),所有這類值都會(huì)被清空。#100-#199通用變量,這類變量可以存在于程序間互用,程序結(jié)束不會(huì)被清空。#500-#999通用變量,這類變量是保持式的,不僅是程序間的通用,還可以是關(guān)機(jī)之后還保持著原來(lái)的值(注意這是默認(rèn)情況,還可以通過(guò)修改系統(tǒng)參數(shù)來(lái)改變通用變量的功能)。#1000—#……這類屬于系統(tǒng)變量,主要涉及坐標(biāo)系和刀具補(bǔ)償之類的信息,詳情查看你的系統(tǒng)說(shuō)明書
" H/ M" @: f/ T6 ^! tNO3。不是的,宏程序號(hào)和普通程序,子程序沒(méi)有任何區(qū)別,同樣是可以任意的。這個(gè)問(wèn)題涉及的是宏程序調(diào)用相關(guān)的東西,普通調(diào)用宏程序和調(diào)用子程序是一樣的。如果你要通過(guò)修改參數(shù)6050的值使用G,M,T代碼來(lái)調(diào)用宏程序的話,必須把宏程序放在相應(yīng)的程序號(hào)里,如6050參數(shù)的值調(diào)用O9010的宏程序,詳情查看系統(tǒng)參數(shù)6050之后的幾組參數(shù)
作者: hb406863722    時(shí)間: 2013-10-24 19:29
樓上專業(yè). R) n; O% [! L
宏程序就像武林中的葵花寶典,欲練此功,必先自宮。(笑)
+ u! d8 m* G( w/ K. e1 n4 K" h# S舉個(gè)例子:有一百件邊長(zhǎng)不一樣的正方形要銑外輪廓,常規(guī)方法要編一百個(gè)程序來(lái)做,太麻煩。
$ t2 v; U" t0 S8 y2 Z1 }, e現(xiàn)假設(shè)邊長(zhǎng)為X,編一個(gè)程序(即宏程序),做100的料時(shí)令X=100(實(shí)際為#1=100)即可,如此類推,又快又不容易出錯(cuò)。3 \  v" i; a6 g# u2 j
在塑膠模架中有常用
作者: onelee    時(shí)間: 2013-10-24 20:09
宏 的正確意思其實(shí)叫命令集
作者: 猛禽2012    時(shí)間: 2013-10-24 21:30
那怎樣才能學(xué)會(huì)宏程序呢?
作者: 刀鋒365    時(shí)間: 2013-10-24 22:09
看說(shuō)明書唄
作者: 耶穌愛(ài)子    時(shí)間: 2013-10-25 20:32
冷月梧桐 發(fā)表于 2013-10-24 18:45 . U5 Z" F1 ], L5 m
NO1.宏程序之于普通程序主要是引用變量,設(shè)置循環(huán)條件,可以完成相同類似工件的加工,其實(shí)G83就可以理解成是 ...

3 O6 R5 U6 l$ u“局部變量只能用在宏程序中”這句話是在FANUC程序說(shuō)明書中看到的,讀的時(shí)候覺(jué)得不理解才提問(wèn)的。* Z2 X' e# H6 j9 b: q: o+ l# I0 S' G

作者: 耶穌愛(ài)子    時(shí)間: 2013-10-26 10:10
冷月梧桐 發(fā)表于 2013-10-24 18:45 * d  n5 w% d' D" a# n1 L5 A
NO1.宏程序之于普通程序主要是引用變量,設(shè)置循環(huán)條件,可以完成相同類似工件的加工,其實(shí)G83就可以理解成是 ...
% ~# T) J& u+ @1 L" U
大俠,你看我這樣理解對(duì)嗎?如果不對(duì),請(qǐng)指正,謝謝!(也希望其他大俠批評(píng)指正)
: h' m7 x) m' p+ H; S4 Y* j       1.雖然很多程序也使用了變量或條件跳轉(zhuǎn),但這些程序不能稱之為宏程序。如我喜歡把加工參數(shù)設(shè)成宏變量(#501=0.25;……F#501),或一些報(bào)警跳轉(zhuǎn)(……IF#502GT0.5;GOTO2500)。
- o/ g$ j' }; U0 r9 u' }: H3 ?6 `      2.只有能被G65調(diào)用的那種使用了局部變量的程序才能稱為宏程序。

! l9 f/ M" I  \3 T7 c$ i
作者: 冷月梧桐    時(shí)間: 2013-10-26 11:04
耶穌愛(ài)子 發(fā)表于 2013-10-26 10:10
. v0 A2 F4 c* t# N9 }. e- r大俠,你看我這樣理解對(duì)嗎?如果不對(duì),請(qǐng)指正,謝謝!(也希望其他大俠批評(píng)指正)
# e+ b' Z6 ?/ t7 E' u; o. V" l' l       1.雖然很多程序也 ...

7 D4 X+ [$ P5 b/ ^4 o我認(rèn)為涉及變量,循環(huán)都算是宏程序。聲明我是業(yè)余的,不是專業(yè)的。問(wèn)你一個(gè)問(wèn)題,什么是普通程序,什么是子程序?你若想通了也就知道了,機(jī)械的嚴(yán)謹(jǐn)不等于咬文嚼字
作者: whbyyx    時(shí)間: 2013-10-26 16:04
簡(jiǎn)單的說(shuō)就是有變量,有常量,有條件,滿足條件就執(zhí)行下一段。
作者: duanyz    時(shí)間: 2013-10-26 21:53
冷月梧桐 發(fā)表于 2013-10-26 11:04
/ |, S( b: j( x" o4 [+ \; k( p7 s7 n6 ^" b我認(rèn)為涉及變量,循環(huán)都算是宏程序。聲明我是業(yè)余的,不是專業(yè)的。問(wèn)你一個(gè)問(wèn)題,什么是普通程序,什么是 ...

0 Y9 h; j( z5 i& q" w* R' O 啊?是這樣理解的嗎?我一直以為vb編程的另一種叫法是宏程序,
; d6 ?$ Q' w; P% |. b9 [2 D8 ~( y
如果按你所說(shuō)的,c語(yǔ)言等都有變量、循環(huán),那也叫宏程序嗎?
: m* T5 k5 M$ A9 P" r# ^7 p! X; h) }5 K; {6 H* x+ u; x# j* e

7 G! t$ q- }" w
* M  |, S& s. e
作者: duanyz    時(shí)間: 2013-10-26 22:43
macro的中文名稱:宏7 V6 S9 z8 L. l; B* ]. q- I6 V
什么是宏) L9 k* l# Q2 H" F! S5 y6 w( s8 W
  計(jì)算機(jī)科學(xué)里的宏是一種抽象,它根據(jù)一系列預(yù)定義的規(guī)則替換一定的文本模式。Excel 辦公軟件自動(dòng)集成了“VBA”高級(jí)程序語(yǔ)言,用此語(yǔ)言編制出的程序就叫“宏”。使用“VBA”需要有一定的編程基礎(chǔ)和耗費(fèi)大量的時(shí)間,因此,絕大多數(shù)的使用者僅使用了Excel的一般制表功能,很少使用到“VBA”。 $ Z* U/ ^2 I) R' Q1 o

, |! N0 e, r8 |2 W$ R  解釋器或編譯器在遇到宏時(shí)會(huì)自動(dòng)進(jìn)行這一模式替換。對(duì)于編譯語(yǔ)言,宏展開(kāi)在編譯時(shí)發(fā)生,進(jìn)行宏展開(kāi)的工具常被稱為宏展開(kāi)器。宏這一術(shù)語(yǔ)也常常被用于許多類似的環(huán)境中,它們是源自宏展開(kāi)的概念,這包括鍵盤宏和宏語(yǔ)言。絕大多數(shù)情況下,使用“宏”這個(gè)詞的使用暗示著將小命令或動(dòng)作轉(zhuǎn)化為一系列指令。 & m/ {" R/ T4 g  F: k! F0 i  i; q
) G# z- J: j6 z) g: l& j9 i, U
  宏的用途在于自動(dòng)化頻繁使用的序列或者是獲得一種更強(qiáng)大的抽象能力--但這常常是一回事。 # q3 N& L- e* G3 n; R% _# c

7 d3 j8 g! E* g% ^) F4 ?; X  計(jì)算機(jī)語(yǔ)言如C或匯編語(yǔ)言有簡(jiǎn)單的宏系統(tǒng),由編譯器或匯編器的預(yù)處理器實(shí)現(xiàn)。C的宏預(yù)處理器的工作只是簡(jiǎn)單的文本搜索和替換,使用附加的文本處理語(yǔ)言如M4,C程序員可以獲得更精巧的宏。
- Y2 T( y. U: \: ]$ I7 h
* V2 i2 i, h. {, ^* Y  Lisp類語(yǔ)言如Common Lisp和Scheme有更精巧的宏系統(tǒng): 宏的行為如同是函數(shù)對(duì)自身程序文本的變形,并且可以應(yīng)用全部語(yǔ)言來(lái)表達(dá)這種變形。一個(gè)C宏可以定義一段語(yǔ)法的替換,然而一個(gè)Lisp的宏卻可以控制一節(jié)代碼的計(jì)算。 : E/ Z& O! u. O6 ]! O1 s

( z! ^! Q3 g  I& w& a/ Q/ r  獲得了控制代碼的執(zhí)行順序(見(jiàn)惰性計(jì)算和非限制函數(shù))的能力,使得新創(chuàng)建的語(yǔ)法結(jié)構(gòu)與語(yǔ)言內(nèi)建的語(yǔ)法結(jié)構(gòu)不可區(qū)分。例如,一種Lisp 方言有 cond 而沒(méi)有if ,就可以使用宏由前者定義后者。Lisp 語(yǔ)法的去部主要擴(kuò)展,比如面向?qū)ο蟮腃LOS 系統(tǒng),可以由宏來(lái)定義。# P% s  ^. c8 X/ l; d3 H
宏的典型應(yīng)用
  v: e% @6 I0 w) T& H8 p6 T  加速日常編輯和格式設(shè)置
! I( D6 I8 Q9 {  f; M: g
2 Q  }& _1 }, z) C4 v  組合多個(gè)命令 ' V- X, g4 y1 |0 t: U
, u$ Y3 V2 f% _5 X
  使對(duì)話框中的選項(xiàng)更易于訪問(wèn) . ^6 j+ b' k2 L4 }8 B2 o1 x" ^4 G

- v& _; }# Z; [' X& l, r0 p/ E. \  使一系列復(fù)雜的任務(wù)自動(dòng)執(zhí)行% A" @0 c; N$ Z3 [+ O4 o
宏編程介紹7 X! d; J0 t# g( W9 O& r- P! Y
  在用一種不熟悉的宏語(yǔ)言進(jìn)行宏編程時(shí),可以這樣做,首先記錄下用戶想要宏完成什么,然后打開(kāi)宏文件并嘗試?yán)斫饷罱Y(jié)構(gòu)如何工作。也可以修改命令以調(diào)整宏。一些宏語(yǔ)言,比如Great Plains賬務(wù)(?accounting)軟件的 Dexterity 運(yùn)行時(shí)引擎,不能從其它數(shù)據(jù)源(如由逗號(hào)分隔的文本文件)導(dǎo)入數(shù)據(jù)。這一限制可以通過(guò)用更強(qiáng)大的編程語(yǔ)言,如 VBA 來(lái)創(chuàng)建一個(gè)計(jì)算機(jī)程序在此弱編程語(yǔ)言里生成一個(gè)特別的宏來(lái)解決。例如,可以對(duì) Microsoft Excel 宏編程從擴(kuò)展樣式表或文本文件中讀取數(shù)據(jù)并創(chuàng)建 Great Plains .mac 文件,這一文件被用于將特定的數(shù)據(jù)導(dǎo)入 Great Plains. 需要針對(duì)每一個(gè)新的數(shù)據(jù)集合聲稱新的 .mac 文件。
( Y; d* }' l  m- B) \鍵盤宏
7 k" X. ?6 h; D2 f4 _  鍵盤宏和編輯器宏分別在圖形用戶界面和編輯器中被交互式地使用。使用它們可以用簡(jiǎn)短的擊鍵代替冗長(zhǎng)的命令序列,并為重復(fù)性任務(wù)提供了一個(gè)簡(jiǎn)單的自動(dòng)化形式。 ! c* c+ ?3 O  G$ Z

+ |7 q( a+ n8 X4 H; U# T; r: d8 t  程序員的文本編輯器 Emacs (“編輯宏”[Editing MACroS]的簡(jiǎn)稱)是沿用這一思想的產(chǎn)物。事實(shí)上,大多數(shù)編輯器是由宏組成的,Emacs 最初被設(shè)計(jì)為編輯語(yǔ)言 TECO 的宏集,后被移植為 Lisp 的一中方言 Emacs Lisp。
( N. H, Z7 v& N$ W宏語(yǔ)言
) d! P: j! n% H  宏語(yǔ)言是一類編程語(yǔ)言,其全部或多數(shù)計(jì)算是由擴(kuò)展宏完成的。宏語(yǔ)言并未在通用編程中廣泛使用,但在文本處理程序中應(yīng)用普遍。例如, 7 k3 l0 Z; {, {3 c! G
; K0 ]# g2 E7 o# u- b4 L! f$ A
  C preprocessor C 預(yù)處理器 . y5 K4 s0 U0 O* |* d! r

, ^3 E( N# [3 E  \0 U  Internet Macros(iOpus) + C3 ]+ ^/ W8 Y- i/ J
/ V. R2 W, `/ }- _9 |( T
  M4(如前所述,源于AT&T,捆綁于Unix)
2 C$ b$ @+ h9 |+ R) M% Z
; f9 J/ l7 ^8 O# u3 R4 I6 b  宏定義
7 h& A% T: m1 S1 s
4 }' Q$ Q6 O8 A7 o+ P5 @& X  c程序提供的預(yù)處理功能之一。包括帶參數(shù)的宏定義和不帶參數(shù)的宏定義。具體是指用一個(gè)指定的標(biāo)志符來(lái)進(jìn)行簡(jiǎn)單的字符串替換或者進(jìn)行闡述替換。形式為: + U& I) \- d& H/ H% i+ M: V1 E& ^
8 E: h; e" e  g3 I8 N& f6 m4 a5 D6 @
  #define標(biāo)志符(參數(shù)表) 字符串 " T6 {; M, s/ r% H2 {7 H6 F- |, r
6 w/ ]0 V2 `$ a  l. t/ F' b$ u5 C4 W
  宏名 8 a( L9 `8 t" N, W6 U# ]# s, A
1 ]. c3 Q% d' @" S9 M8 e
  在上定義中的標(biāo)志符被稱為“宏名”。 5 Y' C' x  P+ [/ X4 f

& u. j! d# M" o8 G' s4 `, r1 b  宏展開(kāi) + H7 |7 ^# h+ r1 D
1 m0 C/ J" y; P, e
  在c程序編譯時(shí)將宏名替換成字符串的過(guò)程稱為“宏展開(kāi)”。
1 a5 \6 Z$ O2 Q3 S; E  ^" L& j微軟Word和宏病毒# h' C: H7 m; ^# S6 {: D9 }
  Visual Basic for Applications (VBA),是 Microsoft Office 里的一種編程語(yǔ)言. 但由上面的定義,它完全不是一種宏語(yǔ)言。然而,它的功能已經(jīng)從中發(fā)展并最終替代了用戶應(yīng)用程序的宏思想,所以他被廣泛地錯(cuò)誤地稱為是一種宏語(yǔ)言。
' [4 G' w* s6 C$ e9 x, X5 }  e9 R- a8 I8 H9 N) M
  VBA 可以訪問(wèn)許多操作系統(tǒng)函數(shù)并支持文檔打開(kāi)時(shí)自動(dòng)執(zhí)行宏。這使得用這種語(yǔ)言寫計(jì)算機(jī)病毒成為可能。1990年代中后期,宏病毒成為了最流行的計(jì)算機(jī)病毒類型之一。其它的包括宏語(yǔ)言的項(xiàng)目,如openoffice org,故意從其宏語(yǔ)言中排除了一些功能(如:自動(dòng)執(zhí)行)以避免破壞程序。然而,這一特性在很多事務(wù)中受到歡迎。 5 Y, C' S% q+ W) s4 j  F( U8 x/ ?

0 J9 F4 w! s7 N  G: u" E  另:在數(shù)碼相機(jī)鏡頭中Marco的意思是微距。
7 }" O( t; R$ o- \# C" h" O& F
7 e, b1 _* d! O$ z, ^/ _詞典所得,原來(lái)都能跟宏有關(guān)!
作者: oleg0007    時(shí)間: 2013-10-29 13:05
冷月梧桐 發(fā)表于 2013-10-24 18:45
! T- W5 k# J, W4 Z6 D' Z& ZNO1.宏程序之于普通程序主要是引用變量,設(shè)置循環(huán)條件,可以完成相同類似工件的加工,其實(shí)G83就可以理解成是 ...
8 \5 c7 W9 o$ e, B; Q
我認(rèn)為第三點(diǎn)的說(shuō)法有問(wèn)題。宏程序號(hào)和普通程序、子程序在CNC內(nèi)部處理時(shí)是不一樣的,而且宏程序必須是O9000~9999中的一個(gè),其他的程序號(hào)只能成為子程序或普通程序。
5 u. i  V6 {' J; R( ?
作者: 冷月梧桐    時(shí)間: 2013-10-29 17:50
oleg0007 發(fā)表于 2013-10-29 13:05
; Q4 u/ K- D5 S0 |" |1 ^, I我認(rèn)為第三點(diǎn)的說(shuō)法有問(wèn)題。宏程序號(hào)和普通程序、子程序在CNC內(nèi)部處理時(shí)是不一樣的,而且宏程序必須是O90 ...
$ ~" ^/ @) s% p- {" w4 ~2 t
實(shí)際是宏程序的程序名是任意的,放在9000以后主要是可以對(duì)這部分程序加鎖而已
作者: 被遺忘的一族    時(shí)間: 2013-10-29 20:58
宏程序用的不多
作者: br-denghg    時(shí)間: 2013-11-24 18:54
謝謝2樓的普及啊!




歡迎光臨 機(jī)械社區(qū) (http://e-learninguniversity.com/) Powered by Discuz! X3.4