宏程序基础Word文件下载.docx
- 文档编号:15713607
- 上传时间:2022-11-15
- 格式:DOCX
- 页数:24
- 大小:64.96KB
宏程序基础Word文件下载.docx
《宏程序基础Word文件下载.docx》由会员分享,可在线阅读,更多相关《宏程序基础Word文件下载.docx(24页珍藏版)》请在冰豆网上搜索。
#1=1它就是一个变量。
我们把这一过程,称为赋值。
也就是说,我们把等号后面的数值1,赋值给#1。
而现在#1的值就等于1,也可以理解为#1就是一个代号,用来代替数值1。
2.变量和应用
比如:
#1=2(把数值2赋值给#1)
#2=1(把数值1赋值给#2)
#2=#1(程序从上往下执行,思考一下现在#2的值等于多少?
)
解:
当程序执行第一步的时候#1的值等于2,当执行第二步的时候#2的值等于1,当执行第三步的时候这里要注意了,刚才讲过赋值过程,是等号后面的值赋值给等号前面,所以当#1在第一步赋值以后,#1已经等于2了,所以在执行第三步的时候#2的值应该等于2,不在是第二步的1了。
从这里我们可以看出,当程序中有相同的变量#的时候,后面的#号代替前面的#号。
#1=2
#1=3
最后结果#1的值因该是等于3的。
所以说后面的代替前面的。
四、变量的取值范围
1.局部变量(#1-#33)
什么叫局部变量,局部变量就是在局部或则可以理解为在单个程序中有效。
断电以后系统自动清零。
2.公共变量(#100-#199,#500-#999)
公共变量和局部变量的区别在于,局部变量是在局部,或则单个程序中有效,而公共变量是指如果一个程序同时拥有主程序和子程序的情况下,在主程序中如果已经赋值,在子程序中可以不用从新赋值,可以共用。
而#100-#199和#500-#999的区别在于,前者断电清零,而后者不会清零会一直保存在系统内部。
#500=TAN[15]
#500一旦赋值就将保存在系统内部,下次可以直接调用#500使用。
3.系统变量(#1000-#17200)
系统变量是用于我们机床系统储存一些刀补数据参数等等的东西,我们可以不用管它,不会用的,慎用)
总结:
一般情况下我们写程序用#1-#33,当有子程序的时候我们用#100-#199.
五、宏程序中常用的计算
1.加法运算
例如:
#1=#1+3那么#1的值等于2+3=5
2.减法运算
#1=#1-1那么经过计算我们的#1的值等于3-1=2
3.乘法运算
程序中用*号来代替乘法
#1=5
#2=#1*2那么计算出来#2的值等于5*2=10
4.除法运算
程序中用/号来代替除法运算
#1=10
#1=#1/2那么经过计算#1的值等于10/2=5
六、常用三角函数运算
1.TAN(正切)
例如#1=2*TAN[20]中括号里面是角度
2.SIN(正玄)
例如#1=3*SIN[3]同上
3.COS(余玄)
例如#1=COS[15]
4.ASIN、ACOS、ATAN(反三角)
5.SQRT(数学中的开平方的意思,和数学中根号一样)
例如#1=SQRT[9]那么计算出来#1的值等于3
七、宏程序的常用符号和含义
GT(大于)
GE(大于或等于)
LT(小于)
LE(小于或等于)
EQ(等于)
NE(不等于)
ABS(绝对值)
AND(与)
OR(或者)
八、常用的语法和应用
1.无条件转移GOTOn(n表示数值)
GOTO01此程序段的意思是当程序中执行到这一程序段的时候无条件跳转到程序段中N1的地方,执行N1后面的程序段。
M3S500G99
T101M08
GOTO10(当程序执行到这里的时候,直接跳转到N10那个程序段执行M30,跳过了G0那一步,所以这叫做无条件跳转,和我们一般程序中跳段功能一样)
G0X100.Z100.
N10M30
2.有条件跳转IF[条件表达式]GOTOn
IF[#1GT15]GOTO10从这段程序当中,我们这样理解,如果中括号里面的条件满足,那么就执行后面的GOTO跳转语句,如果中括号里面条件不满足,那么不执行后面的GOTO跳转,执行后面一个程序段。
我们简单来写一个程序:
N10#1=30(把数值30赋值给#1)
IF[#1LT50]GOTO10(首先判断中括号是不是满足条件,如果满足执行跳转,不满足执行下一步)
M30
从这个程序中我们可以发现当#1=30的时候,我们执行条件判断,我们来判断一下,#1现在等于30,那么重括号里面就可以理解为30小于50,现在条件满足。
所以他会执行后面GOTO跳转语句,跳转到N10地方继续执行)
3.强制赋值语句IF[条件表达式]THEN(执行语句)
IF[#1GT20]THEN#1=20(我们这样来理解这个语句,如果#1大于20,那么#1等于20,也就是说和上面一样,中括号里面条件满足的话,执行后面THEN语句,如果不满足,不执行后面then语句。
写一段简单程序:
#1=3(把数值3赋值给#1)
#1=#1-5(把#1-5计算出来的值从新赋值给#1,也就是3-5=-2,现在#1=-2)
IF[#1LT0]THEN#1=0(强制赋值,如果#1小于0,那么强制让#等于0)
我们来分析一下上面程序段,当我们#1执行完减法运算以后#1的值已经等于-2,那么我们在执行强制赋值语句的时候我们来判断一下中括号里面条件是不是满足,-2小于0,条件满足,所以执行后面THEN语句,如果不满足的时候不执行THEN语句)
4.条件判断语句WHILE[表达式]DOn(n为数值,取值范围1-99)
ENDn(n与开头n的数值对应)
WHILE[#12GT50]DO1
END1
下面写一个程序段:
#1=60
WHILE[#1GT50]DO1
G0X#1
G1Z-20.F0.2
G0U1.Z1.
这个程序当条件判断语句里面中括号里面条件满足的时候执行DO1和END1中间的程序段,如果条件不满足,执行END1后面的程序段M30。
以上介绍的语法格式用法,以FANUCoi系列,广数,三菱系统为例。
西门子,宝源,新代等系统以说明书为准!
!
第二章宏的入门
实例1.单外径粗车宏的应用
本实例介绍一个简单的车削外径的宏程序,目的为了让读者熟悉宏语句用法和逻辑。
上图为一个单一外圆车削图,材料为直径50的棒料,车削到直径30,长度30.
图纸要求,平面见光就行,采用宏程序粗加工,每刀吃刀量为3毫米。
2.0工艺分析
1.采用3爪自定心卡盘夹持直径50,台阶爪定位左端面。
2.选择加工刀具,选用90度外圆机架刀车刀。
3.0宏程序编程思路
1.模仿G71路线。
2.毛培直径50赋值给#1,通过毛培每次递减,实现车削到指定直径。
3.图纸要求直径30赋值给#2
4.吃刀量赋值给#3,每层吃刀量为3.
4.0加工程序编程与注释
O0010
M3S300G99
G0X51.Z10.
Z0.
G1X-0.7F0.12(平端面)
G0W1.X50.
#1=50(毛培赋值)
#2=30(图纸要求尺寸)
#3=3(吃刀量赋值)
N10#1=#1-#3(利用减法运算,计算出每一层的X值)
G0X#1(X进刀)
G1Z-30.F0.12
IF[#1GT#2]GOTO10(如果#1大于#2,那么执行跳转到N10的地方执行后面程序,如果不满足,执行后面一步)
G0X120.Z130.
程序编制完成,我们来检查一下这个程序对不对,首先我们来看#1=#1-#3这一步,当#1等于50,#3=3的时候,我们就因该是50-3=47,然后把47从新赋值给#1,当执行完一刀外径车削以后,我们条件判断,如果#1大于#2,也可以理解为如果47大于30,跳转到N10继续执行N10后面程序段,现在47明显大于30,所以跳回N10的地方,继续执行,当跳回N10以后,#1=#1-#3,现在的#1应该是前面计算出来的47,也就是说#1现在等于47-3=44,然后在执行外径车削,条件判断。
但是我们现在来想一下,当他一直这样循环,循环6次以后,每次吃刀量3,也就是50-3*6=32,当#1等于32的时候,#1任然大于#2,所以他会继续跳转N10,循环第七次,当第7次执行#1=#1-#3的时候,结果#1=32-3=29,然后在执行G0X#1,也就是G0X29.通过这里我们就可以看出如果程序这样编制,它会过切一个毫米,也就是说本来图纸要求直径为30,现在它车到了直径29,所以报废!
下面我们看一下下面的程序怎么改进。
改进后程序如下:
G0W1.X50.
IF[#1LT#2]THEN#1=#2(强制赋值语句,如果#1每次递减3,当它小于了我们图纸要求直径30的时候,强制让#1=30)
从这个优化过的程序我们可以看到,其实我们就在#1=#1-#3这一步计算后面加了一个强制赋值语句,防止过切,通过这一个强制赋值语句,刚才第一个程序的问题得到解决!
接下来我们来讲解一下还有一种情况,如果IF[#1GT#2]GOTO10这个条件判断,把GT大于换成GE大于或等于,会出现什么情况呢?
我们来看一下,当换成大于或等于以后,也就是说当我们#1大于或者等于只要满足其中一个条件他就执行GOTO10语句,继续循环,我们现在已经加了强制赋值语句,#1已经等于#2,但是现在条件判断任然满足,所以他会继续跳转N10,从而出现一个问题,他会一直在循环下去,停不下来了。
。
这个我们把它称为死循环!
下面我们来解决一下死循环的问题,程
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 程序 基础
![提示](https://static.bdocx.com/images/bang_tan.gif)