当前位置:首页 » 编程软件 » 编程实际案例

编程实际案例

发布时间: 2023-05-03 15:31:39

‘壹’ 数控车床编程实例详解

一、数控车编程特点

(1)可以采用绝对值编程(用X、Z表示)、增量值编程(用U、W表示)或者二者混合编程。

(2)直径方向(X方向)系统默认为直径编程,也可以采用半径编程,但必须更改系统设定。

(3)X向的脉冲当量应取Z向的一半。

(4)采用固定循环,简化编程。

(5)编程时,常认为车刀刀尖是一个点,而实际上为圆弧,因此,当编制加工程序时,需要考虑对刀具进行半径补偿。

‘贰’ 单片机c语言编程100个实例

51单片机C语言编程实例 基础知识:51单片机编程基础 单片机的外部结构: 1. DIP40双列直插; 2. P0,P1,P2,P3四个8位准双向I/O引脚;(作为I/O输入时,要先输出高电平) 3. 电源VCC(PIN40)和地线GND(PIN20); 4. 高电平复位RESET(PIN9);(10uF电容接VCC与RESET,即可实现上电复位) 5. 内置振荡电路,外部只要接晶体至X1(PIN18)和X0(PIN19);(频率为主频的12倍) 6. 程序配置EA(PIN31)接高电平VCC;(运行单片机内部ROM中的程序) 7. P3支持第二功能:RXD、TXD、INT0、INT1、T0、T1 单片机内部I/O部件:(所为学习单片机,实际上就是编程控制以下I/O部件,完成指定任务) 1. 四个8位通用I/O端口,对应引脚P0、P1、P2和P3; 2. 两个16位定时计数器;(TMOD,TCON,TL0,TH0,TL1,TH1) 3. 一个串行通信接口;(SCON,SBUF) 4. 一个中断控制器;(IE,IP) 针对AT89C52单片机,头文件AT89x52.h给出了SFR特殊功能寄存器所有端口的定义。 C语言编程基础: 1. 十六进制表示字节0x5a:二进制为01011010B;0x6E为01101110。 2. 如果将一个16位二进数赋给一个8位的字节变量,则自动截断为低8位,而丢掉高8位。 3. ++var表示对变量var先增一;var—表示对变量后减一。 4. x |= 0x0f;表示为 x = x | 0x0f; 5. TMOD = ( TMOD & 0xf0 ) | 0x05;表示给变量TMOD的低四位赋值0x5,而不改变TMOD的高四位。 6. While( 1 ); 表示无限执行该语句,即死循环。语句后的分号表示空循环体,也就是{;} 在某引脚输出高电平的编程方法:(比如P1.3(PIN4)引脚) 代码 1. #include <AT89x52.h> //该头文档中有单片机内部资源的符号化定义,其中包含P1.3 2. void main( void ) //void 表示没有输入参数,也没有函数返值,这入单片机运行的复位入口 3. { 4. P1_3 = 1; //给P1_3赋值1,引脚P1.3就能输出高电平VCC 5. While( 1 ); //死循环,相当 LOOP: goto LOOP; 6. } 注意:P0的每个引脚要输出高电平时,必须外接上拉电阻(如4K7)至VCC电源。 在某引脚输出低电平的编程方法:(比如P2.7引脚) 代码 1. #include <AT89x52.h> //该头文档中有单片机内部资源的符号化定义,其中包含P2.7 2. void main( void ) //void 表示没有输入参数,也没有函数返值,这入单片机运行的复位入口 3. { 4. P2_7 = 0; //给P2_7赋值0,引脚P2.7就能输出低电平GND 5. While( 1 ); //死循环,相当 LOOP: goto LOOP; 6. } 在某引脚输出方波编程方法:(比如P3.1引脚) 代码 1. #include <AT89x52.h> //该头文档中有单片机内部资源的符号化定义,其中包含P3.1 2. void main( void ) //void 表示没有输入参数,也没有函数返值,这入单片机运行的复位入口 3. { 4. While( 1 ) //非零表示真,如果为真则执行下面循环体的语句 5. { 6. P3_1 = 1; //给P3_1赋值1,引脚P3.1就能输出高电平VCC 7. P3_1 = 0; //给P3_1赋值0,引脚P3.1就能输出低电平GND 8. } //由于一直为真,所以不断输出高、低、高、低……,从而形成方波 9. } 将某引脚的输入电平取反后,从另一个引脚输出:( 比如 P0.4 = NOT( P1.1) ) 代码 1. #include <AT89x52.h> //该头文档中有单片机内部资源的符号化定义,其中包含P0.4和P1.1 2. void main( void ) //void 表示没有输入参数,也没有函数返值,这入单片机运行的复位入口 3. { 4. P1_1 = 1; //初始化。P1.1作为输入,必须输出高电平 5. While( 1 ) //非零表示真,如果为真则执行下面循环体的语句 6. { 7. if( P1_1 == 1 ) //读取P1.1,就是认为P1.1为输入,如果P1.1输入高电平VCC 8. { P0_4 = 0; } //给P0_4赋值0,引脚P0.4就能输出低电平GND 2 51单片机C语言编程实例 9. else //否则P1.1输入为低电平GND 10. //{ P0_4 = 0; } //给P0_4赋值0,引脚P0.4就能输出低电平GND 11. { P0_4 = 1; } //给P0_4赋值1,引脚P0.4就能输出高电平VCC 12. } //由于一直为真,所以不断根据P1.1的输入情况,改变P0.4的输出电平 13. } 将某端口8个引脚输入电平,低四位取反后,从另一个端口8个引脚输出:( 比如 P2 = NOT( P3 ) ) 代码 1. #include <AT89x52.h> //该头文档中有单片机内部资源的符号化定义,其中包含P2和P3 2. void main( void ) //void 表示没有输入参数,也没有函数返值,这入单片机运行的复位入口 3. { 4. P3 = 0xff; //初始化。P3作为输入,必须输出高电平,同时给P3口的8个引脚输出高电平 5. While( 1 ) //非零表示真,如果为真则执行下面循环体的语句 6. { //取反的方法是异或1,而不取反的方法则是异或0 7. P2 = P3^0x0f //读取P3,就是认为P3为输入,低四位异或者1,即取反,然后输出 8. } //由于一直为真,所以不断将P3取反输出到P2 9. } 注意:一个字节的8位D7、D6至D0,分别输出到P3.7、P3.6至P3.0,比如P3=0x0f,则P3.7、P3.6、P3.5、P3.4四个引脚都输出低电平,而P3.3、P3.2、P3.1、P3.0四个引脚都输出高电平。同样,输入一个端口P2,即是将P2.7、P2.6至P2.0,读入到一个字节的8位D7、D6至D0。 第一节:单数码管按键显示 单片机最小系统的硬件原理接线图: 1. 接电源:VCC(PIN40)、GND(PIN20)。加接退耦电容0.1uF 2. 接晶体:X1(PIN18)、X2(PIN19)。注意标出晶体频率(选用12MHz),还有辅助电容30pF 3. 接复位:RES(PIN9)。接上电复位电路,以及手动复位电路,分析复位工作原理 4. 接配置:EA(PIN31)。说明原因。 发光二极的控制:单片机I/O输出 将一发光二极管LED的正极(阳极)接P1.1,LED的负极(阴极)接地GND。只要P1.1输出高电平VCC,LED就正向导通(导通时LED上的压降大于1V),有电流流过LED,至发LED发亮。实际上由于P1.1高电平输出电阻为10K,起到输出限流的作用,所以流过LED的电流小于(5V-1V)/10K = 0.4mA。只要P1.1输出低电平GND,实际小于0.3V,LED就不能导通,结果LED不亮。 开关双键的输入:输入先输出高 一个按键KEY_ON接在P1.6与GND之间,另一个按键KEY_OFF接P1.7与GND之间,按KEY_ON后LED亮,按KEY_OFF后LED灭。同时按下LED半亮,LED保持后松开键的状态,即ON亮OFF灭。 代码 1. #include <at89x52.h> 2. #define LED P1^1 //用符号LED代替P1_1 3. #define KEY_ON P1^6 //用符号KEY_ON代替P1_6 4. #define KEY_OFF P1^7 //用符号KEY_OFF代替P1_7 5. void main( void ) //单片机复位后的执行入口,void表示空,无输入参数,无返回值 6. { 7. KEY_ON = 1; //作为输入,首先输出高,接下KEY_ON,P1.6则接地为0,否则输入为1 8. KEY_OFF = 1; //作为输入,首先输出高,接下KEY_OFF,P1.7则接地为0,否则输入为1 9. While( 1 ) //永远为真,所以永远循环执行如下括号内所有语句 10. { 11. if( KEY_ON==0 ) LED=1; //是KEY_ON接下,所示P1.1输出高,LED亮 12. if( KEY_OFF==0 ) LED=0; //是KEY_OFF接下,所示P1.1输出低,LED灭 13. } //松开键后,都不给LED赋值,所以LED保持最后按键状态。 14. //同时按下时,LED不断亮灭,各占一半时间,交替频率很快,由于人眼惯性,看上去为半亮态 15. } 数码管的接法和驱动原理 一支七段数码管实际由8个发光二极管构成,其中7个组形构成数字8的七段笔画,所以称为七段数码管,而余下的1个发光二极管作为小数点。作为习惯,分别给8个发光二极管标上记号:a,b,c,d,e,f,g,h。对应8的顶上一画,按顺时针方向排,中间一画为g,小数点为h。 我们通常又将各二极与一个字节的8位对应,a(D0),b(D1),c(D2),d(D3),e(D4),f(D5),g(D6),h(D7),相应8个发光二极管正好与单片机一个端口Pn的8个引脚连接,这样单片机就可以通过引脚输出高低电平控制8个发光二极的亮与灭,从而显示各种数字和符号;对应字节,引脚接法为:a(Pn.0),b(Pn.1),c(Pn.2),d(Pn.3),e(Pn.4),f(Pn.5),g(Pn.6),h(Pn.7)。 如果将8个发光二极管的负极(阴极)内接在一起,作为数码管的一个引脚,这种数码管则被称为共阴数码管,共同的引脚则称为共阴极,8个正极则为段极。否则,如果是将正极(阳极)内接在一起引出的,则称为共阳数码管,共同的引脚则称为共阳极,8个负极则为段极。 以单支共阴数码管为例,可将段极接到某端口Pn,共阴极接GND,则可编写出对应十六进制码的七段码表字节数据

‘叁’ g71编程实例及解释是什么

g71编程实例及解释是如下:

一、实例:

输入:G71U-W-R;G71P-Q-U-W-F。

输入:G71U-W-R;G71P-Q-U-W-F。

二、解释:

由于数控车G71这些零件的径向尺寸,无论是测量尺寸还是图纸尺寸,都是以直径值来表示的,所以数控车床采用直径编程方式,即规定用绝对值编程时,X为直径值,用相对值编程时,则以刀具径向实际位移量的二倍值为编程值。

数控车床编程基础。

1、坐标系、程序的基本知识G代码,M功能。

2、G00快速定位G01,直线插补。

3、G90单一外圆车削循环。

4、G94单一端面车削循环。

5、宇龙仿真软件的使用。

6、G92螺纹车削循环。

7、G71内外径复合循环及练习。

‘肆’ 数控车床编程实例带图的

G99(每转进给)

G0 X200 Z100(快速移动到安全位)

T0101(换1号外圆刀,执行1号刀补)

M03 S500(开启主轴正转,速度500R/MIN)

G0 X112 Z2(快速接近工件毛坯)

G71 U3 R0.5 F0.2(G71轴向精车循环加工,U3每次吃刀3MM单边,退刀0.5MM,速度0.2MM/R)

G71 P1 Q2 U0 W0(P1程序开始阶段,Q2程序结束阶段,U0——X轴不留精加工余量,W0——Z轴不留精加工余量)

N1 G0 X30(循环开始以后的第一阶段)

G1 Z-50

X90

Z-70

X110

N2 Z-140(循环结束的最后一阶段)

G0 X200 Z100(快速移动至安全换刀位)

T0202(换2号刀螺牙刀,执行2号刀补)

G0 X200 Z100 S300(快速移动至安全位,转速改为300R/MIN)

X30 Z4(快速定位至螺牙循环开始位置)

G92 X29.8 Z-48 F1.5(车螺牙,X轴牙底径29.8,Z牙长48MM,牙距1.5MM)

X29.6

X29.4

X29.2

X29

X28.8

X28.6

X28.4

X28.3

X28.2

X28.1

X28.05

G0 X200 Z100(快速移动至安全换刀位置)

T0303(换3号割刀,执行3号刀补)

G0 X200 Z100 S200(快速定位,转速200R/MIN)

X110 Z-84(移动至割槽循环开始位置)

G75 R0.5 F0.08(G75割槽循环,R——每次退刀0.5MM,F——每转进给0.08MM)

G75 X60 Z-120 P6000 Q4000(槽底径60MM,Z轴最大深度120MM,P——每次切入6MM,Z轴移动量)

M09(关水泵)

G0 X200 Z100 M05(快速移动至换刀安全位,关闭主轴)

T0101(换1号刀)

M30(程序结束)

‘伍’ C语言的经典编程例子


程序员》推荐C++ 图书三人谈

主持人:熊节(透明),《程序员》杂志编辑,C-View成员
嘉 宾:孟岩(梦魇),联想公司掌上设备事业部应用开发处任职,C-View成员。与侯捷先生合译《C++ Standard Library》一书
金尹(恶魔),上海天宇公司CTO,在《程序员》连载有“自由与繁荣的国度”系列文章

透明:“学C++用哪本书入门”,这是被问得最多的一个问题。但是哪一本书是最好的入门书?似乎很难找到答案。《C++ Primer》太厚,《Effective C++》对读者要求比较高,《Essential C++》又常常被批评为“太浅”。
其实说穿了:no silver bullet。想从一本书学会C++,那是不可能的。有朋友问我如何学C++,我会建议他先去找本数据结构书,把里面的习题全部用C++做一遍,然后再去看《Effective C++》。myan经常说“要在学习初期养成好习惯”,我对此颇不以为然。
个人认为,《Essential C++》适合作教材,《C++ Primer》适合作参考书,《Effective C++》适合作课外读物。

恶魔:很后悔当初买了《C++ Primer》。因为从我个人角度来看,它的功能效用基本是和《The C++ Programming Language》重合。当然对于入门来说,它还是很不错的。但是《C++ Primer》太厚,一来导致看书极其不方便,二来系统学习需要花比较长的时间。对于目前这个越来越快餐化的时代来说,的确有很多不适合的地方,不过可以作为初学者的参考书。现在我以一块K3 CPU的代价把它借给了别人,希望我那位同事能够从中得到一些益处。
如果已经具备了C基础,我建议看国内的书,例如钱能的《 C++大学教程(第二版) 》。(如果没有C的基础还是看谭浩强的C语言)。这本书对C讲得还算比较清晰,有很多习题值得一做,特别是最后的struct和union两个部分。其中的一些算法比较拖沓和繁琐(比如树和链表的遍历算法),读者可以尝试修改这些例子,作为最后对C语言的一些总结测试。

梦魇:这个问题让我想起四五年前的情形。今天对于C++有一点认识的人,多半是从那几年就开始学C++了。那时根本没有品牌观念。从书店里找一本C++书,如果看着还算明白,就买下来。我记得那时候宛延闿、张国锋、麦中凡教授的书都受到很高的赞誉。我个人最早的一本C++书是Greg Perry的一本书,今天想起来,其实是一本打着C++旗号的C语言教程。对我作用最大的一本书是国防科技出版社出版的一本书,书名记不得了,作者叫斯蒂芬·布莱哈。
透明:还记得以前曾批评过一本C++书,是北航出的,整本书就没有出现过class关键字。那本书,说穿了其实只是介绍了C语言和iostream库的用法,根本不能算C++。而当时我常常推荐的一本书是电子科技大学张松梅老师的C++教程。那本书,直到今天来看也没有太大的问题,唯一的缺憾就是由于年代久远,许多东西已经过时了。而对于一本技术书籍来说,“过时”是最不可接受的。
总体来说,那时使用C++的人真是在“盲人摸象”。不过这也有好处,就是对C++的很多细节能搞清楚,以后看到经典好书时比较容易理解;当然坏处就是概念不清,甚至都不知道C++和Visual C++、Borland C++到底有什么不一样。

梦魇:整个90年代,其实大部分人对于C++的认识都似是而非。一开始是等同于Borland C++,后来是等同于Visual C++和MFC。所以一般来说,打着BC和VC旗号的书卖得很好,人们觉得这就是C++。而我比较幸运,布莱哈的那本书虽然从现在的眼光来看谈不上高超,但基本路子是对的。可能是因为原书是给UNIX程序员的培训教材,所以没有让我一开始就形成“C++ == VC++”的认识。
其实一直到1996年,我们那里搞计算机的都是唯Borland C++马首是瞻的,到了VC 4.0出来,一下子格局全变了。1997年VC5推出之后,书店里MFC书铺天盖地,学MFC的人,头抬得都比别人高一些。不过现在看来,那时候大部分的MFC书都是三流货色。我曾经有一段时间认为,那一批程序员中间有不少被误导了。根本原因就是相对的封闭。

透明:我觉得一本书的价值有两方面:第一,教给你实用的技术;第二,促使你去思考。对于一本介绍VC(或者说MFC)使用方法的书,我根本不希望它能促使我有什么思考,所以我就一定要求它在技术上精益求精完美无瑕。我刚开始用VC的时候,买的第一本书就是潘爱民老师翻译的《VC技术内幕》(第四版),没有受到那些“三流货色”的误导,应该说是很幸运的。

梦魇:1999年机械工业出版社开始出版“计算机科学丛书”,其中的《Thinking in C++》第一版受到了广泛的欢迎。其实我一直不认为这本书很出色,虽然拿过一次大奖。然而我们都得承认,这本书在C++书籍领域里第一次建立了品牌观念,很多初学者开始知道,不是随便买哪一本都一样的。再往后就是2000年的《 深入浅出MFC(第二版) 》第二版,以及侯先生在《程序员》上发表的那一篇《C++/OOP大系》,加上整个大环境的变化,品牌观念深入人心,C++书籍市场终于开始逐渐与世界同步。
回想往事,我的感觉是,那个需要战战兢兢选择入门书的时代已经过去,今天的C++初学者,大可以放心地买口碑好、自己读起来思路顺畅的书,入门不再是太大的问题。还有一些程序员已经学了几年C++,但看到今天出版的一些新书,感觉比较陌生,这也不是什么问题。侯先生经常说“凡走过必留下足迹”,所谓“走弯路”,未必不是一件好事。
至于具体的推荐表,就不好一概而论了。总之在我的印象里,《Essential C++》、《C++ Primer》、钱能教授的C++教程,都不错。甚至有人一上来就看Bjarne Stroustrup的《The C++ Programming Language》,只要他喜欢,也没什么不可以。

透明:我同意你的观点。不管怎么说,编程是门实践性非常强的学问。要想对C++对象模型有深入的了解,最好的办法就是写一串程序去看结果;要想学会OOP,也只能从项目中学。对于初学者,最好的学习方法就是不停地写程序,写真正有用的程序,写到有问题的时候就去查书,于是自然就会知道哪本书好哪本书不好。不过我们的教育制度能不能让大学里的学生们有这样的学习机会,我表示怀疑。
以我的经验,学C++有两个门槛:入门和使用。完全看不懂C++,这是一个门槛,但是只要有一本合适的入门书,很快就能跨过。要想真正用上C++,却不是件很容易的事情。尤其对于学生来说,接触到的东西多是“玩具”,很难有实战的机会。所以经常看见有人问“C++到底能做什么”,这是C++学习中一个比较麻烦的问题。我们都是做了相当长时间的C++程序之后才看到一些真正经典的书,也正是因为走了相当长的弯路之后才知道这些书的经典之所在。所谓弯路,我想也是一种必须的积累。就算一开始就看《Essential C++》和《C++ Primer》,没有两三年的时间恐怕还是难有所得。

恶魔:有两句十分有道理的话,一是我大学的C语言老师说的“写程序不如说是抄程序”,另一句是一网友说的“好的设计来自借鉴,天才的设计来自剽窃”。对于我这个理性批判主义者来说,这两句话的确不太适合。但是无论从哪个角度来讲,对于初学者来说,剽窃大师的作品是通向成功的最快捷径。
我个人认为,对于C++的初学者来说,首先要确定自己专业领域内主要使用的特性的方向。因为C++的特性如此众多,初学者想贪多基本是不可能成功的。C++的编程范式基本可以分为ADT+PP、GP和OO三个方向。对于ADT+PP范式来说,初学者的主要问题不是学习C++,而是学习C的使用。对于这样的初学者,国内的几本书还是写得比较清楚,符合中国人的习惯,比如谭浩强的《C语言教程》、钱能的《C++语言大学教程》。这两本书我首推第一本,因为这一本我潜心研究了一年,这本书当中很多程序是可以剽窃的,而且可以对这些程序进行加工和提升。比如结构这一章中,它所给出的用struct来实现链表、二叉树的算法是相当蹩脚的。学习ADT+PP的初学者将这本书揣摩透以后可以尝试修改这两个程序。另外这本书的第二版稍微涉及了一些关于“类”的内容。学习ADT+PP的初学者,可以不被OO中的一些专有特性扰乱自己的思路,对于类层次扁平、无继承、无多态的程序编写是有很大好处的。

透明:你好象比较推崇国内教授写的书。现在社会上有种不好的风气:一捧就捧上天,一贬就贬下地。就好象对待谭教授的书,前几年是奉为经典,这几年又有很多人使劲批评。学C++更是有点“崇洋媚外”,总是觉得初学就应该看《Essential C++》。我看这种观点也是片面的。

恶魔:当然《Essential C++》也值得看看。但是我个人觉得这本书没有谭浩强的《C语言教程》来得好。主要原因是:第一,C++的所有特性都点到了,但是不深,看了以后会三心二意没有方向;第二,可以抄袭借鉴的例子太少。《C语言教程》中有很多有趣的问题,比如猴子吃桃、汉诺塔等等,这些例子对于刚刚涉及C/C++语言编程的人来说是学习编程很好的例子。《Essential C++》只能是前两本书看透以后,作为学习C++特性的一个过渡性的书籍。让读者真正领略到什么是C++的编程、和C编程的不同点在哪里。

透明:我发现一个很有趣的现象:初学者往往喜欢问“哪本书比较好”,这让我很是不解。这有点像一个刚学打篮球的人问“王治郅和科比谁比较厉害”。当然科比更厉害一些。但如果你是想学打篮球,这两个人都非常非常有资格教你,你跟谁学都能学得很强——关键不是在于你选哪个老师,而是在于你自己用多少功夫去学。

透明:回到原来话题。学会了C++的语法,能看懂C++代码之后,必须有些书来指导进阶(或者叫指点迷津)。我觉得《设计模式》很好,能够让读者看到一些精妙的用法。不过正如我经常说的,模式带来的麻烦和好处一样多,甚至麻烦还要更多。而且,C++本身的问题使得在C++中使用GoF模式愈加麻烦。

梦魇:《Design Patterns》这本书绝对是不可以没有的,而且中英文版都不可少。最初我看中文版,说实话看不懂,但是也不觉得人家翻译得不好,所以就想,大概是原文就很难懂,加上自己水平有限。于是总是想着再找几本patterns的书来看。后来找到几本书,口碑还不错,不过水平高下,一比就出来了,还是那本《Design Patterns》最经典,最耐看。英文版出来之后,两个版本对照看,明白多了。现在觉得,其实就设计模式来讲,把这本看明白了就很不错了,不用再花费很多心思找其他的书。我现在的包里始终夹着这本书,随身携带,有备无患。
至于说设计模式的副作用,和可能带来的弊端,我的体会也挺多。不过是这样,我们想一想,究竟什么情况下设计模式可以用得很好呢?一种是有经验丰富的人引导,比如要是Robert Martin带队,你在某个地方用错了设计模式,他就会指出来,说这里不对,将来会产生什么样的弊端。对于他来说,丰富的实践经验足以支持他进行“预测型”设计。但是大部分人没这个能力,因此我们只好走第二条路和第三条路,就是“试探型”设计和“重构型”设计。遇到一个问题,你觉得用某种模式挺合适的,就大胆地用了,成功是积累经验,发现不好,出了问题了,只好改回来,那也是积累教训。这叫做“试探型”。至于重构,应该算是最有组织、成功率最高的工程化方法。先把问题“quick and dirty”地解决了,所有的暗礁都暴露出来,然后再根据实际情况采用合适的模式优化设计。现在XP和UP都高度重视refactory,UP在Elaboration和Construction阶段都鼓励抽出专门的iterations进行重构。所以说如果组织快速的软件开发,当然比较倾向于这条路——打成功率嘛。

透明:讲到重构,我顺便说说《Refactoring》这本书的影响。从工程本身的角度来说,你所谓的“重构型设计”是没有什么问题的。但中国的开发者(也包括我在内)往往比较冲动,比较容易相信银弹的存在。曾经有那么一段时间,我在Java中尝试过了重构的方法之后,又拿到C++中去尝试。结果发现,在Java中速度非常快的重构过程,到C++中就被减慢了。究其原因,就是因为C++和Java的约束条件不同。拿着Java中成功的案例直接套C++,不失败才怪。
所以,我必须说:《Refactoring》这本书很有价值。但对于C++程序员来说,它的价值是让你思考,思考这种方法的可行性。如果一个C++程序员没有打算迁移到Java,那么我必须告诉他:《Refactoring》这本书不是让你照着它用的,甚至不是让你去相信它的。对于C++程序员,《Refactoring》全书可以放心相信的只有第13章,其他的部分,都必须非常谨慎地对待。

梦魇:我还要就“试探型”的方法多说两句,我觉得对于个人发展来讲,“试探”也是必不可少的,撞墙不可怕,高水平的人不都是撞出来的吗?你失败了一次,就知道这个模式有什么潜在的问题,下次再用,就会多看几步,像下棋似的。撞的多了,路数就出来了。
我不知道你们是否有这个感觉:用错了模式,吃了亏,再回过头去翻翻《Design Patterns》,看到人家早就指出来这个问题,不过就是那么几句话,原来看上去干巴巴的,现在觉得句句都讲到心坎上,GoF的形象马上就高大起来,还带着光环,感觉是既兴奋又懊悔。

透明:现在回头来看,我更欣赏myan推荐给我的《Designing Object-Oriented C++ Applications Using Booch Method》。这本书能够帮助C++程序员理清思路培养习惯,可惜国内没有引进。相比后来商业味浓厚的UML系列书籍,我觉得这本书对于面向对象的阐释精辟独到,至今未有能出其右者。

梦魇:刚才我们两人都说到Robert Martin,他可是我的榜样。那本1995年的《Designing Object Oriented C++ Application》,我觉得是每一个C++软件工程师都应该反复研读的书。可惜不仅国内没有引进,在国外的名气也不大。如果你觉得面向对象的那些道理你好像都明白,可就是一遇到实际问题就使不上劲,那这本书就是你的最佳导师。
提到理清思路,还有一本书不得不提,就是Andrew Koenig的《Ruminations On C++》。每个人都应该问自己,我学了这么多年的C++,究竟什么是C++最基本的设计理念?遇到问题我第一个直觉是什么?第一个试探型的解决方案应该具有那些特点?如果你不能给出明确的答案,就应该认真地去读这本书,读完了你就有了“主心骨”。

透明:插一句话,谈谈“推荐书”的问题。入门书基本上是放之四海而皆准的,所以推荐的意义也不大。而入门后的发展方向,每个人不同,这个时候就需要“高人”的指点。举个例子:我学C++的时候,myan还不认识我,所以也没有给我推荐书,我还是学过来了,所以即使你当时向我推荐了《Essential C++》或者《C++ Primer》,我也不会太感谢你;但在我认真研究OO的时候,你推荐Robert Martin那本书给我,对我帮助就特别大,而且我从别的地方也很难找到类似的推荐,所以我就很感谢你。
一个程序员,必须有framework的意识,要学会用framework,还要主动去分析framework(在这方面,《Design Patterns》能有一定的帮助)。但是,真正高质量、成气候的framework的书恐怕也就只有针对MFC的。从这个角度来说,MFC纵有千般不是,C++程序员都非常有必要先去用它、熟悉它、研究它,甚至借助《深入浅出MFC》这样的书来剖析它。不然,很难有framework的意识和感觉。
当然,另一个framework也很好,那就是STL。不管用不用MFC、STL,对这两个东西的掌握和理解都是极有帮助的。最近我又在看《深入浅出MFC》,虽然已经不用MFC编程了,但帮助是一定有的。

梦魇:MFC和STL方面,我还是比较推崇侯先生的两本书《深入浅出MFC》和《STL源码解析》。
《深入浅出MFC》这本书,名气自然是大得不得了,不过也有不少人批评。其实书也没有十全十美的,批评当然是少不了的,不过有的时候我看到有人评论这本书,把它跟Inside VC相比,真的是牛头不对马嘴。
你刚才其实说得很对,程序员应该有一点framework意识。而这本《深入浅出MFC》与其说是在讲MFC编程,不如说通篇是在拿MFC为例分析Application Framework的架构和脉络。所以无论你对于MFC本身是什么态度,这本书对每一个C++程序员都有很大的益处。

透明:是的。《VC技术内幕》会告诉你“DYNAMIC_CREATE这个宏怎么用”,《深入浅出MFC》则告诉你“DYNAMIC_CREATE这个宏是怎么实现的”。所以,如果你只需要在VC下写一些小应用程序,《深入浅出MFC》的价值并不太大;但是,如果你需要设计一个稍微大一点的东西(不一定是framework),MFC的设计思想就会有所帮助。

梦魇:另外,我觉得对于MFC也应该有一个公允的评价。过去是吹捧得天上有地下无,书店里铺天盖地都是MFC的书,搞得大家只知有MFC,不知有C++,甚至直到现在还有人问:“我是学MFC呢,还是学C++?VC++是不是比C++更高级的语言?”MFC成了一尊神像,阻碍了人们的视线。所以得把它从神坛上拉下来。这就是过去一两年有很多人,包括我在内批评MFC的一个目的。可是现在大家视野开阔了,.NET也出来了,MFC不再是神像了,少数人就开始以贬损MFC为乐了。我觉得这种态度是不对的。
什么叫好的框架?我觉得在十几年的时间能够象MFC这样保持稳定并且不断进步的框架就是好的框架。可能我们在一些具体的设计问题上有不同看法,觉得“这个地方这么设计不是更漂亮吗?”很多时候是的,但是这不重要,重要的是MFC成熟稳定、有十几年的成功经验,这是最了不起的东西。
另外一点,MFC中间包括着学习Win32 API编程的最佳资料。这是除了其framework方面之外的另一个亮点。我现在使用Win32 API开发,但是经常参考MFC的源代码,收获很大。

透明:STL方面,我对于剖析它的源代码兴趣并不大,毕竟里面源代码多是算法问题。所以,《STL源码剖析》我也只是随便翻翻就束之高阁了。我觉得这本书用来做计算机系的数据结构和算法教材不错,不知道有没有老师乐意这样做。
对于STL,我的态度一向都是“应用至上”。不过,我一直认为SGI STL本身就是一本精彩的书,一本数据结构和算法的经典参考书,同时也是泛型技术的参考书。想知道一个算法是如何实现的,看看STL源代码就行;想知道如何使用type traits,STL源代码里面也有例子。看别人写的书,总觉得隔着一层纱,有点挠不到痒处的感觉。SGI STL的代码写得非常漂亮,一个C++程序员如果不看看这本书,实在是可惜。

梦魇:至于STL,除了《STL源码解析》之外,我举贤不避亲,强烈推荐侯先生与我合译的那本《The C++ Standard Library》。这本书质量之高是无需怀疑的。我现在手边常备此书,随时查阅,对我帮助很大。

透明:C++和Java相比,最大的优势就是它没有一个专门的公司来管它,最大的弱点也是它没有一个专门的公司来管它。Java程序员在学会简单的语法之后,立刻进入SUN提供的framework,一边用这个现成的framework做实际开发,一边在开发过程中继续学习Java一些幽深的特性。而这个时候,C++程序员恐怕还在问“VC和BCB哪个好”呢。这无疑是浪费时间。

梦魇:刚才你说Java和C++的优劣,这个话题已经成了我们这个年代永不消失的声波了。我也不想再谈这个。不过有一点我得说清楚:现在我们很多用C++的人吃了不少苦头,探过脖子去看看Java,觉得它真是太可爱了,这种印象是不准确的。另外,Java也不简单,而且会越来越庞大复杂。在很多场合,Java还不具有竞争力。至于将来如何,我看有些Java爱好者也过分乐观了,似乎计算机科学界几十年解决不了的问题都可以借着Java的东风解决掉,恐怕没那么容易。

透明:那当然。我再次强调:No Silver Bullet。读书很重要,但古人说“行万里路,读万卷书”,还是把“行路”放在“读书”前面。尤其对于技术书籍,如果它不能帮我解决问题、不能给我带来非常实际的利益,那么我是不会去读它的。恶魔说得对,我们这个社会很快餐,我们这个行业尤其很快餐,我们也只能努力适应它。

‘陆’ 数控车宏程序编程实例

统宏程序编程一 变量 普通加工程序直接用数值指定G代码和移动距离;例如,GO1和X100.0。使用用户宏程序时,数值可以直接指定或用变量指定。当用变量时,变量值可用程序或用MDI面板上的操作改变。 #1=#2+100G01 X#1 F300说明:变量的表示 计算机允许使用变量名,用户宏程序不行。变量用变量符号(#)和后面的变量号指定。 例如:#1表达式可以用于指定变量号。此时,表达式必须封闭在括号中。 例如:#[#1+#2-12]变量的类型变量根据变量号可以分成四种类型 变量号变量类型功能#0空变量该变量总是空,没有值能赋给该变量.#1-#33局部变量局部变量只能用在宏程序中存储数据,例如,运算结果.当断电时,局部变量被初始化为空.调用宏程序时,自变量对局部变量赋值,#100-#199#500-#999 公共变量公共变量在不同的宏程序中的意义相同.当断电时,变量#100-#199初始化为空.变量#500-#999的数据保存,即使断电也不丢失.#1000系统变量系统变量用于读和写CNC运行时各种数据的变化,例如,刀具的当前位置和补偿值.变量值的范围局部变量和公共变量可以有0值或下面范围中的值:-1047到-10-29或-10-2到-1047如果计算结果超出有效范围,则发出P/S报警NO.111.小数点的省略当在程序中定义变量值时,小数点可以省略。 例:当定义#1=123;变量#1的实际值是123.000。变量的引用为在程序中使用变量值,指定后跟变量号的地址。当用表达式指定变量时,要把表达式放在括号中。 例如:G01X[#1+#2]F#3;被引用变量的值根据地址的最小设定单位自动地舍入。 例如: 当G00X#/;以1/1000mm的单位执行时,CNC把123456赋值给变量#1,实际指令值为G00X12346.改变引用变量的值的符号,要把负号(-)放在#的前面。 例如:G00X-#1当引用未定义的变量时,变量及地址都被忽略。 例如:当变量#1的值是0,并且变量#2的值是空时,G00X#1 Y#2的执行结果为G00X0。 双轨迹(双轨迹控制)的公共变量对双轨迹控制,系统为每一轨迹都提供了单独的宏变量,但是,根据参数N0.6036和6037的设定,某些公共变量可同时用于两个轨迹。 未定义的变量当变量值未定义时,这样的变量成为空变量。变量#0总是空变量。它不能写,只能读。 引用当引用一个未定义的变量时,地址本身也被忽略。 当#1= 当#1=0G90 X100 Y#1G90 X100G90 X100 Y#1G90 X100 Y0(b) 运算 除了用赋值以外,其余情况下与0相同。 当#1=时 当#1=0时 #2=#1#2=#2=#1#2=0#2=#*5#2=0#2=#*5#2=0#2=#1+#1#2=0#2=#1+#1#2=0(c)条件表达式 EQ和NE中的不同于0。 当#1=时 当#1=0时 #1EQ#0 成立 #1EQ#0 不成立 #1 NE #0 成立 #1 NE #0 不成立 #1 GE #0 成立 #1 GE #0 不成立 #1 GT #0 不成立 #1 GT #0 不成立 限制程序号,顺序号和任选程序段跳转号不能使用变量。 例:下面情况不能使用变量: 0#1; /#2G00X100.0;N#3Y200.0;二 算术和逻辑运算 下面表中列出的运算可以在变量中执行。运算符右边的表达式可包含常量和或由函数或运算符组成的变量。表达式中的变量#j和#k可以用常数赋值。左边的变量也可以用表达式赋值。 说明: 角度单位函数SIN ,COS,ASIN,ACOS,TAN和ATAN的角度单位是度。如90°30'表示为90.5度。ARCSIN # i= ASIN[#j] (1)取值范围如下: 当参数(NO.6004#0)NAT位设为0时,270°~90° 当参数(NO.6004#0)NAT位设为1时,-90°~90° (2)当#j超出-1到1的范围时,发出P/S报警NO.111.(3)常数可替代变量#jARCCOS #i=ACOS[#j] 取值范围从180°~0° 当#j超出-1到1的范围时,发出P/S报警NO.111. 常数可替代变量#j三 程序举例铣椭圆:轨迹:椭圆程序代码如下:N10 G54 G90 G0 S1500 M03N12 X0 Y0 Z20.N14 G0 Z1N16 G1 Z-5. F150.N18 G41 D1N20 #1=0N22 #2=34N24 #3=24N26 #4=#2*COS[#1]N28 #5=#3*SIN[#1]N30 #10=#4*COS[45]-#5*SIN[45]N32 #11=#4*SIN[45]+#5*COS[45]N34 G1 X#10 Y#11 N36 #1=#1+1N38 IF [#1 LT 370] GOTO26N40 G40 G1 X0 Y0 N42 G0 Z100N44 M30 铣矩形槽:铣矩形槽代码如下:#102=0.N3#100=0.#101=0.#103=200.#104=400.G91G28Z0.G0G90G54X0.Y0.G43H1Z20.M3S2000.N4G0X#100Y#101G01Z#102F200.#102=#102-2.IF[#102EQ-50.]GOTO1GOTO2N2N4X#104F500.Y#103X#100Y#101#100=#100+10.#101=#101+10.#103=#103-10.#104=#104-10.IF[#100EQ100.]GOTO3GOTO4N3N1M5M9G91G28Z0.G28Y0.M30铣倾斜3度的面:轨迹:铣倾斜3度的面的代码如下:O0001#[#1+1*2]=1G65P9012L1A0B0.1C4I100J3K0M30宏程序O9012代码如下:G54 G90 G00 X[#3] Y0 Z100S500 M3G01 Z0 F300WHILE[#1LE10]DO1#7= #1/TAN[#5]+#3G1Z-#1 X#7#8=#6/2-ROUND[#6/2]IF[#8EQ0]GOTO10G1Y0 GOTO20N10 Y#4N20#1=#1+#2#6=#6+1END1G0 Z100铣半球:轨迹:铣半球代码如下:G90G0G54X-10.Y0M3S4500G43Z50.H1M8#1=0.5WHILE[#1LE50.]DO1#2=50.-#1#3=SQRT[2500.-[#2*#2]]G1Z-#1F20X-#3F500G2I#3#1=#1+0.5END1G0Z50.M5M30铣喇叭:铣喇叭代码如下:M03 S500M06 T01#1=0#2=0G0 Z15X150 Y0N11#2=30*SIN[#1]#3=30+30*[1-COS[#1]]G01 Z-#2 F40G41 X#3 D01G03 I-#3G40 G01 X150 Y0#1=#1+1IF [#1 LE 90] GOTO 11G0 Z30M30

‘柒’ 数控车床G94车锥度编程实例

G94X(U)_Z(W)_R_F_。

X:切削终点X轴坐标。

Z:切削终点z轴坐标。

驱动装置和位置检测装置。驱动装置的作用是:接受来自数控装置的摊信息,经功率放大后,严格按照指令信息的要求驱动机床移动部件,以加工出符合图样要求的零件。位置检测装置的作用是:将数控机床各坐标轴的实际位移检测出来,经反馈系统输入到。




数控机床是按照事先编制好的加工程序:

自动地对被加工零件进行加工。我们把零件的加工工艺路线、工艺参数、刀具的运动轨迹、位移量、切削参数以及辅助功能。

按照数控机床规定的指令代码及程序格式编写成加工程序单,再把这程序单中的内容记录在控制介质上,然后输入到数控机床的数控装置中,从而指挥机床加工零件。

‘捌’ 求加工中心编程实例

1、根据图纸要求,确定工艺方案及加工路线

(1)以底面为定位基准,两侧用压板压紧,固定于铣床工作台上

(2)工步顺序

钻孔φ20㎜、按O’ABCDEFG线路铣削轮廓。

2、选用经济型数控铣床,华中Ⅰ型(XZK7532型)数控铣钻床。

3、选择刀具

现采用φ20㎜的钻头,钻削φ20㎜孔;φ4㎜的平底立铣刀用于轮廓的铣削,并把该刀具的直径输入刀具参数表中。由于华中Ⅰ型数控铣钻床没有自动换刀功能,钻孔完成后,直接手工换刀。

4、确定切削用量

切削用量的具体数值应根据该机床性能、相关的手册并结合实际经验确定,详见加工程序。

5、确定工件坐标系和对刀点

在XOY平面内确定以0点为工件原点,Z方向以工件表面为工件原点,建立工件坐标系,如上图所示。采用手动对刀方法把0点作为对刀点。

1、加工φ20㎜孔程序(手工安装好φ20㎜钻头)%7528

G54G91M03;相对坐标编程

G00X40Y30;在XOY平面内加工

G98G81X40Y30Z-5R15F120;钻孔循环

G00X5Y5Z50

M05

M02

2、铣轮廓程序(手工安装好ф4㎜立铣刀)%7529

G54G90G41G00X-20Y-10Z-5D01

G01X5Y-10F150

G01Y35

G91G01X10Y10

G01X11.8Y0

G02X30.5Y-5R20

G03X17.3Y-10R20

G01X10.4Y0

G01X0Y-25

G01X-100Y0

G90G40G00X0Y0Z100

M05 M02

(8)编程实际案例扩展阅读:

十字槽粗加工程序

O0001;

G90 G40 G21 G17 G94;

G91 G28 Z0;

G90 G54 M3 S480;

G00 X30.0 Y0;

Z5.0 M08;

G01 Z-4.0 F40;

X-30.0 F60;

Z-8.0 F40;

X30.0 F60;

G00 Z5.0;

X0 Y25.0;

G01 Z-4.0 F40;

Y-25.0;

Z-8.0 F40;

Y25.0 F60;

G00 Z5.0 M09;

G91 G28 Z0;

M30

‘玖’ g73编程实例及解释是什么

g73编程实例及解释是如下:

输入:G73U--W--R;G73P--Q--U--W--F。

由于数控车G73这些零件的径向尺寸,无论是测量尺寸还是图纸尺寸,都是以直径值来表示的,所以数控车床采用直径编程方式,即规定用绝对值编程时,X为直径值,用相对值编程时,则以刀具径向实际位移量的二倍值为编程值。

对于不同的数控车床、不同的数控系统,其编程基本上是相同的,个别有差异的地方,要参照具体机床的用户手册或编程手册。

系统格式指令:

g73指令是外圆粗车循环指令!各种数控系统的编程格式都不一样,如最简单的广州928系统格式:G73、X、I、K、L、F。

X:精加工X起点坐标,一般要偏端面X为0。

I:每次进刀量MM。

K:每次退刀量MM。

L:总的精加工程序段。

F:进给量。

‘拾’ 数控编程的实例!

数控机床编程实例
作者: 来源:
--------------------------------------------------------------------------------

常用的圆弧编程指令是G2和G3,使用时必须编入圆弧起点坐标,终点坐标、圆弧半径或中心坐标,可处理各种类型的圆弧编程。西门子810D/840D系统中的CT和RND指令也可以生成精确的圆弧轨迹,在加工轮廓中出现用圆弧与其他直线或圆弧相切连接的轨迹时,灵活运用CT和RND指令进行圆弧编程比使用G2和G3指令方便得多:

--------------------------------------------------------------------------------

一、两种特殊的圆弧编程指令:CT和RND
常用的圆弧编程指令是G2和G3,使用时必须编入圆弧起点坐标,终点坐标、圆弧半径或中心坐标,可处理各种类型的圆弧编程。西门子810D/840D系统中的CT和RND指令也可以生成精确的圆弧轨迹,在加工轮廓中出现用圆弧与其他直线或圆弧相切连接的轨迹时,灵活运用CT和RND指令进行圆弧编程比使用G2和G3指令方便得多:
1、RND指令处理轮廓拐点的圆弧过渡
RND指令的含义:轮廓拐点处用指定半径的圆弧过渡处理,并且和相关的直线或圆弧相切连接,数控系统自动运算各个切点的坐标。
参照图1 加工内容为底边外的其余轮廓,所用程序如下。
N005 G54 G90 G0 Z100 T1 D1
N010 X-70 Y-50
N015 M03 S1000 F500 Z-10
N020 G41 Y-20
N025 G1 Y70 RND=5
N030 G1 X-40 RND=5
N035 G3 ×0 CR=20 RND=5
N040 G3 ×40 CR=20 RND=5
N045 G1×70 RND=5
N050 G1 Y-30
N055 M30
程序中用RND=5的格式表示轮廓拐点处用半径R5的圆弧过渡处理,并与相关的直线或圆弧相切连接,数控系统自动运算各个切点的坐标,程序中不需写入切点的坐标。而用G2和G3指令编写各处R5圆弧就必须计算各个切点的坐标(共10个点),还多了五条程序。
2、CT指令完成直线和圆弧或圆弧和圆相切边接
CT指令的含义是:经过一段直线或圆弧的结束点P1和另一个指定点P2生成一段圆弧并且和前面的直线或圆弧在P1点处相切,数控系统自动运算圆弧半径CT指令是模态的。
参照图2 加工内容为底边外的其余轮廓,所用程序如下:
N005 G54 G90 G0 Z100 T1 D1
N010 X-90 Y-120
N015 M03 S1000 F500Z-10
N020 G41Y-100
N025 G1 Y20
N030 X-60
N040 Yo
N045 CT X-20(第一个R20圆弧)
N050 X20(第二个R20圆弧)
N055 X60(第三个R20圆弧)
N060 G1 Y20
N065 G1×90
N070 Y-100
N075 M30
用CT在编制程序时只需输入切点坐标而不用写入圆弧半径,也不用判断圆弧的方向,在直线和圆弧或多段圆弧相切连接的轮廓编程时使用非常方便。
3、CT和RND指令在极坐标系中的应用
在极坐标系中用G2和G3指令编程时有一个限制,极点必须设定在所编程圆弧的中心。而用CT和RND指令就很好地克服了这一障碍。
(1)RND指令在极坐标系中的应用
参照图3在数控铣床加工4个30度的V型槽,以90度位置的V型槽为例程序如下。
N005 G54 G0 T1 D1 Z100
N010 G111 Xo YO
N015 AP=90-15 RP=110
N020 M03 S1000 F500 Z10
N025 G42 RP=100
N030 G1 RP=0 RND=10
N035 G1 RP=100
N040 M30
(2)CT指令在极坐标系中的应用。
参照图4 加工上部的3段圆弧和2段直线相切连接的部位,程序如下。
N005 G54 G90 Go Z100 T1 D1
N010 G111 XO YO
N015 AP=90-36-18 RP=150
N020 M03 S1000 F500 Z-10
N025 G42 RP=130
N030 G1 RP=142.66/2
N035 CT AP=90-18
N040 AP=90+18
N045 AP=90+18+36
N050 G1 RP=150
N055 M30
图3和图4 这两种类型的工件加工部位使用算术坐标系编程数据处理比较麻烦,在极坐标系中用G2和G3指令编程圆弧时极点必须设定在所编圆弧的中心,需要一些计算工作,而使用RND和CT指令编程圆弧时,极点就不必设定在所编圆弧的中心,极点可以设定在任意的方便数据处理的位置。图3和图4 这两种类型的工件加工部位在编程时使用极坐标且极点设定在工件中心最为方便。
二、特殊刀具补偿方法在加工扇形段导入板中的应用
1、一般的刀具补偿方法
参照图5 ,在数控铣上用40mm立铣刀加工60H7的槽,按照槽的边界线进行编程,使用的程序如下。
N005 G54 G90 Go Z100 T1 D1
N010 X-150 YO
N020 M03 S300 F100 Z30
N025 G42 Y30
N030 G1×150
N035 Y-30
N040 X-150
N050 M30
实际加工中要经过粗加工、半精加工和精加工运行三次程序,对应的半径补偿值先大后小分别是22mm,20.5mm,20mm(理念值,最终的半径补偿值要经过实际测量确定)。
2、特殊的刀具补偿方法
参照图5,在数控铣床上40mm立铣刀加工60H7的槽,按照中心线进行编程,使用的程序如下。
N005 G54 G90 GO Z100 T1 D1
N010 X-150 YO
N020 M03 S300 F100 Z30
N025 G42 X-140
N030 G1 X150
N035 GO Z100
N040 G40 X-150
N050 Z30
N055 G41 X-140
N060 G1 X150
N065 GO Z100
N070 M30
实际加工中要经过粗加工、半精加工和精加工运行三次程序,对应的半径补偿先小后大分别是8mm、9.5mm,10mm(理论值,最终的半径补偿值要经过实际测量后确定),最终的半径补偿理论值=槽的宽度/2-刀具半径。在程序中分别用G41和G42激活两次刀补,增加了一次空行程,这种使用刀具半径补偿的方式在加工一般类型的工件时显得很麻烦,但是在加工特定类型的工件时使用这种方法就会使编程工作变得非常简单。
3、在加工扇形段导入板中的应用
在一些比较特殊槽体的加工中,图纸中只标注槽的宽度、深度和中心线的形状尺寸,针对这一类型的工件,按照中心线进行编程,加工中应用特殊的刀具补偿方法。
参照图6,这是我公司薄板厂连铸设备中使用的扇形段导入板,它是扇形段导入装置中的关键零件。用Tk6920数控锉铣床的加工七条128×44mm导入槽。该工件的七条导入槽是由多段圆弧和直线相切连接构成,图纸中只标注了槽的宽度、深度和中心线的形状尺寸,以上部第一个导入槽为例说明特殊的刀具补偿使用方法,按照中心线进行编程。
程序名称:CA01
程序内容:N5 G54 G90 G64 GO Wo Z150 T1 D1(调用第一个刀号)
N10 G111 XO YO
N15 X=-1804-100 Y=464.424
N20 M04 S250 F200 Z-44
N25 G41 X=IC(50)(激活刀补开始加工槽体的上边界)
N30 G1 X=-1804+920.617
N35 CT AP=90-16.03 RP=1499.5
N40 G1 AP=90-16.03 RP=1499.5+100
N45 GO G40 X=IC(100)Z150
N50 X=-1804-100 Y=464.424 T1 D2(调用第二个刀号)
N55 G42 X=IC(50)(激活刀补开始加工槽体的下边界)
N60 G1 X=-1804+920.617
N65 CT AP=90-16.03 RP=1499.5
N70 G1 AP90-16.03 RP=1499.5+100
N75 GO G40 X=IC(100)Z150
N80 M30
槽的宽度和中心线不对称,程序中用了两个刀号,加工槽体的上边界时用D1,加工槽体的下边界是时用D2,实际加工中用50mm铣刀要经过粗加工、半精加工和精加工运行三次程序,对应的半径补偿值先小后大分别是D1=100mm,12mm,12.5mm,D2=13mm,15mm,15.5mm.
如果使用一般的刀具补偿使用方法,按照槽的边界线进行编程,就要计算槽的边界线中各段圆弧和直线切点的坐标以及各段圆弧的半径,计算量是非常大的。而按照中心线进行编程就可直接使用力纸上标注的尺寸,避免了大量、繁琐的数据计算工作,保证了程序中所用数据的准确性,极大的提高了编程效率。
其方法有两个特殊:(1)按照中心线进行编程而不是按照真实的加工边界线进行编程。(2)刀具补偿值按照粗加工、半精加工和精加工的顺序逐渐加大,理论补偿值二加工的边界到中心线的距离--刀具半径。优点是直接使用图纸上标注的尺寸进行编程,保证了程序中所用数据的准确性,不需进行大量繁琐的数据计算工作。

热点内容
oracle测试sql 发布:2025-07-08 03:16:54 浏览:973
php壁纸源码 发布:2025-07-08 03:04:26 浏览:320
android应用层 发布:2025-07-08 02:42:32 浏览:301
大唐存储销量 发布:2025-07-08 02:41:11 浏览:582
脚本怎么打开 发布:2025-07-08 02:41:06 浏览:822
贵州电信iPtv升级服务器地址 发布:2025-07-08 02:38:48 浏览:412
电脑怎么链接本地服务器 发布:2025-07-08 02:34:22 浏览:147
android调试webview 发布:2025-07-08 02:26:28 浏览:358
压缩袋鞋子 发布:2025-07-08 02:21:30 浏览:752
为什么安卓打吃鸡感觉有延迟 发布:2025-07-08 02:09:32 浏览:168