可编程化

2024-05-08

可编程化(精选九篇)

可编程化 篇1

表达联系和状态的经典方法为面向对象语言, 即以对象的方式模拟状态与联系。 除此之外, 近年来不断增强的函数式编程语言主张抛弃状态而用函数的方式表达联系, 以上的方法都 在不同程 度上存在 一些问题 。 引进逻辑 编程类语 言 (logic programming) 的某些特殊功能简化了现代软件开 发中 “联系 ” 的大部分问题 。

主体分为3个部分 :(1) 主要介绍 了联系在 代码中的 具体含义以及联系在程序设计中造成的问 题 。(2) 对现有的主流编程模式进行全方向的探索, 并总结了其解决数据结构间联系问题的思路。(3) 具体提出自己 的扁平化 编程思想, 并通过实现一个简易的社交网站证明扁平化编程的有效性。 最后总结了主要发现, 并对扁平化编程的发展进行了未来展望。

1联系问题

联系 (Relation) 也可以译为关系, 在数据结构间普遍称为联系, 在数学中普遍称为关系。 文中通称为联系。 代码中联系多种多样, 在后面的章节里面会专注于数据之间的联系, 但是在这里先通过代码之间的显而易见的联系来说明联系在编程中的重要性。

1.1联系的重要性

从某种角度来说代码就是构建联系, 状态 (State) 本质上也是程序构建联系时为了表达 “变化” 所创造出来的特殊联系。

1.1.1代码中的联系

程序员在写程序时便是以构建联系为目的而写代码, 例如如下Java Script代码:

这些代码在构建的时候, 程序员建立了y等于sin (x) 的联系。 但是与此同时也构建了其他的联系, 例如:

y必须要在x之后被计算 (顺序联系 )

其中类型联系是程序员想要表达的联系, 但是顺序联系很明显对解决y是sin (x) 并无实质性帮助。 如果没有类型联系, 如下代码就会出现一个很奇怪的错误:

在nodejs环境下运行以上代码会获得Na N作为结果, 这显然不是程序员想要的, 这说明程序员在实际写程序的时候内心还有一种联系:

y与x必须为数字 (类型联系 )

但是js是一门弱类型语言, 类型联系很难通过有效的方式建立起来, 并且如果想要打消顺序联系只有通过函数来模拟懒惰执行 (lazy evaluation)。

与此相对的是更为高级的懒惰执行语言, 例如Haskell上并不存在如上的顺序联系。

同时如果x有类型问题, 例如x为非数字时编译器会自动指出 , 在这点上Haskell对程序员 实际联系 的建模比 起Java Script来讲好很多 。

由此得出结论:

(1) 编程从某种角度就是对联系的建模 。

(2) 程序有时难以实现程序员打算架构的联系 。

(3) 很多情况下程序为实现必要的功能 , 会增加不必要的联系。

(4) 编程模式对联系的实现程度有差异 , 同时语言可以简化编程模式 (即语言的选择能部分消除 (2), (3) 点中提到的问题)。

对此将程 序所构建 的联系与 程序员本 身所设想 的联系的 差异称之 为联系紊 乱 , 称之为紊 乱的原因 是程序员 很多时候 都对这种 差异本身 不知情 , 或者即使 知情也很 难处理 ( 例如之前的Java Script程序可以强行用typeof确保变量的声明, 但是这样又会平白无故增加了程序代码)。 而且联系紊乱是程序中漏洞、 错误的主要来源, 也是软件开发维护成本的主要来源。

1.1.2变量、状态以及联系

变量在面向对象语言中无处不在, 变量最大的缺点是变量极有可能打破程序员原有设想的联系, 使得程序联系更为复杂。

在短期内, 下列Java Script代码中y与x有确定的联系。

但在长期内, 以上代码因为变量的存在, x有可能发生改变, 而y没有一起发生改变, 打破原有的直接联系, 使得必须应用其他的辅助函数:

而状态是许多变量构成的整个系统。

在研究状态之前, 必须要区分 “状态” 和 “变化”。 程序中 “变化” 是一定存在的, 但是 “状态” 有时可以 避免的 。 如对比以下的Haskell代码和Ruby代码。

两个代码本质上的区别是Ruby中x表达了一个 “状态”, x之后可变 , 而Haskell代码中x <- get Line看似是表达 “ 状态”, 实际上只是语法, 与 “状态” 毫无关系。 上述Haskell代码中的main最终的类型是IO Monad (注意不是函数), 代表一个 “变化”。 直接反应了编程者对于程序 “变化” 的意愿 (而不是代表状态 )。

状态是现代程序中最难以处理的部分, 维护成本也是最大的。 程序员维护需要理解程序, 但很难理解一个状态一直变化的程序, 状态一旦出错, 除了重新初始化之外很难解决。 对此应该尽量避免状态而尽量使用变化。

状态本质上是程序构建联系时为了表达 “变化” 所创造出来的特殊联系。

1.1.3状态问题

因为内部大量的变量, 状态会产生无数的情况使得程序很难调试。

例如, 现在的单元测试方法, 在测试前都得初始化整个程序以及状态, 但是因为状态的多变性导致完全无法测试程序的所有状态, 从而频频出现状态问题。 而状态一旦出错又很难立即获得当前所有变量的值, 即使获得所有变量的值也很难推断出到底是哪里出错。 由此可见状态模糊了程序进出的联系。

1.2数据结构之间联系及现有解决方案

数据结构是对现实中的物体的建模。 现实物体之间存在联系, 相对应的, 数据结构之间也会存在有联系。 但现有开发思路对数据结构之间的联系处理十分不完善。

1.2.1数据结构之间的联系

以一个真实样例简单地模拟一个联系: 住房联系。 假设存在住房a,b,c, 人物alice,bob,carol,dylan。

这些联系的表达为:

那么在业务逻辑中假如要实现如下方法 :

(1) 一个房子里住着几个人 。

(2) 哪个人住在x房间内 。

因为我们的模型中的联系 是单向的 , 或者说是 分层的 , 所以说以上的业务逻辑都需要对persons数组进行循环。 导致房屋之间不知道互相的存在 (无法检测对方), 同时人物之间不知道互相的存在, 同时房屋无法获取人物。

当然可以 通过给房 屋添加一 个给人物 的指针来 表示双向的联系 , 但是这样 多余的指 针又平白 无故增加 不必要的 联系 。

1.2.2已有解决方案及其不足

数据结构之间问题一直存在, 近年来成为软件开发的重要问题的原因是现实数据大量增加, 与此同时复杂的现实数据之间的联系在如今互联网时代十分重要。 但是至今也未有很好的解决方案。

近年来也不断地有解决方案涌出, 但仍然存在缺陷。 在这里列举其中两个并对其进行分析。

其一为Component-Based Entity System (实体系统)。

实体系统是为游戏开发所设想的系统, 游戏开发中最重要的便是联系, 物体之间的碰撞检测, UI绘制等要求开发者对程序内部逻辑有极强的操控力。

实体系统主体思想便是:

(1) 使用 “组件 ” 进行组合 (Composition) 生成实体而不是使用 “继承”, 保持一个很浅的继承树。

(2) 使用比组件更高一级的System来对组件本身进行改变。

(3) 组件本身只有数据结构 , 没有任何逻辑 , 逻辑都在System内 。

实体系统最期望解决的便是简化通过无限继承所带来的代码臃肿重复, 一个变量多个操控等的问题。

实体系统成功的地方在 于继续完 全摒弃面 向对象思 路 , 将数据结构和业务逻辑分开, 同时一个变量一个操控点, 使得问题易于解决。

实体系统的悲哀在于实体系统使得整个面向对象框架崩塌, 在Java和C++中用实体系统就相当于抛弃了整个面向对象框架而转入函数式编程语言。

实体系统的不足在于仍旧使用的是纯树状的结构, 而采用system对component的读取来模拟两者之间的联系, 并无法合理地表示两个实体之间的复杂联系。

其二为Functional Reactive Programming (FRP)。

FRP最强大的一点便是将时间 、 用户输入等本身一定可变的量作为 “信号”(Signal), 并将所有的其他因素当做信号的因变量, 彻底消除了状态的存在。 但是FRP在数据结构方面仍旧是空白。 FRP最强大的功能便是可以直接写出变量之间的联系。

FRP本身适合编写输入经常变化的软件 , 例如GUI、 游戏等, FRP与文中的方法不冲突。 甚至本文最后的实例部分还会使用FRP的思路。

经过对模型以及联系 、 状态的研究 , 可以得出以下结论 :

(1) 变量产生状态 , 状态产生无法控制的复杂度 。

(2) 树状结构是当前最流行的数据结构间建立联系的方法, 但是树状结构不适合表示数据结构之间的确切联系。

(3) 程序应当最大程度地反映程序员设想中的联系 。

(4) 现有模式虽然对状态问题处理逐渐成熟 , 但是数据结构之间的联系处理仍然薄弱。

2联系在现有编程模式上的表示

之前所提及的现有的解决方案都是近15年才逐步被提出并且实施的, 现有的实现仍不成熟, 在现在的市场上应用并不广泛。 并且这两种解决方案都对最重要的联系———数据结构之间的联系视而不见, 最终势必在数据结构的处理上会产生大量的问题。

目的就是探索处理数据结构联系的方法。 在提出自己的解决方案之前, 先通过对现有的主流编程模式进行全方向的探索, 寻找可以借鉴的思路, 并发现其不足, 以提出有针对性的改善, 目的是寻找一个 “最大程度地反映程序员设想中的联系” 的方法。

2.1面向对象

从Smalltalk自成一虚拟机开始, 面向对象便一直靠着状态维持程序内部之间的联系, 近期随着传统面向对象的没落开始自我革新。

2.1.1传统面向对象

传统面向对象中状态的表 示是基于 很多对象 中的变量 , 联系是基于这些对象中的方法对其他对象的操作。

传统面向对象没有优点, 缺点是在现今多核CPU时代, 传统面向对象因为其变量变化的本质在物理层面上就不安全, 而采用锁方法容易造成死锁等问题。 采用Actor模型便逃离了面向对 象本质 , 而采用STM (Software Transactional Memory固然可以避免这个问题, 但是面向对象中无尽的变量以及经常出现的深继承树使得程序难以理解, 出错时更是很难究其原因。 传统面向对象应当被局限于在计算机模拟研究上, 不应当被用于实际开发。

2.1.2新型面向对象(以Scala为代表)

新型面向对象 , 例如Scala, Ruby近年来取 得了巨大 成功。 新型面向对象不局限于增加了某些函数式编程以及lisp机能的语言, 同时也包括用Java, C++书写的采用编程模式的老式面向对象语言。 这些语言成功的原因在于他们能够在原有生态环境上继续生存, 并不代表他们的模式十分优越。 其中Scala, Ruby为人称道的地方跟面向对象毫无联系 (Scala取材于Haskell等函数式编程语言, Ruby更多地取材自Lisp), 用Scala, Ruby面向对象方法书写的状态依然有很大问题 。 编程模式, 例如观察者模式 (Oberver Pattern) 很多都是在面向对象的基 础上实现 函数式编 程的权宜 之计 , 他们已经 逐渐被Clojure等语言取代 。

2.1.3面向对象总结

面向对象编程之间变量的 长期联系 可以说是 毫无联系 , 对象之间的可预测的互相修改最终会发展为不可预测的蝴蝶效应。 面向对象状态是基于无联系所成立的, 变量之间联系随着状态的变化最终趋近于完全的混乱。

2.2函数式编程

函数式编程具有很确实的理论起源, 并且其中有十分强大的抽象化机制Monad可以将状态完美融入纯函数中。 函数式编程势必会成为未来的趋势。

2.2.1非纯函数式编程

Clojure, OCaml为代表的非纯函数式编程代表的是一种特殊的函数式编程, 这两种语言允许非纯函数的存在, 使得状态依旧在这两种语言中存在并且可以被改变、 替换, 函数式编程所提供的数据以及业务逻辑的区分使得这类语言不仅有函数式编程的简略, 同时还具有非常容易的副作用 (Side Effect) 操作 , 使得切换至这类编程模式对来自其他编程模式的程序员十分容易。

2.2.2纯函数式编程

代表语言Haskell。 纯函数式 语言中不 存在变量 , 并且所有的函数均是 “纯函数”。 即只要保持每次的函 数参数不 变 , 则函数返 回值也不 变 。 Haskell中一切函 数均纯函 数的思想 使得程序 的联系以 及测试比 起使用非 纯函数的 语言简便很多。

Haskell内部的状态由Monad抽象化 , 使得状态的变化被抽象化为纯函数, 并且使整个程序易于理解。 Haskell中无变量的特性使得并行处理Haskell完全安全。 其他处理变化量的纯函数方法有上文提到过的FRP等。

2.2.3函数式总结

函数式编程很好地模拟了单向对应, 函数即为黑箱, 输入和输出在纯函数理念下永远是确定的, 为测试提供了很多方便。 同时函数式编程基于的Lambda演算使得函数式编程能够保持短而简, 使得代码维护更为方便。

2.3逻辑式编程

之前列出过Haskell (函数式) 的代码, 也有Ruby (面向对象) 的代码, 但是并未给出逻辑式编程的代码, 鉴于逻辑式编程在国内的不知名度, 以及逻辑式编程在文中的重要性, 现通过解决实际问题的方式给出逻辑编程。

之前的住房系统可以在逻辑式编程语言Prolog中定义为:

代表bob和carol住在一个房子里面 。

其中live_together (X,Y) :- lives (X,Z) , lives (Y,Z) . 等价于以下相继式演算 (Sequent Calculus) 表达 :

同时等价于以下Horn子句:

live_together (X,Y) ←live (X,Z) , live (Y,Z)

Prolog本身即为利用Horn子句进行的 逻辑式编 程语言 , 即可以表示绝大多数联系同时可以用Prolog表示, Prolog本身会通过内部查找来找出所表述的联系。

Prolog中的逻辑 与我们编 程中经常 所说的布 林逻辑 ( Boolean Logic) 本质区别 在于Prolog中的逻辑 是一阶逻 辑 , 即可以用相继式演算表达, 可用极为简单的方式推倒的逻辑。 例如经典的逻辑语句:

苏格拉底是人 。

人终有一死 。

普通的布林逻辑完全无法推导出苏格拉底终有一死。 原因是只有高阶逻辑才能进行推倒。 如上的逻辑虽然可以用面向对象继承联系模拟出来, 但是一旦复杂点的逻辑联系比如说四色问题就不能用面向对象简易模拟了。

在Prolog命令行中 :

逻辑编程所代表的 “联系”(relation) 比普通的函数编程以及面向对象编程的树状数据结构联系更为宽泛。 换言之, 逻辑编程可以很好代表双向对应, 一个数据结构和另一个结构的联系在Prolog里面可以被一行代码完全抽象化。

2.3.1逻辑式编程对于状态的表达

没有。 逻辑式编程从来没有试图表示状态, 时间对逻辑式编程不重要。

2.3.2逻辑式编程对于联系的表达

极强。 逻辑式编程通过逻辑表达的语句 (即Horn子句) 表达联系, 并且语言本身基于联系的表达。

逻辑式编程重要的一大特性就是非确定性 (non-determinism) , 即一个搜索可能返回多个或者零个结果 , 这点极大符合现代数据的需求。

2.4实现思路

上面对单向对应以及双向对应进行了介绍, 现在对其处理数据结构联系的思路总结如下。

2.4.1单向对应以及变化

文中提到了变化、 状态, 但是这两个只是联系的特殊形式, 现在将这几个概念总结如下:

变化是对计算机原有状态的单向对应。

状态是多个变化累计而成的某一时刻的计算机状态。

又因为纯函数式编程语言很好地模拟了单向对应, 在此给出推论: 纯函数语言适合书写计算机变化。

2.4.2双向对应以及数据结构

现代数据的一个特点就 是数据之 间的 “联系 ” 很复杂 。 例如简单 的一个社 交网站中 联系便错 综复杂 , 例如两个 用户之间 的好友联 系 , 或者好友 的好友联 系 , 或者群组 以及用户 联系 。 这些联系 的本身表 达在传统 的面向对 象语言中 便是新建 的 “联系 ” 模型 , 模拟Prolog等语言本 身的联系 模型。

例如如下的Active Record模型:

但这些模型永远不会达到Prolog本身描述联系的简洁性, 平白无故增加开发成本。

结论: 双向对应以及复杂的逻辑联系适合用逻辑编程语言表示

2.4.3面向对象与无联系

面向对象创建的联系以及状态模型不适合用于现在基于数据的软件, 因为面向对象通过变量鼓励无联系。

3扁平化编程

基于以上的讨论, 可以发现: 联系问题并没有得到很好的解决。 本部分在现有的解决方案的基础上, 提出新型的扁平化编程模式, 可以对数据之间的联系有一个较为完善的解决。

扁平化编程模式可以如图1所示。

扁平化编程最大优点是它将整个业务逻辑分步执行, 并将每步的职责交给最适合的编程模式处理, 各司其职。 使得程序内部联系简化, 易于修改并移植。

数据在读取之后直接交给逻辑式编程进行逻辑判断建立双向对应之后逻辑分析, 然后交给函数式编程进行实际数据处理, 最后通过函数式编程直接对计算机产生变化。

值得注意的是就如同非纯函数式编程语言提倡纯函数允许副作用一样, 扁平化编程提倡完全按照上述顺序进行业务逻辑, 但是也并不反对有时的在数据处理时回调逻辑式编程来处理现实问题。

3.1概述

“ 扁平化 ” 的名字表明这 种编程模 式试图消 除程序内 部分工不均所带来的回调。 传统面向对象编程中对象之间互相调用方 法 , 以此反复 。 实际上就 是堆积了 大量的状 态以及IO。 函数式编程处理数据时则需要不停地 对数据进 行筛选 , 不停地带入新的参数来整理出数据结构之间的关联以模拟双向对应。

3.2编程实例:目标

下面举一个实例来说明扁平化编程的过程, 来展示它对数据结构联系问题较为完善的解决。 这个实例为建立一个社交网站, 把重心放在好友之间的联系上。

3.3业务逻辑

以下是扁平化编程的过程在此案例中的如图2所示。

3.4语言选择:Clojure

在此选择Clojure, 一种寄居于JVM上面的以Lisp为语法的函数式编程语言作为的业务语言。

选择Clojure而不是其他的纯函数语言 (例如Haskell) 的原因是Clojure提供了成熟的数据库读写模块, 一个功能全面的Mini Kanren (嵌入式逻辑编程语言) 实现, 并且Clojure本身Lisp的语法使得逻辑式编程部分与函数式编程部分可以完美拼接。

3.5数据结构

数据结构 为了表示 方便 , 用korma库来替建 立SQL数据库 。

这些用户之间都有一个 “喜欢” 联系, 如果两个人互相喜欢对方, 那么则两个人互为好友。 具体喜欢的数据库初始化过于繁杂难以看懂, 故在这里直接给出喜欢的联系。

1 <-> 2; 2 <-> 3; 2 <-> 5; 2 <-> 4; 3 <-> 4; 4 <-> 5; 5 <-> 6; 5 <-> 8; 4 -> 9; 4 -> 10; 10 -> 11

其中双箭头代表互相喜欢, 单箭头表示仅仅是单方向的喜欢。

3.6逻辑编程

直接读取数据库, 表示两个人的互相喜欢联系。

如果两个人互相喜欢则互为朋友。

如果两个人共有两个共同的好友则这两个人可能认识。

可以看出逻辑编程下的用户联系非常直截了当, 同等状态下的函数编程则需要进行大量的搜索来得到相同的成果。

3.7函数式编程

在此因为只是网页服务器的返回html, 没有放出的价值故在此省略。

3.8结论

现有的数 据库架构 可以很轻 松地融入 扁平化编 程的架构中。

4结语

已经说了现代软件开发中最大问题就是数据结构之间的联系问题。 同时也说明假如通过特殊的架构, 这种问题能够被合理地解决。 文中提出的扁平式逻辑便是这种特殊架构的一个例子。

FRP在被广泛认知之后的5年内得到了为了这种架构专门设计出来的语言Elm, 这次研究中的遗憾就是没有时间去给这种编程方式设计出一个专门的语言。 本研究的一个后续发展可能是为扁平式编程设计一种专门语言。

可编程化 篇2

小学信息技术学科作为综合实践活动课程的一门分支课程,有着举足轻重的作用。随着信息技术的飞速发展,传统意义上的信息技术知识和技能已远远不够,应在让学生掌握传统意义上的一些信息技术和技能的基础上,还应该培养他们对信息技术的兴趣与爱好,养成良好的行为习惯,提高获取知识、运用知识解决实际问题的能力,更应该鼓励学生在信息技术领域不断质疑、不断创新,从而为他们打下良好的基础,使他们更好地适应飞速发展的信息时代。基于以上认识,下学期我校将面向三-六年级开展小班化游戏编程教学研究。

一、研究背景

近几年人工智能的迅速发展,使得国际上许多发达国家已经面向中小学生普及编程教育。我国国务院也于20xx年颁布了《新一代人工智能发展规划》,明确提出“实施全民智能教育项目,在中小学阶段设置人工智能相关课程推广编程教育”。

结合上述国际背景,1月中旬我有幸参加了中国教育技术协会十三五重大课题攻关项目“基于游戏化教育教学实践创新研究”的重点课题“区域实施以计算机思维培养为目标的人工智能编程策略研究”开题报告活动。在市教科院信息技术教研员陆德旭、中国海洋大学教育技术系副主任孙艳霞副教授、中国教育技术协会游戏专业发展委员会秘书长肖海明等专家领导的引领和指导下,结合我校小班化教学的实际,我明确了下一步信息技术学科教学工作的重心,以SCRATCH游戏编程教学为突破口,重点培养学生的计算思维,以提升学生的信息技术核心素养。

二、研究措施

1.以课堂教学为抓手,面向全体学生打牢基础

基于学生都喜欢玩游戏这一特点,我校开展SCRATCH游戏编程特色教学,针对scratch软件的学习以“项目式”教学展开,将所学知识与技能融合到一个简单的小游戏中,再让学生以小组为单位协同合作完成游戏的设计。学生在学习过程中不仅掌握知识与技能还能感受到在“做中玩”的.乐趣。

2.社团活动培养兴趣

开展scratch游戏编程社团,招纳一批对scratch游戏编程特别感兴趣的同学,进行项目教学的提升训练,让这些孩子先成长起来再来带动组里的其他同学,最后,辐射到带动整个班级的同学一起来学习游戏编程。

3.参赛竞赛激发斗志

依据前期参加青岛市NOC大赛,青岛市中小学生科技节、全国中小学电脑制作活动,我校学生都取得了不错的成绩,因此,我将仍以“竞赛”来带动学生的学习的自主性和积极性。

4.课题研究引领发展

基于中国教育技术协会十三五重大课题攻关项目“基于游戏化教育教学实践创新研究”的重点课题研究团队的力量,“引进来,走出去”的方式,引进核心团队的老师来为我们送课,让农村的孩子也享受到最先进的信息科学技术。

三、研究步骤

第一阶段:课题准备阶段(20xx年1月——20xx年3月)

(一)制定研究方案,进行理论学习。

(二)设计教师、学生、家长问卷调查表,对本校创客教育现状进行调查,并做好调查分析报告。

第二阶段:课题研究实施阶段(20xx年4月——20xx年7月)

(一)着手进行课题研究,不断发现存在问题并提出对策。

(二)及时调整方案,深入探索研究。

(三)交流、总结和推广优秀成果,完成阶段性研究报告或论文等。

第三阶段:课题研究结题阶段(20xx年8月——20xx年10月)

(一)收集好各类研究资料、整理经验、做好分析、总结研究过程中的各类阶段成果材料(包括文本类、网络类、资源类、应用功能类等)进行提炼提升,写出有新意、有深度、科学性强、有创新价值的专题论文。

(二)课题组组织编印课题论文集,向课题主管部门上报成果材料。

(三)撰写课题实验总研究报告。

(四)实验研究成果展示,邀请课题指导小组和上级教科研部门专家进行结题工作指导。

(五)准备结题材料,申报结题。

四、创新之处

可编程化 篇3

一、引言

传统的曲轴曲柄圆、连杆颈圆弧加工是采用偏心夹具把工件调整到机床回转中心,以加工曲柄圆中心或连杆颈圆弧中心作为机床回转中心,通过车削加工的方式来完成加工,此加工方式加工效率低,偏心夹具调整时间长,工人找正工件误差大且工件找正时对操作者操作技能要求较高。为实现曲轴产业的高效加工,引入了新的加工方式,目前我们引入大型卧式车铣加工中心,可实现三轴以上联动铣削加工,该方式利用车铣加工中心三轴联动的方式,以曲轴主轴颈中心作为回转中心,加工刀具跟随曲轴曲柄圆和连杆颈做空间圆弧插补运动,以铣削的方式完成加工。当机床C轴(或A轴)做旋转运动,刀具在x轴和Y轴平面内以圆弧运动跟随机床旋转轴C轴运动时,编制程序时不容易找到编程所需的坐标点。要实现三轴以上加工程序的编制,目前主流的编程方法是采用编程软件编程,而编程软件编出来的程序会相当长,缺乏可读性,且不容易修改;如果手工编程,编程时间长,且需要每次作图才能确定其复杂的坐标点,如果绘制的图形不准确或坐标点精度不够,在程序运行时则容易出错及出现报警而导致程序的调试时间增长,影响加工效率及产品开发周期。

二、曲轴连杆颈、曲柄图样分析

本公司近年先后开发了多种船用、机车曲轴,而这些曲轴的曲柄外形轮廓80%都相似(如图1所示),就是尺寸大小不一样。针对目前批量小,交货周期短的特点,为缩短程序编制及调试周期,对各种曲轴的曲柄外形进行建模分析,寻求相似性,通过图1看以看出曲轴连杆颈是由一个与主轴颈中心相距一定距离的圆柱面,曲轴曲柄外形则是由与主轴颈中心有一定偏心距离的圆弧组成,由此我们可以把曲柄圆、连杆颈看成是以主轴颈作为回转中心加工由一定角度组成的偏心圆弧。因此需要开发一种能加工偏心圆弧的通用铣削子程序,以满足不同品种曲轴曲柄圆及连杆颈外圆加工。这样可以大大节省程序的编制及调试时间,减少程序出错几率。

三、程序编制

以图1中曲轴外形为例,机床操作系统:西门子840D;机床:车铣复合加工中心。

我们要写通用程序,就要使用参数化编程,参数化编程也称为零件类编程,就是对于同一类相似零件,通过使用变量而不是特定的尺寸数据和加工数据来进行编程,程序最大特点就是将有规律的形状或尺寸用最短且通用的程序段表示出来。

目前数控机床不管是做何种复杂的轨迹运动,其本质都是由无数细分的直线段组成,加工的任何复杂轮廓都是刀具走过无数个很小的直线段拼接而成。也就是说铣削曲轴偏心圆弧时需要写出C轴转6度X和Y的坐标点位置,C轴转b*2度X和Y的坐标点位置……这种程序编制方法也就是编程软件编程的原理,编制程序如下(参数坐标只是为了举例,没有实际意义)。

NIO Gl XlO Y20 C=DC(l+b*l)F800

N20 Xll Y22 C=DC(1+b*2)

N30 X14 Y23 C=DC(1+b*3)

为了保证铣削表面的圆度,机床主轴C轴每次增加的角度6要非常小,才能满足图样要求,如果机床主轴C在每个程序段增加的角度6较大则铣削出的圆会是一个明显的多边形,当铣削直径越大铣削出的多边形越明显。因此需要C轴每次转过很小的角度,而这样编制出的程序会很长;而每一个坐标点X、Y都需要CAD作图才能写出正确的坐标点,程序编制时间会非常长,程序读写和修改很不方便。

为了方便读写及修改,程序编制简单,我们通过建立数学模型来寻找各坐标参数点之间的相互关系。由图2和图3可以看出:刀具切削点始终与曲轴上加工的部位保持相切状态,当C轴旋转角度6时,坐标点X、Y和增加角度6之间存在一定的三角函数关系,这样程序中X、Y坐标点的赋值,可通过一个变量角度b,利用三角函数关系表示出来;C轴每次增加的角度b可以控制铣削圆形的圆度;通过C轴累计增加的角度b的总角度再结合if判断语句、goto跳转指令就可以完成一定角度偏心圆弧的循环铣削。

曲柄圆上任一铣削点坐标如下。

X=R+AC=R+R8*cos(a)

Y=AB=R8*sin(a)

当角度α增大b度时(机床C轴旋转b度),其坐标如下。

X1=R+AC=R+R8*cos(a+b)

Y1=AB=R8*sin(a+b)

连杆颈上任一铣削点坐标如下。

X=R+AB=R+R8*cos(a)

Y=AC=R8*sin(a)

当角度a增大b度时(机床C轴旋转b度),其坐标如下。

X1=R+AB=R+R8*cos(a+b)

Y1=AC=R8*sin(a+b)

当机床C轴,铣刀到达合适起始点X、Y、Z时以下程序段即可以完成一定角度圆弧的铣削。

R31=0

R15=1

角度增量,铣削连杆颈0.25

0.5,铣削曲柄0. 5-1

R9=圆弧半径

R16=-1

c轴转向

R5=铣削角度

R2=铣削预留安全角度 刀具快速移动到铣削点外距

开始铣削点之间的角度

R6=偏心圆弧中心线与开始铣削点连线夹角(图4)

MILLWEBR:

跳转标示

N630 IF (R3I《R5+R2》 铣削角度判段,决定铣

削角度

N640 R3I=R3I+R15

计算下次铣削角度

N650 Gl X=(R8*cos《R6+ 以GOI直线插补的方式

R3I)*R16》+R9 Y=《R8* X、Y、C轴到达指定坐

sin《R6+R3I)*R16》+

(R17*R16))C=DC

((R6+R3I)*R16) F800

N660 GOTOB_MILLWEBR 跳转语句

N670 ENDIF

以上程序段虽然可以实现偏心圆弧的加工,但在平时加工过程中,粗加工完精加工有一定的加工余量,我们需要分几刀来完成半精加工及精加工,所以在子程序里面可以使用G59偏置X轴来实现加工留量的分配;在测量头找正时,由于所有曲柄圆圆弧圆心与曲轴旋转中心连线角度无法测量,各个曲柄圆的角度只能通过与连杆颈的相对角度来计算确定,所以需要在子程序里面引入G59偏置C轴角度。

RlO=精加工佘量;精加工时数值为0

Rll=粗加工切削深度

RL2=粗加工铣削刀数

R3=偏心圆弧中心线与连杆颈中心线夹角。

G59 X=RIO+(RII*R12)C=R4或C=R3;附加零点偏置语句X偏置的数值就是偏心圆弧的留量

通过以上分析,偏心圆弧的铣削可以通过由带有R参数的程序来实现,具体程序如下。

R1-R17参数赋值

N10 STOPRE

N20 G58 Z=R1O1 X=O Y=O

G58零点偏置

C=R111+R3

N30 LLMILLCIRCLE

子程序调用

LLMILLCIRCLE为偏心圆弧加工子程序,内容如下:

(jia gong pian xin yuan hu zi cheng xu)

N10 R4=360R3

参数计算,铣削曲柄

圆2面参数(图4)

N20 R7=360-R5-R6

参数计算,铣削曲柄

圆2面参数(图4)

N30 IF (R16<>-I)OR(R16<>1) 参数赋值正确判断

N40 GOTOF END

N50 ENDIF

N60 IF (R17>$PTOOLR)

参数赋值正确判断

N70 GOTOF END

N80 ENDIF

N90 STOPRE

START:

N100 G59 X=RIO+(RII*R12)

G59零点附加偏置

C=R4

NllO GO X=R1+50

X轴快速进给到安

全位置

N120 R31=0

计算参数赋值

*******mill Web l or mill pin**********

N130 GO G94 Y=((R8*

铣刀Y、Z轴到达

sin((R6R2)*R16))+

S3=R13 M3=3预

(R17*R16)) Z=0

铣削位置,C轴转

C=DC((R6R2)*R16)

到预铣削位置,

刀具主轴正向以

R13转速开启。

N140 GO X=(R8*

X轴到达铣削

cos((R6R2)*R16))+

位置+lOmm处

R9+10

N150 G1 Y=((R8*

Y轴到达指定开始

sin((R6R2)*R16))+

铣削位置

(R17*R16)) M8

N160 G1 X=(R8*

在R2角度安全铣削

cos(R6*R16))+R9+

范围内,X、Y、

0.1 Y=((R8*sin((R6)*

C轴开始铣削

R16))+(R17*R16》

C=DC(R6*R16) F=R14

MILLWEBR:

跳转标示

N170 IF (R31<(R5+R2))

铣削角度范围判读

N180 R3I=R3I+R15

铣削角度递增

N190 G1 X=(R8*

以直线插补的方式

cos((R6+R3I)*R16))+R9

X、Y、C轴到达指

Y=((R8*sin((R6+R31)*

定坐标

R16))+(R17*R16))

C=DC((R6+R3I)*R16);

N200 GOTOB MILLWEBR 跳转语句

N210 ENDIF

N220 G59 X=RIO+RIl*R12 G59零点附加偏置

C=R3

N230 GO X=R1+50

X轴快速进给到安全

位置

N240 IF(R3==O)and(R6==0) 判断是铣削曲柄还是

铣削连杆颈。当R3和

R6参数都是0时,说

明铣削的是连杆颈,

则 N240-N320之间程

序段不执行。

N250 GOTOF MILLPIN

N260 ENDIF

**********mill wcb 2********

以下N240-N320意思同N130-N210

N270GOG94Y=((R8*sin((R7R2)*R16))+(R17*R16)) Z=0 C=DC((R7R2)*R16)S3=R13 M3=3

N280 GO X=(R8*cos((R7R2)*R16))+R9+10

N290 G1 Y=((R8*sin((R7R2)*R16))+(R17*R16)

N300 G1 X=(R8*cos(R7*R16))+R9+0.1 Y=((R8*sin((R7)*R16))+(R17*R16)) C=DC(R7*R16) F=R14

_MILLWEBL:

N310 IF (R3I<(R5+R2)

N320 R3I=R3I+R15

N330 G1 X=(R8*cos((7+R3I)*R16((+R9 Y=((R8*sin((R7+R3I)*R16((+(R17*R16(( C=DC((R7+R3I)*R16)

N340 GOTOB MILLWEBL

N350 ENDIF

_MILLPIN :

N360 R12=R12-1

N370 IF (R12>0)

N380 GOTO START

N390 ENDIF

N400 STOPRE

N410 GO X=R1+50 M9

END:

N420 M17

以上子程序的编制,在编制第一个程序时需要花费较长的时间做参数逻辑计算,但在以后编制新程序时,只需要按照图4和图5给指定R参数和切削参数赋值就可以完成偏心圆弧的铣削加工程序编制,编制方法简单且不易出错。在此程序编制时也同时考虑了高效加工在每次刀具定位时都采用4个轴同时运动,以节省辅助时间,此程序有效的解决了如图1所示所有轮廓相似的连杆颈外圆及曲柄圆的铣削加工,而且此方法在车铣加工中心中已得到很好的应用。

目前曲轴外形的设计多种多样,之前分析的某曲轴曲柄外形为一段椭圆,现有要加工一段椭圆,就可通过以上参数化编程方法编制来铣削完成。如以后遇到抛物线或其他有方程函数规则的外形,都可以通过以上方法完成程序编制。

四、结语

数控编程模板化研究 篇4

数控加工技术是先进制造技术中的一项核心技术, 发展在信息支持下的数控技术是实现企业制造系统现代化的关键, 是提升企业制造技术的重要手段。数控加工模板的产生就是为了适应企业生产需求而发展起来的一种数控加工编程方法。

本文的主要内容是如何建立数控加工模板。在模板开发中进行以下方面的研究:零件、刀具、夹具、机床三维参数化一体化研究, 其主要的目的就是实现知识共享, 利用已有的经验和专家知识, 达到企业内部资源共享的目的。

2 研究目标

2.1 目的

研究的主要目的就是实现数控程序规范化管理、规范化编程。随着数控编程数据量的增加, 数控程序的管理也越来越复杂, 为能够适应大量的数据管理的要求, 提高编程效率, 研究数控加工模板化编程, 是解决问题的有效途径。基于UG的数控加工模板化功能研究正是依据制造业信息化的需要而展开的快速编程研究方法。

2.2 零件类型

在研究数控模板加工过程中, 选取生产现场的典型零件作为试验件。

3 研究内容

3.1 模板的分类

3.1.1 通过调研, 借鉴了发动机零部件的分类, 按照合理性、可扩充性、简单性、规范性要求, 在方便查询、方便使用、便于存储的基本原则下, 将数控加工模板给出总的分类。

3.1.2 随着数控模板的创建, 数控模板类型和数量会越来越多, 管理就越来越复杂。因而必须建立数控模板的管理规范, 完善定义和分类:通常根据需要, 需要定义组的名称、属性值、类及属性值、子类及属性值。

3.2 制定模板创建方案

3.2.1 确定替换件

替换件 (Replacement Component) :利用UG进行数控编程时的加工几何体。在调用模板过程中, 替换件被加工零件取代, 同时在模板中编制的数控程序包括各种切削参数被保留。在创建数控编程模板时, 应首先确定替换件, 替换件的结构、装配表面属性、材料和被加工零件应当非常相似。当利用模板进行数控编程时, 被加工零件会替换掉替换件并定位于装配中的正确位置。被加工零件和模板中的替换件的装配表面赋予相同的属性名字, 那么在调用模板的过程中, 属性相同的表面会自动装配在一起, 通过这种技术可以实现模板调用。在调用模板后, 替换件被零件所取代, 同时零件和资源件按照替换件和资源件的装配位置被约束。然后就可以利用UGCAM进行数控编程。

3.2.2 确定资源件

资源件 (Resource Part) :利用UG进行数控编程时的检查几何体, 包括夹具, 机床等。在调用模板过程中, 资源件被保留, 因而在创建数控编程模板时, 资源件的结构、装配表面属性、材料应当和被加工零件的夹具、加工设备相似。当利用数控模板进行数控编程时, 资源件和被加工零件属性相同的表面会自动装配在一起。

3.2.3 创建模板

在PDM系统下建立数控模板的新文件, 指定文件类型为MENCMachining, 文件ID号part number、文件版本、part file type:master和文件的种子文件。

选择CAM_IMAN_LIBRARY和模板类型铣加工模板或车加工模板等内容, 建立模板文件和模板类型。

利用U G的装配功能添加资源。在添加资源时, 按照零件的装夹位置进行装配, 装配表面的属性必须相同。在Component type中选择资源件 (Resource) 和替换件 (Replacement Part) 。其中资源件和替换件都必须在PDM系统中建立零组件Item, 只有这样才能进行装配。同样的方式可以将其它资源件装配到替换件上。

3.3 添加模板内容

按照零件的加工要求, 制定加工方式、走刀路线、切削参数、进退刀设置、加工余量等内容。在UGCAM下生成数控程序, 将全部操作选中制定成模板, 然后用同样的方法将刀具、加工方法、几何体一起制定成加工模板。

3.4 调用模板

编程时, 先建立零件Item, 零件类型为零组件, 在该零件Item下建立数据集 (Ugmaster模型) , 完成零件模型的属性制定。或者查看上级流程发放的工艺流程和相关的零件Item, 然后在工艺管理器下建立该零件的数控工艺和数控工序, 关联零件Item和数控工艺。选择建立的数控工序, 选择建立的数控模板文件或者文件代码, 进行数控编程。

3.5 定制工步命名规则

制定操作命名规则是为了规范工步内容的填写, 便于知识的存储、积累、查找和理解。在制定规则时要根据程序加工的零件部位进行制定, 操作的名称;根据零件的特征进行分类填写。每个特征需要多个数控程序进行加工时, 每个工步内容要增加程序的特点, 如粗铣、清根等。

每一个零件的数控加工都要求写工步指导说明书, 说明书的内容必须详细准确, 并且与工步中的内容相同。包括:工步号、工步内容、程序号、UG中的操作 (操作operation:表示一个程序段或者一段刀具轨迹) 名称、刀具名称、直径、转速、进给量、和其它一些必要的说明。所有的加工操作都放在程序组 (程序组Program_group:表示零件一个特定部位) 下。

结语

经过研究, 成功的实现了在PDM下创建数控加工模板和将模板分类。利用UG的编程特点, 将优化后的程序存储在模板中, 数控编程人员通过PDM系统这个平台就可以使用数控加工模板。通过试验, 利用模板编程, 提高了编程质量和编程效率, 实现了资源共享, 提高了资源利用率。

参考文献

[1]沈振宇, 方坚.株洲时代集团PDM系统的实施应用[J].CAD/CAM与制造业信息化, 2005 (05) :35-39.

数控车削加工的参数化编程探讨 篇5

数控机床在金属加工领域的主导地位正逐步凸现出来, 数控技术是机电一体化技术发展的结晶, 数控机床的使用使得金属加工质量对操作者技能的依赖性大为降低, 使得以前不可能的复杂高精度加工变为可能。普通数控系统一般只提供直线插补 (G01) 、圆弧插补 (G02、G03) , 而在现实数控车削中经常需要加工一定精度的非圆曲线, 如抛物线等, 这时就无法直接采用此类数控系统内部的插补指令。为加工此类特定曲线, 可考虑用微细小直线段拟合非圆曲线的方法来达到精度要求。首先针对非圆曲线建立笛卡尔坐标系, 车削加工中常以工件右端面中心点为工件坐标系原点, X轴、Z轴平行于机床坐标系;再从坐标系原点出发建立一系列非圆曲线的割线, 可由曲线方程计算出割线族与非圆曲线的交点坐标;最终用直线插补指令 (G01) 连续插补出各微细小直线段。

各条割线间的间隔角度随精度要求的不同进行调整, 故精度要求越高, 要求割线间的间隔角度越小, 计算量也随之增加, 程序也变得更复杂。FANUC-0T系统提供了A、B两种用户宏指令, 对特定非圆曲线采用宏指令编程可将程序参数化, 使程序精简易懂, 能有效解决计算量增加带来的程序庞大等问题。

1典型非圆曲线方程分析

本文以抛物线为例, 对抛物线曲线方程作出分析。在xoz平面内建立笛卡尔坐标系, 如图1所示, 抛物线的标准方程为:

x2=-2pz p>0 。 (1)

其中:p为抛物线的焦准距。

数控系统在进行插补时, 要实时计算出下一步的抛物线坐标点的坐标值。可根据z=f (x) 的函数关系, 给定一个x值 (此处采用半径值) 可计算出相应的z值:

undefined。 (2)

此外, 还可以根据抛物线的参数方程求解曲线上各点的坐标值, 参数方程如下:

undefined

。 (3)

其中:α为斜率角度变量;c为抛物线动径横坐标。

运用式 (2) 和式 (3) 两种方程计算插补点的过程中, 要注意到不同计算方式带来的精度问题, 我们可以在数控机床粗车、半精车加工阶段采用公式 (2) 、精车加工阶段采用公式 (3) 来计算数控系统要求的各插补点坐标值。

2加工编程举例

2.1 编程实例

已知待加工榔头手柄尾部为一抛物线, 材料为45圆钢, 毛坯直径为Φ16 mm, 加工尺寸如图2所示。建立该工件右端抛物线函数与参数方程如下:

2.2 加工工艺路线分析

圆钢毛坯直径为Φ16 mm, 由图2可以看出工件各段的加工余量较大且不相同, 故宜采用先分段走直线粗车, 粗车用量取0.5 mm, 留出精加工余量0.2 mm, 然后精车出图纸要求尺寸。图2中与本文无关处之加工工艺, 如螺纹、退刀槽、滚花等在此不予讨论。

2.3 程序实现

2.3.1 程序变量设置

工件坐标系以工件右端面回转中心点为原点, 以便于编程;抛物线段的切削可以由端面车刀完成粗、精加工, 不需要设置刀偏补偿, 以该端面车刀作为标准刀;本文为便于说明修改系统参数, 将FANUC系统默认的直径编程模式改为半径编程模式。FANUC系统提供了两种不同功能范围的宏指令, 分为“用户宏程序A”、“用户宏程序B”, 这里采用用户宏程序B编写程序;参数化编写程序需要用变量对加工参数作出定义, FANUC-0T系统提供了#100~#149、#500~#531两类公共变量, #100~#149为断电清零型变量, #500~#531为断电保持型变量。准备段程序编写如下:

O2010;

N10 G54 G40 G49 T0100 M06 M03 S600 F0.1;确定坐标系, 初始化系统

N20 G00 X 2*#105 Z10; 确定起刀点

N30 #100=0.5; x方向粗车背吃刀量

N40 #101=0.2; x方向精车背吃刀量

N50 #105=8; 抛物线开口8 mm (半径值)

N60 #106=16; 抛物线z向长度

N70 #107=0.5; 精加工余量

N80 #110=#105-#100; 粗车段x向坐标值

N90 #120=0; 精加工初始角度

2.3.2 粗车路线

粗车路线示意图如图3所示, 刀具从起刀点向x轴负方向按粗车背吃刀量#100进给, 沿z轴负向直线切削毛坯。

每一次直线进给需确定相应的z坐标值, 其算法思路如下:

当x坐标值大于抛物线开口值时, z=-16+精加工余量;

当x坐标值小于或等于抛物线开口值时, undefined精加工余量;

当x坐标值等于零时, z=0。

用绝对跳转指令结合条件跳转指令语句可实现上述的粗加工过程, 选择FANUC-0T系统“用户宏程序B”编写程序如下:

O0100;

N100 G00 Z=1; 粗车z轴起点

N110 WHILE [#110 GE 0] DO 1;x坐标大于等于0, 开始循环

N120 IF X GT 8 GOTO N130; 如x坐标超出抛物线开口宽度8

N130 G01 Z=-16+#101 F1.5; 车削到z=-16+精车余量为止

N140 IF X LE 8 GOTO N140; 如x坐标在抛物线开口宽度以内, 开始循环车削

N150 G01 Z=-X*X/4 +#101 F1.5;用抛物线方程计算x坐标并保留精加工余量

N160 X=X - #100; x自减, 准备下一次循环

N170 IF X=0 GOTO N190 ; 如x=0 加工结束

N180 END 1;

N190 G00 X200 Z100; 返回换刀点

2.3.3 精车路线

在给定精车背吃刀量的情况下, α角度的细微变化能精确反映加工点坐标值的变化, 因此可以采用α角度变化量近似拟合抛物线曲线, 完成抛物线精加工。程序如下:

N200 G00 Z1.0 X0.0; 精加工起点 (0.0, 1.0)

N210 G96 G64 S1000 F1.0; 恒定圆周速度控制, 连续路径加工

N220 G01 Z0; 直线插补, 切入工件

N230 WHILE[#120 LT 90] D0 2;角度小于等于90o准许循环

N240 #120=#120+1; 角度从0开始自加, 每次增加1o

N250 G01 X=-4*TAN[#120] Z=-4*TAN[#120]*TAN[#120];

计算角度对应坐标点 (x, z)

N260 END 2;

N270 G00 X200 Z100; 返回换刀点, 曲线加工完成

3总结

数控编程是目前CAM系统中能明显提高效益的主要环节之一, 本文采用FANUC-0T数控系统提供的宏指令编程模式, 运用参数化编程模式来探讨解决一般中低档经济型数控系统不能直接加工非圆曲线的问题。在数控机床的应用日益普遍的情况下, 通过调整编程模式, 充分挖掘数控系统的潜力, 拓展数控机床的使用范围, 以提高数控机床的加工能力, 对工厂的实际生产具有一定的借鉴价值。

参考文献

[1]郭培全.数控机床编程与应用[M].北京:机械工业出版社, 2000.

可编程化 篇6

随着我国铁路运输事业的高速发展, 对车轴的需求逐年增加, 同时对车轴的要求也越来越高。应用计算机技术提高车轴设计绘图及数控编程的效率, 防止人为因素的失误, 就成了当务之急[1]。

本文应用AutoCAD软件内嵌的面向对象的编程语言VBA对AutoCAD软件进行二次开发, 实现车轴建模参数化, 利用尺寸驱动原理, 通过改变参数值, 自动生成形状相同、尺寸不同, 但拓扑关系不变的图形[2]。实现参数化绘图的同时, 系统自动提取参数图的信息并生成锻造程序, 然后输出到指定的文件中, 完成数控编程。这样既大大提高了绘图效率, 减少了锻造程序编制的时间, 减少由人为因素引起程序出错而导致的废品, 又缩短了设计周期, 减轻了工人的劳动强度, 加快了新产品的研发速度。

1总体设计方案

对于形状相同、尺寸不同的车轴零件, 在AutoCAD环境下, 可通过参数化编程实现其快速设计。实际尺寸由数据库提供或者直接输入, 图形生成后, 系统自动提取图形信息, 并计算数控程序所需要的每个参数的数值, 然后将数控程序按设备所需要的格式输出到指定的文件中。本系统在AutoCAD环境下运行, 利用AutoCAD软件内嵌的可视化VBA编程环境设计图形交互界面 (如图1所示) ;后台应用SQL Server 2000数据库软件进行数据存储、处理, 前、后端之间数据由ADO进行交互连接操作。系统总体设计流程图见图2。

2图形界面及操作说明

图形界面采用交互式界面, 主要包括以下3部分:①加工图和锻件图参数输入或者从数据库中读取, 以及将对话框中的参数添加到数据库;②图形的绘制与尺寸标注;③数控程序名称的输入及数控程序的输出。

系统运行时, 首先在对话框中输入加工图所需要的参数或者用数据库浏览按钮从数据库中读取参数, 接着输入锻件图所需坯料截面尺寸和锻造时的夹持长度, 然后点击绘制加工图和锻件图按钮后, 在屏幕上分别选择要绘制加工图和锻件图的位置, 加工图和锻件图就绘制出来了, 之后点击加工图和锻件图尺寸标注按钮对加工图和锻件图进行尺寸标注。加工图和锻件图都绘制完成后, 在锻造程序编号对话框中输入程序的编号, 点击生成锻造程序按钮, 锻造程序就输出到指定路径下的文件中。最后点击退出系统按钮, 退出本系统。

3数控编程的原理

首先选择坯料截面尺寸, 再根据坯料的锻造变形过程以及体积不变的原则, 将数控程序所需参数的计算方法都写在程序中, 让程序自动计算参数的值, 然后将计算出来的数值用程序自动写到数控程序模板相应的位置, 最后将整个程序输出到指定的文件。

4锻造程序编制[3,4]

锻造程序是整个系统的核心部分, 程序编制的好坏直接影响本系统的效率。本系统的程序主要包括变量定义、变量赋值、数据库访问、绘图、标注、锻造程序编制等部分, 部分源代码如下:

5实例应用

本系统在使用前首先进行加载, 加载完毕后, 在AutoCAD界面下, 打开[工具]/[宏]/[宏], AutoCAD弹出一个对话框;选择“车轴参数化绘图及数控编程系统”, 点击“运行”, 就进入了本系统的图形界面;输入如图1所示的参数, 运行结果如图3、图4和图5所示。其中, 图3是绘制的加工图, 图4是绘制的锻件图, 图5是生成的锻造程序。

工厂实际使用结果证明, 本系统既提高了绘图效率和编程效率, 又降低了试制车轴的废品率, 从而提高了工厂的经济效益。

6结论

(1) 利用VBA对AutoCAD进行二次开发, 建立车轴的参数化绘图系统, 减少了图形绘制中的一些重复性劳动, 缩短了设计周期, 极大地提高了绘图效率, 加快了新产品的研发速度。

(2) 系统自动提取锻件图的信息, 生成锻造程序, 并输出在指定的文件中, 减少了锻造程序编制时间, 减少了由人为因素引起锻造程序出错而导致的废品率, 提高了经济效益。

参考文献

[1]崔永亮.火车轴CNC锻造程序自动编制系统开发[D].太原:太原科技大学, 2009:5-10.

[2]武妍, 闫红印.用VBA在AutoCAD中开发参数化绘图系统[J].机械工程与自动化, 2008 (2) :62-63, 66.

[3]张帆, 郑立楷, 王华杰.AutoCAD VBA开发精彩实例教程[M].北京:清华大学出版社, 2004.

[4]李凤华.AutoCAD2002/2000 VBA开发指南[M].北京:清华大学出版社, 2001.

可编程化 篇7

我们把Scratch软件引入信息技术课堂,开展游戏化的程序设计教学, 目的就是促进小学生编程思维的发展。但在开展中我们也碰到了许多问题,如缺少合适的教学内容,缺少分类指导,缺少展示平台,缺少交流反馈,缺少互相评价,缺少辅导时间,缺少学生人数等。所以,迫切需要教师在教学中运用新的理念和方法,探索出一条游戏化编程教学的作品创作之路,有效提升学生的编程能力。

选择有趣的教学内容是游戏化编程教学的核心

目前,Scratch教学越来越受到老师们的关注,在新课程浙江摄影出版社《小学信息技术》六年级下册中,正式引入Scratch教学内容,但内容只有五个课时,只是让学生有个初步的了解。完整的Scratch软件操作教程不多见,市场上出现的还有一类Scratch书,是学校教师根据他们在课堂中开展Scratch教学实践的经验编写的。我校在刚引入Scratch教学时,初步挑选了几本, 有《Scratch与创意设计》《Scratch创意动画设计》和《边玩边学Scratch趣味游戏设计》等。我们从这些书中精选了包括基础知识、范例演示、作品创作等几个方面的学习内容,选取了一些有趣又好玩的小游戏。这些作品大部分来自于同龄人的创作, 难度并不大,非常适合学生们去模仿和练习,在初学时特别有效。我们还选取了一些并不完美的游戏作品,还有许多地方需要完善的有趣作品,让学生去分析,让他们提出问题,去学会解决问题和创造性地改进这些不足。

在初识Scratch时,我以《小猫快跑》 为主题,通过组织游戏内容开展教学。

一只威猛的狮子在森林深处巡视着自己的领地。突然,一只小猫闯进了它的领地,狮子勃然大怒,这时小猫发现情况不妙,它能否脱离险境呢?于是“小猫快跑” 的好戏上演了。

用游戏的内容,结合故事情境,让学生初步掌握移动、下一个造型、碰到边缘就反弹和重复执行等指令。

创建合理的分类作品是游戏化编程教学的基础

我们在教学时针对不同年级,选择学生容易接受的知识点。内容是学生比较感兴趣的,这样才能使学生得到更多的收获。

我们根据作品的性质,分为迷宫类、 射击类、益智类和动画类等。我们发现同一类别的作品,在创作过程中它们的指令代码也类似,可以起到举一反三的作用。 分类作品教学可以提升学生的思维能力, 巩固解决问题的能力,这样学生学起来相对轻松。对一些思维开阔的学生帮助更大, 有助于他们创造性地修改作品。

在利用Scratch教学中,学生对迷宫类和射击类的游戏最感兴趣,做出很多有意思的作品,如下表。

编排合适的校本教材是游戏化编程教学的手段

我校自2013年下半年开始着手准备Scratch校本教材的编写。根据Scratch主题研讨和课堂展示中积累的案例材料,认真筛选出适合学生掌握的课堂教学作品范例,旨在让所有学习Scratch的学生都能够对教学内容进行消化吸收。我们通过课堂实践,反复修改,合理编排,初步形成一本适合学生初学的Scratch校本教材。

整本校本教材分为三部分,由初级篇、 中级篇和高级篇组成,每部分有4课时内容, 案例的选取以故事性游戏化的形式呈现, 按照一定的梯度编排,整体上遵循由浅入深、由易到难的原则。教材中呈现的案例全部采用Scratch2.0界面,指令、按钮等图示更清晰。教材中还涉及利用Scratch进行画图和运用变量进行算法设计的高级技巧, 与嘉兴市青少年信息学竞赛相结合,拓宽了学生的视野,有效地培养了编程思维。

搭建丰富的展示平台是游戏化编程教学的保障

和课堂教学一样,展示和评价也是Scratch教学的重要组成部分。通过作品展评、竞赛等多种形式激发学生的表现欲,激励更多的学生投身到这项有意义的活动中来。Scratch的官方网 站http://stats.scratch. mit.edu/,是个想象编程分享的平台。当学生完成自己的作品时,老师指导学生上传到Scratch学习网站上,和网站上世界各地的Scratch爱好者一起分享和交流,也是一个非常好的学习渠道。

我校也为学生搭建了一个Scratch专题网站http://fzpt.hyxyxx.com/scratch, 上面放了许多视频教程、课堂范例、作品欣赏、学生作品等资源。学生利用这个平台,自己就能找到学习的内容,进行操作实践,也可以相互欣赏作品。在这个平台的引导和激励下,学生的兴趣得到极大的提升。

平时,还建立QQ群、论坛等,加强老师和学生、学生和学生之间的联系。用Scratch进行作品创作,从中定会发现错误,听取别人意见,有新的想法,有无数问题自然产生,这是一个不断修改和完善的过程。

每学期我们开展为期一周的Scratch创意作品体验周活动。在向阳Scratch专题网站上展示大量的学生创意作品,邀请全校3 ~ 6年级的同学参加体验活动,充分感受Scratch带给我们的无限魅力,感受创意的无限精彩。通过一段时间的教学,Scratch创作已成为很多学生的最爱,学生创作的很多作品连我们这些老师也佩服不已。

可编程化 篇8

近年来,图形化方式已经在众多领域得到应用,比较熟知的图形化编程语言有Lab View,Matlab /Simulink,UML和RCX。 在机器人领域,图标式( iconbased) 编程方式首先在教育行业兴起,随着工业机器人行业的迅速发展,受过特定机器人语言编程培训的工人量不足以满足扩大的市场需求,因此图形化编程开始在工业机器人领域火热[1]。1999 年,欧洲合作研究计划AMIRA( advanced man machine interface for robot system application) 提出了工业机器人系统应用程序的用户界面风格规范[2]。与传统的编程方式相比,流程图式的程序结构更为直观,用户无需考虑语法、句法的严格要求,可以将更多的精力用于如何更有效地、更优化的实现设计任务目标[3]。同时,参数和操作的设置也更为简洁。

目前,国内外各机器人公司以及研究机构的控制软件平台开发主要集中在离线编程与仿真系统方面,主要有Tecnomatix公司开发的ROb CAD[4],Robotsimulations公司开发的Workspace,ABB公司开发的RobotStudio系统[5]等。国内也有不少大学、研究所等进行离线编程系统开发,其中哈尔滨工业大学现代焊接生产技术国家重点实验室是国内对离线编程研究最早的机构,多年来不断累积取得了很多突破性的进步[6,7],实现了相关技术积累。这些系统离线编程和仿真功能强大,但是主要适合本公司或者特定结构的机器人开发和仿真,系统的开放性不够,并且大多数的离线编程语言还是基于描述性、或者半描述性半流程图式的机器人语言,从而限制了离线编程系统的使用和广泛推广。

本研究提出一种应用于工业机器人控制软件平台的图形化编程软件系统,以提高工业机器人离线编程系统的通用性和易用性。用户用对应的图形模块来表示工业机器人的逻辑操作或者运动操作,通过连线生成图形化文件,避免传统编程方式对句法、语法的严格要求,以及代码序列程序结构和问题求解的结构化策略的形象表达较差等弊端[8]。

1软件系统整体设计

1. 1 整体框架设计

工业机器人离线编程系统总体由两层组成,系统整体框架图如图1 所示。

本研究基于控制集中和功能分散的思想,将上层人机交互、运动规划、图形化编程等功能和下层运动控制实现进行有机分离。上位软件平台负责提供友好人机接口,维护零件模具库,提供参数设置接口,并可通过运动规划模块根据模具库中现有模具或通过示教自动生成运动控制程序,通过可扩展的下位机接口驱动底层控制系统。其中图形化编程软件系统为工业机器人离线编程系统的子系统,负责实现流程图式的任务绘制和中间文件的生成。

1. 2 图形化编程软件的整体设计思路

图形化编程软件系统设计思路总体可以划分为4个阶段: 自结构的任务编辑界面的实现,工业机器人操作的模块化封装及其数据结构设计,图形任务与XML( extensible markup language) 文件的互相转换,任务的完善性合法性检查。

图形化任务由封装为图标式的任务元素和表示任务流动方向的分支连线组成。这些任务元素是针对工业机器人的不同操作而封装起来的不同模块,包含运动参数、图形参数、连接参数等信息。这些模块可分为运动控制,条件控制和外部文件导入等几大类别。通过MVC( model-control-view) 模式实现的任务编辑界面不仅仅是提供拖动模块、连接模块功能的界面,还能够及时响应每一步操作带来的内部变化,如任务的顺序结构变动,任务的父子结构变动,也就是说,所形成的图形化文件是有看不见的内在结构的。XML文件也是自结构化的,本身文件里就包含了父子结构和顺序结构,因此可以与图形化文件的编程元素以及位置、从属关系形成一一对应,不论是转换还是反转换。

2实现方法和技术

2. 1 任务编辑界面的实现

Eclipse不仅仅是一个平台,同时还具有十分耀眼的插件体系结构,所有的业务功能都封装在Eclipse的插件当中,Eclipse为插件提供运行基础[9]。图形化编程首先要实现一个可以拖动图标模块并且将模块进行连线的任务编辑界面,因此本研究选取Eclipse的GEF( graphical editor framework) 插件在Eclipse上进行开发,最后将插件发布为脱离Eclipse运行的独立运行软件产品。

GEF全称图形化编程框架,其包含的编辑器已经具备drag&drop、undo&redo、move&delete&resize等基本图形编辑器操作功能,并且自带可以放置各种工具的调色板和用于参数设置的属性编辑器,所以十分适合开发流程图编辑器。GEF中,所有的图标模块对于任务编辑界面Diagram而言都是一个Node,而后期定义的封装在Node里的机器人操作之间的区别仅仅在于生成XML文件时与运动相关的参数数据。即,在进行任务的逻辑处理时,所有的图形模块对于Diagram而言都是Node,没有区别。

对这些Node的操作( 如删除、添加、连线、成为前后任务或者父子任务) 都采取相同的处理原则: 委托,而这种委托是GEF基于MVC( model-view-controller)模式实现的,controller是整个框架的核心,主要用于操作功能的编写,view是轻量级图形界面显示,model是用户设计最终被操作和编辑的对象原型,通过这种方式可以任意组合模型与视图并且配置不同操作,十分灵活。并且通过这种模式可以将用户的界面操作转化为模型的属性变化,从而为图形化文件的逻辑建立起一个看不见但是准确迅速的内在结构。任务编辑过程时MVC模式下的GEF工作原理如图2 所示。

2. 2 工业机器人操作的模块化封装

在实现了图形化编程的编辑界面之后,需要将在图形化界面的属性编辑栏里为每个模块所设置的运动相关参数到XML文件中,接着传递至下方解释器、控制系统,最终传递至硬件层,所以需要对机器人操作进行封装,并抽象为GEF中的模型类( Model) 。

这套离线编程系统的图形化编程软件是在与杭州新松公司合作的基础上建立,因此对模块的定义是在新松机器人的机器编程语言的类别上,进一步通用化完成,大致分为5 类:

( 1) 执行模块库: 初始化,结束任务,子任务开始和子任务结束;

( 2) 功能模块库: 等待触发信号,延时,输出信号;

( 4) 控制模块库: 组合运动,while条件循环,for条件循环,if-else条件判断;

( 4) 运动模块库: 圆弧运动,直线运动,样条曲线,轴旋转运动,轴平移运动;

( 5) 文件导入模块库: cad文件导入,示教曲线导入。

由于java面向对象设计的原则,模块日后的拓展也十分灵活,一整套控制器的实现不变,只需要定义好新模块的运动参数添加进Model库即可。

为了适应更多的复杂曲线需求,本研究在基本运动的基础上增加了两个接口,用于导入cad文件与示教曲线文件。因为导入的文件只包含运动信息,并没有模块化和图形信息,首先要将文件进行解析读取运动参数,然后按照标准数据结构模块化成标准模块库中文件,最后进行保存。

2. 3 图形任务文件与XML文件的转换

在应用图形化编程技术的过程中使用XML技术是可行的,因为XML文档具有独特的自描述性,且自结构化,既能自定义节点信息以实现图形化编程元素的XML格式表示,又能很好地对应图形文件的逻辑信息[10]。并且XML是编程技术中十分通用的语言,利用它作为图形化编程的标准接口语言,可以增加软件的通用性。由前文可知,图形文件中的模块都拥有自己的模型数据结构,在将图形文件转换为XML文件时,需要将数据结构中的连线信息和父子信息读取出来,然后转换为XML文件中的前后信息与父子信息,反之同理。其中,XML的读写是用Dom4j完成,Dom4j是一个Java的XML API,它封装了读写XML文件的主要操作,开发时只需完成核心操作比如添加属性进去即可。

图形文件与xml文件的相互转换示意图如图3 所示。为了简化图形,数据结构中的尺寸与坐标信息略去。

2. 4 任务的完善性合法性检查

图形文件与XML文件在图标元素和逻辑上正确对应,并且运动参数也正确传递,在这之后还需要提供任务的完善性与合法性检测。在图形化编程过程中,用户所生成的任务文件有可能是不完整的、临时保存的或者是非法的,所以需要提供一个标志给解释器,在XML文件中标记出该任务文件的状态,因此本研究为Diagram增加两个属性finish与valid,值为true或者false。

首先是任务完善性检查,可能存在以下几种finish =flase的情况: 从任务的开始到结束,至少有一条支路是不完整的; 从任务的开始到结束,所有的支路都完整,但是存在未有任何连接的独立模块等。然后是合法性检查,可能存在以下几种valid = false的情况: 存在闭环( 循环任务都放置在了循环模块内,因此正常情况下不会出现闭环) ,条件判断支路不完整、支路个数超额或者支路条件相同等。

完善性检查和合法性检查都在用户点击保存时同步进行,更新finish和valid的属性值到xml文件中。前面已经说明过,模块的数据结构的定义和编辑器的自结构性,图形化文件是具有内在结构的,所以通过前序遍历图形化文件,如果出现从任务开始模块( 仅此一个) 经过某条支路无法抵达任务结束模块( 仅此一个) ,则判定任务不完整。而未有任何连接的独立模块会在遍历后位于XML文件最前方,这是由于Dom4j的读写方式决定的,解析器在解析xml文件时,需要将任务开始模块作为起始读取点。其中在遍历过程中遇见条件判断模块,需要单独进行对分支进行合法性检查。

但是如果存在闭环情况,前序遍历会陷入死循环,因此在此之前要进行是否存在闭环这种非法情况。如果存在闭环,也就是说某个结点的关系网里会包含自己,因此首先要为每个节点建立关系网,然后进行判定。这里的关系网不是用来还原文件整体架构,所以不需要建立复杂结构。从前面的数据结构也可以看出,模块的定义和链表的定义是一致的,包含两个信息,value和next,问题就转换为如何判定一个链表中是否存在环。设置两个指针,开始都指向链表头,然后其中一个指针每次向前走一步,另一个指针每次向前走两步,如果走的快的遇到NULL了,证明该链表中没有环,如果有环,快的指针每次都要比慢的多走一步,最终两个指针会相遇( 这里快指针不会跳过慢指针而不相遇,因为它每次都只比慢指针多走一个单位) 。

3实验及结果分析

本研究将基于Eclipse及其GEF插件开发的插件程序发布为独立产品,最后生成的图形化编程软件图形界面如图4 所示。

该界面分为4 个部分,工程区可以看见自己创建的所有文件; 大纲区可以看见已经添加的所有模块以及层次结构; 属性栏可以对模块的运动属性进行设置、修改、查看; 最后是带有调色板的编辑区,调色板内为模块和连线,编辑区内为正在生成的任务。

保存的XML文件如图5 所示。

经过多次实验测试表明,该图形化编程系统操作简单,生成的任务逻辑正确,在整个项目所研发的机器人控制软件平台中与解释器接口匹配,并且传递至底层的运动参数能够满足底层硬件的运动规划等需求。

4结束语

本研究提出了基于流程图式的应用程序设计思想,在软件的实现过程中使用了现今十分成熟的Eclipse插件开发方式,并且采取XML文件这一常用的编程表达方式,通过封装机器人的通用操作和定义对应数据结构,将编程过程简化,增强了软件的通用性。同时本研究定义了图形化文件与XML文件的转换协议,通过MVC模式将其联系起来,辅以检测技术,提高了正确性和可移植性。最后生成的图形化编程软件经过多次操作和检测,可以证实其操作简单且逻辑正确。

综上所述,本研究中所阐述的系统结构设计思路和实现方案是可行的,能够实现一个稳定可靠的图形化编程软件系统。由于该系统从设计实现上采用的始终是模块化设计思想,为系统的易维护性、可重用性奠定了很好的基础。

参考文献

[1]LEES D,LEIFER L J.A Graphical programming language for robots operating in lightly structured environments[C]//Proceeding 1993 IEEE Robotics and Automation.Piscataway:[s.n.],1993:648-653.

[2]KAZI A,SEYFARTH M.The MOPRH a style guide for icon-based programming[J].VDI Berichte,2002,1679(1):41-46.

[3]邱长伍,曹其新.机器人图形化编程与三维仿真环境[J].机器人,2005,27(5):436-440.

[4]邓伟俊.基于Robcad软件的机器人基于软件的机器人点焊离线编程系统研究[J].金属加工:热加工,2014(10):62-63.

[5]谭定,李亮玉,王天琪.基于Robot Studio的双机器人协调仿真[J].焊接技术,2011,40(6):45-48.

[6]刘圣祥,高洪明,张广军,等.弧焊机器人离线编程与仿真技术的研究现状及发展趋势[J].焊接学报,2007,28(7):21-25.

[7]何广忠.机器人弧焊离线编程系统及其自动编程技术研究[D].哈尔滨:哈尔滨工业大学材料学院,2006.

[8]CREMERS D,TISCHHAUSER F,WEICKERT J,et al.Diffusion snakes:Introducing statistical shape knowledge into the Mumford-Shah functional[J].International Journal of Computer Version,2002,50(3):295-313.

[9]张鹏,姜昊,许力.Eclipse插件开发学习笔记[M].北京:电子工业出版社,2008.

可编程化 篇9

在数控手工编程中遇到椭圆工件,可以采用椭圆的标准方程,以x或z坐标作为变量进行控制,完成椭圆编程,方程为也可以使用参数方程中角度变量进行控制,参数方程为x=bsinβ,z=acosβ,β为极角。这两种方法是可以相互转化的,其实质都是通过某一参数在一定范围内变化而求椭圆上任意点的坐标。依据椭圆参数方程示意图(图1)可见,椭圆长半轴为a,短半轴为b,设椭圆曲线上某点M的坐标为(x,z),β是以oz为始边,oA为终边的正角,则根据β角度变量,可以计算出椭圆曲线上任何一点的两个坐标值。如果角度变量β从0°开始,每次增加1°,根据椭圆参数方程,对应计算出相应x和z的坐标值,走出直线(斜线)拟合椭圆曲线,由于设定角度变化量较小,椭圆的加工精度较以坐标为变量的方式加工精度更高。本文主要针对椭圆的参数化编程进行一些思考和研究。

1 实例及角度的概念

1.1 实例分析

图2所示为椭圆常见的典型实例,已知条件有限。要完成编程和加工,一种方法是计算出椭圆的终点的坐标值(x,z),将其作为变量用椭圆的标准方程进行编程,以终点的坐标值作为判别条件;另一种方法也可以计算出椭圆的极角,以椭圆的角度作为变量,用参数方程进行编程,以极角为判别条件。但两种方法不少朋友都很可能会直接用图上的已知角度进行计算,就出现明显的错误。因为在椭圆上标注的是平面角160°。

1.2 两角度概念的误区

如图3所示有两个角度分别为α和β。有很多人会把α与β混淆使用。α称平面角,而β称极角,平面角与极角本身是两个概念,在0°,90°和180°处两者数值相同,其余均不同,有些地方要相差十几度甚至更大。对照图示再看参数方程x=bsinβ,z=acosβ,不难发现参数方程的角度是应该与长半轴和短半轴相关联的,而平面角无法反映长半轴和短半轴。要使椭圆加工达到终点为N点处即平面角为α,在编程中应将参数方程中的极角β计算出来并应用才是正确的。

2 极角的确定

2.1 计算机绘图得出极角

通过1∶1比例按已知条件进行椭圆绘制,如图4所示,再按椭圆终点与长轴、短轴建立联系,图示A点或B点,连接OA,最后查询或标注出∠DOA,即可知极角∠DOA的大小。

2.2 椭圆公式及几何算法

1)在ΔOCN中,C点为椭圆的终点,利用三角函数公式计算出:

tan∠CON=CN/ON=tan20=0.364,由于CN为C点处的x值,ON为C点处的z值,即找出了C点处x与z的关系式为:

再根据椭圆标准方程式将x与z的关系式x:z=0.364代入标准方程,并代入其他已知条件,可得出:

z=24.7,然后得出:x=9。

2)再利用参数方程式,解出极角,参数方程为

x=bsinβ,z=acosβ,β为极角。

由于C点x和z点值已算出,代入参数方程,sinβ=x/b=0.6,β为钝角,

由于在计算中存在计算误差,故与计算机绘图法存在一些误差。

3 参数化编程

3.1 分析

1)该工件为了对刀和编程方便,习惯于将z向的原点定在右侧端面上,如图5所示。z向坐标系平移对椭圆参数方程要进行一定的变换z=acosβ-a,β为极角。

2)由于在车床上加工的工件均为回转件,x向习惯于直径编程,而且也便于测量,因此,x的参数方程也要进行变换:

x=2bsinβ,β为极角。

3.2 编程

本例椭圆的编程与加工基于FANUC系统B类宏程序进行椭圆参数化编程。

4 结论

椭圆参数化编程是椭圆编程加工的一种方法,突出的特点是简便、直观。另外,按角度作为变量,使刀具走刀路线每步能拟合成斜线,较之以坐标为变量的编程方法表现出较高的精度。但是值得注意的是判别式是以极角值为跳转条件,其参数方程中的β角的确定是关键,而不能简单地把椭圆平面角作为判别依据,否则,将产生明显的错误。

摘要:以角度为已知条件的椭圆工件实例,介绍了数控车床车削椭圆时涉及到几何角和极角的概念及椭圆的参数化编程的方法。通过分析和实例编程,明确椭圆的参数化编程的要点和方法。

关键词:角度变量,几何角,极角,参数方程

参考文献

[1]潘应晖.椭圆车削参数编程[J].机械设计与制造,2008(1).

[2]袁锋.数控车床培训教程[M].北京:机械工业出版社,2005.

上一篇:维护思路下一篇:柞蚕丝