第一篇:编程感想
编程感想
从C学到C++,就是从面向过程到对象,又从C++到JAVA,就是从静态语言到动态语言。编程语言的学习无怪乎多写代码,多参考,多了解,那些所谓的牛人,又有多牛呢 ? 我想开始时也跟我们刚学时一样,但人家坚持住了,所以被牛了!编程要养成好的习惯!
下面是我在一篇博文上看到的,很受用,与大家分享 态度篇
1.做实事 不要抱怨,发牢骚,指责他人,找出问题所在,想办法解决。对问题和错误,要勇于承担。
2.欲速则不达 用小聪明、权宜之计解决问题,求快而不顾代码质量,会给项目留下要命的死角。
3.对事不对人 就事论事,明智、真诚、虚心地讨论问题,提出创新方案。4.排除万难,奋勇前进 勇气往往是克服困难的唯一方法。学习篇
5.跟踪变化 新技术层出不穷并不可怕。坚持学习新技术,读书,读技术杂志,参加技术活动,与人交流。要多理解新词背后的所以然,把握技术大趋势,将新技术用于产品开发要谨慎。
6.对团队投资打造学习型团队,不断提高兄弟们的平均水平。7.懂得丢弃 老的套路和技术,该丢,就得丢。不要固步自封。
8.打破砂锅问到底 不断追问,真正搞懂问题的本质。为什么?应该成为你的口头禅。9.把握开发节奏 控制好时间,养成好习惯,不要加班。开发流程篇
10.让客户做决定 让用户在现场,倾听他们的声音,对业务最重要的决策应该让他们说了算。
11.让设计指导而不是操纵开发 设计是前进的地图,它指引的是方向,而不是目的本身。设计的详略程度应该适当。
12.合理地使用技术 根据需要而不是其他因素选择技术。对各种技术方案进行严格地追问,真诚面对各种问题。
13.让应用随时都可以发布 通过善用持续集成和版本管理,你应该随时都能够编译、运行甚至部署应用。
14.提早集成,频繁集成 集成有风险,要尽早尽量多地集成。15.提早实现自动化部署 16.使用演示获得频繁反馈 17.使用短迭代,增量发布
18.固定价格就意味着背叛承诺 估算应该基于实际的工作不断变化。用户篇 19.守护天使 自动化单元测试是你的守护天使。20.先用它再实现它 测试驱动开发其实是一种设计工具。21.不同环境,就有不同问题 要重视多平台问题。22.自动验收测试
23.度量真实的进度 在工作量估算上,不要自欺欺人。24.倾听用户的声音 每一声抱怨都隐藏着宝贵的真理。编程篇
25.代码要清晰地表达意图
代码是给人读的,不要耍小聪明。26.用代码沟通 注释的艺术。
27.动态地进行取舍 记住,没有最佳解决方案。各种目标不可能面面俱到,关注对用户重要的需求。
28.增量式编程 写一点代码就构建、测试、重构、休息。让代码干净利落。
29.尽量简单 宁简勿繁。如果没有充足的理由,就不要使用什么模式、原则和特别的技术。30.编写内聚的代码 类和组件应该足够小,任务单一。31.告知,不要询问 多用消息传递,少用函数调用。32.根据契约进行替换 委托往往优于继承。调试篇
33.记录问题解决日志)不要在同一地方摔倒两次。错误是最宝贵的财富。34.警告就是错误 忽视编译器的警告可能铸成大错。
35.对问题各个击破
分而治之是计算机科学中最重要的思想之一。但是,要从设计和原型阶段就考虑各部分应该能够很好地分离。
36.报告所有的异常 37.提供有用的错误信息
稍微多花一点心思,出错的时候,将给你带来极大便利。团队协作篇
38.定期安排会面时间 常开会,开短会。
39.架构师必须写代码
不写代码的架构师不是好架构师。好的设计都来自实际编程。编程可以带来深入的理解。
40.实行代码集体所有制 让开发人员在系统不同区域中不同的模块和任务之间轮岗。41.成为指导者 教学相长。分享能提高团队的总体能力。
42.让大家自己想办法
指引方向,而不是直接提供解决方案。让每个人都有机会在干中学习。
43.准备好后再共享代码 不要提交无法编译或者没有通过单元测试的代码!44.做代码复查 复查对提高代码质量、减少错误极为重要。45.及时通报进展与问题
主动通报,不要让别人来问你。
第二篇:编程大赛感想
(本人技术一般,所写只为给新人介绍一下西工大acm如何入门,大牛请无视本贴)
ACM竞赛作为大学阶段计算机学生的最高荣誉在咱学校竟然不受重视,也没人提起,让那些高中转战NOIP,IOI的同学寒心不已。其实我们学校成绩还是可以的,前年就获得了合肥赛区的第二名,当然由与高手都在其它赛区,没有参加决赛的资格,但也说明了只要我们努力就能有成果。但由于其获奖难度极高,我们学校几乎是破罐子破摔,根本就不管事。其实是学校的这种心态造成大量潜在人才由于不知道相关信息而大学四年庸庸碌碌迷失方向,所以我来说说吧。(如果想简单地保研的话就去机器人吧,进了70%国家一等奖,直接保研资格哦)当然想成为高手,想提升自己的能力就参加ACM吧。首先说下参加ACM比赛好处,以及与其它课程的关系: 很多人都说ACM考察面太窄了只是算法罢了,像操作系统,编译原理,网络,嵌入式等等都没考察。
其实当你成为ACM高手的时候会发现这些课的重点难点用的算法你都已经知道了,你再学这些东西就像看小人书一样了,你会觉得如果让你去做这些东西你也会这么设计甚至还能加以优化。比如内存分配管理其实就是排序算法的应用而已,PV操作就是设置标志的小技巧而已,编译原理就是字符串处理而已,路由器的相关算法就是图论里的东东而已。。因为算法是核心,其它那些只是算法在具体环境下的特定应用罢了。如果说那些东西是套路,那么算法就是内功,而ACM比赛就是内功的检验场,你通过了说明你的任督二脉已经打通,你已可纵横天下了。此时你已成为世界各高校争相抢夺的人才了。就算没有进入决赛但内功强了干啥都顺手。从本科生阶段到博士生阶段的的各种面试笔试机试全逃不出acm考察的圈圈。因为难所以价值极高!
对于找工作来说,百度腾讯网易google每年都有类似于ACM的竞赛,初赛大概都在五月份到六月份进行。只要进入决赛去他们公司找工作都不用简历,直接走绿色通道的哦~你夺得名次后这些公司的岗位就任你挑了,不用简历不用面试,求你到他们公司去!
想想看吧:你不用向各大公司投简历,而是各大公司像你投他们公司的简历了,然后你看都不看把它们都丢到垃圾桶里去!(我时常就在幻想这样的牛人待遇啊,现在已经大四了悔之晚矣,希望大一的同学努力啊)
再说高数,物理等科目。其实与算法真的没什么关系。一旦模拟信号变成了离散信号就是算法的天下了,与之相关的数学是组合数学(研究生阶段才开,我认为应该大一就开)。主要是为了我们今后的计算机应用,比如各种物理数据的采集处理,物理电路的设计仿真等等,这些都属于计算机应用范畴,我们学校其实没有计算机科学专业,有的只是计算机应用与技术专业。有志去1,3系的同学好好学高数,复变,信号与系统这些课吧。当然高数等是常识性知识,不能不知道,这么简单的东西都学不好就不要搞acm了。接着讲正题:
本人刚来时由于不知道如何进校队而浪费大量时间,学校信息也较为闭塞,到了大三参加了一次也是草草收场,所以希望更多有志的同学早些知道些信息少走弯路。咱学校进校队其实非常简单,有两条路:
第一条路:在学校举行选拔的时候去参加选拔赛。这个要特别留心,很多阴险的人看了通知后就把通知扯掉的(当年亲眼目睹。。),一定要多留心。
第二条路:把usaco前五章的题目做完你就直接去找王琪老师就可以进校队了。王琪老师会上离散数学和算法分析课,大家留心下。王老师水平不咋样但人还是很好的,会尽力帮你的哦。ACM竞赛与其它竞赛的区别就是学生一定比老师强,强很多!(不像咱学校的那些所谓的强项竞赛,哼哼)
第二条路显然是我们的最好选择。因为一旦你做完了前五章题目什么选拔赛早已不在话下了。usaco是美国的程序设计训练站,刚开始英语看不懂的话就去nocow看翻译。acm的题目都是英文的,所以最好看英文的。(学计算机英语极为重要,这东西几乎是美国一家弄出来的没办法)。这个站的特点是题目按学习进程一步步安排,从最简单的讲起,对各种算法分别介绍,题目循序渐进的出现。不像其它OnlineJudge一开始就让你面对杂乱无章的一对题目。一开始你只能做几道题,只有你做完了这几题之后才能解锁后续的题目。做这套题目还有一个好处就是做过这套题的人特别多,相关分析讲解到处都是,相当于有一位经验丰富的老师给你指引了。
当然做完这套题是很不容易的,用一年时间攻克它吧。如果光看书不做题是绝对不行的,要边做题边看书。你会感到强烈的对知识的渴求,而且在应用中你会牢牢记住书上的东西并透彻地了解他们。
首先是语言基础,先把C语言弄熟来(高中用过PASCLE学C一样很快的)。C语言书用谭浩强的就可以了,我们的目标只要会用这门语言即可,此阶段会写冒泡排序,斐波那契数列的递归法,八皇后,约瑟夫问题(数组版和链表版,有兴趣看看数学公式版)即可。然后找一本简单数据结构书看一下(一般都用严蔚敏写的),先把前四章看下,代星星的以及树和图以后做题时一块看。接着学习C++。C++的好处就是STL,一些数据结构如栈,队列,优先队列都可以直接调用,一些常用的算法(例如快排)也可直接调用。C++先用几天看看谭浩强的写的红色的那本,把类,构造函数,析构函数,泛型编程,操作符重载等相关概念理解下,谭的书例子非常简单利于理解,然后看下《ACM程序设计》这本书(蓝皮的,北京大学出版社,超简单的入门基础书,强烈推荐新手看),基本上STL就会用了。然后备着本《C++ primer》就好了,遇到问题时查查。用一周把《ACM程序设计》上的水题推掉,这时语言功底已经打好了。接着准备一本《算法导论》和一本简单的国人写的算法设计与分析,按照usaco上的顺序开始算法的学习吧。
其中你会遇到各方面的问题,主要有数论,数据结构,组合数学,计算几何等方面,带着问题去图书馆或上网查资料学习吧,效率很高的哦~ 顺带说下,我们学校是先学数据结构再学算法,我认为在学数据结构前先学下算法较好,因为是先有算法
做完五章就去校队吧,会让你做乌拉尔大学的OJ,这时再准备本刘汝佳的《算法艺术与信息学竞赛》翻翻吧(此书极难,分析超短,只适合高手看)
第三篇:游戏编程感想
游戏编程感想
班 53080907 周杰
首先,通过游戏编程课程的学习,我了解了怎么用我们所学过的知识进行游戏编程,不过对于第一开始应该用什么语言,你有许多种选择,包括Basic、Pascal、C、C++、Java等等,而且在网上关于游戏制作新手应该选择哪门语言的讨论也很多。推荐选择C和C++做为开始写游戏的语言。一些人可能会说这两种语言对于没有编程经验的新手来说有点难度,我不同意这种说法,因为我就是刚开始的也是选择这两种语言。另外C/C++在今天是两种应用范围最广的语言,因此你才会更有可能得到更多的编程和学习资源以及其他人的帮助。
其次,如果要进行游戏编程,我们要对我们在大学期间学过的相关知识有个大概的了解,游戏编程设计到经济学,统筹学,物理学,机器人学,生物学,心理学,人工智能,计算机图形学,多媒体技术,虚拟现实等等。而且它也是一个团队的合作才能完成的工作,它所涉及的工作有策划、程序、美术、音乐等。只有每个方面的工作相互配合达到完美,所设计出来的游戏才是一款经典的游戏作品。
第三,作为游戏编程,它所设计的不单单是一款游戏,如果把它想成仅仅工人们娱乐消遣的工具,那就把游戏定义的有所狭隘。游戏只是人们日常生活中所能接触到的一部分应用,它更可以应用虚拟现实的技术把这个产品应用到人们生活的方方面面,比如军事模拟训练,仿真模拟等等。
最后,不要仅仅是积累知识,用它。除非你用它们,否则你不能真正的知道和理解它们。用你所学的东西制作一个小的Demo。认真的去做书里面每个章节后面留的练习。
尽量玩更多的游戏。这样做可以给你许多灵感并能帮助你把游戏做的更好一些。这也可以给你枯燥的编程工作减轻一些痛苦。
帮助别人。在教别人或者给别人讲解的过程中你将会更加的了解自己,学到很多东西。有始有终。不要陷入“我知道我能完成这个游戏,但是我有更好的方法,因此我要继续想想我的那个方法。”如果你能完完整整的写完一个你从一开始要做的游戏,你将会学到非常非常多的东西,而且你也有东西可以证明你不是一个把什么东西都停留在嘴巴上的人。在你成为一个有经验的游戏程序员之前,请把你要做的游戏更简单更容易一些,不要贸然的去尝试写一些比较大或者很复杂的游戏。
第四篇:如何学习编程
最近看到很多朋友问到如何学习编程这个问题,我想这个问题应该是所有初学者都非常关注的问题了,在论坛上回答了很多也讲了很多,但是总是无法让所有朋友得到一个解答,所以我想写一下自己的经验,希望对大家有所帮助,不过在此先声明,我并非什么高手,我也只是刚刚入门而已,也只是希望通过写一点个人的体会帮助一些和我遇到相同问题的朋友,高手就免看了,以免班门弄斧。
好了,废话就不多说了。在学习程序之前,我想大家首先应该对程序员这个行业熟悉一下,更加要对编程的语言以及所涉及到的工具有所了解。因为如何过了解这些是很难去给自己一个明确的目标的。所以首先我想在这里先为大家介绍一下这个行业以及一些相关的内容。
程序员,相信在很多人眼中是一个非常神秘,非常特别又或者说非常有趣的职业。因为在这个行业里面实在出现了太多的英雄,每一个英雄的事迹都足以让我们热血沸腾。但是,又有谁知道在这些英雄的背后,藏着多少辛酸,藏着多少的努力。程序员这个行业并非如大家所想象的那样美好。程序员是一个没有白天黑夜概念的行业,程序员是一个让人筋疲力尽的行业。你们看到的是一些英雄的光辉历史,但是却忽略了大多数程序员的艰辛。所以在这里我奉劝各位,如果你是为了这个行业充满传奇色彩而想加入,如果你是为了这个行业薪水高而想加入,那么请你现在退出吧,因为他不适合你。这个行业需要的是拥有努力、认真、坚持的人。
讲到如何学习编程,那么必不可少的就要讲到编程语言了,相信大家都知道编程语言有很多种,包括C、C++、BASIC、PASIC、ASP、PHP等等,当中还分为很多不同的领域,所以在学习编程之前一定要为自己定下一个目标,一个自己即将要进入的领域。有些人想进行底层开发,有些人想做网站开发,有些人想做商业软件开发等等,由于计算机的普及,软件行业所涉及的领域也就越来越多,一个人是不可能涉及所有的领域的,所以必须在学习之前给自己一个定位,这个是很重要的,如果没有这个定位的话在未来学习编程的日子里将会很迷茫。
目标的定位当然不能少了工具的因素,因为不同的领域使用的开发工具也不同,在这里想重新再次郑重的向所有朋友声明一次,不要把开发工具和开发语言混为一谈,语言是编程的基础,而工具是用来辅助开发的,例如VC、VB、DELPHI、BCB等等。每种工具都有各自的优势和缺点,至于每种工具的特点我就不再相信讲了,如果大家是有心学编程的话,我相信你一定会去看看关于这些工具的具体内容的,呵呵,让我偷个懒。还有在这里重要提醒一下大家,不要被现在的流行工具所迷惑,学好根本才是最重要
前面大概的准备工作已经做完了,对这个行业了解了,给自己定了一个目标后,接下来当然是全力向这个目标出发了。那该怎么做呢?看了很多朋友的帖子,都讲到C语言是程序员必学的语言,如果程序员不学C就不算是真正的程序员,我个人认为这种说法有点偏激,当然,我承认学C是会对你有很大的帮助,但是并非一定要学C,大家之所以这样说,可能是因为C语言的影响太大了。但是你总不能要那些去学网站开发的人一定要去学C吧,呵呵。其实我个人认为,一开始学什么都无所谓,但是无论学什么,一定要努力和坚持,做不到这两点,你就注定会是个失败者。在这里我想讲一下学编程最关键的问题,就是思想。也许这是个很抽象的概念,但是没有办法,编程本身就是个很抽象的东西,呵呵。等你真正领悟到这一点的时候,恭喜你,你已经站在编程的门口了,呵呵,只是门口哦。那么编程的思想又该如何去领悟呢?要领悟其思想,那首先学习语言是必然的,语言是思想的一种体现形式,就像一个人的思想需要语言来表达一样,所以如果连一门语言都无法掌握的人是无法领悟其思想的。但是对于一个人,如果不经常说话,不经常使用语言,他又如何去使用语言来表达自己的思想呢?编程也一样,要领悟其精髓,必须先不断地看,不断地使用,才能在这种过程中慢慢有所体验,当然有的人可能快些,有的人可能慢些,但是不管快慢,能够达到就是进步。
我记得在我仍然迷茫的时候,不知道自己该如何去学,每天就是机械式的看书写代码,根本都不知道自己是不是真的懂,但是就是这样不断的看不断的照着书写,终于有一天,好象突然开窍一样,一下子就把所有不明白的东西全都弄明白了,这个有点像佛家所说的顿悟,呵呵。我最初以C语言开始学习的,在我开始学C语言到顿悟这一刻,我可以告诉大家,我看C语言的书我一共看了5本不同的版本(不过都是像走马观花一样的看,千万不要学我),直到第5本看到指针那里,我才真正有种明白的感觉,也许我太笨了,相信大家看一本就够了,HOHO。自从那一次后,我接着看C++,学习pascal、basic、汇编这些东西,自己感觉都非常容易看懂,可能这就是所谓的一理通百理通的道理吧。呵呵,不过在这里要讲一下,上面所说的几种语言虽然看书都看过了,也看明白了,但是由于很少使用,现在大部分都还给书本了,呵呵。
看到这里,包括我在内,我都感觉到自己很了不起,很厉害了。可惜,只有我自己知道,虽然看了那么多,学得也多,写得也不少,可是我却不知道如何运用。来来去去就是写一些书本上的题目,自己却感觉像windows那些程序却不知道如何去写,不知道该怎么办,相信很多人都有和我一样的体会吧,把C语言学了,题目也做了,而且都没有问题,可是却不知道如何去做开发,感觉自己学的东西一点用处都没有。这又是为什么呢?
在这之前,我一直为这个问题烦恼,后来我终于找到了答案,那就是我所学的,所写的都是DOS应用程序,而我们现在所使用的确实windows操作系统,当然也有使用linux系统的。后来看了一篇别人写的文章后,我才知道我所学的和实际运用相差太远了。现在大部分学习编程语言的书籍上的例题都是基于DOS系统开发的,所以我们所写的程序和windows上所运行的不一样,这就是造成我们迷茫的主要原因。那该怎么办呢?那还用问吗,当然就是去学习windows开发啦。在第一次接触windows开发的时候,我真的是大吃一惊,这完全和我以前所学的很不一样,但是又息息相关,如果没有以前所学的,我根本就看不懂windows开发的内容。在这里给大家简单介绍一下,windows开发和DOS开发的区别吧。大家都知道,DOS是一个单任务执行系统,也就是说在DOS下只能在一个程序运行完成或者中断后才能运行其他的程序,而windows是个多任务系统,当然在本质上windows也只能一个时间内执行一个程序,但是由于其利用CPU的运算能力,让这些微妙的时间让人无法感觉到,再就是windows是一个图形界面系统,拥有着良好的用户界面,不像DOS是个指令界面。所有这一切的区别导致DOS和windows开发上也存在很大的区别。所以现在的程序员首要的任务除了学习语言以外,就是要去学习windows开发机制。如果连这个都不懂,那是肯定开发不出一个好的windows软件的。在这里向所有朋友重点推荐美国人Charles Perzold所写的《windows程序设计》第五版,这本书可以说是经典中的经典,学习windows开发必看的书,适合有C语言基础的朋友看,它有多经典我就不想细讲了,总之就是绝对不会让你失望,呵呵。这本书市场价是160元整,分上下两册,如果有的朋友觉得太贵的话,我这里有他的电子版,需要的就找我要吧,随时欢迎大家找我要这本书,呵呵。
说实话写到这里,我自己都不知道自己写了些什么,好象很乱,呵呵,希望大家能够看得懂吧。看完我介绍的这本书后,而且看懂的话,那么接下来自己该如何走,我相信我就不用再多说了,到那个时候你一定知道自己该如何去学习编程了。上面讲了下我个人是如何学习的,当然还有很多细节地方没有涉及到,不过随时欢迎朋友们跟我一起交流。而且我现在才发现
上面所写的是从C语言开始学习的,呵呵,其实我并非要大家向我一样学习,我只是把自己学习的经过大概讲了下,当然还有以后该怎么办没有写,其实我也在摸索中,嘿嘿,我写了那么多废话,无非是想要大家明白几个道理:
第一、首先要给自己定一个明确的目标。
第二、分清楚语言和工具的区别。
第三、把思想放在首位,语言在精不在多,学好了一门语言再去学其他的,就易如反掌了。第四、工具是经常被淘汰的,不要被工具所迷惑,坚定自己的信念。
第五、无论选择做什么系统开发,首先要去了解这个系统,只有了解了这个系统才能在上面为所欲为。
大概也就差不多了,不全或者写得不好的地方请指正,个人发觉全是废话,呵呵,就这么多了吧,欢迎大家跟我一起学习,一起进步,一起交流。当然最后仍然是那句:
努力+坚持=成功
网易16G“邮箱航母”横空出世!
创纪录16G超大容量(送6G免费网盘),支持手机邮、通讯录克隆、图片签名、网络书签„„
第五篇:编程教案
常用编程指令的应用
车削加工编程一般包含X和Z坐标运动及绕Z轴旋转的转角坐标C。
(1)快速定位(G00或G0)刀具以点位控制方式从当前所在位置快速移动到指令给出的目标位置。
指令格式:G00 X(U)Z(W);(2)直线插补(G01或G1)
指令格式:G01 X(U)Z(W)F ;
图1 快速定位 图2 直线插补
G00 X40.0 Z56.0; G01 X40.0 Z20.1 F0.2;
/绝对坐标,直径编程; /绝对坐标,直径编程,切削进给率0.2mm/r G00 U-60.0 W-30 G01 U20.0 W-25.9 F0.2;
/增量坐标,直径编程 /增量坐标,直径编程,切削进给率0.2mm/r(3)圆弧插补(G02或G2,G03或G3)1)指令格式: G02 X(U)_Z(W)_I_K_F_ ; G02 X(U)Z(W)R F ;
G03 X(U)_Z(W)_I_K_F_ ; G03 X(U)Z(W)R F ;
2)指令功能: 3)指令说明: ①G02为顺时针圆弧插补指令,G03为逆时针圆弧插补指令。圆弧的顺、逆方向判断见图3左图,朝着与圆弧所在平面相垂直的坐标轴的负方向看,顺时针为G02,逆时针为G03,图3右图分别表示了车床前置刀架和后置刀架对圆弧顺与逆方向的判断;
图3 圆弧的顺逆方向
②如图4,采用绝对坐标编程,X、Z为圆弧终点坐标值;采用增量坐标编程,U、W为圆弧终点相对圆弧起点的坐标增量,R是圆弧半径,当圆弧所对圆心角为0°~180°时,R取正值;当圆心角为180°~360°时,R取负值。I、K为 圆心在X、Z轴方向上相对圆弧起点的坐标增量(用半径值表示),I、K为零时可以省略。
图4 圆弧绝对坐标,相对坐标
图5 圆弧插补
G02 X50.0 Z30.0 I25.0 F0.3; G03 X87.98 Z50.0 I-30.0 K-40.0 F0.3;
G02 U20.0 W-20.0 I25.0 F0.3; /绝对坐标,直径编程
G02 X50.Z30.0 R25.0 F0.3; G03 U37.98 W-30.0 I-30.0 K-40.0 F0.3; G02 U20.0 W-20.0 R25.0 F0.3; /相对坐标,直径编程
(4)主轴转速设置(S)车床主轴的转速(r/min)为:
式中υ为圆周切削速度,单位缺省为m/min、D为工件的外径,单位为mm。
例如,工件的外径为200mm,要求的切削速度为300m/min,经计算可得
因此主轴转速应为478r/min,表示为S478。(5)主轴速度控制指令
数控车削加工时,按需要可以设置恒切削速度(例如,为保证车削后工件的表面粗糙度一致,应设置恒切削速度),车削过程中数控系统根据车削时工件不同位置处的直径计算主轴的转速。
恒切削速度设置方法如下:G96 S ; 其中S后面数字的单位为r/min。
设置恒切削速度后,如果不需要时可以取消,其方式如下:G97 S ; 其中S后面数字的单位为r/min。
在设置恒切削速度后,由于主轴的转速在工件不同截面上是变化的,为防止主轴转速过高而发生危险,在设置恒切削速度前,可以将主轴最高转速设置在某一个最高值。切削过程中当执行恒切削速度时,主轴最高转速将被限制在这个最高值。设置方法如下:G50 S ; 其中S的单位为r/min。
图6 主轴速度控制
例如:在刀具T01切削外形时用G96设置恒切削速度为200m/min,而在钻头T02钻中心孔时用G97取消恒切削速度,并设置主轴转速为1100r/min。这两部分的程序头如下:
G50 S2500 T0101 M08; /G50限定最高主轴转速为2500r/min;
G96 S200 M03; / G96设置恒切削速度为200m/min,主轴顺时针转动 G00 X48.0 Z3.0; / 快速走到点(48.0,3.0)G01 Z-27.1 F0.3; /车削外形 G00 Ul.0 Z3.0; /快速退回 T0202; /调02号刀具
G97 Sll00 M03; /G97取消恒切削速度,设置主轴转速为ll00r/min G00 X0.0 Z5.0 M08; /快速走到点(0,5.0),冷却液打开 G01 Z-5.0 F0.12; /钻中心孔(6)进给率和进给速度设置指令
在数控车削中有两种切削进给模式设置方法,即进给率(每转进给模式)和进给速度(每分钟进给模式)。
1)进给率,单位为mm/r,其指令为: G99; / 进给率转换指令,G01 X Z F ; / F的单位为mm/r 2)进给速度,单位为mm/min,其指令为: G98; / 进给速度转换指令
G01 X Z F ; / F的单位为mm/min
图7 进给率和进给速度
a:G99 G01 Z-27.1 F0.3;b:G98 G01 Z-10.0 F80;表示进给率为0.3mm/r 表示进给速度为80mm/min CNC系统缺省进给模式是进给率,即每转进给模式。(7)工件原点设置
工件坐标系的原点有两种设置方法。
1)用G50指令进行工件原点设置,分以下两种设置情况:
图8 工件原点设置 ①坐标原点设置在卡盘端面
如图8a所示,这种情况下z坐标是正值。工件原点设置在卡盘端面:
G50 X85.Z210.;/* 将刀尖当前位置的坐标值定为工件坐标系中的一点(85.,210.)。②坐标原点设置在零件右端面
如图8b所示,这种情况下Z坐标值是负值。工件原点设置在工件右端面:G50 X85.0 Z90.0; 则刀尖当前位置即为工件坐标系原点。(8)端面及外圆车削加工
端面及外圆的车削加工要用到插补指令G01。
为正确地编写数控程序,应在编写程序前根据工件的情况选择工件原点。确定好工件原点后,还必须确定刀具的起始点。
编程时还应考虑车削外圆的始点和端面车削的始点,这两点的确定应结合考虑工件的毛坯情况。如果毛坯余量较大,应进行多次粗车,最后进行一次精车,因而每次的车削始点都不相同。
图9 确定车削原点
a)工件原点在左端面时 b)工件原点在右端面时 1)工件原点在左端面 o0001 /* 程序编号o0001 N0 G50 X85.0 Z210.0; /* 设置工件原点在左端面 N1 G30 U0 W0; /* 返回第二参考点
N2 G50 S1500 T0101 M08; /* 限制最高主轴转速为1500r/min,调01号刀具,M08为打开冷却液
N3 G96 S200 M03; /* 指定恒切削速度为200m/min N4 G00 X40.4 Z153.0; /* 快速走到外圆粗车始点 N5 G01 Z40.2 F0.3; /* 以进给率0.3mm/r车削外圆 N6 X60.4; /* 台阶车削
N7 Z20.0; /*φ60.4mm处长度为20.0mm的一段外圆 N8 G00 X62.0 Z150.2; /* 刀具快速退到点(62.0,150.2)N9 X41.0; /*刀具快速走到点(41.0,150.2)N10 G01 X-1.6; /* 车削右端面
N1l G00 Zl52.0; /* 刀具快速退到点(-1.6,152.0)N12 G30 U0 W0; /* 直接回第二参考点以进行换刀 N13(Finishing); /*精车开始,括号为程序说明
N14 G50 S1500 T0202; /*限制最高主轴转速为1500r/min,调02号刀具 N15 G96 S250; /* 指定恒切削速度为250m/min N16 G00 X40.0 Z153.0 ;/*快速走到外圆精车始点(40.0,153)N17 G42 G01 Z151.0 F0.15;/*调刀尖半径补偿,右偏 N18 Z40.0; /*φ40.4mm一段外圆的精车 N19 X60.0; /*台阶精车
N20 Z20.0; /*φ60.0mm处长度为20.0mm外圆的精车 N21 G40 G00 X62.0 Z150.0; /*取消刀补 N22 X41.0; /*刀具快速走到点(41.0,150.0)N23 G41 G01 X40.0; /*调刀尖半径补偿,左偏 N24 G01 X-1.6; /*精车右端面
N25 G40 G00 Zl52.0 M09; /*取消刀补,切削液关
N26 G30 U0 W0 M05; /*返回第二参考点,主轴停止 N27 M30; /*程序结束 2)工件原点在右端面:工件原点设置在右端面与设置在左端面的区别仅在于Z坐标为负值,程序编写过程完全相同。O0002 ; /* 程序编号
N0 G50 X85.0 Z90.0 /* 设置工件原点在右端面 N2 G30 U0 W0; /* 返回第二参考点
N4 G50 S1500 T0101 M08; /* 限制最高主轴转速 N6 G96 S200 M03; /* 指定恒切削速度为 200m/min,主轴逆时针旋转
N8 G00 X30.4 Z3.0; /*快速走到点(30.4,3.0)N10 G01 W-33.0 F0.3; /*以进给率0.3mm/r粗车φ30.4处外圆 N12 U30.0 W-50.0; /*粗车锥面
N14 W-10.0; /*粗车φ60.4mm处长度为10的一段外圆 N16 G00 Ul.6 W90.2;/*刀具快速走到点(62.0,0.2)N18 U-31.0; /*刀具快速走到点(3l,0.2)N20 G01 U-32.6; /*粗车端面
N22 G00 W2.0; /*刀具快速走到点(-1.6,2)N24 G30 U0 W0; /*返回第二参考点 N26(Finishing); /*精车开始
N28 G50 S1500 T0202;/*设置主轴最高转速1500r/min,调2号刀具 N30 G96 S250; /* 指定恒切削速度为250m/min N32 G00 X30.0 Z3.0;/*刀具快速走到精车始点(30.0,3.0)N34 G42 G01 W-2.0 F0.15;/*调刀尖半径补偿,右偏 N36 W-31.0; /*精车ф30.4mm处外圆 N38 U30.0 W-50.0; /*精车锥面
N40 W-10.0; /*精车ф60.0mm处外圆
N42 G40 G00 U2.0 W90.0; /*取消刀补,刀具快速走到点(62,0.0)N44 U-31.0; /*刀具快速走到点(31,0.0)N46 G41 G01 U-1.0; /*调刀尖半径补偿,左偏
N48 G01 U-32.6; /*精车端面
N50 G40 G00 W2.0 M09; /*取消刀补,刀具快速走到点(1.6,2.0)N52 G30 U0 W0 M30; /*返回参考点,程序结束 实例:
如图10所示零件
图10 数控车削综合编程实例
N0050 G01 X32 Z0;N0110 G02 X16 Z-15 R2;N0060 G01 X-0.5;N0120 G01 X20;
N0070 G00 Z1;N0130 G01 Z35;N0080 G00 X10;N0140 X26;N0090 G01 X12 Z1;N0150 Z50;N0100 G01 X12 Z1;N0160 X32;为1500r/min,调1号刀具,M08为打开冷却液在这种情况下,如果设置指令写成: G50 X0 Z0;
G02、G03指令表示刀具以F进给速度从圆弧起点向圆弧终点进行圆弧插补。刀具以一定的进给速度从当前所在位置沿直线移动到指令给出的目标位置。
2.循环加工指令
当车削加工余量较大,需要多次进刀切削加工时,可采用循环指令编写加工程序,这样可减少程序段的数量,缩短编程时间和提高数控机床工作效率。根据刀具切削加工的循环路线不同,循环指令可分为单一固定循环指令和多重复合循环指令。(1)单一固定循环指令
对于加工几何形状简单、刀具走刀路线单一的工件,可采用固定循环指令编程,即只需用一条指令、一个程序段完成刀具的多步动作。固定循环指令中刀具的运动分四步:进刀、切削、退刀与返回。
1)外圆切削循环指令(G90)
指令格式 : G90 X(U)_ Z(W)_ R_ F_ 指令功能: 实现外圆切削循环和锥面切削循环。
刀具从循环起点按图11与图12所示走刀路线,最后返回到循环起点,图中虚线表示按R快速移动,实线表示按F指定的工件进给速度移动。
图11 外圆切削循环
图12 锥面切削循环
指令说明: ① X、Z 表示切削终点坐标值;
② U、W 表示切削终点相对循环起点的坐标分量;
③ R 表示切削始点与切削终点在X轴方向的坐标增量(半径值),外圆切削循环时R为零,可省略;
④F表示进给速度。例题 如图13所示,运用外圆切削循环指令编程。
G90 X40 Z20 F30
A-B-C-D-A X30
A-E-F-D-A X20
A-G-H-D-A
图13 外圆切削循环例题
例题 如图14所示,运用锥面切削循环指令编程。
G90 X40 Z20 R-5 F30 A-B-C-D-A X30
A-E-F-D-A X20
A-G-H-D-A
图14 锥面切削循环例题
2)端面切削循环指令(G94)
指令格式: G94 X(U)_ Z(W)_ R_ F_ 指令功能: 实现端面切削循环和带锥度的端面切削循环。
刀具从循环起点,按图15与图16所示走刀路线,最后返回到循环起点,图中虚线表示按R快速移动,实线按F指定的进给速度移动。
图15 端面切削循环 图16 带锥度的端面切削循环
① X、Z表示端平面切削终点坐标值;
② U、W表示端面切削终点相对循环起点的坐标分量;
③ R 表示端面切削始点至切削终点位移在Z轴方向的坐标增量,端面切削循环时R为零,可省略;
④ F表示进给速度。
例题: 如图17所示,运用端面切削循环指令编程。
G94 X20 Z16 F30
A-B-C-D-A Z13
A-E-F-D-A Z10
A-G-H-D-A
图17 端面切削循环例题 图18 带锥度的端面切削循环例题
例题: 如图18所示,运用带锥度端面切削循环指令编程。
G94 X20 Z34 R-4 F30
A-B-C-D-A Z32
A-E-F-D-A Z29
A-G-H-D-A(2)多重复合循环指令(G70——G76)运用这组G代码,可以加工形状较复杂的零件,编程时只须指定精加工路线、径向轴向精车留量和粗加工背吃刀量,系统会自动计算出粗加工路线和加工次数,因此编程效率更高。
在这组指令中,G71、G72、G73是粗车加工指令,G70是G71、G72、G73粗加工后的精加工指令,G74 是深孔钻削固定循环指令,G75 是切槽固定循环指令,G76是螺纹加工固定循环指令。
1)外圆粗加工复合循环(G71)指令格式 : G71 UΔd Re G71 Pns Qnf UΔu WΔw Ff Ss Tt
指令功能: 切除棒料毛坯大部分加工余量,切削是沿平行Z轴方向进行,如图19所示。A为循环起点,A-A'-B为精加工路线。
图19 外圆粗加工复合循环 图20 端面粗加工复合循环 指令说明:①Δd表示每次切削深度(半径值),无正负号; ② e表示退刀量(半径值),无正负号;
③ ns表示精加工路线第一个程序段的顺序号; ④ nf表示精加工路线最后一个程序段的顺序号;
⑤ Δu表示X方向的精加工余量,直径值;
例题 :如图21所示,运用外圆粗加工循环指令编程。
图21 外圆粗加工复合循环例题 N010 G50 X150 Z100 N020 G00 X41 Z0 N030 G71 U2 R1 N040 G71 P50 Q120 U0.5 W0.2 F100 N050 G01 X0 Z0 N060 G03 X11 W-5.5 R5.5 N070 G01 W-10 N080 X17 W-10 N090 W-15 N100 G02 X29 W-7.348 R7.5 N110 G01 W-12.652 N120 X41 N130 G70 P50 Q120 F30
2)端面粗加工复合循环(G72)指令格式: G72 WΔd Re
G72 Pns Qnf UΔu WΔw Ff Ss Tt
指令功能: 除切削是沿平行X轴方向进行外,该指令功能与G71相同,如图20所示。指令说明 :
Δd、e、ns、nf、Δu、Δw的含义与G71相同。例题:如图22,运用端面粗加工循环指令编程。
图22 端面粗加工复合循环例题 图23 固定形状切削复合循环 N010 G50 X150 Z100 N020 G00 X41 Z1 N030 G72 W1 R1 N040 G72 P50 Q80 U0.1 W0.2 F100 N050 G00 X41 Z-31 N060 G01 X20 Z-20 N070 Z-2 N080 X14 Z1 N090 G70 P50 Q80 F30 3)固定形状切削复合循环(G73)指令格式: G73 UΔi WΔk Rd G73 Pns Qnf UΔu WΔw Ff Ss Tt
指令功能:适合加工铸造、锻造成形的一类工件,见图23所示。指令说明: Δi 表示X轴向总退刀量(半径值); ΔK 表示Z轴向总退刀量; d 表示循环次数;
ns 表示精加工路线第一个程序段的顺序号; nf 表示精加工路线最后一个程序段的顺序号; Δu 表示X方向的精加工余量(直径值); Δw 表示Z方向的精加工余量。
①固定形状切削复合循环指令的特点:
a.刀具轨迹平行于工件的轮廓,故适合加工铸造和锻造成形的坯料;b.背吃刀量分别通过X轴方向总退刀量Δi和Z轴方向总退刀量ΔK除以循环次数d求得;c.总退刀量Δi与ΔK值的设定与工件的切削深度有关。
②使用固定形状切削复合循环指令,首先要确定换刀点、循环点A、切削始点A’和切削终点B的坐标位置。分析上图,A点为循环点,A’→B是工件的轮廓线,A→A’→B为刀具的精加工路线,粗加工时刀具从A点后退至C点,后退距离分别为Δi+Δu /2,Δk+Δw,这样粗加工循环之后自动留出精加工余量Δu /
2、Δw。
③顺序号ns至nf之间的程序段描述刀具切削加工的路线。例题: 如图14所示,运用固定形状切削复合循环指令编程。
图24 固定形状切削复合循环例题 图25 复合固定循环举例
N010 G50 X100 Z100 N020 G00 X50 Z10 N030 G73 U18 W5 R10 N040 G73 P50 Q100 U0.5 W0.5 F100 N050 G01 X0 Z1 N060 G03 X12 W-6 R6 N070 G01 W-10 N080 X20 W-15 N090 W-13 N100 G02 X34 W-7 R7 N110 G70 P50 Q100 F30 4)精车复合循环(G70)指令格式: G70 Pns Qnf
指令功能:用G71、G72、G73指令粗加工完毕后,可用精加工循环指令,使刀具进行A-A`-B的精加工,(如图24)
指令说明:
ns表示指定精加工路线第一个程序段的顺序号; nf表示指定精加工路线最后一个程序段的顺序号;
G70~G73循环指令调用N(ns)至N(nf)之间程序段,其中程序段中不能调用子程序。5)复合固定循环举例(G71与G70编程)
加工图25所示零件,其毛坯为棒料。工艺设计参数为:粗加工时切深为7mm,进给速度0.3mm/r,主轴转速500r/min;X向(直径上)精加工余量为4 mm,z向精加工余量为2mm,进给速度为0.15mm/r,主轴转速800mm/min。程序设计如下: N01 G50 X200.0 Z220.0;N02 G00 X160.0 Z180.0 M03 S800;N03 G71 P04 Q10 U4.0 W2.0 D7.0 F0.3 S500;N04 G00 X40.0 S800;N05 G01 W-40.0 F0.15;N06 X60.0 W-30.0;N07 W-20.0;N08 X100.0 W-10.0;N09 W-20.0;N10 X140.0 W-20.0;N11 G70 P04 Q10;N12 G00 X200.0 Z220.0;N13 M05;N14 M30;3.螺纹加工自动循环指令
(1)单行程螺纹切削指令G32(G33,G34)指令格式 : G32 X(U)_ Z(W)_ F_
指令功能:切削加工圆柱螺纹、圆锥螺纹和平面螺纹。指令说明:
格式中的X(U)、Z(W)为螺纹中点坐标,F为以螺纹长度L给出的每转进给率。L表示螺纹导程,对于圆锥螺纹(图26),其斜角α在45°以下时,螺纹导程以Z轴方向指定;斜角α在45°~90°时,以X轴方向指定。
①圆柱螺纹切削加工时,X、U值可以省略,格式为: G32 Z(W)_ F _ ; ②端面螺纹切削加工时,Z、W值可以省略,格式为: G32 X(U)_ F_;
③螺纹切削应注意在两端设置足够的升速进刀段δ1和降速退刀段δ2,即在程序设计时,应将车刀的切入、切出、返回均应编入程序中。
图26 螺纹切削 图27 螺纹切削应用 螺纹切削例题: 如图27所示,走刀路线为A-B-C-D-A,切削圆锥螺纹,螺纹导程为4mm , δ1 = 3mm,δ2 = 2mm,每次背吃刀量为1mm,切削深度为2mm。G00 X16 G32 X44 W-45 F4 G00 X50 W45 X14 G32 X42 W-45 F4 G00 X50 W45(2)螺纹切削循环指令(G92)
指令格式 : G92 X(U)_ Z(W)_ R_ F_ 指令功能: 切削圆柱螺纹和锥螺纹,刀具从循环起点,按图28与图29所示走刀路线,最后返回到循环起点,图中虚线表示按R快速移动,实线按F指定的进给速度移动。
图28 切削圆柱螺纹 图29 切削锥螺纹 指令说明:
①X、Z表示螺纹终点坐标值;②U、W表示螺纹终点相对循环起点的坐标分量;
③R表示锥螺纹始点与终点在X轴方向的坐标增量(半径值),圆柱螺纹切削循环时R为零,可省略;
④F表示螺纹导程。
例题: 如图30所示,运用圆柱螺纹切削循环指令编程。
图30 切削圆柱螺纹例题 图31 切削锥螺纹例题 G50 X100 Z50 G97 S300 T0101 M03 G00 X35 Z3 G92 X29.2 Z-21 F1.5 X28.6 X28.2 X28.04 G00 X100 Z50 T0000 M05 M02
例题 : 如图31所示,运用锥螺纹切削循环指令编程。G50 X100 Z50 G97 S300 T0101 M03 G00 X80 Z2 G92 X49.6 Z-48 R-5 F2 X48.7 X48.1 X47.5 X47.1 X47 G00 X100 Z50 T0000 M05 M02
(3)螺纹切削复合循环(G76)
指令格式 : G76 Pm r a QΔdmin Rd G76 X(U)_ Z(W)_Ri Pk QΔd Ff
指令功能:该螺纹切削循环的工艺性比较合理,编程效率较高,螺纹切削循环路线及进刀方法如图32所示。
图32 螺纹切削复合循环路线及进刀法 指令说明:
②r表示斜向退刀量单位数,或螺纹尾端倒角值,在0.0f—9.9f之间,以0.1f为一单位,(即为0.1的整数倍),用00—99两位数字指定,(其中f为螺纹导程); ③a表示刀尖角度;从80°、60°、55°、30°、29°、0°六个角度选择;
④Δdmin:表示最小切削深度,当计算深度小于Δdmin,则取Δdmin作为切削深度; ⑤d:表示精加工余量,用半径编程指定;Δd :表示第一次粗切深(半径值); ⑥X、Z:表示螺纹终点的坐标值; ⑦U:表示增量坐标值; ⑧W:表示增量坐标值;
⑨I:表示锥螺纹的半径差,若I=0,则为直螺纹; ⑩k:表示螺纹高度(X方向半径值); G76螺纹车削实例
图33所示为零件轴上 的一段直螺纹,螺纹高度为3.68,螺距为6,螺纹尾端倒角为1.1L,刀尖角为60°,第一次车削深度1.8,最小车削深度0.1,精车余量0.2,精车削次数1次,螺纹车削前先精车削外圆柱面,其数控程序如下:
图33 螺纹切削多次循环G76指令编程实例 O0028 /程序编号
N0 G50 X80.0 Z130.0;/设置工件原点在左端面 N2 G30 U0 W0;/返回第二参考点
N4 G96 S200 T0101 M08 M03;/指定切削速度为200m/min,调外圆车刀 N6 G00 X68.0 Z132.0;/快速走到外圆车削起点(68.0,132.0)N7 G42 G01 Z130.0 F0.2;N8 Z29.0 F0.2;/外圆车削 N9 G40 G00 U10.0;N10 G30 U0 W0;N12 G97 S800 T0202 M08 M03;/取消恒切削速度,指定主轴转速800r/min,调螺纹车刀 N14 G00 X80.0 Z130.0;/快速走到螺纹车削循环始点(80.0,130.0)N16 G76 P011160 Q0.1 R0.2;/循环车削螺纹 N18 G76 X60.64 Z25.0 P3.68 Q1.8 F6.0;N20 G30 U0 W0 M09;N22 M30;①m表示精车重复次数,从1—99;