你的意思是在单元格A1输入数字后,如果条件成立则,C1=C1+1,否则C1=0,对吧
Private Sub Worksheet_Change(ByVal Target As Range)
Dim a1 As String
Dim a2 As String
Dim a3 As String
Dim x As Integer, y As Integer
If Target = Range("A1") Then
x = Range("C1")Value
a1 = Mid(Range("A1")Value, 1, 1)
a2 = Mid(Range("A1")Value, 2, 1)
a3 = Mid(Range("A1")Value, 3, 1)
If InStr(Range("B1")Value, a1) <> 0 Or InStr(Range("B2")Value, a2) <> 0 Or InStr(Range("B3")Value, a3) <> 0 Then
Range("C1")Value = 0
Else
y = x + 1
Range("C1")Value = y
End If
End If
End Sub
数控宏程序le是运算符,表示:小于或等于;
运算符用于执行程序代码运算,会针对一个以上 *** 作数项目来进行运算。例如:2+3,其 *** 作数是2和3,而运算符则是“+”。
在vb2005中运算符大致可以分为5种类型:算术运算符、连接运算符、关系运算符、赋值运算符和逻辑运算符。
#3000的意思是:系统变量。
#300以上的变量是系统变量。系统变量是具有特殊意义的变量,它们是数控系统内部定
义好了的,不可以改变它们的用途。系统变量是全局变量,使用时可以直接调用。
#0~#599是可读写的,#600以上的变量是只读的,不能直接修改。
其中,#300
~#599
是子程序局部变量缓存区。数控宏程序编程,是用变量的方式进行数控编程的方法。数控宏程序分为A类和B类宏程序,其中A类宏程序比较老,编写起来也比较费时费力,B类宏程序类似于C语言的编程,编写起来也很方便。不论是A类还B类宏程序,它们运行的效果都是一样的。一般说来,华中的数控机床用的是B类宏程序,广州数控机床用的是A类宏程序。
宏指令G65可以实现丰富的宏功能,包括算术运算、逻辑运算等处理功能。
一般形式: G65 Hm P#i Q#j R#k
式中:
m--宏程序功能,数值范围01~99;
#i--运算结果存放处的变量名;
#j--被 *** 作的第一个变量,也可以是一个常数;
#k--被 *** 作的第二个变量,也可以是一个常数。
例如,当程序功能为加法运算时:
程序 P#100 Q#101 R#102 含义为#100=#101+#102
程序 P#100 Q-#101 R#102 含义为#100=-#101+#102
程序 P#100 Q#101 R15 含义为#100=#101+15
1、宏功能指令
(1)算术运算指令(表44)
表44 算术运算指令
G码 H码 功 能 定 义
G65 H01 定义,替换 # i=# j
G65 H02 加 # i=# j+# k
G65 H03 减 # i=# j-# k
G65 H04 乘 # i=# j × # k
G65 H05 除 # i=# j/# k
G65 H21 平方根 # i=√# j
G65 H22 绝对值 # i=|# j|
G65 H23 求余 # i=# j-trunc﹙# j/# k﹚· # k
Trunc;丢弃小于1的分数部分
G65 H24 BCD码→二进制码 # i=BIN﹙# j﹚
G65 H25 二进制码→BCD码 # i=BCD﹙# j﹚
G65 H26 复合乘/除 # i=﹙# i × # j﹚÷# k
G65 H27 复合平方根1 # i=√# j2+# k2
G65 H28 复合平方根2 # i=√# j2-# k2
1)变量的定义和替换 #i=#j
编程格式 G65 H01 P#i Q#j
例 G65 H01 P#101 Q1005; (#101=1005)
G65 H01 P#101 Q-#112;(#101=-#112)
2)加法 #i=#j+#k
编程格式 G65 H02 P#i Q#j R#k
例 G65 H02 P#101 Q#102 R#103;(#101=#102+#103)
3)减法 #i=#j-#k
编程格式 G65 H03 P#i Q#j R#k
例 G65 H03 P#101 Q#102 R#103;(#101=#102-#103)
4)乘法 #i=#j×#k
编程格式 G65 H04 P#i Q#j R#k
例 G65 H04 P#101 Q#102 R#103;(#101=#102×#103)
5)除法 #i=#j / #k
编程格式 G65 H05 P#i Q#j R#k
例 G65 H05 P#101 Q#102 R#103;(#101=#102/#103)
6)平方根 #i=
编程格式 G65 H21 P#i Q#j
例 G65 H21 P#101 Q#102;(#101= )
7)绝对值 #i=│#j│
编程格式 G65 H22 P#i Q#j
例 G65 H22 P#101 Q#102;(#101=│#102│)
8)复合平方根1 #i=
编程格式 G65 H27 P#i Q#j R#k
例 G65 H27 P#101 Q#102 R#103;(#101=
9)复合平方根2 #i=
编程格式 G65 H28 P#i Q#j R#k
例 G65 H28 P#101 Q#102 R#103(#101=
(2)逻辑运算指令(表45)
表45 逻辑运算指令
G码 H码 功 能 定 义
G65 H11 逻辑“或” # i=# j · OR · # k
G65 H12 逻辑“与” # i=# j · AND · # k
G65 H13 异或 # i=# j · XOR · # k
1)逻辑或 #i=#j OR #k
编程格式 G65 H11 P#i Q#j R#k
例 G65 H11 P#101 Q#102 R#103;(#101=#102 OR #103)
2)逻辑与 #i=#j AND #k
编程格式 G65 H12 P#i Q#j R#k
例 G65 H12 P#101 Q#102 R#103;(#101=#102 AND #103)
(3)三角函数指令(表46)
表46 三角函数指令
G码 H码 功 能 定 义
G65 H31 正弦 # i=# j · SIN ﹙# k﹚
G65 H32 余弦 # i=# j · COS ﹙# k﹚
G65 H33 正切 # i=# j · TAN﹙# k﹚
G65 H34 反正切 # i=ATAN﹙# j/# k﹚
1)正弦函数 #i=#j×SIN(#k)
编程格式 G65 H31 P#i Q#j R#k (单位:度)
例 G65 H31 P#101 Q#102 R#103;(#101=#102×SIN(#103))
2)余弦函数 #i=#j×COS(#k)
编程格式G65 H32 P#i Q#j R#k (单位:度)
例 G65 H32 P#101 Q#102 R#103;(#101=#102×COS(#103))
3)正切函数 #i=#j×TAN#k
编程格式G65 H33 P#i Q#j R#k (单位:度)
例 G65 H33 P#101 Q#102 R#103;(#101=#102×TAN(#103))
4)反正切 #i=ATAN(#j/#k)
编程格式G65 H34 P#i Q#j R#k (单位:度,0o≤ #j ≤360o)
例 G65 H34 P#101 Q#102 R#103;(#101=ATAN(#102/#103))
(4)控制类指令(表47)
表47 控制类指令
G码 H码 功 能 定 义
G65 H80 无条件转移 GO TO n
G65 H81 条件转移1 IF # j=# k,GOTOn
G65 H82 条件转移2 IF # j≠# k,GOTOn
G65 H83 条件转移3 IF # j># k,GOTOn
G65 H84 条件转移4 IF # j<# k,GOTOn
G65 H85 条件转移5 IF # j≥# k,GOTOn
G65 H86 条件转移6 IF # j≤# k,GOTOn
G65 H99 产生PS报警 PS报警号500+n出现
1)无条件转移
编程格式G65 H80 Pn (n为程序段号)
例G65 H80 P120;(转移到N120)
2)条件转移1 #j EQ #k(=)
编程格式G65 H81 Pn Q#j R#k (n为程序段号)
例 G65 H81 P1000 Q#101 R#102
当#101=#102,转移到N1000程序段;若#101≠ #102,执行下一程序段。
3)条件转移2 #j NE #k(≠)
编程格式G65 H82 Pn Q#j R#k (n为程序段号)
例 G65 H82 P1000 Q#101 R#102
当#101≠ #102,转移到N1000程序段;若#101=#102,执行下一程序段。
4)条件转移3 #j GT #k (> )
编程格式G65 H83 Pn Q#j R#k (n为程序段号)
例 G65 H83 P1000 Q#101 R#102
当#101 > #102,转移到N1000程序段;若#101 ≤#102,执行下一程序段。
5)条件转移4 #j LT #k(<)
编程格式 G65 H84 Pn Q#j R#k (n为程序段号)
例 G65 H84 P1000 Q#101 R#102
当#101 < #102,转移到N1000;若#101≥ #102,执行下一程序段。
6)条件转移5 #j GE #k(≥)
编程格式 G65 H85 Pn Q#j R#k (n为程序段号)
例 G65 H85 P1000 Q#101 R#102
当#101≥ #102,转移到N1000;若#101<#102,执行下一程序段。
7)条件转移6 #j LE #k(≤)
编程格式 G65 H86 Pn Q#j Q#k (n为程序段号)
例 G65 H86 P1000 Q#101 R#102
当#101≤#102,转移到N1000;若#101>#102,执行下一程序段。
2、使用注意
为保证宏程序的正常运行,在使用用户宏程序的过程中,应注意以下几点;
(1)由G65规定的H码不影响偏移量的任何选择;
(2)如果用于各算术运算的Q或R未被指定,则作为0处理;
(3)在分支转移目标地址中,如果序号为正值,则检索过程是先向大程序号查找,如果序号为负值,则检索过程是先向小程序号查找。
(4)转移目标序号可以是变量。[em24][em27][em24]鐧惧害鍦板浘
现行的数控程序的编制中,主要有两种编程方式:手工编程和自动编程。虽然自动编程运用得越来越广泛,但手工编程在某些领域也是不可或缺的一种编程手段。手工编程至少在此以下几方面有着自己的优势:其一,熟练的程序员编制的手工程序加工效率高于自动编程;其二,熟悉手工编程,对自动程序的修改是不无裨益的;其三,自动编程的所敲定的走刀路线限制了其加工工艺,通过手工编程能够得到弥补。
在手工编程过程中,用户宏程序的编制,能极大提高程序编制的效率,因此,我们在数控教学及训练过程中,必须把用户宏程序的编制作为我们数控教学的重要内容之一。从历年全国数控大赛的试题中也不难发现,用户宏程序的编制是运用得极其频繁的。但是,我们很难在目前的教材中找到完整的宏程序的编写的方法及思路。为此,笔者提出了一整套设计用户宏程序的方法,通过利用流程图来设计用户宏程序,提高了编程的效率。
二、用户宏程序简介
用户宏程序有A、B两种,A类宏程序用G65指令编写,其格式如下:
G65 Hm P#i Q#j R#k
其中,m—01~99表示运算命令或转移命令功能;
#i—存入运算结果的变量名;
#j—进行运算的变量名1,可以是常数,常数直接表示,不带#;
#k—进行运算的变量名2,也可以是常数。
意义, #i=#j○#k,表示运算符号,常用意义如表1
表1
G代码
H代码
功能
定义
G65
H01
赋值
#i=#j
G65
H02
加法
#i=#j+#k
G65
H03
减法
#i=#j-#k
G65
H04
乘法
#i=#j×#k
G65
H05
除法
#i=#j÷#k
G65
H80
无条件转移
转向N
G65
H81
条件转移1
IF #j=#k,GOTO N
G65
H82
条件转移2
IF #j≠#k,GOTO N
G65
H83
条件转移3
IF #j>#k,GOTO N
G65
H84
条件转移4
IF #j<#k,GOTO N
G65
H85
条件转移5
IF #j≥#k,GOTO N
G65
H86
条件转移6
IF #j≤#k,GOTO N
G65
H99
产生P/S报警
产生500+1号P/S报警
除此以外,G65指令还可以实现逻辑运算、开平方、取绝对值、三角运算及复合运算等,相关指令见有关书籍,这里不一一介绍。需要指出的是,不同的数控系统,其功能的多少也不一样,用户可参考有关系统的说明书。
B类宏程序由控制语句,调用语句所组成。宏程序可以与主程序做在一起,也可以单独做成一个子程序,然后用G65指令调用。调用方法如下:
G65 P(程序号)〈引数赋值〉或G65 P(程序号) L(循环次数)〈引数赋值〉
所谓引数赋值,是指用A、B、C、D等地址给变量#1、#2、#3、#4等赋值。
B类宏程序的控制指令有三类,与C语言等高级程序设计语言的控制指令很类似。一类是IF语句,格式为:
IF[条件式]GOTO n (n即顺序号)
条件式成立时,从顺序号为n的程序段往下执行,条件式不成立时,执行下一下程序段;第二类是WHILE语句,格式为:
WHILE[条件式] DO m
.
.
.
END m
条件式成立时,从DO m的程序段到END m的程序段重复执行,条件式不成立时,则从END m的下一程序段执行。
第三类是无条件转移指令,格式为:GOTO n。
三、运用流程图编写用户宏程序的一般步骤
运用流程图编写用户宏程序的一般步骤为:一分析零件结构,确定宏程序加工的内容,找出加工工艺路线的律;二将零件加工路线规律用流程图表达出来,并进一步分清楚哪些是程序编制过程中的变量,哪些是常量,从而将一般的流程变成程序流程图;三根据程序流程图,编写零件的加工程序。
四、应用举例
(一)宏程序应用实例一
如图1所示,在一根轴上加工N个槽,每个槽的宽度为a1,槽的间距为a2,槽底直径为b1,棒料直径b2,并且设所给材料足够长,试编写程序加工该零件,现有一零件参数为N=100个槽,槽底直径b1=30mm,槽宽a1=5mm,工件直径b2=40mm,间隔a2=2mm,刀宽=3mm,现编写程序加工。图11零件工艺过程分析
该零件是一个比较简单的例子,在压面机械上用得较多。零件的精度要求不高,为了使程序有更广泛的适应性,将宏程序做成一个子程序,用主程序来调用实现零件的加工。加工时将坐标原点选择在如图所示的位置,X轴离第一个槽的距离为一个间距a2的距离。
零件的加工过程如下将:将刀具移至加工起点→进刀→切削第一个槽→计算下一槽的位置并将刀具移到此位置→加工下一个槽……如此至最后一个槽加工完为止。
将此过程画成流程图,如图2(a)所示。
(a) (b)
图2
2零件加工过程中所使用的变量
通过分析,要加工该零件,需要如下一些变量:
工件直径#200= b2
槽底直径#201= b1
槽宽#202= a1
槽间间隔#203= a2
切槽刀宽度#204
每加工一个槽后,切槽刀在Z轴方向移动的距离#205(等于槽间距加上槽宽)
槽的起点坐标Xs=#206,Zs=#207
槽加工终点的坐标Xf=#208,Yf=#209
计算槽数目的变量#215
加工槽的总数#216
由此画出编制程序所用的流程图,如图2(b)所示。
3根据程序流程图编制程序
宏程序O9061
N10 G65 H83 P160 Q#204 R#202 如果刀宽大于槽完,则结束
N20 G65 H01 P#215 Q0 计数器变量清零
N30 G65 H02 P#205 Q#202 R#203 计算#205
N40 G65 H02 P#206 Q#200 R5 工件直径加上5mm作为X方向起点
N50 G65 H02 P#207 Q#203 R#204 槽的间距加上一个刀宽
N60 G65 H01 P#207 Q#207 取负值后作为第一个槽的Z向起点
N70 G65 H01 P#208 Q#201 槽底直径作为槽终点的X坐标
N80 G65 H01 P#209 Q#205 第一个槽终点Z向坐标
N90 G00 X#206 Z#207 M08 定位到槽加工的位置
N100 G75 R1
N110 G75 X#208 Z#209 P2 Q#204 F20 加工槽
N120 G65 H03 P#207 Q#207 R#205 下一个槽起点Z向坐标计算
N130 G65 H03 P#209 Q#209 R#205 下一个槽终点Z向坐标计算
N140 G65 H02 P#215 Q#215 R1 槽计数器加1
N150 G65 H84 P90 Q#215 R#216 判断槽是否加工完毕
N160 M08
N170 M99 结束
主程序 O0001
N10 G65 H01 P#200 Q40 工件直径赋值
N20 G65 H01 P#201 Q30 槽底直径赋值
N30 G65 H01 P#202 Q5 槽宽赋值
N40 G65 H01 P#203 Q2 槽间间隔赋值
N50 G65 H01 P#204 Q3 切槽刀宽赋值
N60 G65 H01 P#216 Q100 槽数赋值
N70 G00 X100 Z100 起刀点位置
N80 M98 P9061 调用宏程序
N90 M30 程序结束
(二)宏程序应用实例二
对于一些大悬伸(加工深度与刀具直径之比较大)的零件,用普通加工方法总难达到理想效果,此时用插铣法容易保证零件精度,如图3所示的零件,尺寸80很难保证,用插铣法后获得了比较好的效果。曾经有工厂做过类似的程序,但程序只是针对零件本身,适应性不强,当零件的尺寸发生变化后,程序还得发生较大修改。笔者针对这种情况,将程序分为主程序和子程序,当零件的尺寸发生变化后,只需要修改主程序即可,非常方便。
1加工工艺分析
传统加工工艺方法采用多次重复加工。很难消除让刀,并且造成加工应力,最后由于应力释放造成零件的内腔变小。为了解决这个问题,我们将加工分为粗加工和精加工,粗加工采用普通的工艺方法,精加工采用插铣。
建立如图3所示的坐标系,为了保证加工质量,防止划伤已加工过的表面,编程时避免使用钻孔循环指令。加工轨迹如图4所示,在YZ平面内进行以下加工步骤:加工第一刀→沿圆弧退刀→返回Z=3处→沿圆弧进刀→沿X方向移动一个步距→加工第二刀→…。
加工过程中,粗加工尺寸80按796加工,而精加工采用宏程序编制高速插铣程序。精加工的具体参数如表2所示
图3零件图及坐标系 图4刀具路径表2精加工参数
加工方式
加工材料
刀具
步距
设置安全高度
顺铣
铝合金
Φ18整体硬质合金加长球头刀
0.05
Z=3
2加工流程图
为增强程序的适应性,本程序刀分为子程序和主程序来编写,子程序起始位置为(0,0,50),刀具在加工过程中的基本路线是按前面所给出的路线来走刀。
由此画出加工流程图如图5(a)所示。(a) (b)
图5
3程序所使用的变量及程序流程图
本程序中所使用的变量如下:
需加工部位X方向的长度:#1;
需加工部位Y方向的长度:#2;
需加工部位Z方向的深度:#3;
X方向的步距:#4;
走刀轨迹中,退(或进)刀时的半径:#5(本例图4中的R10);
中间变量:#6、#7、#8、#9
由所确定的变量及加工流程图,画出程序流程图如图5(b)所示。
4编制程序
子程序:%9001
N10 #1=#1/2 #1变量取1/2作为X坐标
N20 #2=#2/2 #2变量取1/2作为Y坐标
N30 G00 X#1 X方向定位到加工位置
N40 G41 D1 Y#2 Y方向定位到加工位置
N50 G01 Z3 F3000 M08 下降下安全高度,开冷却液
N60 #6=-(#3-#5) 计算加工终点Z向坐标
N70 #7=#2-2#5 计算退刀终点Y坐标
N80 G01 Z#6 插铣加工
N90 G02 Y#7 R#5 退刀
N100 G01 Z3 返回
N110 G02 Y#2 R#5 进刀
N120 #8=#8+#4 X方向总加工长度计数
N130 G91 G01 X-#4 X方向走一个步距
N140 IF #8LE#1 GOTO 80 判别第一侧是否加工完
N150 G90 Y-#2 移至另一侧
N160 G01 Z#6 插铣加工另一侧
N180 G02 Y-#7 R#5 退刀
N190 G01 Z3 返回安全高度
N200 G02 Y-#2 R#5 进刀
N210 #9=#9+#4 X方向总加工长度计数
N220 G91 G01 X#4 X方向移动一个步距
N230 IF #9LE#1 GOTO 160 判别另一侧是否加工完
N240 G90 G40 G00 X0 Y0 M09 X、Y方向返回起始点
N250 Z50 Z方向返回起始点
N260 M99 宏程序结束
主程序:%1010
N10 T01 选一号刀
N20 M06 换刀
N30 G00 G90 G54 G19 X0 Y0 S5000 M03 定位到起始位置,选择坐标平面及坐标系,启动主轴。
N40 G43 H01 Z50 Z方向补偿
N60 G65 P9001 A200 B8005 C90 D0 E0 F0 I005 J10 K0 调用宏程序并给相关变量赋值
N70 M05 停止主轴
N80 G49 Z50 Z方向取消补偿
N90 M30 程序结束
五、结束语
利用流程图编制用户宏程序,思路清晰,所编制的程序适应性好,是一种值得推广的方法。
以上就是关于excel宏程序,数字问题全部的内容,包括:excel宏程序,数字问题、数控宏程序le什么意思、数控宏程序#1到#999是什么意思。等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)