凸轮的数控加工编程
变焦凸轮数控加工
25echniqueT工 艺变焦凸轮的数控加工河南平原光电有限公司 (焦作 454001) 李红义 浮德民栏目主持 赵宇龙变焦凸轮是光学元器件上用于实现焦距变化的重要部件,在工作中经常会遇到变焦凸轮零件的加工,但实际生产中经常由于曲线槽的加工存在凸轮曲线不够平滑,造成变倍与补偿组不同步,从而使变焦距系统出现光轴跳动较大,严重影响仪器的精度。
我们通过长时间的实践和摸索,采用优化加工程序和改良加工方法很好地解决了上述问题。
现以如图1和附表所示实例零件,加以说明。
技术要求为:尺寸L 1、L 2分别为φ4H7圆心的横向尺寸,公差为±0.01mm ;A 、B 两槽相对应的两个φ4H7中心线与基准A 的平行度为0.02mm ,每个φ4H7的中心线与基准A 的正交性为0.02mm 。
要两个步骤:把曲线的方程输入到Expression (表达式)中;根据已输入的表达式,利用Law Curve (规律曲线)绘制参数方程曲线。
通过图1推算曲线方程为x =23cos A (23为凸轮轴外圆半径)y =23sin A (23为凸轮轴外圆半径)z 1=18.11+U /D 16.5t z 2=108.36-16.5t方程中参数的定义如下:A =2.575 8×66t , A 为绕中心轴旋转角度;U =62.160 6×62.160 6×16.5t ,U 为中间变量;D =41.238 6×(41.238 6-16.5t ),D 为中间变量;t =0, t 为UG 系统定义变量。
先将这些表达式输入UG 的Expression (表达式)中,然后用Law Curve (规律曲线)绘制出参数方程曲线;再用曲面已扫掠命令绘出曲面,用曲面加厚变成实体,用实体和已画出的筒进行布尔运算切出两个螺旋槽,再倒下圆角;至此,三维图已绘制好了(见图2)。
2. 工艺分析和加工思路本零件整体结构属于薄壁筒形零件,其曲线槽和内、外径尺寸属重要尺寸,粗车和粗铣工序为的是去除余量,释放应力;时效处理主要是稳定组织,消除应力;精加工保证图样精度要求,配做专用心轴定位为的是消除零件径向变形、方便零件装夹与定位。
基于通用CAM软件的圆柱凸轮数控编程
&
圆柱凸轮的数控编程
机械制造 !" 卷 第 !#$ 期
!""# $ %
!"
专题报导
OBP7$ *OAU 可降低槽表面的 粗糙度, 改 变 OBP7$ SRB 值 5 OBP7$ SRB 值 V 刀具直径 L 刀具作圆周运动的直径 6 , 可使 槽两侧表面保留不同的加工余 量, 在 设 定 OPPQ: PJ 的 情 况 下, 加工余量 V & W / 5 槽宽 L 铣 刀 直 径 6 0 OBP7$ SRB V 分轮 %) ( X 5 &2 L ( 6 0 &%) ( V %, 廓线左、 右, 分别计算并生成如 图(中所示的刀路, 图中的刀路
O G,$,, P., P1( P,,
能满足复杂、 高精度圆柱凸轮数控加工需求的问题。 关键词: 圆柱凸轮 中图分类号: "#$%&’ () ; "*%$$’ $
凸轮 机 构已 广 泛 应用 于 各种 机 械设 备 如 自动 机 床、 包装机械、 纺织机械、 矿山机械等, 它们通过凸轮的 曲线轮廓 0 或凹槽 2 将旋转运动或往复直线运动转变为 从动件的复杂运动, 来满足各自应用场合的不同要求。 凸轮根据形状不同一般分为盘形凸轮和圆柱凸轮两大 类, 由于盘形凸轮为平面曲线轮廓, 加工相对比较简 单, 因此本文主要分析圆柱凸轮的数控编程及加工。
从该程序可以看出, 在加工过程中, 刀具轴线沿槽 腔中心线移动, 且每移动一个 56789 :5;< 后, 移动暂 停 = ! 轴不动 > , 在该位置上刀具作切槽腔中心线于该 一周后刀具又回到该位 点的平面 = "# 平面 > 圆周运动, 置上, 又开始下一个 56789 :5;< = " 与 ! 联动 > , 如此 循环完成整个加工。 对 # 值放大通常采用两种方法: ! 用 3?@ABC803 软件的文件编辑功能, 对 D8 文件用 38;E$5 编辑器 打开, 在 D8 FAGH@ 的下拉菜单中 选 :I?HBJ 即可放大 # 值; " 用 8 语言编写一小程序进行处理。 = - > 特殊圆柱凸轮的编程分析 特殊圆柱凸轮的 编程在此之前一直未能有效地解决。 用“ 偏距 ” 的方法加工, 则易产生卡死现象。 如图 1 所示为加工上述圆柱凸轮回程部分槽腔, 槽 宽 为 *. 用直径为 + KK 的铣刀 “ 偏距 ” 加工。 在槽腔法向截 KK, “ 面 $$ 上, 偏距 ” 加工点 !、 及槽腔 % 的铣刀中心线, 中心线上加工点 & 的铣刀中心线, 在实际加工时均通 过圆柱凸轮的回转轴线, 因此加工 !、 %、 & 点的铣刀 中心线互不平行, 也不在同一平面上, 在 $$ 截面上可
一种圆柱分度凸轮的数控加工编程方法
一种圆柱分度凸轮的数控加工编程方法作者:黄伟波来源:《中国科技博览》2014年第33期[摘要]针对圆柱分度凸轮采用4轴联动加工编程难度高的问题,提出一种综合利用Pro/E、Mastercam、Excel三种软件进行简化建模、编程的原理和方法。
通过此方法生成的加工程序符合机床4轴联动的控制要求。
将程序用于零件试加工,经装配并运行后证实该零件加工合格。
实例表明,此种编程方法可行,且简单、易掌握,在凸轮加工领域具有一定的实用价值。
[关键词]圆柱分度凸轮;数控加工编程;Pro/E;Mastercam;Excel中图分类号:U416.1 文献标识码:A 文章编号:1009-914X(2014)33-0013-021 引言圆柱分度凸轮机构是将凸轮的连续转动转化为分度盘的间歇转动的一种机构,主要应用于冲压机械、包装机械、制药机械及需要固定转位的自动化机械中[1]。
随着设计能力及加工精度的不断提高,此种机构得到了迅速发展和广泛应用。
圆柱分度凸轮作为该机构的关键部分,其核心内容是凸轮槽的设计及加工。
基于圆柱分度凸轮机构的运动特点,凸轮槽必须采用机床4轴联动的方式进行加工。
现行采用的较为精确的方法是利用UG等三维软件的高级功能进行凸轮的建模与编程。
如王卫兵等[2]利用UG/Grip编程工具开发了圆柱分度凸轮辅助建模系统,实现凸轮的精确建模,再利用UG NX加工模块的可变轴曲面轮廓铣编制凸轮沟槽的多轴加工程序。
但对于一般的编程人员来说,此等方法难度高,不易掌握。
因此,寻求一种简单,易掌握的建模和编程方法具有一定的研究意义。
Pro/E、Mastercam、Excel是机械行业内常用的软件,其基本功能的应用已能被大多数的编程人员所掌握。
本文尝试将以上三种软件相结合,进行凸轮的简化建模及编程。
2 凸轮简化原理及编程思路圆柱分度凸轮机构(如图1)运行时,凸轮做A轴转动;滚子与分度盘一起做间歇性转动,其运动可分解为X、Y方向的运动。
圆柱凸轮加工工艺及数控编程
摘要机械产品正沿着两个方向发展:一是大型化、自动化、精密化、高速化和成套化,二是小型化、多功能、结构简单、使用可靠和成本低廉。
在此发展进程中,各种各样的自动机械占有令人瞩目的重要地位。
以凸轮机构为核心,已发展出成千上万种高效、小型、简易、精密、价廉的自动机械,遍布各行各业。
本文针对圆柱凸轮的特点,并结合五轴高速铣削加工技术,对圆柱凸轮的造型,加工工艺,CAM编程以及后置处理均进行了探讨研究,来提高圆柱凸轮加工质量。
关键词:圆柱凸轮;五轴数控加工;高速铣削加工技术AbstractMechanical products along two directions: one is the large-scale, precision, automation, high speed and complete, two is miniaturization, multifunction, simple structure, reliable use and low cost. In the course of development, the important position of various automatic machinery occupies a great. In cam mechanism as the core, has developed the automatic mechanical thousands of high efficiency, small, simple, precise and cheap, in all walks of life.Based on the characteristics of globoid indexing cam, and the combination of processing technology of five axis high-speed milling, the cam shape, processing technology, CAM programming and post processing were conducted a study, to improve the processing quality of the globoidal cam.Keywords: globoidal cam; five axis NC machining; high-speed milling technology目录摘要 (1)ABSTRACT (2)目录 (1)图表目录............................................................................................................................ 错误!未定义书签。
数控_平面凸轮零件的加工工艺和数控编程
前言制造业是所有与制造有关的行业的总称,是一个国家国民经济的支柱产业。
它一方面为全社会日用消费品生产创造价值,另一方面也为国民经济各部门提供生产资料和装备。
据估计,工业化国家70%~80%的物质财富来自制造业,约有1/4的人口从事各种形式的制造活动。
可见,制造业对一个国家的经济地位和政治地位具有至关重要的影响,在21世纪的工业生产中具有决定性的地位与作用。
由于现代科学技术日新月异的发展,机电产品日趋精密和复杂,且更新换代速度加快,改型频繁,用户的需求也日趋多样化和个性化,中小批量的零件生产越来越多。
这对制造业的高精度、高效率和高柔性提出了更高的要求,希望市场能提供满足不同加工需求、迅速高效、低成本地构筑面向用户的生产制造系统,并大幅度地降低维护和使用的成本。
同时还要求新一代制造系统具有方便的网络功能,以适应未来车间面向任务和定单的生产组织和管理模式。
随着社会经济发展对制造业的要求不断提高,以及科学技术特别是计算机技术的高速发展,传统的制造业已发生了根本性的变革,以数控技术为主的现代制造技术占据了重要地位。
数控技术集微电子、计算机、信息处理、自动检测及自动控制等高新技术于一体,是制造业实现柔性化、自动化、集成化及智能化的重要基础。
这个基础是否牢固,直接影响到一个国家的经济发展和综合国力,也关系到一个国家的战略地位。
因此,世界各工业发达国家均采取重大措施来发展自己的数控技术及其产业。
在我国,数控技术与装备的发展亦得到了高度重视,近年来取得了相当大的进步,特别是在通用微机数控领域,基于PC平台的国产数控系统,已经走在了世界前列。
毕业设计是在修完所有课程之后,我们走向社会之前的一次综合性设计。
主要用到所学的数控加工工艺设计、机械设计等方面的知识。
着重说明一轴的数控加工方法,即零件图样的分析、数控加工的工艺分析、工艺路线的制定、数控程序的编制。
通过本次毕业设计,使我更加了解数控加工的含义,以及懂得如何查阅相关资料和怎样解决在实际工作中遇到的实际问题,这为我以后从事这项职业打下了良好的基础。
圆柱凸轮的三维参数化设计及数控加工编程
圆柱凸轮的三维参数化设计及数控加工编程摘要:作为拥有良好运动性能的圆柱凸轮,会受到动件运动规律因素影响,生成复杂空间曲面,导致在设计、加工等方面面临较大困难。
本文对于圆柱凸轮的三维参数化设计及数控加工编程进行详细分析,通过Pro/E系统进行三维参数化设计,使用Master CAM软件进行数控加工编程。
旨在为我国众多制造企业提供技术帮助,推动国民经济有序发展。
关键词:圆柱凸轮;三维参数化设计;数控加工编程相较于平面凸轮机构,圆柱凸轮这种空间凸轮机构具有良好刚性,控制从动件运动稳定,可以满足机械高速运行的需求。
空间凸轮拥有这些特性,主要是因为其具有凸轮轮廓曲面。
考虑到圆柱凸轮设计、加工较为困难,过去常使用矩形平面取代圆柱面,并以平面凸轮计算轮廓坐标。
仍存在加工精度偏低的问题,无法满足制造业生产需求,需要寻找更加便利方法进行凸轮设计、加工。
1三维参数化设计对于圆柱凸轮三维参数化设计作业,需要将轮廓曲面设计作为重点内容严格对待。
以自变参数原始数据作为设计基础,建设三维模型,从而分析和三维模型相对应的参数化模型。
对于尖顶推杆圆柱凸轮,可以从正弦加速度、余弦减速度两个方面入手,利用这种运动规律,优化圆柱凸轮三维参数化设计工作。
1.1设计自变设计参数在设计圆柱凸轮的轮廓曲面时,其结构参数与从动件运动规律已经提前获得。
所以,在设计圆柱凸轮数据模型时,选择Pro/E系统的应用工具,设置圆柱凸轮自变参数后,赋予参数初值即可。
这里需要注意一点,对于推程角、远休角、回程角、近休角几个参数,需要保证初值之和为360°,即各段曲线是以封闭状态构成凸轮曲线[1]。
1.2利用方程曲线分段模式,描述轮廓曲面扫描轨迹控制线根据圆柱凸轮轮廓曲线数学模型和从动件运动规律,使用方程曲线对轮廓曲面扫描轨迹控制线进行描述。
主要选择推程角、远休角、回程角、近休角,利用这几个角度相对的轮廓曲面,描述圆柱凸轮的平面坐标。
1.3通过扫描变截面,获得凸轮实体选择Pro/E系统中的Fron模块,利用圆周描述凸轮轮廓扫描轨迹原始控制线。
空间圆柱凸轮槽的数控加工及编程实例
需采 用 多 个 走 刀加 工 , 可 先 中 间 开槽 , 然 后 的 位 置 要 求 , 防止铣 刀在铣 削的过程 中由
侧面的法截面线必 须严格平行 ; ( 2 ) 圆柱 凸 再 分 别 加 工 两 侧 面 , 如 果在 编 写 程 序时 , 不 于 凸 轮 轮 槽 的 一侧 是 逆 铣 加 工 ; 另一 侧 是
具规格 / a r m 西1 0 中1 2 西1 3
士轴转速 进 给速 度 背吃 厂 J 量 备注
r /m l n m m /m m / m m
6 0 0 6 0 0 l O 0 o
6 0 6 0 8 0
3 . 5 7 . 5 7 . 5
鳊程 过 程 中举 一 反 三 。
荚 键词 : 数控 壕程 圆柱凸轮槽 加工 工艺 中 图分 类 号 ; T G 6 5 9 文献 标 识 码 : A
文章编 号 : 1 6 7 2 —3 7 9 1 ( 2 o 1 3 ) 0 9 ( a ) 一 0 0 1 1 - 0 2
45。
积小 、 结 构 紧凑 、 刚性好、 转 动 扭 矩 大 等 优
点。 但 圆 柱 凸轮 机 构 属 于 空 间 凸轮 机 构 , 数
手 工 编 程 过程 如 下 所 述 。
开 曲线 图 形轨 迹 , 不 考 虑 刀具 半 径补 偿 。
( 2 ) 对 于 槽 宽 尺 寸 较 大 的 圆柱 凸轮 槽 ,
轮槽在 工作段必须等 宽 。 这 是 保 证 滚 子 在 使 用 刀具 半 径 补 偿 , 那 么加 工 槽 腔 两 个 侧 顺 铣 加 工 , 这 样 使 刀具 受 到 的 切 削 力 不等 , 圆柱 凸轮 槽 中平 稳 运 动 的 必 要 条 件 。
平面凸轮零件走刀路线计算及数控铣编程
平面凸轮零件走刀路线计算及数控铣编程平面凸轮零件图如图1所示,工件的上、下底面及内孔、端面已加工。
完成凸轮轮廓的程序编制。
解:①工艺分析。
从1的要求可以看出,凸轮曲线分别由几段圆弧组成,内孔为设计基准,其余表面包括4-Ф13H7孔均已加工。
故取内孔和一个端面为主要定位面,在连接孔Ф13的一个孔内增加削边销,在端面上用螺母垫圈压紧。
因为孔是设计和定位的基准,所以对刀点选在孔中心线与端面的交点上,这样很容易确定刀具中心与零件的相对位置。
②加工调整。
零件加工坐标系X、Y位于工作台中间,在G53坐标系中取X=-400,Y=-100。
Z坐标可以按刀具长度和夹具、零件高度决定,如选用Ф20的立铣刀,零件上端面为Z向坐标零点,该点在G53坐标系中的位置为Z=-80处,将上述三个数值设置到G54加工坐标系中,即G54:X=-400,Y=-100,Z=-80.凸轮轮廓加工工序卡见表8-17。
表1 铣凸轮轮廓加工工序卡材料45零件号812程序号8121操作序号内容主轴转速/r.min-1进给速度/r.min-1刀具号数类型直径/mm1铣凸轮轮廓200080、200120mm立铣刀20③数字处理。
该凸轮加工的轮廓均为圆弧组成,因而要计算出基点坐标,才可编制程序。
在加工坐标系中,各点的计算坐标如下。
弧BC的中心O1点:X=-(175+63.8)sin8°59′=-37.28Y=-(175+63.8)cos8°59′=-235.86弧EF的中心O2点:X2 + Y2= 692(X-64)2+ Y2= 212X=65.75,Y=20.93解之得弧HI的中心O4点:X=-(175+61)cos24°15′=-215.18Y=(175+61)sin24°15′=96.93弧DE的中心O5点:X2 + Y2= 63.72(X-65.75)2+ (Y-20.93)2= 21.302X=63.70,Y=-0.27解之得B点:X=-63.8sin8°59′=-9.96Y=-63.8cos8°59′=-63.02C点:X2 + Y2= 642(X+37.28)2+ (Y+235.86)2= 1752X=-5.57,Y=-63.76解之得D点:(X-63.70)2+ (Y+0.27)2= 0.32X2 + Y2= 642X=63.99,Y=-0.28解之得E点:(X-63.7)2 + (Y+0.27)2= 0.32(X-65.75)2 + (Y-20.93)2= 212X=63.72,Y=-0.03解之得F点:(X+1.07)2 + (Y-16)2= 462(X-65.75)2 + (Y-20.93)2= 212X=44.79,Y=-19.6解之得G点:(X+1.07)2 + (Y-16)2= 462X2 + Y2= 612X=14.79,Y=59.18解之得H点:X=-61cos24°15′=-55.62Y=61sin24°15′=25.05解之得I点:X2 + Y2= 63.802(X+215.18)2+(Y-96.93)2=1752X=-63.02,Y=9.97根据上面的数值计算,可画出凸轮加工走刀路线,如图2所示。
VB凸轮轮廓线数控加工程序的设计_源代码
八附源程序模块Option ExplicitPublic ptx(3600) As Double '曲线存储点数组Public pty(3600) As Double '由于存储最终输出的点Public low As Double '数组下标Public countnum As Integer '存储当前为第几段曲线输入的值Public Const PI = 3.14159Public area As Double '存储角度围的值Public sch As Double '总升程Public tch As Double '输入曲线的推程Public Huan As Double '坐标变换数据Public Gao As DoublePublic a1 As String, a2 As String, a3 As StringPublic b1 As DoublePublic savetime As DoublePublic i As DoubleFrmView 主窗口Option ExplicitDim j%Public bch As String, zbx As String, M As Integer, sd As String Private Sub CmbSlect_Click() '选择曲线类型Select Case CmbSlect.ListIndexCase 0 '等加速运动dengjiasu.NumStr.Text = "" '清空Text文本框dengjiasu.NumEnd.Text = ""dengjiasu.NumH.Text = ""dengjiasu.NumStr.Text = area '设定default围dengjiasu.NumStr.Enabled = Falsedengjiasu.NumEnd.Enabled = TrueIf CountAll.Caption = CountNow.Caption Then '最后一段曲线dengjiasu.NumEnd.Text = "360" '输入时,自动输入 dengjiasu.NumEnd.Enabled = False '默认值dengjiasu.NumH.Text = -b1End Ifdengjiasu.Show 1Case 1 '等速运动dengsu.NumStr.Text = ""dengsu.NumEnd.Text = ""dengsu.NumH.Text = ""dengsu.NumStr.Text = areadengsu.NumStr.Enabled = Falsedengsu.NumEnd.Enabled = TrueIf CountAll.Caption = CountNow.Caption Thendengsu.NumEnd.Text = "360"dengsu.NumEnd.Enabled = Falsedengsu.NumH.Text = -b1End Ifdengsu.Show 1Case 2 '正弦加速度运动sinx.NumStr.Text = ""sinx.NumEnd.Text = ""sinx.NumH.Text = ""sinx.NumStr.Text = areasinx.NumStr.Enabled = Falsesinx.NumEnd.Enabled = TrueIf CountAll.Caption = CountNow.Caption Thensinx.NumEnd.Text = "360"sinx.NumEnd.Enabled = Falsesinx.NumH.Text = -b1End Ifsinx.Show 1Case 3 '余弦加速度运动Cosx.NumStr.Text = ""Cosx.NumEnd.Text = ""Cosx.NumH.Text = ""Cosx.NumStr.Text = areaCosx.NumStr.Enabled = FalseCosx.NumEnd.Enabled = TrueIf CountAll.Caption = CountNow.Caption ThenCosx.NumEnd.Text = "360"Cosx.NumEnd.Enabled = FalseCosx.NumH.Text = -b1End IfCosx.Show 1Case 4 '等减速运动dengjiansu.NumStr.Text = ""dengjiansu.NumEnd.Text = ""dengjiansu.NumH.Text = ""dengjiansu.NumStr.Text = areadengjiansu.NumStr.Enabled = Falsedengjiansu.NumEnd.Enabled = TrueIf CountAll.Caption = CountNow.Caption Thendengjiansu.NumEnd.Text = "360"dengjiansu.NumEnd.Enabled = Falsedengjiansu.NumH.Text = -b1End Ifdengjiansu.Show 1End SelectEnd SubPrivate Sub Command1_Click()On Error Resume NextStatic i%Dim FileSelect$i% = i% + 1j% = i%CommonDialog2.Action = 2CommonDialog2.InitDir = "c:\"FileSelect$ = CommonDialog2.FileNamePicView1.Picture = PicView1.ImageSavePicture PicView1.Picture, FileSelect$End SubPrivate Sub Command2_Click()On Error Resume Next '推杆运动曲线图导出 Static i%Dim FileSelect$i% = i% + 1j% = i%CommonDialog3.Action = 2CommonDialog3.InitDir = "c:\"FileSelect$ = CommonDialog3.FileNamePicView2.Picture = PicView2.ImageSavePicture PicView2.Picture, FileSelect$End SubPrivate Sub Command3_Click()NCFile_ClickEnd SubPrivate Sub Form_Load()area = 0countnum = 1FrmView.ShowfrmAbout.ShowfrmAbout.Timer1.Interval = 250End SubPrivate Sub Frmch_Click()Frmliuch.ShowEnd SubPrivate Sub NCFile_Click()FrmNC.Show 1End SubPrivate Sub New_Click()FrmView.InRadius.Text = "" '清空Frmin1窗口中文本框的数值FrmView.InRise1.Text = ""FrmView.InNum.Text = ""low = 0 '数据初始化area = 0b1 = 0FrmView.PicView1.Cls '预览窗口清屏FrmView.PicView2.ClsFrmView.PicView2.ScaleLeft = -20 '初始化坐标系FrmView.PicView2.ScaleTop = 18FrmView.Picture1.ClsFrmView.ShowFrmView.InRadius.Enabled = TrueFrmView.InRise1.Enabled = TrueFrmView.InNum.Enabled = TrueFrmView.qued.Enabled = Truebel5.Visible = FalseFrmView.CountAll.Caption = 0FrmView.CountNow.Caption = 0bel18.Caption = "基本参数输入"FrmView.CmbSlect.Enabled = FalsePicView1.Visible = FalsePicView2.Visible = FalsePicture1.Visible = FalseOption6.Value = TrueEnd SubPrivate Sub new1_Click()New_ClickEnd SubPrivate Sub Option1_Click()zbx = "G90"End SubPrivate Sub Option2_Click()zbx = "G91"End SubPrivate Sub Option3_Click()bch = ""End SubPrivate Sub Option4_Click()bch = "G41"End SubPrivate Sub Option5_Click()bch = "G42"End SubPrivate Sub pmian_Click()Command1_ClickEnd SubPrivate Sub qued_click()Dim c1 As Integer, c2 As Integer, c As Integer'验证基圆半径,升程,曲线段数的输入是否为数字If Val(InRadius) <= 0 ThenMsgBox ("不能为空或负值,请重新输入"), 16 InRadius = ""InRadius.SetFocusElseIf Val(InRise1) <= 0 ThenMsgBox ("不能为空或负值,请重新输入"), 16InRise1 = ""InRise1.SetFocusElseIf Val(InNum) <= 1 ThenMsgBox ("这不是凸轮,请输入大于等于2的数"), 64 InNum = ""InNum.SetFocusElseIf IsNumeric(InRadius.Text) And _IsNumeric(InRise1) And IsNumeric(InNum.Text) Then FrmView.InRadius.Enabled = FalseFrmView.InRise1.Enabled = FalseFrmView.InNum.Enabled = FalseFrmView.qued.Enabled = Falsebel18.Caption = "基本参数输入完毕!" FrmView.CmbSlect.Enabled = TrueFrmView.CmbSlect.Enabled = TruePicView1.Visible = TruePicView2.Visible = TruePicture1.Visible = True'确定FrmView.PicView1,FrmView.PicView2的坐标系,其围随输入的'基圆半径、升程的变化而变化c1 = Val(InRadius)c2 = Val(InRise1)c = 1.2 * (c1 + c2)FrmView.PicView1.Scale (-c, c)-(c, -c)PicView1.Line (0, -1.2 * (c1 + c2))-(0, 1.2 * (c1 + c2)), RGB(0, 128, 0) PicView1.Line (-1.2 * (c1 + c2), 0)-(1.2 * (c1 + c2), 0), RGB(0, 128, 0)For i = 1 To 10PicView1.Line (0 + i * ((c1 + c2) / 10), 0)-(0 + i * ((c1 + c2) / 10), c / 50), RGB(0, 128, 0)PicView1.Line (0 - i * ((c1 + c2) / 10), 0)-(0 - i * ((c1 + c2) / 10), c / 50), RGB(0, 128, 0)PicView1.Line (0, 0 + i * ((c1 + c2) / 10))-(c / 30, 0 + i * ((c1 + c2) / 10)), RGB(0, 128, 0)PicView1.Line (0, 0 - i * ((c1 + c2) / 10))-(c / 30, 0 - i * ((c1 + c2) / 10)), RGB(0, 128, 0)Next iPicView2.ScaleHeight = -1.1 * c2PicView2.ScaleTop = c2PicView2.Line (0, 0)-(540, 0), RGB(0, 128, 0)For i = 1 To 4PicView2.Line (0, 0 + i * (c2 / 4))-(5, 0 + i * (c2 / 4)), RGB(0, 128, 0) Next iPicView2.Line (0, 0)-(0, c2), RGB(0, 128, 0)For i = 1 To 8PicView2.Line (0 + i * (540 / 8), 0)-(0 + i * (540 / 8), c2 / 24), RGB(0, 128, 0)Next iFrmView.PicView2.ScaleHeight = -1.1 * c2FrmView.PicView2.ScaleTop = c2'主窗口显示要输入的曲线的段数FrmView.CountAll.Caption = InNum.TextFrmView.CountNow.Caption = 1countnum = 1tch = 0: sch = Val(InRise1)Huan = 0: Gao = 0bel5.Visible = FalseFrmView.Picture1.Print " "; "基圆半径"; ":"; InRadius.TextFrmView.Picture1.Print " "; "升程"; ":"; InRise1.TextFrmView.Picture1.Print " "; "曲线段数"; ":"; InNum.Text'在Frmview.Picview1中输出基圆及升程的图形FrmView.PicView1.DrawStyle = 2FrmView.PicView1.Circle (0, 0), Val(InRadius), RGB(0, 0, 1000)FrmView.PicView1.Circle (0, 0), Val(InRadius) + Val(InRise1), RGB(0, 0, 1000) FrmView.PicView1.DrawStyle = 0ElseMsgBox ("输入为空,或非法字符,请重新输入"), 16End IfEnd SubPrivate Sub quxiao_Click()tuichu.ShowEnd SubPrivate Sub qxian_Click()Command2_ClickEnd SubPrivate Sub Timer1_Timer()Static a As IntegerIf a ThenOption7.Visible = TrueElseOption7.Visible = FalseEnd Ifa = Not aEnd SubCosx窗体Option ExplicitPrivate Sub Command1_Click()Dim str As Double, end1 As Double, h As DoubleDim i As Double, radius As DoubleDim X As Double, Y As DoubleIf IsNumeric(NumStr) And IsNumeric(NumEnd) And IsNumeric(NumH) ThenIf Val(NumEnd) > Val(NumStr) Thenstr = Val(NumStr): end1 = Val(NumEnd): h = Val(NumH)radius = Val(FrmView.InRadius)low = 10 * Val(NumStr)For i = 0 To (end1 - str) Step 0.1X = i * 540 / 360Y = h * (1 - Cos(PI * i / (end1 - str))) / 2FrmView.PicView2.PSet (X, Y), RGB(1000, 0, 0)ptx(low) = (radius + (Gao + Y)) * Sin((Huan + i) * PI /)pty(low) = (radius + (Gao + Y)) * Cos((Huan + i) * PI /)FrmView.PicView1.PSet (ptx(low), pty(low)), RGB(1000, 0, 0)low = low + 1Cosx.HideFrmView.CmbSlect.Enabled = FalseIf FrmView.Option7.Value = True ThenFrmView.Timer1.Enabled = TrueFrmView.Option7.BackColor = &H80FF80FrmView.Option7.ForeColor = &HFF&ElseFrmView.Timer1.Enabled = FalseEnd IfIf FrmView.Option6.Value = True ThenFrmView.Option7.Visible = TrueFrmView.Timer1.Enabled = Falsesavetime = Timer '记下开始的时间While Timer < savetime + 0.0001 '快DoEventsWendElsesavetime = Timer '记下开始的时间While Timer < savetime + 0.01 '循环等待DoEventsWendEnd IfNext iFrmView.CmbSlect.Enabled = TrueFrmView.Timer1.Enabled = FalseFrmView.Option7.BackColor = &H808000FrmView.Option7.ForeColor = &H80000012'显示当前为第几条曲线If FrmView.CountAll.Caption = FrmView.CountNow.Caption Then bel5.Visible = TrueFrmView.CmbSlect.Enabled = FalseElsecountnum = countnum + 1FrmView.CountNow.Caption = countnumEnd IfCosx.Hide'设定围area = Val(NumEnd)tch = tch + h'坐标变换数据FrmView.PicView2.ScaleTop = sch - tchFrmView.PicView2.ScaleLeft = -20 - 540 / 360 * Val(NumEnd)Huan = Val(NumEnd)Gao = Gao + ha1 = NumStr: a2 = NumEnd: a3 = NumHFrmView.Picture1.Print a1; "~"; a2; " "; "h="; a3; " "; _ "余弦加速度运动"b1 = b1 + Val(NumH)If Gao > Val(FrmView.InRise1) ThenMsgBox ("超出总升程,请重新输入!"), 16low = 0 '数据初始化area = 0b1 = 0FrmView.PicView1.Cls '预览窗口清屏FrmView.PicView2.ClsFrmView.PicView2.ScaleLeft = -20 '初始化坐标系FrmView.PicView2.ScaleTop = 18FrmView.Picture1.ClsFrmView.ShowFrmView.InRadius.Enabled = TrueFrmView.InRise1.Enabled = TrueFrmView.InNum.Enabled = TrueFrmView.qued.Enabled = Truebel5.Visible = FalseFrmView.CountAll.Caption = 0FrmView.CountNow.Caption = 0bel18.Caption = "基本参数输入"FrmView.CmbSlect.Enabled = FalseFrmView.PicView1.Visible = FalseFrmView.PicView2.Visible = FalseFrmView.Option6.Value = TrueEnd IfElseMsgBox ("围出错!"), 16Cosx.NumEnd.Text = ""Cosx.NumEnd.SetFocusEnd IfElseMsgBox ("输入为空或有非法字符,请重新输入!")End IfEnd SubPrivate Sub Command2_Click()Cosx.HideEnd SubSin窗体Option ExplicitPrivate Sub Command1_Click()Dim str As Double, end1 As Double, h As DoubleDim i As Double, radius As Double, savetime As DoubleDim X As Double, Y As DoubleIf IsNumeric(NumStr) And IsNumeric(NumEnd) And IsNumeric(NumH) ThenIf Val(NumEnd) > Val(NumStr) Thenstr = Val(NumStr): end1 = Val(NumEnd): h = Val(NumH)radius = Val(FrmView.InRadius)low = 10 * Val(NumStr)For i = 0 To (end1 - str) Step 0.1X = i * 540 / 360Y = h * ((i / (end1 - str)) - Sin(2 * PI * i / (end1 - str)) / (2 * PI)) FrmView.PicView2.PSet (X, Y), RGB(1000, 0, 0)ptx(low) = (radius + (Gao + Y)) * Sin((Huan + i) * PI /)pty(low) = (radius + (Gao + Y)) * Cos((Huan + i) * PI /)FrmView.PicView1.PSet (ptx(low), pty(low)), RGB(1000, 0, 0)low = low + 1sinx.HideFrmView.CmbSlect.Enabled = FalseIf FrmView.Option7.Value = True ThenFrmView.Timer1.Enabled = TrueFrmView.Option7.BackColor = &H80FF80FrmView.Option7.ForeColor = &HFF&ElseFrmView.Timer1.Enabled = FalseEnd IfIf FrmView.Option6.Value = True ThenFrmView.Option7.Visible = TrueFrmView.Timer1.Enabled = Falsesavetime = Timer '记下开始的时间While Timer < savetime + 0.0001 '快DoEventsWendElsesavetime = Timer '记下开始的时间While Timer < savetime + 0.01 '循环等待DoEventsWendEnd IfNext iFrmView.CmbSlect.Enabled = TrueFrmView.Timer1.Enabled = FalseFrmView.Option7.BackColor = &H808000FrmView.Option7.ForeColor = &H80000012'显示当前为第几条曲线If FrmView.CountAll.Caption = FrmView.CountNow.Caption Thenbel5.Visible = TrueFrmView.CmbSlect.Enabled = FalseElsecountnum = countnum + 1FrmView.CountNow.Caption = countnumEnd Ifsinx.Hide'设定围area = Val(NumEnd)tch = tch + h'坐标变换数据FrmView.PicView2.ScaleTop = sch - tchFrmView.PicView2.ScaleLeft = -20 - 540 / 360 * Val(NumEnd)Huan = Val(NumEnd)Gao = Gao + ha1 = NumStr: a2 = NumEnd: a3 = NumHFrmView.Picture1.Print a1; "~"; a2; " "; "h="; a3; " "; _ "正弦加速度运动"b1 = b1 + Val(NumH)If Gao > Val(FrmView.InRise1) ThenMsgBox ("超出总升程,请重新输入!"), 16low = 0 '数据初始化area = 0b1 = 0FrmView.PicView1.Cls '预览窗口清屏FrmView.PicView2.ClsFrmView.PicView2.ScaleLeft = -20 '初始化坐标系FrmView.PicView2.ScaleTop = 18FrmView.Picture1.ClsFrmView.ShowFrmView.InRadius.Enabled = TrueFrmView.InRise1.Enabled = TrueFrmView.InNum.Enabled = TrueFrmView.qued.Enabled = Truebel5.Visible = FalseFrmView.CountAll.Caption = 0FrmView.CountNow.Caption = 0bel18.Caption = "基本参数输入"FrmView.CmbSlect.Enabled = FalseFrmView.PicView1.Visible = FalseFrmView.PicView2.Visible = FalseFrmView.Option6.Value = TrueEnd IfElseMsgBox ("围出错!"), 16sinx.NumEnd.Text = ""sinx.NumEnd.SetFocusEnd IfElseMsgBox ("输入为空或有非法字符,请重新输入!")End IfEnd SubPrivate Sub Command2_Click()sinx.HideEnd SubDengjiansu窗体Option ExplicitPrivate Sub Command1_Click()Dim str As Double, end1 As Double, h As DoubleDim i As Double, radius As DoubleDim X As Double, Y As DoubleIf IsNumeric(NumStr) And IsNumeric(NumEnd) And IsNumeric(NumH) Then If Val(NumEnd) > Val(NumStr) Thenstr = Val(NumStr): end1 = Val(NumEnd): h = Val(NumH)radius = Val(FrmView.InRadius)low = 10 * Val(NumStr)For i = 0 To (end1 - str) Step 0.1X = i * 540 / 360Y = h - h * ((end1 - str) - i) ^ 2 / (end1 - str) ^ 2FrmView.PicView2.PSet (X, Y), RGB(1000, 0, 0)ptx(low) = (radius + (Gao + Y)) * Sin((Huan + i) * PI /)pty(low) = (radius + (Gao + Y)) * Cos((Huan + i) * PI /)FrmView.PicView1.PSet (ptx(low), pty(low)), RGB(1000, 0, 0) low = low + 1dengjiansu.HideFrmView.CmbSlect.Enabled = FalseIf FrmView.Option7.Value = True ThenFrmView.Timer1.Enabled = TrueFrmView.Option7.BackColor = &H80FF80FrmView.Option7.ForeColor = &HFF&ElseFrmView.Timer1.Enabled = FalseEnd IfIf FrmView.Option6.Value = True ThenFrmView.Option7.Visible = TrueFrmView.Timer1.Enabled = Falsesavetime = Timer '记下开始的时间While Timer < savetime + 0.0001 '快DoEventsWendElsesavetime = Timer '记下开始的时间While Timer < savetime + 0.01 '循环等待DoEventsWendEnd IfNext iFrmView.CmbSlect.Enabled = TrueFrmView.Timer1.Enabled = FalseFrmView.Option7.BackColor = &H8000000FFrmView.Option7.ForeColor = &H80000012'显示当前为第几条曲线If FrmView.CountAll.Caption = FrmView.CountNow.Caption Then bel5.Visible = TrueFrmView.CmbSlect.Enabled = FalseElsecountnum = countnum + 1FrmView.CountNow.Caption = countnumEnd Ifdengjiansu.Hide'设定围area = Val(NumEnd)tch = tch + h'坐标变换数据FrmView.PicView2.ScaleTop = sch - tchFrmView.PicView2.ScaleLeft = -20 - 540 / 360 * Val(NumEnd)Huan = Val(NumEnd)Gao = Gao + ha1 = NumStr: a2 = NumEnd: a3 = NumHFrmView.Picture1.Print a1; "~"; a2; " "; "h="; a3; " "; _ "等减速运动"b1 = b1 + Val(NumH)If Gao > Val(FrmView.InRise1) ThenMsgBox ("超出总升程,请重新输入!"), 16low = 0 '数据初始化area = 0b1 = 0FrmView.PicView1.Cls '预览窗口清屏FrmView.PicView2.ClsFrmView.PicView2.ScaleLeft = -20 '初始化坐标系FrmView.PicView2.ScaleTop = 18FrmView.Picture1.ClsFrmView.ShowFrmView.InRadius.Enabled = TrueFrmView.InRise1.Enabled = TrueFrmView.InNum.Enabled = TrueFrmView.qued.Enabled = Truebel5.Visible = FalseFrmView.CountAll.Caption = 0FrmView.CountNow.Caption = 0bel18.Caption = "基本参数输入"FrmView.CmbSlect.Enabled = FalseFrmView.PicView1.Visible = FalseFrmView.PicView2.Visible = FalseFrmView.Option6.Value = TrueEnd IfElseMsgBox ("围出错!"), 16dengjiansu.NumEnd.Text = ""dengjiansu.NumEnd.SetFocusEnd IfElseMsgBox ("输入为空或有非法字符,请重新输入!")End IfEnd SubPrivate Sub Command2_Click()dengjiansu.HideEnd SubDengjiasu 窗体Option ExplicitPrivate Sub Command1_Click()Dim str As Double, end1 As Double, h As DoubleDim i As Double, radius As DoubleDim X As Double, Y As DoubleIf IsNumeric(NumStr) And IsNumeric(NumEnd) And IsNumeric(NumH) Then If Val(NumEnd) > Val(NumStr) Thenstr = Val(NumStr): end1 = Val(NumEnd): h = Val(NumH)radius = Val(FrmView.InRadius)low = 10 * Val(NumStr)For i = 0 To (end1 - str) Step 0.1X = i * 540 / 360Y = h * (i ^ 2) / ((end1 - str) ^ 2)FrmView.PicView2.PSet (X, Y), RGB(1000, 0, 0)ptx(low) = (radius + (Gao + Y)) * Sin((Huan + i) * PI /)pty(low) = (radius + (Gao + Y)) * Cos((Huan + i) * PI /)FrmView.PicView1.PSet (ptx(low), pty(low)), RGB(1000, 0, 0)low = low + 1dengjiasu.HideFrmView.CmbSlect.Enabled = FalseIf FrmView.Option7.Value = True ThenFrmView.Timer1.Enabled = TrueFrmView.Option7.BackColor = &H80FF80FrmView.Option7.ForeColor = &HFF&ElseFrmView.Timer1.Enabled = FalseEnd IfIf FrmView.Option6.Value = True ThenFrmView.Option7.Visible = TrueFrmView.Timer1.Enabled = Falsesavetime = Timer '记下开始的时间While Timer < savetime + 0.0001 '快DoEventsWendElsesavetime = Timer '记下开始的时间While Timer < savetime + 0.01 '循环等待DoEventsWendEnd IfNext iFrmView.CmbSlect.Enabled = TrueFrmView.Timer1.Enabled = FalseFrmView.Option7.BackColor = &H808000FrmView.Option7.ForeColor = &H80000012'显示当前为第几条曲线If FrmView.CountAll.Caption = FrmView.CountNow.Caption Thenbel5.Visible = TrueFrmView.CmbSlect.Enabled = FalseElsecountnum = countnum + 1FrmView.CountNow.Caption = countnumEnd Ifdengjiasu.Hide'设定围area = Val(NumEnd)tch = tch + h'坐标变换数据FrmView.PicView2.ScaleTop = sch - tchFrmView.PicView2.ScaleLeft = -20 - 540 / 360 * Val(NumEnd)Huan = Val(NumEnd)Gao = Gao + ha1 = NumStr: a2 = NumEnd: a3 = NumHFrmView.Picture1.Print a1; "~"; a2; " "; "h="; a3; " "; _ "等加速度运动"b1 = b1 + Val(NumH)If Gao > Val(FrmView.InRise1) ThenMsgBox ("超出总升程,请重新输入!"), 16low = 0 '数据初始化area = 0b1 = 0FrmView.PicView1.Cls '预览窗口清屏FrmView.PicView2.ClsFrmView.PicView2.ScaleLeft = -20 '初始化坐标系FrmView.PicView2.ScaleTop = 18FrmView.Picture1.ClsFrmView.ShowFrmView.InRadius.Enabled = TrueFrmView.InRise1.Enabled = TrueFrmView.InNum.Enabled = TrueFrmView.qued.Enabled = Truebel5.Visible = FalseFrmView.CountAll.Caption = 0FrmView.CountNow.Caption = 0bel18.Caption = "基本参数输入"FrmView.CmbSlect.Enabled = FalseFrmView.PicView1.Visible = FalseFrmView.PicView2.Visible = FalseFrmView.Option6.Value = TrueEnd IfElseMsgBox ("围出错!"), 16dengjiasu.NumEnd.Text = ""dengjiasu.NumEnd.SetFocusEnd IfElseMsgBox ("输入为空或有非法字符,请重新输入!")End IfEnd SubPrivate Sub Command2_Click()dengjiasu.HideEnd SubDengsu 窗体Option ExplicitPrivate Sub Command1_Click()Dim str As Double, end1 As Double, h As DoubleDim i As Double, radius As DoubleDim X As Double, Y As Double'检查输入是否全为数字If IsNumeric(NumStr) And IsNumeric(NumEnd) And IsNumeric(NumH) Then '检查终止角度(end1)是否大于初始角度(str)If Val(NumEnd) > Val(NumStr) Thenstr = Val(NumStr): end1 = Val(NumEnd): h = Val(NumH)radius = Val(FrmView.InRadius)low = 10 * Val(NumStr) '为ptx()、pty()的下标赋值 For i = 0 To (end1 - str) Step 0.1X = i * 540 / 360Y = h * i / (end1 - str)FrmView.PicView2.PSet (X, Y), RGB(1000, 0, 0)'坐标变换,把Picview2中的图形转换到Picview1中ptx(low) = (radius + (Gao + Y)) * Sin((Huan + i) * PI /)pty(low) = (radius + (Gao + Y)) * Cos((Huan + i) * PI /)FrmView.PicView1.PSet (ptx(low), pty(low)), RGB(1000, 0, 0) low = low + 1dengsu.HideFrmView.CmbSlect.Enabled = FalseIf FrmView.Option7.Value = True ThenFrmView.Timer1.Enabled = TrueFrmView.Option7.BackColor = &H80FF80FrmView.Option7.ForeColor = &HFF&ElseFrmView.Timer1.Enabled = FalseEnd IfIf FrmView.Option6.Value = True ThenFrmView.Option7.Visible = TrueFrmView.Timer1.Enabled = Falsesavetime = Timer '记下开始的时间While Timer < savetime + 0.0001 '快DoEventsWendElsesavetime = Timer '记下开始的时间While Timer < savetime + 0.01 '循环等待DoEventsWendEnd IfNext iFrmView.CmbSlect.Enabled = TrueFrmView.Timer1.Enabled = FalseFrmView.Option7.BackColor = &H8000000FFrmView.Option7.ForeColor = &H80000012'显示当前为第几条曲线的输入If FrmView.CountAll.Caption = FrmView.CountNow.Caption Then bel5.Visible = TrueFrmView.CmbSlect.Enabled = FalseElsecountnum = countnum + 1FrmView.CountNow.Caption = countnumEnd Ifdengsu.Hide'设定围area = Val(NumEnd)tch = tch + h'坐标变换数据FrmView.PicView2.ScaleTop = sch - tchFrmView.PicView2.ScaleLeft = -20 - 540 / 360 * Val(NumEnd)Huan = Val(NumEnd)Gao = Gao + ha1 = NumStr: a2 = NumEnd: a3 = NumH'把所选函数及输入的参数显示在主窗口的参数显示栏FrmView.Picture1.Print a1; "~"; a2; " "; "h="; a3; " "; _ "等速运动"b1 = b1 + Val(NumH)If Gao > Val(FrmView.InRise1) ThenMsgBox ("超出总升程,请重新输入!"), 16low = 0 '数据初始化area = 0b1 = 0FrmView.PicView1.Cls '预览窗口清屏FrmView.PicView2.ClsFrmView.PicView2.ScaleLeft = -20 '初始化坐标系FrmView.PicView2.ScaleTop = 18FrmView.Picture1.ClsFrmView.ShowFrmView.InRadius.Enabled = TrueFrmView.InRise1.Enabled = TrueFrmView.InNum.Enabled = TrueFrmView.qued.Enabled = Truebel5.Visible = FalseFrmView.CountAll.Caption = 0FrmView.CountNow.Caption = 0bel18.Caption = "基本参数输入"FrmView.CmbSlect.Enabled = FalseFrmView.PicView1.Visible = FalseFrmView.PicView2.Visible = FalseFrmView.Option6.Value = TrueEnd IfElseMsgBox ("围出错!"), 16dengsu.NumEnd.Text = ""dengsu.NumEnd.SetFocusEnd IfElseMsgBox ("输入为空或有非法字符,请重新输入!")End IfEnd SubPrivate Sub Command2_Click()dengsu.HideEnd SubFrmabout 窗体Option ExplicitPrivate Sub cmdOK_Click()FrmView.ShowFrmView.Enabled = TruefrmAbout.HideEnd SubPrivate Sub Timer1_Timer()If lblTitle.Visible = True ThenlblTitle.Visible = FalseElselblTitle.Visible = TrueEnd IfEnd SubPrivate Sub Timer3_Timer()Static b As BooleanIf b ThenLabel2.Left = Label2.Left + 150Else: Label2.Left = Label2.Left - 150End IfIf Label2.Left <= 0 Then b = TrueIf Label2.Left >= frmAbout.Width - Label2.Width - 500 Then b = FalseEnd IfEnd SubFrmNC窗体Private Sub Command2_Click()If IsNumeric(Text1) And IsNumeric(Text2) And IsNumeric(Text3) And _IsNumeric(Text4) And IsNumeric(Text5) And IsNumeric(Text6) And _IsNumeric(Text7) And IsNumeric(Text8) ThenDim i As Integer, j As Double, fName2 As StringCommonDialog1.InitDir = "c:\"CommonDialog1.FileName = "凸轮代码1.nc"CommonDialog1.Filter = "nc文件(*.nc)|*.nc|文本(*.txt)|*.txt|所有文件(*.*)|*.*" CommonDialog1.DefaultExt = "nc"CommonDialog1.Action = 2Open CommonDialog1.FileName For Output As #1j = 100'绝对坐标编程If Option1.Value = True Then'NC代码的开始部分Print #1, "%"Print #1, "N"; LTrim(RTrim(j)); "G17G40G49G80"j = j + 1Print #1, "N"; LTrim(RTrim(j)); "M06T01"j = j + 1Print #1, "N"; LTrim(RTrim(j)); "G00G90G54"; bch; _"D01X"; RTrim(LTrim(Format$(ptx(0), "###.###"))); _"Y"; RTrim(LTrim(Format$(pty(0), "###.###"))); "Z"; _LTrim(RTrim(Val(Text6))); _"S"; LTrim(RTrim(Val(Text4))); "M3"j = j + 1Print #1, "N"; LTrim(RTrim(j)); "Z2"; "F"; LTrim(RTrim(Val(Text2)))sd = Val(Text8)For M = 1 To Val(Text8)j = j + 1Print #1, "N"; LTrim(RTrim(j)); "G01Z-"; _LTrim(RTrim(Val(Text7))); _"F"; LTrim(RTrim(Text1))j = j + 1'主要走刀部分For i = 1 To 3599Print #1, "N"; LTrim(RTrim(j)); "G01"; _; "X"; LTrim(RTrim(Format$(ptx(i), "###.###"))); _"Y"; LTrim(RTrim(Format$(pty(i), "###.###")))j = j + 1Next isd = sd + Val(Text7)Next MPrint #1, "N"; LTrim(RTrim(j)); "G00"; "G40"; _"Z"; LTrim(RTrim(Val(Text6)))j = j + 1Print #1, "N"; LTrim(RTrim(j)); "M05"j = j + 1Print #1, "N"; LTrim(RTrim(j)); "M02"Print #1, "%"Close #1Else'相对坐标编程If Option2.Value = True ThenPrint #1, "%"Print #1, "N"; LTrim(RTrim(j)); "G17G40G49G80"j = j + 1Print #1, "N"; LTrim(RTrim(j)); "M06T01"j = j + 1Print #1, "N"; LTrim(RTrim(j)); "G00G91G54"; bch; "D01X"; RTrim(LTrim(ptx(0))); _ "Y"; RTrim(LTrim(pty(0))); "Z"; LTrim(RTrim(Val(Text6))); _"S"; LTrim(RTrim(Val(Text4))); "M3"j = j + 1Print #1, "N"; LTrim(RTrim(j)); "Z2"; "F"; LTrim(RTrim(Val(Text2)))sd = Val(Text8)For M = 1 To Val(Text8)j = j + 1Print #1, "N"; LTrim(RTrim(j)); "G01Z-"; LTrim(RTrim(Val(Text7))); _"F"; LTrim(RTrim(Val(Text1)))j = j + 1For i = 1 To 3599Print #1, "N"; LTrim(RTrim(j)); "G01"; "X"; LTrim(RTrim(Format((ptx(i) - ptx(i - 1)), "###.###"))); _"Y"; LTrim(RTrim(Format$((pty(i) - pty(i - 1)), "###.###")))j = j + 1Next isd = sd + Val(Text7)Next MPrint #1, "N"; LTrim(RTrim(j)); "G00"; "G40"; "Z"; LTrim(RTrim(Val(Text6)))j = j + 1Print #1, "N"; LTrim(RTrim(j)); "M05" j = j + 1Print #1, "N"; LTrim(RTrim(j)); "M02" Print #1, "%"Close #1End IfEnd IfElseMsgBox ("有非法字符或其它错误,请检查") End IfEnd SubPrivate Sub Command3_Click()FrmNC.HideEnd SubTuichu 窗体Option ExplicitPrivate Sub CancelButton_Click() FrmView.ShowEnd SubPrivate Sub OKButton_Click()EndEnd Sub。
凸轮板零件数控加工程序设计
沈阳理工大学课程设计专用纸NO 数控加工编程课程设计任务书设计题目:凸轮板零件数控加工程序设计设计内容: 1、零件图工艺分析及绘制2、编制零件数控加工工艺规程3、绘制数控编程坐标系4、编制零件数控加工程序5、#数控加工程序仿真校验 #6、编写课程设计说明书时间安排: 1、零件图绘制及零件图工艺分析 1 天2、编制零件数控加工工艺规程 1 天3、编制零件数控加工程序 1 天4、#数控加工程序调试及仿真校验 #0.5 天5、编写课程设计说明书 1 天6、答辩0.5 天指导教师:专业负责人:主管院长:年月日沈阳理工大学课程设计专用纸NO前言从20 世纪中叶数控技术出现以来,数控铣床给机械制造业带来了革命性的变化。
数控铣床加工具有如下特点:加工柔性好,加工精度高,生产率高,减轻操作者劳动强度、改善劳动条件,有利于生产管理的现代化以及经济效益的提高。
数控铣床是一种高度机电一体化的产品,适用于加工多品种小批量零件、结构较复杂、精度要求较高的零件、需要频繁改型的零件、价格昂贵不允许报废的关键零件、要求精密复制的零件、需要缩短生产周期的急需零件以及要求 100%检验的零件。
数控铣床集计算机技术、电子技术、自动控制、传感测量、机械制造、网络通信技术于一体,是典型的机电一体化产品,它的发展和运用,开创了制造业的新时代,改变了制造业的生产方式、产业结构、管理方式,使世界制造业的格局发生了巨大变化。
现代的 CAD/CAM、FMS、CIMS等,都是建立在数控技术之上。
数控技术水平的高低已成为衡量一个国家制造业现代化程度的核心标志,实现加工机床及生产过程数控化,已经成为当今制造业的发展方向。
数控铣床具有广泛的适应性,加工对象改变时只需要改变输入的程序指令;加工性能比一般自动机床高,可以精确加工复杂型面,因而适合于加工中小批量、改型频繁、精度要求高、形状又较复杂的工件,并能获得良好的经济效果。
随着数控技术的发展,采用数控系统的机床品种日益增多,有铣床、镗床、钻床、磨床、齿轮加工机床和电火花加工机床等。
参考案例-凸轮盘零件工艺规程及数控编程
环。 尺寸链方程为:
A0 A1 A2
7
0.05 A C
B
0.1 C
a0
A1 A2 A0
A2 A0
a1
A1
a2
A
a)
b)
c)
三、数控编程
1、加工方式的选择 数控编程是数控加工准备阶段的主要内容,通常包括分析零件图样,确定加工工艺
过程;计算走刀轨迹,得出刀位数据;编写数控加工程序;制作控制介质;校对程序及 首件试切。总之,它是从零件图纸到获得数控加工程序的全过程。
自 2014 年 2 月 15 日 起 至 2014 年 4 月 10 日 止
四、指导教师:
姓名 张军
工作单位 北京劳动保障职业学院
职称 讲师
学校负责人:
2014 年 4 月 15 日
2
内容摘要
此毕业设计的内容为:凸轮盘零件工艺规程及数控编程 此凸轮盘类件为机械制造中一般零件,但内型为对称图形,对加工用机床和编程有 一定要求,要能熟练实用机床以及进行编程。 1、零件的分析,有句话叫“不打无准备之仗”,因此做任何事前都要对所做的事情 有一定了解,进行可行性分析等。这次毕业设计是从零件的结构、精度等方面去分析, 从而明确加工内容,确定工艺路线。 2、零件的工艺路线分析,工艺路线的分析包括毛坯分析、毛坯制造方法、工件的 加工步骤、工序的选择、工件的装卡、工件的加工方法、刀具的选择、工序尺寸的计算 方法等方面考虑。 3、数控的编程,通过编程用加工中心把零件加工完成,以达到加工目的,同时完 成刀具卡片的填写。 4、毕业设计小结,通过对零件的加工、对编程的温习,使我对数控的了解更深了 一些。
4、工件的加工顺序 该工件的平面加工需要粗、精两次铣削。具体加工顺序如下: 上表面外形:粗铣——精铣到尺寸 上表面对称图形:粗铣——精铣到尺寸 孔加工:中心钻定位——钻孔——扩孔——铰孔到尺寸
基于MasterCam的圆柱凸轮数控编程
圆柱 凸轮 槽宽度不 大时 ,通 常选择 相应直径 的立铣 刀沿
柱 凸轮槽。
6 CDCM 4 A / A 与制造业信息化 w w in v . r. w . o oc nc d o n
如图3 所示对话框 ,用来设置工件 的旋 转轴。
选 取 带 旋 转 轴 的 后 置 处 理 器 ,即 将 *P T 件 第 6 “一 .S 文 行 4
a i/xs u s xsA i s b ”的参数设置为 “E ”状态 的后置处理器 ,如 YS M fnpt pa .s ,生成的数控加工程序 ( 部分 ) 如下 :
rn n /' i f
车间
进给速度
mm / i nl n
切 削深度 凸轮联 接 ,心轴 的 细端车有 螺纹和 中心孔 ,可
Im n
通过螺母 和垫 圈压紧 凸轮。心 轴粗端 装在数控 分度头 的三爪 卡盘上 ,细端 用尾座顶 尖和其 中
, 配合 紧固。 t qt
1
预 钻 工 艺 孔
尽管 凸轮 槽已预 钻 了一 工艺孔 ,原则上不 需要采用键槽
槽腔 中心线进 行加 工 ,可比较容 易加工 出符合上 述要求 的圆 铣刀 ,但实际加工 中,精加工部分最好仍采 用键槽铣刀 ,否则
槽底将不平而上凸 ,刀具越 大 ,上凸越大 。
栏 目主持 :丁海骜 投 稿 信 箱 : dn h o d o oc r. ig a @in v . n c o n
In T l I
零件名称
圆柱 凸轮 槽
平面凸轮零件的加工工艺和数控编程
毕业设计(论文)标题:平面凸轮零件的加工工艺和数控编程学生姓名:唐树斌系部:专业:数控班级: 11春指导教师:摘要平面凸轮零件的加工体现在对材料的选择、刀具的选择、工装夹具、定位元件、基准的选择、定位方式、对刀、工艺路线拟定、程序的编制、数控车、数控铣等。
着重说明了数控加工工艺设计的主要内容、数控加工工艺与普通加工工艺的区别及特点、数控刀具的要求与特点、数控刀具的材料、选择数控刀具时应考虑的因素、工件的安装、定位误差的概念和产生的原因、数控车床的主要加工对象、数控车床的坐标系、零件图形的数学处理及编程尺寸设定值的确定、工步顺序的安排、切削参数选择、数控铣床的主要加工对象等。
全面审核投入生产制造中。
其中轴的数控加工工艺分析、装夹、基准的选择、工艺路线的拟定、程序的编制既是重点又是难点。
关键词刀具,加工工艺,铣床类型,程序编程,夹具,等等。
目录摘要 (1)一、零件图样分析 (3)(一)结构分析 (3)(二)选材分析 (4)二、工件的装夹 (6)(一)技术要求分析 (6)(二)数控铣床夹具 (6)(三)通用夹具 (7)(四)数控铣削夹具的选用原则 (8)(五)工件的装夹方法和装夹方式 (8)(六)工件的定位 (8)(七)定位基准的选择 (10)(八)数控铣刀的选择 (11)(九)铣刀的直径选择 (13)(十)零件图的工艺性分析 (14)(十一)零件的结构工艺性分析 (17)(十二)工序的划分 (19)一、零件图样分析如图所示图1-1(一)结构分析该零件为平面凸轮零件,外型是一个厚度为19MM,直径为280的圆盘。
中间有一个凹槽宽度为41MM。
靠左方向有一个直径为65的凸轮。
中间还有一个圆孔直径为35。
因为结构比较简单所以只需要用数控铣床铣出来就可以在保证它的质量之前。
(二)选材分析机械加工的目的是将毛坯加工成符合产品要求的零件。
通常,毛坯需要经过若干工序才能转化为符合产品要求的零件。
一个相同结构相同要求的机器零件,可以采用几种不同的工艺过程完成,但其中总有一种工艺过程在某一特定条件下是最经济、最合理的。
凸轮轴零件的数控编程与加工
凸轮轴零件的数控编程与加⼯题⽬凸轮轴零件的数控编程与加⼯⽬录摘要第⼀节零件图的分析1.1 零件的材料及其⼒学性能 (1)1.2 零件的结构⼯艺分析 (1)第⼆节⽑坯的分析2.1 ⽑坯的选择 (2)2.2 ⽑坯图的设计 (3)第三节⼯艺路线的拟定3.1 定位基准的选择 (4)3.2 加⼯⽅法的选择 (5)3.3加⼯顺序的安排 (8)第四节加⼯余量及⼯序尺⼨的确定4.1 加⼯余量 (10)4.2 总加⼯余量和⼯序加⼯余量 (10)4.3 加⼯余量、最⼤加⼯余量和最⼩加⼯余量 (10)4.4 影响加⼯余量的因素 (11)4.5 ⼯序尺⼨ (12)第五节机床和⼯艺装备的选择5.1 机床的选择 (13)5.2 夹具的选择 (16)5.3 ⼑具的选择 (17)5.4 量具的选择 (18)第六节切削⽤量 (19)第七节程序编制 (21)设计⼼得 (25)参考⽂献 (26)摘要本⽂主要针对凸轮轴类零件的加⼯进⾏⼯艺分析。
凸轮轴类零件通常由圆柱⾯、端⾯、台阶⾯、螺纹、圆弧等组成,主要⽤于⽀撑传动零件,承受载荷,传递转矩等,有较⾼的精度和粗糙度要求。
为保证凸轮轴类零件的⾼精度要求,本设计针对零件进⾏了⼯艺分析、尺⼨计算、程序编写以及数控仿真,制定了正确的⼯艺⽅案,包括:装夹⽅案和⼯艺路线,选择合理的⼑具和夹具,并能利⽤数控仿真软件进⾏了验证。
实现了数控车床的⾃动化,智能化,⾼精度、快速度,短周期等功能。
数控加⼯制造技术正逐渐得到⼴泛的应⽤。
零件加⼯之前,进⾏⼯艺分析、编程设计具有⾮常重要的作⽤。
本⽂通过对典型的凸轮轴类零件数控加⼯⼯艺的分析,给出了⼀般零件设计加⼯⼯艺分析的⽅法,对于提⾼制造质量和实际⽣产,具有⼀定的指导意义⼀、零件图的分析1.1 零件的材料及其⼒学性能(1)材料根据图纸可知该零件的材料是45号钢,俗称“油钢”。
属于优质碳素结构钢中的中碳钢。
其成分是碳量为0.42-0.50%,Si含量为0.1-0.37%,Mn含量为0.50-0.80%,Cr含量≤0.25%,Ni含量≤0.30%。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
毕业论文姓名:学号:系别:机械工程系专业:机械制造与自动化论文题目:凸轮的数控加工手工编程指导教师:2011年05 月摘要本论文主要介绍了凸轮结构的组成、凸轮结构的特点和功能及凸轮的应用。
并且介绍了FANUC数控铣床,通过对FANUC数控铣床的认识,了解它的结构、编程中运用到的数控指令、应用范围及实际操作所运用到的理论知识。
This paper mainly introduces the composition, CAM CAM mechanism structure characteristics and function and CAM application. And FANUC CNC milling machine is introduced, through the understanding of FANUC CNC milling machine, to learn the structure, programming of CNC using to instruction, application scope and practical operation applied the theory of knowledge.关键词:凸轮;数控加工:FANUC ;数控铣床:手工编程CAM; Nc machining: FANUC; CNC milling machine: manual programming目录1凸轮机构的组成……………………………………………………………………1.1凸轮………………………………………………………………………………1.2凸轮机构的组成…………………………………………………………………2凸轮机构的类型……………………………………………………………………2.1按照凸轮的形状分………………………………………………………………2.2按照从动件的形状分……………………………………………………………2.3按照从动件的运动形式…………………………………………………………2.4按照凸轮与从动件维持高副接触的方法分……………………………………2.5其它………………………………………………………………………………3机构的特点和功能………………………………………………………………3.1凸轮机构的特点…………………………………………………………………3.2功能………………………………………………………………………………4常用从动件的运动规律……………………………………………………………4.1等速运动规律………………………………………………………………………4.2等加速等减速运动规律……………………………………………………………5盘形凸轮轮廓曲线的确定…………………………………………………………5.1应用“反转法”绘制尖顶式对心移动从动件盘形凸轮的一般步骤…………………5.2凸轮机构的压力角、基圆半径………………………………………………………6FANUC系统…………………………………………………………………………6.1FNUC数控系统概述………………………………………………………………6.2常用编程指令………………………………………………………………………6.2.1准备功能…………………………………………………………………………6.2.2辅助功能…………………………………………………………………………6.3坐标系编程指令…………………………………………………………………6.3.1有关坐标和坐标系的指令………………………………………………………6.3.2坐标平面选定……………………………………………………………………6.4直线插补编程………………………………………………………………………6.5圆弧插补编程………………………………………………………………………6.5.1注明………………………………………………………………………………6.5.2指令参数说明……………………………………………………………………6.5.3G02/G03判断……………………………………………………………………6.5.4编制圆弧程序段…………………………………………………………………6.6刀具半径补偿功能编程…………………………………………………………6.7刀具长度补偿功能编程…………………………………………………………6.8固定循环编程……………………………………………………………………6.9旋转功能编程……………………………………………………………………7凸轮加工……………………………………………………………………………7.1零件图………………………………………………………………………………7.2数控加工程序………………………………………………………………………参考文献………………………………………………………………………………致谢……………………………………………………………………………………正文1轮机构的组成1.1凸轮:具有曲线轮廓或沟槽的构件,当它运动时,通过其上的曲线轮廓与从动件的高副接触,使从动件获得预期的运动。
1.2凸轮机构的组成:由凸轮、从动件、机架这三个基本构件所组成的一种高副机构。
2凸轮机构的类型2.1按照凸轮的形状分:空间凸轮机构:盘形凸轮:凸轮呈盘状,并且具有变化的向径。
它是凸轮最基本的形式,应用最广。
移动(楔形)凸轮:凸轮呈板状,它相对于机架作直线移动。
盘形凸轮转轴位于无穷远处。
空间凸轮机构:圆柱凸轮:凸轮的轮廓曲线做在圆柱体上。
2.2按照从动件的形状分:(1)尖端从动件从动件尖端能与任意形状凸轮接触,使从动件实现任意运动规律。
结构简单,但尖端易磨损,适于低速、传力不大场合。
(2)曲面从动件:从动件端部做成曲面,不易磨损,使用广泛。
(3)滚子从动件:滑动摩擦变为滚动摩擦,传递较大动力。
(4)平底从动件优点:平底与凸轮之间易形成油膜,润滑状态稳定。
不计摩擦时,凸轮给从动件的力始终垂直于从动件的平底,受力平稳,传动效率高,常用于高速。
缺点:凸轮轮廓必须全部是外凸的。
2.3按照从动件的运动形式分2.4按照凸轮与从动件维持高副接触的方法分:(1)力封闭型凸轮机构:利用重力、弹簧力或其它外力使从动件与凸轮轮廓始终保持接触。
封闭方式简单,对从动件运动规律没有限制。
2.5其它反凸轮机构:摆杆为主动件,凸轮为从动件。
应用实例:自动铣槽机应用反凸轮实现料斗翻转3凸轮机构的特点和功能3.1凸轮机构的特点1、优点: (1)结构简单、紧凑,具有很少的活动构件,占据空间小。
(2)最大优点是对于任意要求的从动件运动规律都可以毫无困难地设计出凸轮廓线来实现。
2、缺点:由于是高副接触,易磨损,因此多用于传力不大的场合。
3.2功能1、实现无特定运动规律要求的工作行程应用实例:车床床头箱中利用凸轮机构实现变速操纵2、实现有特定运动规律要求的工作行程应用实例:自动机床中利用凸轮机构实现进刀、退刀3、实现对运动和动力特性有特殊要求的工作行程应用实例:船用柴油机中利用凸轮机构控制阀门的启闭4、实现复杂的运动轨迹应用实例:印刷机中利用凸轮机构适当组合实现吸纸吸头的复杂运动轨迹4常用从动件的运动规律4.1等速运动规律从动件在运动过程中的速度是常数,这种运动规律称为等速运动规律。
位移时间图是一段斜直线。
,终止位置又速度时间图是一段平行横轴的直线,在初始位置速度由0跳到最大值V跳为0。
从最大值V加速度时间图虽然是一段与横轴重合直线,但在开始和终止位置两点,瞬时加速度理论上趋向无穷大。
as ∞o δ(t) o δ(t)l -∞(a) (b) (c)刚性冲击——在等速运动规律中,从动件由于速度突变而引起的冲击。
周期性的刚性冲击,会引起振动,损坏机构。
因此,等速运动规律的凸轮机构只适宜低速和从动件惯性较小的场合。
为了避免刚性冲击,常在原产生刚性冲击的两位置,以圆弧过渡对位移曲线进行修正。
4.2等加速等减速运动规律等加速等减速运动规律是将机构整个行程h分为两段,前半程(h/2)为等加速运动,后半程(h/2)为等减速运动,其加速度的绝对值相等。
位移——时间图两段抛物线组成。
速度——时间图是两条倾斜直线组成。
加速度——时间图是上下两条水平线组成。
so δ(t)(a) (b)柔性冲击——在等加速等减速运动中从动件由于加速度突变,而引起的惯性冲击。
因此,等加速等减速运动多用于中速轻载的场合。
此外,凸轮从动件的运动规律还有简谐运动规律、摆线运动规律。
5盘形凸轮轮廓曲线的确定5.4应用“反转法”绘制尖顶式对心移动从动件盘形凸轮的一般步骤:1、根据已知条件,选取适当比例绘出从动件的位移线图;2、将从动件的位移线图的推程和回程对应转角分成若干等分点;3、用同一比例尺作出基圆。
从动件导路与基圆的交点作为从动件起始位置;4、在基圆上按(-ω)方向画出推程运动角、回程运动角、休止角,并把推程、回程运动角与位移线图对应分为若干等分。
5、画凸轮轮廓曲线。
5.2凸轮机构的压力角、基圆半径1、凸轮机构的压力角:从动件的运动方向和它所受力F之间所夹的锐角称为凸轮机构在该位置的压力角。
用α表示。
作用力F可以分解两个分力(F1=Fcosα,F2=sinα),其中F1称为有效分力,F2称为有害分力。
当力F一定时,压力角α越大,则有害分力越大;在保证机构正常工作,应使凸轮机构的最大压力角αmax不超过许用压力角[α]。
2、基圆半径rb:从机构的传动性能考虑,压力角越小越好,但减小压力角必将使凸轮基圆半径增大,从而使整个机构尺寸增大。
但在一般的情况下,适当增大凸轮基圆半径以减小压力角,从而增加有效分力。
同时,基圆的半径增大也可以减小凸轮轮廓曲线制造误差,所以若在结构允许的情况下,增大凸轮基圆的半径是有利的。
3、滚子的半径与运动失真:当采用滚子从动件时,滚子半径选择不当,从动件不能实现预期的运动规律,这种现象称运动失真。
通常情况下,可以减小半径的方法解决运动失真,但由于结构方面的原因,当滚子的半径不能减小时,可适当增大基圆的半径,从而解决运动失真。
6FANUC系统6.1FANUC数控系统概述数控系统是数字控制系统简称,英文名称为Numerical Control System,早期是由硬件电路构成的称为硬件数控(Hard NC),1970年代以后,硬件电路元件逐步由专用的计算机代替称为计算机数控系统。
计算机数控(Computerized numerical control,简称CNC)系统是用计算机控制加工功能,实现数值控制的系统。
CNC系统根据计算机存储器中存储的控制程序,执行部分或全部数值控制功能,并配有接口电路和伺服驱动装置的专用计算机系统。