
宏程序学习的几点心得.doc
6页有关宏程序学习的几点心得天长市职业教育中心 蒋春飞HNC—21/22T 为用户配备了强有力的类似于高级语言的宏程序功能,用户可以使用变量进行算术运算、逻辑运算和函数的混合运算,此外宏程序还提供了循环语句、分支语句和子程序调用语句,利于编制各种复杂的零件加工程序,减少乃至免除手工编程时进行繁琐的数值运算,并精减程序量然而对于初学者来说,宏程序的编制是一个难点,在此作为一个初学者的我来谈谈我在学习中的几点所思所得,也许会更加贴近初学者的实际困难,能给我们的初学者们带来一点点启示一、宏程序是计算机数控语言与数学建模的一个结合体我认为宏程序的编程的第一步应是数学的分析与建模(方程曲线等) ,再在此基础上确定一个变量(x、z 或某个参数)及变量的取值范围,根据曲线方程给出 x 或 z 的表达式,最后利用宏程序提供的语句(如循环语句、分支语句和子程序调用语句等)结合数控指令编制出程序(方程曲线宏程序的实质是利用小线段拟合的方法得到曲线) 我们可以看到,在宏程序中用到的计算机语句很有限,经过一段时间的训练都可以掌握,那么数学的建模就成为了我们初学者编程的一个瓶颈,主要表现在曲线的平移、旋转等坐标变换及变量如何取值等方面不能有一个完整细致的考量,导致程序出错。
二、从数学角度看方程曲线的平移在方程曲线的编程中,一般都会给定我们曲线的标准方程或参数方程1、若给出曲线的标准方程例如:曲线的中心在工件坐标系中坐标是( )zf x( , )a b方法一:求该曲线在工件坐标系中的一般方程:,()zaf xb得:,此时自变量的取值范围就是曲线在工件坐标系里起点到终()zf xba点坐标值(车削中若以为变量取其半径值) x当然,这样变换可能会使表达式显得繁琐,但这并不可怕,因为我们只要写出了数学表达式,下面所做的只是用数控语言转换照单输入就是了方法二:利用坐标的平移变换,若是标准方程曲线上点的坐标,是该曲线在工件坐标系中对应点的( , )x z( ,)x y坐标,则有,( ,)( , )( , )x yx za b {xx a zz b ( ){xx a zz bf xb 其中,自变量的取值范围仍是其在标准方程下的取值范围结合以上所述,以椭圆为例来体会一下宏程序的编制例 1、用宏程序编制下图所示椭圆程序(图 1) (图 2) 图 1:分析:方法一:由椭圆标准方程:和其中心在工件坐标系中的坐22 110025zx标(10,-20) ,得其一般方程:,若以为变量,变形得,22(20)(10)110025zxx,2(10)10 12025xz10,15x方法二:由椭圆标准方程:和其中心在工件坐标系中的坐标22 110025zx(10,-20) ,若以为变量,变形得,,由x2 10 125xz ( ){xx a zz bf xb 得:,21010 12025{XxxZz b 0,5x程序一: 程序二: T0101M3S600 T0101M3S600 G0X40Z2 G0X40Z2X18 … G1Z0F100 … X20Z-1 …. Z-10 #0=10 #1=5 #1=5 #3=10 #3=0 WHILE#3LE15 WHILE#3LE5 #4=10*SQRT[1-[#3-10]*[#3-10]/25]-20 #4=10*SQRT[1-#3*#3/25] G37G1X[#3]Z[#4] G37G1X[#3+10]Z[#4-20] #3=#3+0.08 #3=#3+0.08 ENDW … G1Z-35 X38 X40W-1 Z-41 G0X100Z100 M30 M30图 2:分析:方法一:由椭圆标准方程:和其中心在工件坐标系中的坐标22 110025zx(15,-10) ,得其一般方程:,若以为变量,变形得,22(10)(15)110025zxx, (第四象限的z 为负值)2(15)10 11025xz 10,15x方法二:由椭圆标准方程:和其中心在工件坐标系中的坐标22 110025zx(15,-10) ,若以为变量,变形得,,由x2 10 125xz ( ){xx a zz bf xb 得:, (第四象限的z 为负值)21510 11025{XxxZz b 5,0x 程序(略)需要注意的是:有些曲需要注意的是:有些曲线线(如(如椭圆椭圆)方程)方程转转化化为为(或(或) )时时,会,会( )zf x( )xf z涉及开平方,开平方就要注意符号的涉及开平方,开平方就要注意符号的选择选择,符号判断的要点是看区,符号判断的要点是看区间间曲曲线线在在标标准准方程方程时时所所处处的象限。
若的象限若过过象且符号有象且符号有变变化化时时,可利用分支,可利用分支语语句来解决,或直接分句来解决,或直接分段段处处理理再如:曲线的中心在工件坐标系中坐标是,则该曲线在工件( ) ( ){xf t zt ( , )a b坐标系中的一般方程是( ) ( ){x af t z bt ( ) ( ){xf ta ztb 还是以椭圆为例来感受如何根据参数方程进行程序编制例 1、用宏程序编制下图所示椭圆程序(椭圆方程)cos sin{x Ay B (图 1) (图 2)图 1、分析:由图可知,图中椭圆部分的标准参数方程是,其5sin 10cos{xz 中心在工件坐标系中的坐标是(10,-15) ,则其在工件坐标系中方程为,5sin10 10cos15{xz [0,90 ]图 2、分析:由图可知,图中椭圆部分的标准参数方程是,其中5sin 10cos{xz 心在工件坐标系中的坐标是(15,-10) ,则其在工件坐标系中方程为,5sin15 10cos10{xz [180 ,270 ]程序一: 程序二: T0101M3S600 T0101M3S600 G0X40Z2 G0X40Z2 X18 … G1Z0F100 … X20Z-1 …. Z-10 #0=10#1=5 #1=5 #3=0 #3=270 WHILE#3LE90 WHILE#3GE180 #4=10*COS[#3*PI/180]-15 #4=10*COS[#3*PI/180]-10 #5=5*SIN[#3*PI/180]+10 #5=5*SIN[#3*PI/180]+15 G37G1X[#5]Z[#4] G37G1X[#5]Z[#4] #3=#3+3 #3=#3-3… ENDW … G1Z-35 X38 X40W-1 Z-41 G0X100Z100 M30 M30需特需特别别指出的是指出的是的取的取值值一定要根据一定要根据图图象所在的象限及其旋象所在的象限及其旋转转方向来确定。
方向来确定三、初学者在宏程序编制中易被混淆或忽视的一些细节问题初学宏程序时,经常会出错,仔细检查后会发现,编程的思想,程序的格式,数学建模都基本正确,可程序就是不能通过,再认真仔细检查思考,会发现所犯错误实在低级,却又极易被忽视,在此我将我所犯错误列举一二例,看能不能从中也能找到你的影子1、忽视了角度与弧度的转换以转角为变量时,我们习惯于用角度,而函数的变量应为实数,是没有单位的,因此要进行相互的转换记住转换关系: (可省略) 1801180 ,1,rad 1180radrad2、请看下面的程序段#3=0 WHILE#3LE15 #4=10*SQRT[1-[X-10]*[X-10]/25]-20 G37G1X[#3]Z[#4] #3=#3-0.08 熟悉吧,是不是也在你的程序中出现过呀! ENDW 3、上面的“特别指出”“需要注意”也是我的一个经验教训,我相信你也会有此经历4、大部分初学者在编制宏程序时会犯经验性错误。
如:我们习惯于编长轴在 Z 轴上椭圆,当出现端面椭圆时,或是无所适从,或是以经验按想象对以前的程序略作改动,不去认真分析其内在的联系,这样做往往会出错,在此不妨做一个简单的分析:从坐标变换的角度来看,从长轴 A 在 Z 上变换到长轴 A 在 X 轴上,相当于把坐标系旋转了,X 变成了 Z,Z 也换成了 X,因此我们只要将原方程中的90X 与 Z 作一个互换,这样做好象就没有问题了,至少在用于椭圆标准方程或一般方程没有发现问题,用于参数方程时好象也没什么大的问题,只是在定义转角的方向和区间时总有点别扭,不是吗?第一次模拟经常会与要求不同,好在华中图形模拟较好,经过几番试验总能把问题解决,长舒一口气,啊,总算对了,可你想过为什么吗?也许你认为这并不重要,试出来不就可以了吗?但我以为从我们的教师的角度出发,我们不能总停留在“试”的层面上,来以已昏昏,使人昭昭岔远了,我们还是回到刚才的问题上来,实际上刚才的变换不是旋转那么简单,如果仅做旋转变换是不是有一个坐标轴的方向反了?怎么90办?再加一个对称变换那么一般方程中以又为什么没错呢?因为 X、Z 都有平方,对方向不“敏感” ,参数方程式问题就来了:1、旋转变换使得转角的始边随之旋转了一个同样的角度。
2、对称变换使得转角方向也发生了逆转!又如:在用平底铣刀倒圆角时练习中,绝大多数学员都参照了书中 69 页用球铣刀加工倒圆的例子,它的编程思想是计算出不同层高中的半径偏移量,修改刀具半径,再调用刀具半径补偿的方法来实现的,这种方法很好在平底铣刀倒圆角中能不能套用呢?完全可以,只是半径偏移量的表达式要做调整,我们一开始都犯了经验性错误,忽视了,基。












