宏学习入门手册

宏学习入门手册
宏学习入门手册

1、为什么要学习VBA?

2、VBA与宏——————————————————

3、VBE简介——————————————————

4、对象、属性、方法、事件———————————

5、VBA过程——————————————————

6、数据类型、变量、数组、常量—————————

7、该定义变量为何种数据类型——————

8、程序流程控制:if语句——————————————

9、程序流程控制:For—next语句————————

10、程序流程控制:For—Each语句————————

11、用户窗体:

1、什么是VBA,为什么要学习VBA?

VBA是Visual Basic For Application的简称,具体说来,VBA是建立在Office中的一种应用程序开发工具。

Excel本身的内置函数其实已经很强大了,甚至有人说,只要学会二三十个函数,就已经可以满足普通用户日常的工作需求。

那我们为什么要学VBA?

是的,如果只需要满足一些普通的工作需求可能永远也不会用到VBA,但在实际应用的过程中,人们的操作却越来越大,需要也越来越高,这时候就需要用VBA来对Excel进行二次开发了,VBA可以有效地自定义和扩展Excel的功能。

但有一点想要告诉大家,VBA功能很强大,但并不是万能的,也并不是所有工作都需

要用VBA来解决,也并不是所有工作用VBA来解决都会很简单,这要根据实际情况而定,有些工作你用VBA来解决的话相反会变得很麻烦。

2、VBA与宏

刚开始的内容听起来很枯燥,请大家不要分心,耐着性子看下去,兴趣总是慢慢积累的。

<1>、亲自动手,录制一段属于自己的宏

提到VBA,相信很多人想到的就是宏,但是VBA与宏是不是一回事?我觉得它们不是一回事,但这不重要,我们要做的是先来认识一下宏。

宏是什么?

我理解的宏是一系列固定动作的集合,这个集合当遇到让他执行的条件后就逐个执行。

有人把我们录制的宏比喻成一个武术运动员在比赛中练就的一段武术套路动作,这个套路遇到一定的条件(比赛)就执行。

好了,别闲着,动一动你可爱的右手,点点鼠标,打开一个Excel文件,录制一段宏来来研究研究,步骤如下:

(1)选中任意一个单元格;

(2)打开菜单—>工具—>宏—>录制新宏,调出宏录制对话框,输入宏名(mysub),确定;

(3)设置单元格字体为仿宋体,红色;

(4)点击停止录宏。

这样,一个简单的设置单元格格式的宏就录好了。

< 2>、鼠标点一点,宏给单元格换新装

下面我们来执行这段宏。

(1)选中需要设置的任意单元格或单元格区域(为了看出效果,单元格最好有字符);

(2)打开菜单—>工具—>宏—>宏,显示“宏”对话框(快捷键:Alt+F8);

(3)选择我们刚才录制的宏,单击“执行”。

这样我们看到已经为刚才选中的单元格的字体已被修改成仿宋体,红色。自己动手试着录制几段宏,再执行一下,加深印象。

神奇了吧?以后当你再需要一遍又一遍地重复若干相同的操作的时候,会不会想到让宏来替你做这一切?这是一个不错的奴隶,不用花钱,且不用开工资,赚了吧?

好了,收起你贪婪的笑容,继续往下看。

宏是什么?现在相信你能想出一千种说法,由你了,俺可没你聪明,也不再多说。

上面说的执行宏的过程是不是让你感觉很麻烦?希望用快捷键来控制宏?这个我们可以在录制宏之前在录制宏对话框里进行设置。也可以在录制宏后进行设置,按Alt+F8显示宏对话框,单击“选项”,在“宏选项”对话框里进行设置工作表里有宏。

<3>、寻根问底,找到宏的老窝

如果你忘记了,请你再打开宏录制对话框,在宏名的下面,有一个“保存在”的选项,点一点下拉的箭头,我们可以看到,宏可以保存在三种不同的位置,分别是:(1)当前工作簿(系统默认):宏保存在当前工作薄的模块里,只有当该工作薄打开时,宏才起作用。

(2)新工作簿:新建一个工作薄保存。

(3)个人宏工作簿:这是为宏而设计的一种特殊的具有自动隐藏特性的工作簿,如果你要让某个宏在多个工作簿都能使用,那么就应当创建个人宏工作簿,并将宏保存于其中。

上面我们录制的宏是保存在当前工作薄里,今天我们在这里也只介绍保存在当前工作表里有宏。

<4>、拨开层层迷雾,查看庐山真面目

宏靠什么来控制Excel的运行?是不是感觉深在浓浓的迷雾里,感觉一头雾水?让我们鼓一鼓劲,拨开它的衣服,开开那家伙里面到底是什么?

(1)按Alt+F8快捷键打开“宏”对话框;

(2)选择我们刚才录制的宏,点“编辑”按钮。

眼前一亮吧?这是一个新的天地——VBA的编辑器窗口(VBE),这个我们以后再说,先将注意力集中到显示的代码上。代码如下:

复制内容到剪贴板

代码:

Sub mysub()

With Selection.Font

.Name = "仿宋_GB2312"

.Size = 12

.Strikethrough = False

.Superscript = False

.Subscript = False

.OutlineFont = False

.Shadow = False

.Underline = xlUnderlineStyleNone

.ColorIndex = xlAutomatic

End With

Selection.Font.ColorIndex = 3

End Sub

现在你可能感觉到上面这些乱七八糟的代码会很陌生,甚至在问自己是不是来到外星人的世界,反正偶当初是这样感觉的,但不要为此感到害怕,将来我们会慢慢熟悉他,就像闭上眼睛也能准确地将那个又大又红的苹果送到自己的嘴里。

<5>、再进一步,给宏安上门铃

一遍一遍地在宏对话框里选择宏名称,按“执行”按钮来运行宏的麻烦是不是让你郁闷得有些想吐血?指定快捷键虽然方便,但别人用自己的工作表时能不能快速上手?就算是自己,如果宏多了,或是放的时间长了,你还记得哪个快捷键控制哪个宏?

作为excel开发者,一个主要的目标是为自动化提供一个易于操作的界面,“按钮”是最常见的界面组成元素之一,我们可以把宏指定给特定的按钮,通过按钮来执行宏,还是用刚才我们录制的那个宏来举例。通过使用“窗体”工具栏,可以为工作簿中的工作表添加按钮。在创建完一个按钮后,可以为它指定宏,然后你的用户就可以通过单击按钮来执行宏。在本练习中,将创建一个按钮,并为它指定一个宏,然后用该按钮来执行宏。具体步骤如下:(1)打开菜单—>视图—>工具栏—>窗体,调出窗体工具栏。

(2)单击”窗体“工具栏中的“按钮”控件,在工作表中希望放置按钮的位置按下鼠标左键,拖动鼠标画出一个按钮,松开鼠标后,Excel会自动显示“指定宏”对话框。

(3)从“指定宏”对话框中选择“mysub”,单击“确定”。这样,就把该宏指定给命令按钮。

< 6>、小结

到这里,我们对宏应该有一个简单的了解了吧?宏实际上就是一个简单的VBA的Sub 过程,它保存在模块里,以Sub开头,以End Sub结尾,执行时就从第一句逐句执行,直到End Sub结束。我们今天录的这段宏也总是先设字体,再改字体颜色,这种顺序永远不会乱。

说完这些,你是不是感觉这些操作古板得没有生气?是不是感觉这宏的操作不能满足自己的需求?

宏代码绝不等于VBA,它只是VBA里最简单的运用,尽管许多Excel过程都可以用录制宏来完成,但是通过宏代码还是无法完成许多的工作,如:

(1)不可以建立公式,函数;

(2)没有判断或循环的功能;

(3)不能进行人机交互;

(4)无法显示用户窗体;

(5)无法与其他软件或文件进行互动。

…….

所以,你看了上面的内容后千万不要以为宏就是VBA了,更不要以为自己已经会VBA 了,事实上是你才刚沾上VBA的边,或者说连边都没沾上,甚至连宏今天我们都只是作了简单的介绍。

3、什么是VBE?

相信你还没忘记吧?VBE就是VBA的编辑窗口,所有的VBA操作都在VBE里完成。

VBE是一个分离出来的应用程序,它可以与Excel无缝结合,但是需要说明的是要运行VBE必须先运行Excel,VBA模块与Excel工作薄文件一起存储,除非激活VBE,否则VBA 模块是看不见的。

1、运行Excel后,怎样切换换到VBE窗口?

打开大门的钥匙有很多把,千万别猴急地去爬下水管道。

(1)按ALT+F11快捷键;

(2)选择“工具”—>“宏”—>“Visual Basic编辑器”命令。

(3)右击工作表名称标签,点击查看代码.

2、初识VBE窗口

这个界面相信你不陌生吧?查看宏的时候我们已经见识过它了。

“工程资源管理器”显示一个树型图示,包含了当前在Excel中打开的所有Excel对象,包含工作表,模块,窗体,加载宏及隐藏的工作薄,每个工作薄被认为是一个工程。

在工程资源管理器里右击,可以在右键菜单里选择相应的命令插入模块或窗体。如果你想删除它或者保存它,同样也可以在这里进行相应的操作。

“属性窗口”显示当前你选择的Excel对象的属性。选中某个对象后,可以在属性窗口中修改选中的对象的的各样属性.如颜色,名称等。

“立即窗口”,这是一个非常有用的窗口,在其中可以直接执行VBA语句,测试语句和调试代码,就跟我们在DOS下输入DOS命令一样。如果你的立即窗口不可见,按CRTL+G 调出来,可以在里面尝试输入:

[A1]=”我在学习VBA”

回车,看一看A1单元格里发生了什么变化?

4、对象、属性、方法,事件

这是很重要的几个概念,是写VBA程序的基础,大家仔细读,一定要弄清楚。

<1>、对象及对象层次结构

对象就是存在的东西,是VBA处理的内容,包括工作薄、工作表、工作表上的单元格区域、图表等等。对象可以相互包含,就像一个文件夹里可以包含多个文件夹一样,而这个文件夹又可以被其他的文件夹包含,一个工作薄对象可以包含多个多个工作表对象,一个工作表对象又可以包含多个单元格(或图表,图形等),这种对象的排列模式称为Excel的对象模型。

集合这个概念经常遇到,我理解的集合是对相同类型的对象的统称。

某中学有5000个学生,名字各不相同,我们对他都统称为某中学的学生,而不和一一去叫他们的名字,"某中学的学生"在这里是集合。

对象的引用,在Excel里,Workbooks集合包含在Application对象里,当我们要引用某工作薄的时候,要遵循从大到小的规则。跟表示硬盘里的某个文件的位置一样,比如我们想引用D盘“我的文档”文件夹下的名为“我的VBA课程.doc”文件时要输入的是:D:\我的文档\我的VBA课程.doc

同样,如果我们要引用名称为“mybook.xls”的工作薄时就是:

Application.Workbooks(“mybook.xls”)

和引用文件不同的是,VBA里使用的分隔符是点。

同理,当我们引用“mybook.xls”里面的工作表“mysheet”时应是:

Application.Workbooks(“mybook.xls”).Worksheets(“mysheet”)可以继续延伸到下一层,引用“mybook.xls”里工作表“mysheet”里面的单元格区域“A1:D10”:

Application.Workbooks(“mybook.xls”).Worksheets(“mysheet”).Range (“A1:D10”)

但是并不是每一次引用都必须这么呆板。如果我们引用的是活动对象,也就是被激活的对象,引用就可以进行简化。

如果是mybook工作薄是激活的,引用可以简化为

Worksheets(“mysheet”).Range(“A1:D10”)

如果mysheet当前也是激活的,引用甚至还可以简化为Range(“A1:D10”) ,也可以直接输入[A1:D10] ,如果引用的单元Range是单个的单元格,还可以用Cells(行号,列号)的引用方式。

2、属性

每一个对象都有属性,一个属性就是对一个对象的一个设置。

猪八戒背着媳妇高秀兰回自己的紫云洞,猪八戒的媳妇就是对象,“高秀兰”就是猪八戒的媳妇的一个属性(name属性),引用对象的属性同样也要用点来分隔。

猪八戒的媳妇.name=高秀兰

别闲着,还是动动你的右手,打开一个工作表,Alt+F11(千万别说你不知道这个快捷

键是干什么,要不我保证被你气个半死),如果立即窗口没有打开,按Ctrl+G打开,在里面输入:

复制内容到剪贴板

代码:

Msgbox Worksheets(1).name

Worksheets(1)和Worksheets(“sheet1”)有什么区别?

Worksheets(1)表示Worksheets集合里的第一个工作表。

Worksheets(“sheet1”)表示Worksheets集合里名为"sheet1"的工作表。

至于Msgbox是什么,那就自己问Help了,在立即窗口里用鼠标左键把Msgbox抹黑,按F1,就弹出Help里对它的说明了。

抹黑代码,再按F1即可看到相应的帮助。叶枫说:“这个办法很适用,一般人我不告诉他。”

一个对象有哪些属性我们可以在属性窗口里查看,要修改一个对象的某种属性,如名称、

显示状态、颜色等等,也可以在属性窗口里进行修改,当然我们还可以利用代码进行修改。改当前工作薄里的第三个工作表的名称为“这个名字是我用VBA改的”,想想怎么写代码?

把你的代码输在立即窗口里,回车,看看效果,你做到了吗?

3、方法

每一个对象都有方法,方法就是在对象上执行的某个动作。

和属性相比,属性表示的是对象某种状态或样子,是静态的,就像是语文里的名词、形容词和副词,而方法则是做某件事的一个动作,就像动词,对象和方法同样用点来分隔。

4、事件

简单点说,事件就是由用户或者系统触发的,可以在代码中响应的一段代码。比如,当我们移动鼠标,打开工作薄,激活工作表,选中单元格,改变单元格的数值,点击按钮或窗体,敲击键盘等等这些都会产生一系列的事件,通过编写代码响应这些事件,当发生此类事件时,程序代码就会进行相应的操作。

这样解释你会不会有些晕?感觉又一次进入了外星人的世界?还是举例说明,我们需要当激活某工作表的时候,自动弹出一个对话框,告诉我们激活的工作表的名称。

(1)打开一个工作表,Alt+F11打开VBE窗口,在“工程对象管理器”窗口里双击你要进行设置的工作表,使其代码窗口显示。

(2)左面选择对象Worksheet(工作表对象),右面选择Activate事件,我们可以看到在代码窗口里系统已经为我们自动输入了一段代码。

代码:

Private Sub Worksheet_Activate()

End Sub

5、VBA过程

一个过程就是执行某些动作的代码组合。

VBA过程分Sub过程和Function过程。

1、Sub过程总是以“sub 过程名()”开头,以“End Sub”结尾,一个过程就是执行某项动作的一套指令,Sub过程不返回运行的结果。

2、Function总是以“Function 程序名()”开头,以“End Function”结尾,和Sub过程的区别是Function过程返回程序运行的值,值可以是一个值或一个数组,就像我们的工作表函数,Function过程也就是我们说的自定义函数。

好了,今天已经讲得够多了,你对VBA应该已有一个简单的认识了吧?

要设计一个过程,其实很简单,把需要的对象收集起来,看看我们要对他们的属性进行怎样的修改?我们需要做什么?需要用什么样的方法?要用哪些事件?收集起来就是一个完整的过程。

只要你肯动手,一定会觉得很简单,你不要被那一大堆的对象、属性、方法和事件给吓晕了,完全不必全部记住它们,需要的时候知道在哪里找就行,而代码也不必一个一个的去输入,还记得前面一贴我们说的录制宏吗?当你需要进行某项操作的时候,不妨先录一段宏,但是宏是呆板的,有许多我们不需要的东西,给它修修枝,剪剪叶,整理整理,一个程序就OK了。

上面这个并不是真的程序,但都有了程序的思想了,程序里,事件、对象、属性及过程都有了,你能找出来吗?

多尝试,温故知新,你可以想着用程序去解决一些你在使用Excel过程中遇到的问题,每一个问题的解决,你都会发现自己得到了很大的进步.

好了,还是那句话,路在脚下,继续走,精彩会慢慢为你上演,让我们一起努力,共同进步。

在上面,我们简单介绍了VBA的开发环境、几个常用的窗口,并对对象、对象的属性、对象的方法、对象的事件等概念作了简单的介绍,贴子大家认真看了吗?有没有一点点的收获?学习成绩如何?

什么是对象?什么是集合?什么是属性?什么是方法?什么是事件?如何正确地表示它们?

这些,你都能回答了吗?

先沉思三秒钟,如果你不能回答,那请赶快回过头去,再看一遍,我们说VBA是采用面向对象的程序设计方式,这些都是很重要的概念,如果不弄清楚,实际应用时,你可能会感到手忙脚乱。

这次,我们将继续单调的基本功练习,讲一些VBA里面的关键字,为程序设计打下基础,还是那句话,希望你不要嫌内容的单调,一口你永远也吞不下一个大胖子,学习是一个循序渐进的过程。

6、数据类型、变量、常量、数组

VBA的主要目的是什么?不用说了你也知道,当然是处理数据。某些数据存在于对象中,如工作表的单元格区域里,某些数据存在于我们自定义的变量中。

1、数据类型

数据类型告诉计算机如何将数据存储在内存中,如以整数、字符串、日期等。

数据类型是变量的特性,数据类型包括:

1、数据类型

数据类型告诉计算机如何将数据存储在内存中,如以整数、字符串、日期等。

数据类型是变量的特性,数据类型包括:

2、变量

变量是用于保存在程序运行过程中需要临时保存的值或对象。就相当于我们在操作工作表的时候插入的辅助单元格、辅助列或辅助表一样。

同工作表的单元格一样,变量可以接纳很多种的数据类型,如其名,程序运行后,变量的值是可以改变的。

7、该定义变量为何种数据类型:

定义变量可以使用Dim语句:

Dim 变量名As 数据类型

变量名有一定的命名规则,这里我就不详细说明了,需要提醒的是在程序的设计过程中,你可能会定义很多的变量,为了阅读及修改程序的方便,你定义的变量名尽量能让人一看就明白这个变量具体代表的是什么。在Dim语句中,我们可以不必声明变量的数据类型,直接输入“Dim 变量名”此时定义的变量将被指定为Variant类型。

但我们在程序设计的过程中,一般应该明确数据的类型,这是一个好的编程习惯,因为指定数据类型后会提高程序的运行速度。

我们可以在模块中输入“Option Explict”作为第一句语句来强制声明所有变量。也可以点“工具——选项”,在选项对话框里勾选“要求声明变量”。这样,VBA在遇到没有声明的变量名称,该语句将导致程序停止。

定义变量除了可以使用Dim语句外,比较常的还有:static语句,Private语句,Public语句。使用不同的语句定义的变量不同的是它们的作用作用域不同,具体为:(1)如果在一个过程中包含了一个Dim或Static语句,此时声明的变量作用域为此过程,即本地变量。

(2)如果在一个模块的第一个过程之前包含了Dim或Prvate语句,此时声明的

宏程序入门基础学习资料

宏程序入门基础学习资料 其实说起来宏就是用公式来加工零件的,比如说椭圆,如果没有宏的话,我们要逐点算出曲线上的点,然后慢慢来用直线逼近,如果是个光洁度要求很高的工件的话,那么需要计算很多的点,可是应用了宏后,我们把椭圆公式输入到系统中然后我们给出Z坐标并且每次加10um那么宏就会自动算出X坐标并且进行切削,实际上宏在程序中主要起到的是运算作用..宏一般分为A类宏和B类宏.A类宏是以G65 Hxx P#xx Q#xx R#xx的格式输入的,而B类宏程序则是 以直接的公式和语言输入的和C语言很相似在0i系统中应用比较广.由于现在B类宏程序的大量使 用很多书都进行了介绍这里我就不再重复了,但在一些老系统中,比如法兰克OTD系统中由于它的MDI键盘上没有公式符号,连最简单的等于号都没有,为此如果应用B类宏程序的话就只能在计算机上编好再通过RSN-32接口传输的数控系统中,可是如果我们没有PC机和RSN-32电缆的话怎么办呢,那么只有通过A类宏程序来进行宏程序编制了,下面我介绍一下A类宏的引用;

A类宏是用G65 Hxx P#xx Q#xx R#xx或G65 Hxx P#xx Qxx Rxx 格式输入的xx的意思就是数值,是以um级的量输入的,比如你输入100那就是0.1MM~~~~~.#xx就是变量号,关于变量号是什么意思再不知道的的话我也就没治了,不过还是教一下吧,变量号就是把数值代入到一个固定的地址中,固定的地址就是变量,一般OTD系统中有#0~~~#100~#149~~~#500~#531关闭电源时变量#100~#149被初始化成“空”,而变量#500~#531保持数据.我们如果说#100=30那么现在#100地址内的数据就是30了,就是这么简单.好现在我来说一下H代码,大家可以看到A类宏的标准格式中#xx和xx都是数值,而G65表示使用A类宏,那么这个H 就是要表示各个数值和变量号内的数值或者各个变量号内的数值与其他变量号内的数值之间要进行一个什么运算,可以说你了解了H代码A类宏程序你基本就可以应用了,好,现在说一下H代码的各个含义: 以下都以#100和#101和#102,及数值10和20做为例子,应用的时候别把他们当格式就行, 基本指令: H01赋值;格式:G65H01P#101Q#102:把#102内的数值赋予到

数控车床由浅入深的宏程序实例

宏程序 裳华职业技术中专鲍新涛 宏程序概述 其实说起来宏就是用公式来加工零件的,比如说,如果没有宏的话,我们要逐点算出上的点,然后慢慢来用直线逼近,如果是个光洁度要求很高的工件的话,那么需要计算很多的点,可是应用了宏后,我们把椭圆公式输入到系统中然后我们给出Z坐标并且每次加10um那么宏就会自动算出X坐标并且进行切削,实际上宏在程序中主要起到的是运算作用。.宏一般分为A类宏和B类宏。 A类宏是以G65 Hxx P#xx Q#xx R#xx的格式输入的,而B类宏程序 则是以直接的公式和语言输入的和C语言很相似在0i系统中应用比较广。 宏程序的作用 数控系统为用户配备了强有力的类似于高级语言的宏程序功能,用户可以使用变量进行算术运算、逻辑运算和函数的混合运算,此外宏程序还提供了循环语句、分支语句和子程序调用语句,利于编制各种复杂的零件加工程序,减少乃至免除手工编程时进行繁琐的数值计算,以及精简程序量。 宏程序指令适合抛物线、椭圆、双曲线等没有插补指令的曲线编程;适合图形一样,只是尺寸不同的系列零件的编程;适合工艺路径一样,只是位置参数不同的系列零件的编程。较大地简化编程;扩展应用范围。 宏的分类 B类宏 由于现在B类宏程序的大量使用,很多书都进行了介绍这里我就不再重复了,但在一些老系统中,比如(FANUC)OTD系统中由于它的MDI键盘上没有公式符号,连最简单的等于号都没有,为此如果应用B类宏程序的话就只能在计算机上编好

再通过RSN-32接口传输的数控系统中,可是如果我们没有PC机和RSN-32电缆的话怎么办呢,那么只有通过A类宏程序来进行宏程序编制了,下面我介绍一下A 类宏的引用; A类宏 A类宏是用G65 Hxx P#xx Q#xx R#xx或G65 Hxx P#xx Qxx Rxx格式输入的,xx 的意思就是数值,是以um级的量输入的,比如你输入100那就是0.1MM.#xx就是号,变量号就是把数值代入到一个固定的地址中,固定的地址就是变量,一般OTD 系统中有#0~#100~#149~#500~#531.关闭电源时变量#100~#149被初始化成“空”,而变量#500~#531保持数据.我们如果说#100=30那么现在#100地址内的数据就是30了,就是这么简单.好现在我来说一下H代码,大家可以看到A类宏的标准格式中#xx和xx都是数值,而G65表示使用A类宏,那么这个H就是要表示各个数值和变量号内的数值或者各个变量号内的数值与其他变量号内的数值之间要进行一个什么运算,可以说你了解了H代码A类宏程序你基本就可以应用了,好,现在说一下H代码的各个含义: 应用 以下都以#100和#101和#102,及数值10和20做为例子,应用的时候别把他们当格式就行, 基本指令 H01赋值;格式:G65H01P#101Q#102:把#102内的数值赋予到#101中 G65H01P#101Q#10:把#10赋予到#101中 H02加指令;格式G65 H02 P#101 Q#102 R#103,把#102的数值加上#103的数值赋予#101

学习任务十三宏程序应用基础

项目四非圆曲线加工 学习任务十三宏程序应用基础 学习目标 能够了解宏程序编程原理。 能够掌握变量含义及运算方法及功能语句的含义。 相关知识 1、变量 (1)定义:用可赋值的代号代替具体的数值,这个代号就称为变量。 (2)表示方法:FANUC系统变量用变量符号“#”和后面的变量号表示,变量号可用数字或表达式表示,当用表达式时,要将表达式放在括号中,例如,#1、#[#1+#2]、X[#1﹢#2]、X#[#1+#2]等,以下几点需要注意。 a.当在程序中定义变量值时,小数点及后面的零可省略。 b.被引用变量的值根据地址的最小设定单位自动舍入,例如:#1=12.3456,当机床精度为0.001时,X#1的值为12.346。 c.负号要放在“#?”前面,例如:G00 X‐#1。 d.当变量未定义时为空变量,当引用空变量时,变量及地址字都被忽略,例如:#1=0,#2未定义,则程序段“G00 X#1 Z#2”的执行结果为“G00 X0”。 e.变量“#0”总是空变量,只能读不能写。 (3)变量的类型 根据变量号可分为四种类型 表13—1 变量的类型

说明:系统变量用于读和写NC内部数据,其变量号和含义在一个系统中是一一对应的,有些可以读和写,有些只能读。 例如:#3002是时间信息系统变量,该变量为一个定时器,当循环启动灯亮时,以1小时为单位计时,它可以被读和写,例如#3002=0测表示定时器清零,可以重新开始计时。 #5041-#5043为位置信息的系统变量,表示包含刀具补偿值的当前位置。 例如:#1 = # 5043 . 表示将当前位置的Z坐标值赋给“#1” G01 W-50 F0.1 表示从当前位置(起点)做Z向切削50mm长 G01 Z #1 切削退回起点 更多具体的参数含义请阅读系统的说明书。 2、变量的运算 ⑴下表中的运算可在本系统的变量中被执行,“=”的用法是将其右侧的结果赋给左侧的变量。

由浅入深宏程序入门基础示例之欧阳光明创编

由浅入深宏程序1-宏程序入门基础之销轴加工 欧阳光明(2021.03.07) 对于没有接触过宏程序人,觉得它很神秘,其实很简单,只要掌握了各类系统宏程序的基本格式,应用指令代码,以及宏程序编程的基本思路即可。 对于初学者,尤其是要精读几个有代表性的宏程序,在此基础上进行模仿,从而能够以此类推,达到独立编制宏程序的目的。本教程将分步由浅入深的将宏程序讲解给大家,作者水平有限,也希望各位同仁提供更好的思路。 下面大家先看一个简单的车床的程序,图纸如下: 要求用外圆刀切削一个短轴,这里只列举程序的前几步: T0101 M3S800 G0X82Z5 G0X76 G1Z-40F0.2 X82 G0Z5 G0X72 G1Z-40F0.2

X82 G0Z5 G0X68 G1Z-40F0.2 X82 G0Z5 G0X68 G1Z-40F0.2 X82 G0Z5 ........ G0X40 G1Z-40F0.2 X82 G0Z5 G0X150Z150 M5 M30 从上面程序可以看出,每次切削所用程序都只是切削直径X有变化,其他程序代码未变。因此可以将一个变量赋给X,而在每次切削完之后,将其改变为下次切削所用直径即可。 T0101 M3S800

G0X82Z5 #1=76赋初始值,即第一次切削直径 N10 G0X[#1]将变量赋给X,则X方向进刀的直径则为#1变量中实际存储值。N10是程序 G1Z-40F0.2 段的编号,用来标识本段,为后面循环跳转所用。X82 G0Z5 #1=#1-4每行切深为2mm,直径方向递减4mm IF [#1GE40] GOGO 10如果#1 >= 40,即此表达式满足条件,则程序跳转到N10继续执行。 G0X150Z150 当不满足#1 >= 40,即#1<40,则跳过循环判断语句,由此句继续向后执行。 M5 M30 由浅入深宏程序2-宏程序之销轴粗精加工 本篇文章利用宏程序简单模仿数控系统的外圆车削循环功能。在此用前一篇的图纸与程序 原程序: T0101 M3S800 G0X82Z5 粗加工开始 #2=0.05 Z向的加工余量 #3=0.5 外圆方向的加工余量

宏程序基础

1.1概述 1.2 1.3 1.4一、宏程序的分类 1.5首先我们来讲一下宏程序的分类,A类和B类。 首先在数控车系统比较老的时候,我们系统里 面有A类宏,A类宏格式为G65格式,现在已 经基本淘汰。随着科技发达,系统的升级优化,现在的数控系统大多支持B类宏程序,总体而 言,现在B类宏是一个主流发展趋势,所以接 下来我们的实例讲解都以B类宏程序为例。1.6 1.7 1.8二、宏程序的概念 1.9 1.10简单来理解宏程序是什么可以这样理解,宏程 序就是利用数学公式,函数等计算方式,配合 数控系统中的G代码编制出的一种程序,主要 加工一些像椭圆,曲线,各类大螺距螺纹和刀 具路线相识的一些零件。随着科技发达,像椭 圆,抛物线,等线性零件,用软件或则系统自 代G代码可以完成加工,而大螺距异型螺纹这 类零件,软件还没达到成熟,所以我们学会宏 程序在加工中可以起到一个非常大的作用。可 以弥补多年来数控车对大螺距螺纹的编程难的 一个提高。 1.11 1.12 1.13三、宏程序的特征 1.14 1.151.赋值 1.16在宏程序中我们通常用法最多的就是变量,比 如: 1.17#1=1 它就是一个变量。我们把这一过程,称为 赋值。也就是说,我们把等号后面的数值1,赋 值给#1。而现在#1的值就等于1,也可以理解 为#1就是一个代号,用来代替数值1。 1.18 1.19 2.变量和应用 1.20比如:#1=2(把数值2赋值给#1) 1.21#2=1(把数值1赋值给#2)1.22#2=#1(程序从上往下执行,思考一下现在#2的 值等于多少) 1.23 1.24解:当程序执行第一步的时候#1的值等于2, 当执行第二步的时候#2的值等于1,当执行第 三步的时候这里要注意了,刚才讲过赋值过程,是等号后面的值赋值给等号前面,所以当#1在 第一步赋值以后,#1已经等于2了,所以在执 行第三步的时候#2的值应该等于2,不在是第 二步的1了。从这里我们可以看出,当程序中 有相同的变量#的时候,后面的#号代替前面的# 号。 1.25比如:#1=2 1.26#1=3 1.27 1.28最后结果#1的值因该是等于3的。所以说后面 的代替前面的。 1.29 1.30 1.31四、变量的取值范围 1.32 1.331.局部变量(#1-#33) 1.34什么叫局部变量,局部变量就是在局部或则可 以理解为在单个程序中有效。断电以后系统自 动清零。 1.35 1.36 2.公共变量(#100-#199,#500-#999) 1.37公共变量和局部变量的区别在于,局部变量是 在局部,或则单个程序中有效,而公共变量是 指如果一个程序同时拥有主程序和子程序的情 况下,在主程序中如果已经赋值,在子程序中 可以不用从新赋值,可以共用。而#100-#199和 #500-#999的区别在于,前者断电清零,而后者 不会清零会一直保存在系统内部。比如: 1.38#500=TAN[15] 1.39 1.40#500一旦赋值就将保存在系统内部,下次可以 直接调用#500使用。 1.41 1.423.系统变量(#1000-#17200) 1.43系统变量是用于我们机床系统储存一些刀补数 据参数等等的东西,我们可以不用管它,不会 用的,慎用) 1.44

宏程序基础知识

瑞鹄汽车模具有限公司内部教材 第一章宏程序基础知识 第一节常量与变量的含义 常量与变量的含义及编程案例 数控程序中含有变量的程序称为宏程序。虽然子程序对编制相同的加工程序非常有用,但用户宏程序由于允许使用变量、算术和逻辑运算及条件转移,使得编制同样的加工程序更简便。 常量 普通加工程序直接用数值指定G代码和移动距离;例如,GO1和X100.0。 变量 使用用户宏程序时,数值可以直接指定或用变量指定。当用变量时,变量值可用程序或用MDI面板上的操作改变。 #1=#2+100 G01 X#1 F300 变量用变量符号(#)和后面的变量号指定。例如:#1 表达式可以用于指定变量号。此时,表达式必须封闭在括号中。例如:#[#1+#2-12] 变量根据变量号可以分成四种类型:1.空变量2.局部变量3.公共变量4.系统变量 1.空变量: #0 该变量总是空,没有值能赋给该变量. 2.局部变量: #1-#33 局部变量只能用在宏程序中存储数据,例如,运算结果.当断电时,局部变量被初始化为空. 调用宏程序时,自变量对局部变量赋值. 3.公共变量 #100-#199 #500-#999 公共变量在不同的宏程序中的意义相同.当断电时,变量#100-#199初始化为空.变量#500-#999的数据保存,即使断电也不丢失. 4.系统变量:#1000以上的变量 系统变量用于读和写CNC的各种数据,例如刀具补偿,当前位置信息, 变量的引用 为在程序中使用变量值,指定后跟变量号的地址。当用表达式指定变量时,要把表达式放在

括号中。例如:G01X[#1+#2]F#3; 被引用变量的值根据地址的最小设定单位自动地舍入。 例如:当G00X#1;以1/1000mm的单位执行时,CNC把123456赋值给变量#1,实际指令值为G00X12346. 改变引用变量的值的符号,要把负号(-)放在#的前面。例如:G00X-#1 当引用未定义的变量时,变量及地址都被忽略。例如:当变量#1的值是0,并且变量#2的值是空时,G00X#1 Y#2的执行结果为G00X0 未定义的变量当变量值未定义时,这样的变量成为空变量。变量#0总是空变量。它不能写,只能读。 当#1= (空)时 G90 X100 Y#1实际与 G90 X100运行结果一样 当#1=0 时 G90 X100 Y#1实际与 G90 X100 Y0 运行结果一样 运算 除了用<空>赋值以外,其余情况下<空>与0 相同。

Excel 常用宏编程的代码学习

Excel 常用宏编程的代码学习 用过VB的人都应该知道如何声明变量,在VBA中声明变量和VB中是完全一样的!使用Dim语句 Dim a as integer '声明a为整型变量 Dim a '声明a为变体变量 Dim a as string '声明a为字符串变量 Dim a as currency ,b as currency ,c as currency '声明a,b,c为货币变量...... 声明变量可以是:Byte、Boolean、Integer、Long、Currency、Single、Double、Decimal(当前不支持)、Date、String(只限变长字符串)、String * length(定长字符串)、Object、Variant、用户定义类型或对象类型。 强制声明变量 Option Explicit 说明:该语句必在任何过程之前出现在模块中。 声明常数 用来代替文字值。 Const ' 常数的默认状态是Private。 Const My = 456 ' 声明Public 常数。 Public Const MyString = "HELP" ' 声明Private Integer 常数。 Private Const MyInt As Integer = 5 ' 在同一行里声明多个常数。 Const MyStr = "Hello", MyDouble As Double = 3.4567 选择当前单元格所在区域 在EXCEL97中,有一个十分好的功能,他就是把鼠标放置在一个有效数据单元格中,执行该段代码,你就可以将连在一起的一片数据全部选中。只要将该段代码加入到你的模块中。 Sub My_Select Selection.CurrentRegion.Select End sub

FANUC用户宏程序学习教程

用户宏程序 宏程序是指含有变量的子程序,在程序中调用用户宏程序的那条指令叫做用户宏指令(这里用G65) 1、变量 用一个可赋值的代号代替具体的坐标值,这个代号称为变量。变量分为系统变量、全局变量和局部变量三类,它们的性质和用途个不相同。(1)系统变量是固定用途的变量,它的值决定了系统的状态。FANUC 中的系统变量为#1000~#1005、#1032、#3000等。 (2)全局变量是指在主程序内和由主程序调用的各用户宏程序内公用的变量。FANUC中的全局变量有60个,它们分两组,一组是#100~#149;另一组是#500~#509。 (3)局部变量是仅局限于在用户宏程序内使用的变量。同一个局部变量在不同的宏程序内的值是不通用的。FANUC中的局部变量有33个,分别为#1~#33。 表1 FANUC系统中局部变量赋值(部分)对照表

2、变量的演算 (1)加减型运算加减型运算包括加、减、逻辑加和排它的逻辑加。分别用以下四个形式表达: #i = #j +#k #i = #j -#k #i = #j OR #k #i = #j XOR #k 式中,i、j、k为变量;+、-、OR、XOR称为为演算子。 (2)乘除型运算乘除型运算包括乘、除和逻辑乘。分别用以下形式表达: #i = #j * #k #i = #j / #k #i = #j AND #k 4.变量的赋值 由于系统变量的赋值情况比较复杂,这里只介绍公共变量和局部变量的赋值。变量的赋值方式可分为直接和间接两种。

(1)直接赋值 例:#1=115(表示将变量115赋值于#1变量) #100=#2(表示将变量#2的即时值赋于变量#100) (2)间接赋值间接赋值就是用演算式赋值,即把演算式内演算的结果赋给某个变量。在演算式中有自变量代号,自变量每得到一个即时值,相应就得到一个演算结果,该结果就赋值给变量,该变量也叫应变量。5.转向语句 转向语句分为无条件转向语句和条件转向语句两种。 (1)无条件转向语句 程序段格式:GOTO N ;其中N后面的数值为程序段号。 例如:GOTO 55;表示无条件转向执行N55程序段,而不论N55程序段在转向语句之前还是之后。 (2)条件转向语句条件转向语句一般由判断条件式和转向目标两部分构成。 程序段格式:IF [a GT b ] GOTO c;表示为“如果a>b,那么转向执行第Nc句程序段”。a和b可以是数值、变量或含有数值及变量的算式,c 是转向目标的程序段。 大于、等于、大于等于、小于等于分别用GT、EQ、GE、LE表示。

数控宏程序编程入门

宏程序 大家都在问宏程序~其实说起来宏就是用公式来加工零件的,比如说椭圆,如果没有宏的话,我们要逐点算出曲线上的点,然后慢慢来用直线逼近,如果是个光洁度要求很高的工件的话,那么需要计算很多的点,可是应用了宏后,我们把椭圆公式输入到系统中然后我们给出Z 坐标并且每次加10um那么宏就会自动算出X坐标并且进行切削,实际上宏在程序中主要起到的是运算作用..宏一般分为A类宏和B类宏.A类宏是以G65 Hxx P#xx Q#xx R#xx的格式输入的,而B类宏程序则是 以直接的公式和语言输入的和C语言很相似在0i系统中应用比较广.由于现在B类宏程序的大量使 用很多书都进行了介绍这里我就不再重复了,但在一些老系统中,比如法兰克OTD系统 中由于它的MDI键盘上没有公式符号,连最简单的等于号都没有,为此如果应用B类宏程序的话就只能在计算机上编好再通过RSN-32接口传输的数控系统中,可是如果我们没有PC机和RSN-32电缆的话怎么办呢,那么只有通过A类宏程序来进行宏程序编制了,下面我介绍一下A 类宏的引用; A类宏是用G65 Hxx P#xx Q#xx R#xx或G65 Hxx P#xx Qxx Rxx格式输入的xx的意思 就是数值,是以um级的量输入的,比如你输入100那就是0.1MM~~~~~.#xx就是变量号,关于变量号是什么意思再不知道的的话我也就没治了,不过还是教一下吧,变量号就是把数值代 入到一个固定的地址中,固定的地址就是变量,一般OTD系统中有 #0~~~#100~#149~~~#500~#531关闭电源时变量#100~#149被初始化成“空”,而变量 #500~#531保持数据.我们如果说#100=30那么现在#100地址内的数据就是30了,就是这么 简单.好现在我来说一下H代码,大家可以看到A类宏的标准格式中#xx和xx都是数值,而G65表示使用A类宏,那么这个H就是要表示各个数值和变量号内的数值或者各个变量号内的数值与其他变量号内的数值之间要进行一个什么运算,可以说你了解了H代码A类宏程序你基本就可以应用了,好,现在说一下H代码的各个含义: 以下都以#100和#101和#102,及数值10和20做为例子,应用的时候别把他们当格式就行, 基本指令: H01赋值;格式:G65H01P#101Q#102:把#102内的数值赋予到#101中 G65H01P#101Q#10:把10赋予到#101中 H02加指令;格式G65 H02 P#101 Q#102 R#103,把#102的数值加上#103的数值赋予#101 G65 H02 P#101 Q#102 R10 G65 H02 P#101 Q10 R#103 G65 H02 P#101 Q10 R20 上面4个都是加指令的格式都是把Q后面的数值或变量号内的数值加上R后面的数 值或变量号内的数值然后等于到P后面的变量号中. H03减指令;格式G65 H03 P#101 Q#102 R#103,把#102的数值减去#103的数值赋予#101 G65 H03 P#101 Q#102 R10 G65 H03 P#101 Q10 R#103 G65 H03 P#101 Q20 R10 上面4个都是减指令的格式都是把Q后面的数值或变量号内的数值减去R后面的数 值或变量号内的数值然后等于到P后面的变量号中. H04乘指令;格式G65 H04 P#101 Q#102 R#103,把#102的数值乘上#103的数值赋予#101 G65 H04 P#101 Q#102 R10

宏程序基础知识资料

第一章宏程序基础知识 第一节常量与变量的含义 常量与变量的含义及编程案例 数控程序中含有变量的程序称为宏程序。虽然子程序对编制相同的加工程序非常有用,但用户宏程序由于允许使用变量、算术和逻辑运算及条件转移,使得编制同样的加工程序更简便。 常量 普通加工程序直接用数值指定G代码和移动距离;例如,1和X100.0。变量 使用用户宏程序时,数值可以直接指定或用变量指定。当用变量时,变量值可用程序或用面板上的操作改变。 #1=#2+100 G01 1 F300 变量用变量符号(#)和后面的变量号指定。例如:#1 表达式可以用于指定变量号。此时,表达式必须封闭在括号中。例如:#[#12-12] 变量根据变量号可以分成四种类型:1.空变量2.局部变量3.公共变量4.系统变量 1.空变量: #0 该变量总是空,没有值能赋给该变量. 2.局部变量:

#133 局部变量只能用在宏程序中存储数据,例如,运算结果.当断电时,局部变量被初始化为空. 调用宏程序时,自变量对局部变量赋值. 3.公共变量 #100199 #500999 公共变量在不同的宏程序中的意义相同.当断电时,变量#100199初始化为空.变量#500999的数据保存,即使断电也不丢失. 4.系统变量1000以上的变量 系统变量用于读和写的各种数据,例如刀具补偿,当前位置信息,变量的引用 为在程序中使用变量值,指定后跟变量号的地址。当用表达式指定变量时,要把表达式放在括号中。例如:G01X[#12]3; 被引用变量的值根据地址的最小设定单位自动地舍入。 例如:当G001;以1/1000的单位执行时,把123456赋值给变量#1,实际指令值为G00X12346. 改变引用变量的值的符号,要把负号(-)放在#的前面。例如:G00X -#1 当引用未定义的变量时,变量及地址都被忽略。例如:当变量#1的值是0,并且变量#2的值是空时,G001 2的执行结果为G00X0 未定义的变量当变量值未定义时,这样的变量成为空变量。变量#0总是空变量。它不能写,只能读。 当#1= (空)时 G90 X100 1实际与G90 X100运行结果一样 当#1=0 时 G90 X100 1实际与G90 X100 Y0 运行结果一样 运算 除了用<空>赋值以外,其余情况下<空>与0 相同。

编程入门教程.doc

编程入门教程 编程入门教程由勤快学基础教程https://www.360docs.net/doc/6c9634063.html,梳理的一本面向程序开发入门初学者的编程入门教程,是一个涵盖了游戏、PLC、VB、数控、JAVA、APP、Matlab、C语言、Shell、IOS、Android安卓等手机和PC编程的入门教程。 1.编程入门教程 1.1. 游戏编程入门 游戏编程入门适用于任何对C++语言有基本了解的读者阅读,适宜作为读者进入游戏开发领域的技术入门学习用书。 游戏编程入门介绍如何设计和构建自己的电脑游戏。游戏编程入门不是泛泛地介绍编程理论,而是引导读者开发一个“即插即用”的游戏引擎,可以增强和重用这个游戏引擎以开发各种游戏。书中包括了7个完整游戏的详尽解释以及示例代码,使读者准备好开始自己的游戏项目开发。如果读者喜爱玩游戏,那么只需在学习了如何开发它们之后,就可以玩上自己开发的游戏了。 光盘内容:Bloodshed Dev-C++开发环境;在游戏编程入门中开发的示例和游戏的完整源代码和可执行程序文件;C++语言和Windows编程的入门指导。 1.2. plc编程入门 可编程序控制器,英文称Programmable Controller,简称PC。但由于PC容易和个人计算机(Personal Computer)混淆,故人们仍习惯地用PLC作为可编程序控制器的缩写。它是一个以微处理器为核心的数字运算操作的电子系统装置,专为在工业现场应用而设计,它采用可编程序的存储器,用以在其内部存储执行逻辑运算、顺序控制、定时/计数和算术运算等操作指令,并通过数字式或模拟式的输入、输出接口,控制各种类型的机械或生产过程。PLC 是微机技术与传统的继电接触控制技术相结合的产物,它克服了继电接触控制系统中的机械触点的接线复杂、可靠性低、功耗高、通用性和灵活性差的缺点,充分利用了微处理器的优点,又照顾到现场电气操作维修人员的技能与习惯,特别是PLC的程序编制,不需要专门的计算机编程语言知识,而是采用了一套以继电器梯形图为基础的简单指令形式,使用户程序编制形象、直观、方便易学;调试与查错也都很方便。用户在购到所需的PLC后,只需按说明书的提示,做少量的接线和简易的用户程序编制工作,就可灵活方便地将PLC应用于生产实践。 1.3. 电脑编程入门 编辑程序让电脑执行的过程就叫编程很多软件都可以编程具有代表性的计算机语言有Java,BASIC C,C++,VB,VF,SQL,网页编程JSP,ASP,PHP ,软件是eclipse,Microsoft Visual

宏程序编程例子入门(精编文档).doc

【最新整理,下载后即可编辑】 宏程序编程例题 椭圆解析: 椭圆关于中心、坐标轴都是对称的,坐标轴是对称轴,原点是对称中心。对称中心叫做椭圆中心。椭圆和X轴有2两个交点,和Y轴有两个交点,这四个交点叫做椭圆顶点。 椭圆标准方程:x2 / a2 + y2 / b2 = 1 ( a为长半轴,b为短半轴,a > b > 0 ) 椭圆参数方程:x=a*cosM y=b*sinM ( a为长半轴,b为短半轴,a > b > 0 ,M是夹角,是椭圆上任意一 点到椭圆中心连线与X正半轴 所成的夹角,顺时针为负,逆时 针为正。) 二、数控车床: 根据椭圆标准方程:x2 / a2 + y2 / b2 = 1 ( a为长半轴,b为短半轴,a > b > 0 ) 根据椭圆参数方程:x=a*cosM y=b*sinM ( a为长半轴,b为短半轴,a > b > 0 ,M是夹角,是椭圆上任 意一点到椭圆中心连线与X正 半轴所成的夹角,顺时针为负, 逆时针为正。) 可得车床标准方程:z2 / a2 + x2 / b2 = 1 ( a为长半轴,b为短半 轴,a > b > 0 ) 可得椭圆参数方程:z=a*cosM x=2b*sinM ( a为长半轴,2b为短轴(直径), a > b > 0 ,M是夹角,是椭圆 上任意一点到椭圆中心连线与 Z正半轴所成的夹角,顺时针为 负,逆时针为正。)

通过标准方程推导X的表达式:x =b / a * SQRT [a * a– z * z ] a、b为长、短半轴是常数表示。(一)车床车削椭圆通常是加工椭圆X正方向部分(回转体),用标准方程车削椭圆时,通常设Z为自变量,通过方程把X表达出来,最多就是车削到180度椭圆,然后利用G01插补拟合成椭圆。 通过椭圆车床标准方程推导,可以有如下过程:z2 / a2 + x2 / b2 = 1 可推导x2 / b2 =1- [ z2 / a2 ] = [ a2 – z2 ] / a2 可推导x2 = [ b2 / a2 ] * [ a2 – z2 ] x =b / a * SQRT [a2 – z2 ] 转换为数控格式就为x =2b / a * SQRT [a * a– z * z ] a为长半轴、2b为短轴(直径编程)常数表示。 设z为自变量#1,则x为因变量#2,根据上述公式有:#2 =b / a * SQRT [a * a- #1 * #1 ] 例题:长半轴a=5,短半轴b=4的椭圆。有以下几种情况: 1、#1为z,为自变量: 则#1=5 (#1=5 表示从Z正半轴开始加工。) N10 #2 = 8 / 5 * SQRT [5 * 5 - #1 * #1 ] G01 X [ #2+ D ] Z [ #2 + E ] F0.2 (X正,Z正,表示走逆时针,D、E表示椭圆中心X、Z绝对坐标) #1=#1-1 IF [ #1 GE 0 ] GOTO10 这是加工第一象限的椭圆,90度椭圆。 IF [ #1 GE -5 ] GOTO10 这是从第一象限加工到第二象限的椭圆,180度椭圆。 2、#1为x,为自变量: 则#1=-5 (#1=-5 表示从Z轴负方向开始加工。) N10 #2 = 8 / 5 * SQRT [5 * 5 - #1 * #1 ] G01 X [ #2+ D ] Z [ -#2 + E ] F0.2 (X正,Z负,表示走顺时针,D、E表示椭圆中心X、Z绝对坐标) #1=#1 + 1 IF [ #1 LE 0 ] GOTO10 这是加工第二象限的椭圆,90度椭

(整理)数控宏程序教程(车床篇)1(经典)

由浅入深宏程序1-宏程序入门基础之销轴加工对于没有接触过宏程序 人,觉得它很神秘,其实很简单,只要掌握了各类系统宏程序的基本格式,应用指令代码,以及宏程序编程的基本思路即可。 对于初学者,尤其是要精读几个有代表性的宏程序,在此基础上进行模仿,从而能够以此类推,达到独立编制宏程序的目的。本教程将分步由浅入深的将宏程序讲解给大家,作者水平有限,也希望各位同仁提供更好的思路。 下面大家先看一个简单的车床的程序,图纸如下: 要求用外圆刀切削一个短轴,这里只列举程序的前几步: O0001 T0101; M3S800; G0X82Z5; G0X76; G1Z-40F0.2; X82; G0Z5; G0X72; G1Z-40F0.2; X82; G0Z5;

G0X68; G1Z-40F0.2; X82; G0Z5; G0X68; G1Z-40F0.2; X82; G0Z5; ........ G0X40; G1Z-40F0.2; X82; G0Z5; G0X150Z150; M5; M30; 从上面程序可以看出,每次切削所用程序都只是切削直径X有变化,其他程序代码未变。因此可以将一个变量赋给X,而在每次切削完之后,将其改变为下次切削所用直径即可。 T0101; M3S800; G0X82Z5; #1=76;赋初始值,即第一次切削直径 N10 G0X[#1] ;将变量赋给X,则X方向进刀的直径则为#1变量中实际存储值。N10是程序 G1Z-40F0.2;段的编号,用来标识本段,为后面循环跳转所用。 X82; G0Z5; #1=#1-4;每行切深为2mm,直径方向递减4mm IF [#1GE40] GOTO 10如果#1 >= 40,即此表达式满足条件,则程序跳转到N10继续执行。G0X150Z150;当不满足#1 >= 40,即#1<40,则跳过循环判断语句,由此句继续向后执行。M5; M30;

宏程序基础知识资料

瑞鹄汽车模具有限公司内部教材 第一章第一节宏程序基础知识常量与变量的含义 常量与变量的含义及编程案例 数控程序中含有变量的程序称为宏程序。虽然子程序对编制相同的加工程序非常有用,但用户宏程序由于允许使用变量、算术和逻辑运算及条件转移,使得编制同样的加工程序更简便。 常量 普通加工程序直接用数值指定G代码和移动距离;例如,GO1和X100.0。 变量 使用用户宏程序时,数值可以直接指定或用变量指定。当用变量时,变量值可用程序或用MDI面板上的操作改变。 #1=#2+100 G01 X#1 F300 变量用变量符号(#)和后面的变量号指定。例如:#1 表达式可以用于指定变量号。此时,表达式必须封闭在括号中。例如:#[#1+#2-12] 变量根据变量号可以分成四种类型:1.空变量2.局部变量3.公共变量4.系统变量 1.空变量: #0 该变量总是空,没有值能赋给该变量. 2.局部变量: #1-#33 局部变量只能用在宏程序中存储数据,例如,运算结果.当断电时,局部变量被初始化为空. 调用宏程序时,自变量对局部变量赋值. 3.公共变量 #100-#199 #500-#999 公共变量在不同的宏程序中的意义相同.当断电时,变量#100-#199初始化为空.变量#500-#999的数据保存,即使断电也不丢失. 4.系统变量:#1000以上的变量 系统变量用于读和写CNC的各种数据,例如刀具补偿,当前位置信息, 变量的引用 为在程序中使用变量值,指定后跟变量号的地址。当用表达式指定变量时,要把表达式放

在括号中。例如:G01X[#1+#2]F#3; 被引用变量的值根据地址的最小设定单位自动地舍入。 例如:当G00X#1;以1/1000mm的单位执行时,CNC把123456赋值给变量#1,实际指令值为G00X12346. 改变引用变量的值的符号,要把负号(-)放在#的前面。例如:G00X-#1 当引用未定义的变量时,变量及地址都被忽略。例如:当变量#1的值是0,并且变量#2的值是空时,G00X#1Y#2的执行结果为G00X0 未定义的变量当变量值未定义时,这样的变量成为空变量。变量#0总是空变量。它不能写,只能读。 当#1= (空)时 G90 X100 Y#1实际与G90 X100运行结果一样 当#1=0 时 G90 X100 Y#1实际与G90 X100 Y0 运行结果一样 运算 除了用<空>赋值以外,其余情况下<空>与0 相同。

宏程序基础教程

宏程序教案 一、宏程序的概述 宏程序是指利用变量编制的NC程序。它可使得编制相同加工操作的程序更方便、更容易。用户宏程序和调用子程序完全一样。 宏程序既可以在主程序中使用,也可以当做子程序来调用。 二、变量 1、变量的表示 变量用变量符号“#”和和面的变量号制定。表达式可以用来制定变量号。此时表达时必须封闭在括号中。 例如:#1,#[#1+#2-12] 2、宏程序中变量的类型 变量一共有4种类型,各种变量的范围和功能见下表: 变量类型变量号功能 空变量#0 该变量总是空,没有值能赋给该变量 用户变量#1~#33 用在宏程序中存储数据 公共变量#100~#199 断电时初始化为空 #500~#999 断电后数据保存,不丢失 系统变量#1000~#5335 用于读写CNC的各种数据,如刀具当前位置 3、变量的引用 为在程序中使用变量值,在制定变量后跟变量号的地址。当用表达式制定变量时,把表达式放在括号中。 例如:G01 X#1 F#[#2+#3] 4、变量的赋值 在程序中若对局部变量进行赋值时,可通过自变量地址,对局部变量进行传递。有2种形式的自变量赋值方法。形式1使用了除G,L,O,N和P以外的字母,每个字母对应一个局部变量。对应关系见下表: 自变量局部变量自变量局部变量自变量局部变量自变量局部变量 A #1 H #11 R #18 X #24 B #2 I #4 S #19 Y #25 C #3 J #5 T #20 Z #26 D #7 K #6 U #21 E #8 M #13 V #22 F #9 Q #17 W #23 自变量形式2使用A,B,C各1次和I,J,K各10次对局部变量赋值,自变量2用于传递诸如三位坐标值的变量。对应关系见下表:

探究式学习广数A 宏程序

探究式学习广数A 宏程序 在职业技能教学的过程中,我们要带着疑问探索式学习,这样不仅能调动学生的学习积极性,而且能够深化个人对相关知识的理解。今天我就广数A宏程序的探究式学习发表一下我个人的见解。何谓探究?我认为首先我们要带着问题去学习,只有带着问题去学习,我们的学习才有目的性。对于初学者来说,广数A宏程序经常让我们犯糊涂的问题我认为有两个:(1)宏程序应该怎么利用?怎么样在数控程序中加入我们想要运行的宏程序?是直接在主程序中编制我们要加工的宏程序运算指令?还是独立编写宏程序,然后在主程序当中调用?(2)宏程序运算指令当中可能要用到常数,这个常数我们应该注意什么问题?例如G65 H01 P#100 Q40和G65 H01 P#100 Q40.0这两种写法有什么区别?即常数一个带小数点Q40.0一个没带小数点Q40,两者之间的分别是什么?为了搞清楚上面两个问题,我们可以通过一个编程实例来进行上机验证,以确定什么是正确的什么是错误的。编程实例的零件图纸为: 上面零件图纸当中,因为要加工右端面的一段椭圆曲线,因而在程序编制当中一定要用到宏程序。在编制程序的过程当中我们先要搞清楚这个零件的加工步骤。我的加工步骤为: (1)先利用90度外圆车刀,运用G71指令加工下图所示的阶梯轴: (2)上图的阶梯轴加工好以后我们可以再应用有关的宏指令运算指令加工工件右端面的椭圆曲线。车制完右端面椭圆曲线以后得到的零件图样为: 做这一步的时候我们要验证前面提出的两个问题(1)利用宏程序运算指令直接在主程序当中编制椭圆加工指令?还是在独立的宏程序当中利用宏程序运算指令编制椭圆加工曲线,然后在主程序当中调用有关宏程序?(2)宏程序运算指令当中常数带小数点和不带小数点的区别? (3)调用60度螺纹车刀,运用仿形加工指令G73加工零件R18.1凹陷。这一步做完以后我们就可以加工得到最终的零件形状。 在编制零件加工程序的过程当中,我们要清楚知道先干什么,后干什么,即分步。分好步以后我们要知道怎么编程以到达这一步的加工要求。下面根据我的三个加工步骤,列一个表格以清楚表示每一步要用到的刀具类型,刀具角度,用到的指令。 根据上面三步编写的加工程序,因为是验证宏运算指令加工椭圆是直接编制在主程序,还是独立编制一个宏程序,然后在主程序调用。所以根据上面三个步骤编制第一种程序:没有独立的宏程序,而是在主程序中直接利用宏运算指令编制椭圆加工程序。程序如下所示: 上面加工程序当中,只有主程序,没有独立的宏程序。把这个程序输入到广

宏程序入门基础学习资料上课讲义

宏程序入门基础学习 资料

宏程序入门基础学习资料 其实说起来宏就是用公式来加工零件的,比如说椭圆,如果没有宏的话,我们要逐点算出曲线上的点,然后慢慢来用直线逼近,如果是个光洁度要求很高的工件的话,那么需要计算很多的点,可是应用了宏后,我们把椭圆公式输入到系统中然后我们给出Z坐标并且每次加10um那么宏就会自动算出X坐标并且进行切削,实际上宏在程序中主要起到的是运算作用..宏一般分为A类宏和B类宏.A类宏是以G65 Hxx P#xx Q#xx R#xx的格式输入的,而B类宏程序则是 以直接的公式和语言输入的和C语言很相似在0i系统中应用比较广.由于现在B类宏程序的大量使 用很多书都进行了介绍这里我就不再重复了,但在一些老系统中,比如法兰克OTD系统中由于它的MDI键盘上没有公式符号,连最简单的等于号都没有,为此如果应用B类宏程序的话就只能在计算机上编好再通过RSN-32接口传输的数控系统中,可是如果我们没有PC机和RSN-32电缆的话怎么办呢,那么只有通过A类宏程序来进行宏程序编制了,下面我介绍一下A类宏的引用;

A类宏是用G65 Hxx P#xx Q#xx R#xx或G65 Hxx P#xx Qxx Rxx格式输入的xx的意思就是数值,是以um级的量输入的,比如你输入100那就是0.1MM~~~~~.#xx就是变量号,关于变量号是什么意思再不知道的的话我也就没治了,不过还是教一下吧,变量号就是把数值代入到一个固定的地址中,固定的地址就是变量,一般OTD系统中有 #0~~~#100~#149~~~#500~#531关闭电源时变量#100~#149 被初始化成“空”,而变量#500~#531保持数据.我们如果说#100=30那么现在#100地址内的数据就是30了,就是这么简单.好现在我来说一下H代码,大家可以看到A类宏的标准格式中#xx和xx都是数值,而G65表示使用A类宏,那么这个H就是要表示各个数值和变量号内的数值或者各个变量号内的数值与其他变量号内的数值之间要进行一个什么运算,可以说你了解了H代码A类宏程序你基本就可以应用了,好,现在说一下H代码的各个含义: 以下都以#100和#101和#102,及数值10和20做为例子,应用的时候别把他们当格式就行, 基本指令:

宏程序编程例子入门

宏程序编程例题 椭圆解析: 椭圆关于中心、坐标轴都是对称的,坐标轴是对称轴,原点是对称中心。对称中心叫做椭圆中心。椭圆和X轴有2两个交点,和Y轴有两个交点,这四个交点叫做椭圆顶点。 椭圆标准方程:x2 / a2 + y2 / b2 = 1 ( a为长半轴,b为短半轴,a > b > 0 ) 椭圆参数方程:x=a*cosM y=b*sinM ( a为长半轴,b为短半轴,a > b > 0 ,M是夹角,是椭圆上任意一点到椭圆中心 连线与X正半轴所成的夹角,顺时针为负,逆时针为正。) 二、数控车床: 根据椭圆标准方程:x2 / a2 + y2 / b2 = 1 ( a为长半轴,b为短半轴,a > b > 0 ) 根据椭圆参数方程:x=a*cosM y=b*sinM ( a为长半轴,b为短半轴,a > b > 0 ,M是夹角,是椭圆上任意一点到椭圆 中心连线与X正半轴所成的夹角,顺时针为负,逆时针为正。) 可得车床标准方程:z2 / a2 + x2 / b2 = 1 ( a为长半轴,b为短半轴,a > b > 0 ) 可得椭圆参数方程:z=a*cosM x=2b*sinM ( a为长半轴,2b为短轴(直径),a > b > 0 ,M是夹角,是椭圆上任意一点 到椭圆中心连线与Z正半轴所成的夹角,顺时针为负,逆时针为正。) 通过标准方程推导X的表达式:x =b / a * SQRT [a * a– z * z ] a、b为长、短半轴是常数表示。 (一)车床车削椭圆通常是加工椭圆X正方向部分(回转体),用标准方程车削椭圆时,通常设Z为自变量,通过方程把X表达出来,最多就是车削到180度椭圆,然后利用G01插补拟合成椭圆。 通过椭圆车床标准方程推导,可以有如下过程:z2 / a2 + x2 / b2 = 1 可推导x2 / b2 =1- [ z2 / a2 ] = [ a2 – z2 ] / a2 可推导x2 = [ b2 / a2 ] * [ a2 – z2 ] x =b / a * SQRT [a2 – z2 ] 转换为数控格式就为x =2b / a * SQRT [a * a– z * z ] a为长半轴、2b为短轴(直径编程)常数表示。 设z为自变量#1,则x为因变量#2,根据上述公式有:#2 =b / a * SQRT [a * a- #1 * #1 ] 例题:长半轴a=5,短半轴b=4的椭圆。有以下几种情况: 1、#1为z,为自变量: 则#1=5 (#1=5 表示从Z正半轴开始加工。) N10 #2 = 8 / 5 * SQRT [5 * 5 - #1 * #1 ] G01 X [ #2+ D ] Z [ #2 + E ] (X正,Z正,表示走逆时针,D、E表示椭圆中心X、Z绝对坐标) #1=#1-1 IF [ #1 GE 0 ] GOTO10 这是加工第一象限的椭圆,90度椭圆。 IF [ #1 GE -5 ] GOTO10 这是从第一象限加工到第二象限的椭圆,180度椭圆。 2、#1为x,为自变量: 则#1=-5 (#1=-5 表示从Z轴负方向开始加工。) N10 #2 = 8 / 5 * SQRT [5 * 5 - #1 * #1 ] G01 X [ #2+ D ] Z [ -#2 + E ] (X正,Z负,表示走顺时针,D、E表示椭圆中心X、Z绝对坐标) #1=#1 + 1 IF [ #1 LE 0 ] GOTO10 这是加工第二象限的椭圆,90度椭圆。通常这是利用反刀加工。 IF [ #1 LE 5 ] GOTO10 这是从第二象限加工到第一象限的椭圆,180度椭圆。正反刀都可以加工。 关于D、E椭圆中心坐标位置的说明,D为直径表达,E的位置有三种: a

相关文档
最新文档