凸轮程序的设计
- 格式:doc
- 大小:31.00 KB
- 文档页数:4
凸轮分割器8工位plc程序摘要:一、凸轮分割器简介1.凸轮分割器的定义2.凸轮分割器的工作原理二、8 工位凸轮分割器plc 程序设计1.程序设计的目标2.程序设计的步骤a.定义输入/输出变量b.编写程序逻辑c.调试程序三、8 工位凸轮分割器plc 程序实例1.输入/输出变量定义2.程序逻辑编写a.初始化程序b.工位1 操作c.工位2 操作d.工位3 操作e.工位4 操作f.工位5 操作g.工位6 操作h.工位7 操作i.工位8 操作j.结束程序3.程序调试与优化四、凸轮分割器plc 程序的应用1.提高生产效率2.保证生产质量3.便于生产管理正文:【提纲】一、凸轮分割器简介凸轮分割器,作为一种自动化生产设备的关键部件,广泛应用于各种机械加工领域。
其主要作用是将连续的旋转运动转换为间隔的直线运动,从而实现工件的定位、分度、加工等功能。
凸轮分割器具有结构简单、运动平稳、精度高等特点。
【提纲】二、8 工位凸轮分割器plc 程序设计在设计8 工位凸轮分割器的plc 程序时,首先需要明确程序设计的目标,即实现设备的有效控制,确保生产过程的顺利进行。
接下来,需要遵循一定的步骤进行程序设计。
【提纲】三、8 工位凸轮分割器plc 程序实例在编写8 工位凸轮分割器的plc 程序时,首先需要定义输入/输出变量。
这些变量主要包括传感器信号、驱动器信号、故障信号等。
接着,根据设备的工作原理和工艺要求,编写程序逻辑。
【提纲】四、凸轮分割器plc 程序的应用凸轮分割器plc 程序的应用,不仅能够提高生产效率,还能够保证生产质量,便于生产管理。
在实际生产过程中,通过合理设置程序参数,可以实现设备的精确控制,确保生产过程的顺利进行。
目录(一)概述 (2)一机械原理课程设计的目的 (2)二机械原理课程设计的任务 (2)三设计题目及设计思路 (2)(二)设计内容 (3)一从动杆的运动规律及凸轮轮廓线方程 (3)二实验过程及结果分析 (4)三凸轮机构轮廓曲线图 (8)(三)心得体会 (9)(四)参考资料 (10)(一)概述一、 机械原理课程设计的目的:1、机械原理课程设计是高等工业学校机械类专业学生第一次较全面 的机械运动学和动力学分析与设计的训练。
其目的在于:进一步巩固和加深所学知识;2、培养学生运用理论知识独立分析问题、解决问题的能力;3、使学生在机械的运动学和动力分析方面初步建立一个完整的概念;4、进一步提高学生计算和制图能力,及运用电子计算机的运算能力。
二、机械原理课程设计的任务:1、活塞式油泵凸轮机构(偏置直动滚子从动杆盘型凸轮机构)2、采用图解法设计:摆杆的运动规律如表:注,rao=40mm 经计算不能用,故取r0=55mm3、借助电子计算机完成下列运算①从动件的运动参数:位移,速度,加速度。
②计算凸轮的理论轮廓线,实际廓线坐标。
③验算凸轮廓线上各点压力角和曲率半径,最后确定凸轮应有的基圆半径。
④绘制凸轮轮廓线曲线。
4、课程设计采用方法:利用C 语言编程得出所求函数值 ,利用cad 画出凸轮轮廓图加手工制图。
三 设计题目及设计思路 1、设计题目活塞式油泵凸轮机构(偏置直动滚子从动杆盘型凸轮机构)2、设计思路(1)、要求从动件作往复移动,因此可选择偏置直动滚子从动件盘型凸轮机符号 方案 δ01 δ02 δ03 δ04rao rre h n推α 回α从动杆运动规律(º) (º) (º) (º) mm mm mm mm r/mi n(º) (º)推程回程 Ⅱ 120º 60º 120º60º 40 15 10 80 200 30 75简谐 正弦加速度构。
圆柱凸轮的三维参数化设计及数控加工编程摘要:作为拥有良好运动性能的圆柱凸轮,会受到动件运动规律因素影响,生成复杂空间曲面,导致在设计、加工等方面面临较大困难。
本文对于圆柱凸轮的三维参数化设计及数控加工编程进行详细分析,通过Pro/E系统进行三维参数化设计,使用Master CAM软件进行数控加工编程。
旨在为我国众多制造企业提供技术帮助,推动国民经济有序发展。
关键词:圆柱凸轮;三维参数化设计;数控加工编程相较于平面凸轮机构,圆柱凸轮这种空间凸轮机构具有良好刚性,控制从动件运动稳定,可以满足机械高速运行的需求。
空间凸轮拥有这些特性,主要是因为其具有凸轮轮廓曲面。
考虑到圆柱凸轮设计、加工较为困难,过去常使用矩形平面取代圆柱面,并以平面凸轮计算轮廓坐标。
仍存在加工精度偏低的问题,无法满足制造业生产需求,需要寻找更加便利方法进行凸轮设计、加工。
1三维参数化设计对于圆柱凸轮三维参数化设计作业,需要将轮廓曲面设计作为重点内容严格对待。
以自变参数原始数据作为设计基础,建设三维模型,从而分析和三维模型相对应的参数化模型。
对于尖顶推杆圆柱凸轮,可以从正弦加速度、余弦减速度两个方面入手,利用这种运动规律,优化圆柱凸轮三维参数化设计工作。
1.1设计自变设计参数在设计圆柱凸轮的轮廓曲面时,其结构参数与从动件运动规律已经提前获得。
所以,在设计圆柱凸轮数据模型时,选择Pro/E系统的应用工具,设置圆柱凸轮自变参数后,赋予参数初值即可。
这里需要注意一点,对于推程角、远休角、回程角、近休角几个参数,需要保证初值之和为360°,即各段曲线是以封闭状态构成凸轮曲线[1]。
1.2利用方程曲线分段模式,描述轮廓曲面扫描轨迹控制线根据圆柱凸轮轮廓曲线数学模型和从动件运动规律,使用方程曲线对轮廓曲面扫描轨迹控制线进行描述。
主要选择推程角、远休角、回程角、近休角,利用这几个角度相对的轮廓曲面,描述圆柱凸轮的平面坐标。
1.3通过扫描变截面,获得凸轮实体选择Pro/E系统中的Fron模块,利用圆周描述凸轮轮廓扫描轨迹原始控制线。
凸轮程序的设计凸轮程序的设计1. 引言凸轮是一种机械元件,可以将旋转运动转化为直线或曲线运动。
在工程设计和机械加工中,凸轮被广泛用于控制机械装置的动作,如运动轨迹、速度和加速度等。
本文将介绍凸轮程序的设计方法和步骤。
2. 凸轮程序的基本要素凸轮程序的设计需要考虑以下几个基本要素:- 凸轮形状:凸轮的形状决定了运动轨迹和运动方式。
常见的凸轮形状有圆形、椭圆形、心形、凹形等。
- 凸轮半径:凸轮的半径决定了运动的范围和速度。
较大的凸轮半径可以实现更大范围的运动,而较小的凸轮半径则可以实现更快的速度。
- 凸轮周期:凸轮周期是指凸轮完成一次完整运动所需的时间。
凸轮周期可以通过调整凸轮的旋转速度来实现。
- 凸轮角度:凸轮角度是指凸轮当前的旋转角度。
凸轮角度可以用来控制机械装置的状态和动作。
3. 凸轮程序的设计步骤设计凸轮程序的一般步骤如下:3.1 确定凸轮的形状和尺寸根据实际需求和机械装置的要求,确定凸轮的形状和尺寸。
可以使用计算机辅助设计(CAD)工具来绘制凸轮的轮廓,并进行必要的修正和优化。
3.2 确定凸轮的运动轨迹根据机械装置的要求和设计需求,确定凸轮的运动轨迹。
可以根据凸轮的形状和运动方式,计算出凸轮在不同角度下的坐标值。
3.3 编写凸轮控制程序根据凸轮的形状、尺寸和运动轨迹,编写凸轮控制程序。
可以使用编程语言(如C++、Python等)来实现凸轮控制程序。
程序可以包括凸轮的旋转控制、角度计算和坐标计算等功能。
3.4 调试和优化凸轮程序在实际使用中,可能需要对凸轮程序进行调试和优化。
可以通过实际测试和仿真验证凸轮程序的准确性和性能,并根据实际情况进行必要的调整和优化。
4. 示例下面是一个简单的凸轮程序示例,使用Python编写:python凸轮程序示例import math凸轮半径R = 10凸轮周期T = 2计算凸轮角度和坐标def calculate_cam_position(angle):x = R math.cos(math.radians(angle))y = R math.sin(math.radians(angle))return x, y主程序def mn():for angle in range(0, 360, 10):x, y = calculate_cam_position(angle)pri。
八附源程序模块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。
第九章凸轮机构及其设计§9.1 凸轮机构的应用及分类一、凸轮机构的应用凸轮机构是由具有曲线轮廓或凹槽的构件,通过高副接触带动从动件实现预期运动规律的一种高副机构。
广泛地应用于各种机械,特别是自动机械、自动控制装置和装配生产线中。
(尤其是需要从动件准确地实现某种预期的运动规律时)常用于将“简单转动”→“复杂移动”、“复杂摆动”、“与其它机构组合得到复杂的运动”。
图示为内燃机配气凸轮机构。
具有曲线轮廓的构件1叫做凸轮,当它作等速转动时,其曲线轮廓通过与推杆2的平底接触,使气阀有规律地开启和闭合。
工作对气阀的动作程序及其速度和加速度都有严格的要求,这些要求都是通过凸轮的轮廓曲线来实现的。
组成:凸轮、从动件、机架(高副机构)。
二、凸轮机构的特点1)只需改变凸轮廓线,就可以得到复杂的运动规律;2)设计方法简便;3)构件少、结构紧凑;4)与其它机构组合可以得到很复杂的运动规律5)凸轮机构不宜传递很大的动力;6)从动件的行程不宜过大;7)特殊的凸轮廓线有时加工困难。
三、凸轮机构的类型凸轮机构的分类:1)盘形凸轮按凸轮形状分:2)移动凸轮3)柱体凸轮1)尖底从动件;按从动件型式分:2)滚子从动件;3)平底从动件1)力封闭→弹簧力、重力等按维持高副接触分(封闭)槽形凸轮2)几何封闭等宽凸轮等径凸轮共轭凸轮§9.2 从动件常用运动规律设计凸轮机构时,首先应根据工作要求确定从动件的运动规律,然后再按照这一运动规律设计凸轮廓线。
以尖底直动从动件盘形凸轮机构为例,说明从动件的运动规律与凸轮廓线之间的相互关系。
基本概念:基圆——凸轮理论轮廓曲线最小向径.r0所作的圆。
行程——从动件由最远点到最近点的位移量h(或摆角 )推程——从动件远离凸轮轴心的过程。
回程——从动件靠近凸轮轴心的过程。
推程运动角——从动件远离凸轮轴心过程,凸轮所转过的角度。
回程运动角——从动件靠近凸轮轴心过程,凸轮所转过的角度。
远休止角——从动件在最远位置停留过程中凸轮所转过的角度。
弧面分度凸轮三维建模已知设计条件:凸轮转速n=300r/min,连续旋转,从动转盘有8 工位,中心距C=180mm,载荷中等。
选择改进正弦运动规律为所设计弧面分度凸轮机构的运动规律。
参数如下:项目实例计算凸轮角速度ω1=πX 300=101T/s凸轮分度期转角β1=120°=2/3π凸轮停歇期转角θd=360°-120°=4/3π凸轮角位移θ凸轮和转盘的分度期时间∥s 0=(2"rr/3)/10-rr=1/15s凸轮和转盘停歇时间幻/s td=(2ar/10"rr)一1/15=2/15s凸轮分度廓线旋向及旋向系数P 选取左旋L,P=+1凸轮分度廓线头数日选取H=1转盘分度数,按设计要求的工位数,选定,=8转盘滚子数Z=1×8=8转盘分度期运动规律抛物线一直线一抛物线转盘分度期转位角盼/(。
) 妒,=360。
/8=45。
中心距C=180mm凸轮转速n=300r/min旋向系数P=+1分度数I=8凸轮头数H=1转盘滚子数Z=1*8=8凸轮宽度B=90分度期转角θf = 120°停歇期转角θd = 240°凸轮节圆半径rp1=96mm滚子宽度b=30mm滚子半径Rr=22mm凸轮顶弧半径rc=75.29mm我们将分别作出与滚子左面接触的一系列凸轮轮廓曲线,分度期1L、2R、2L、3R ,停歇期与滚子左右接触的轮廓曲线,然后将这些线生成曲面,最后生成实体。
1 凸轮定位环面内圆直径Di为直径的基础圆柱体打开Pro/ENGINEER,进入Pro/ENGINEER三维造型窗口,在“基础特征”工具栏上单击“拉伸”命令,选择“FRONT”面为草绘平面,绘制φ154.69的圆,并双向拉伸90mm.2 建立1L 轮廓曲线1)建立推程段轮廓面曲线①. 新建.prt 文件打开Pro/E Wildfire 三维绘图软件,新建->零件->实体,建立文件。
习题4-1凸轮轮廓曲线的程序设计10级机制班丁林森2010001630211、C语言程序//各字母含义e偏距、基圆半径ro、滚子半径rt、行程h、推程运动角phi1、远休止角phis、回程、运动角phi_1,近休止角phi_s#include<stdio.h>#include<math.h>#define PI 3.1415926void main(){double e=10.0,ro=40.0,rt=10.0,h=20.0,phi1=150.0,phis=30.0,phi_1=120.0,phi_s=60;double s, alp[73],x[73],y[73],x1,y1,xr[73],yr[73];double ic,ic1,ic2,ic3,ic4,so,s1,cop,sip,phi,gam,bel,del=5.0,q,t;int i;gam=phi1+phis;bel=phi1+phis+phi_1;ic=(int)(360.0/del);ic1=(int)(phi1/del);ic2=(int)(gam/del);ic3=(int)((phi1+phis+phi_1/2.0)/del);ic4=(int)(bel/del);so=sqrt(ro*ro-e*e);printf(" No deg x/mm y/mm X/mm Y/mm rad\n");for(i=0;i<=ic;i++) //{phi=i*del*PI/180.0;cop=cos(phi);sip=sin(phi);if(i<=ic1){ s=h/2.0*(1.0-cos(180.0*phi/phi1));s1=h*PI*sin(180.0*phi/phi1)/2.0/phi1;x1=-(s+so)*sip+s1*cop-e*cop;y1=(s+so)*cop+s1*sip-e*sip;}else if(i<=ic2){ s=h;s1=0;x1=-(s+so)*sip-e*cop;y1=(so+s)*cop-e*sip;}else if(i<=ic3){s=h-2.0*h*(phi-gam)*(phi-gam)/phi_1/phi_1;s1=-4.0*h*(phi-gam)/phi_1/phi_1;x1=s1*cop-(s+so)*sip-e*cop;y1=s1*sip+(so+s)*cop-e*sip;}else if(i<=ic4){s=2.0*h*(bel-phi)*(bel-phi)/phi_1/phi_1;s1=-4.0*h*(bel-phi)/phi_1/phi_1;x1=s1*cop-(so+s)*sip-e*cop;y1=s1*sip+(so+s)*cop-e*sip;}else{s=0; s1=0;x1=-(s+so)*sip-e*cop;y1=so*cop-e*sip;}t=fabs(s1-e);alp[i]=atan2(t,(s+so));q=rt/sqrt(x1*x1+y1*y1); /x[i]=(s+so)*cop-e*sip;y[i]=(s+so)*sip+e*cop;xr[i]=x[i]-q*y1;yr[i]=y[i]+q*x1;phi=i*del;printf("\n%2d%12.3f%12.3f%12.3f%12.3f%12.3f%12.3f",i+1,phi,x[i],y[i],xr[i],yr[i],alp[i]); }}2、计算结果No deg x/mm y/mm X/mm Y/mm rad1 0.000 38.730 10.000 29.047 7.500 0.2532 5.000 37.765 13.342 28.335 10.016 0.2523 10.000 36.620 16.611 27.509 12.490 0.2504 15.000 35.295 19.810 26.567 14.929 0.2485 20.000 33.786 22.939 25.502 17.339 0.2456 25.000 32.089 25.997 24.304 19.721 0.2427 30.000 30.195 28.980 22.960 22.076 0.2388 35.000 28.094 31.879 21.458 24.398 0.2349 40.000 25.776 34.682 19.782 26.677 0.23010 45.000 23.230 37.372 17.919 28.899 0.22611 50.000 20.449 39.927 15.855 31.044 0.22112 55.000 17.426 42.321 13.581 33.090 0.21613 60.000 14.160 44.525 11.089 35.008 0.21214 65.000 10.652 46.506 8.379 36.768 0.20715 70.000 6.912 48.229 5.452 38.336 0.20316 75.000 2.953 49.658 2.318 39.678 0.19817 80.000 -1.205 50.755 -1.008 40.757 0.19418 85.000 -5.534 51.487 -4.504 41.540 0.19019 90.000 -10.000 51.820 -8.142 41.994 0.18720 95.000 -14.564 51.725 -11.887 42.090 0.18421 100.000 -19.178 51.177 -15.700 41.802 0.18122 105.000 -23.793 50.159 -19.534 41.111 0.17823 110.000 -28.352 48.659 -23.341 40.005 0.17624 115.000 -32.798 46.673 -27.068 38.477 0.17425 120.000 -37.070 44.208 -30.661 36.532 0.17226 125.000 -41.109 41.275 -34.065 34.178 0.17127 130.000 -44.856 37.900 -37.226 31.435 0.17028 135.000 -48.253 34.111 -40.094 28.330 0.16929 140.000 -51.250 29.950 -42.620 24.898 0.16930 145.000 -53.800 25.463 -44.762 21.182 0.16831 150.000 -55.862 20.705 -46.485 17.229 0.16932 155.000 -57.453 15.757 -47.810 13.112 0.16933 160.000 -58.608 10.690 -48.770 8.896 0.16934 165.000 -59.317 5.541 -49.360 4.611 0.16935 170.000 -59.574 0.350 -49.574 0.291 0.16936 175.000 -59.378 -4.843 -49.411 -4.030 0.16937 180.000 -58.730 -10.000 -48.872 -8.321 0.16938 185.000 -57.635 -15.081 -47.960 -12.549 0.16939 190.000 -56.072 -20.041 -46.656 -16.673 0.16940 195.000 -54.109 -24.851 -45.023 -20.675 0.16941 200.000 -51.736 -29.472 -43.049 -24.520 0.16942 205.000 -48.969 -33.868 -40.746 -28.177 0.16943 210.000 -45.829 -38.007 -38.134 -31.620 0.16944 215.000 -42.341 -41.855 -35.232 -34.823 0.16945 220.000 -38.530 -45.385 -32.061 -37.759 0.16946 225.000 -34.427 -48.569 -28.647 -40.409 0.16947 230.000 -30.062 -51.383 -25.015 -42.750 0.16948 235.000 -25.468 -53.806 -21.193 -44.766 0.16949 240.000 -20.680 -55.819 -17.210 -46.441 0.16950 245.000 -7.306 -39.330 -5.481 -29.498 0.25351 250.000 -3.867 -39.862 -2.896 -29.909 0.25252 255.000 -0.379 -40.051 -0.278 -30.052 0.25253 260.000 3.113 -39.934 2.342 -29.964 0.25254 265.000 6.581 -39.513 4.944 -29.648 0.25255 270.000 10.000 -38.792 7.510 -29.107 0.25256 275.000 13.343 -37.775 10.019 -28.343 0.25257 280.000 16.585 -36.470 12.451 -27.365 0.25258 285.000 19.701 -34.888 14.790 -26.177 0.25259 290.000 22.668 -33.041 17.016 -24.791 0.25260 295.000 25.462 -30.942 19.113 -23.216 0.25261 300.000 28.063 -28.607 21.065 -21.463 0.25262 305.000 30.406 -25.990 22.805 -19.492 0.25363 310.000 32.555 -23.241 24.417 -17.431 0.25364 315.000 34.457 -20.315 25.843 -15.236 0.25365 320.000 36.097 -17.235 27.072 -12.926 0.25366 325.000 37.461 -14.023 28.096 -10.517 0.25367 330.000 38.541 -10.705 28.906 -8.028 0.25368 335.000 39.327 -7.305 29.495 -5.479 0.25369 340.000 39.814 -3.849 29.861 -2.887 0.25370 345.000 39.998 -0.365 29.999 -0.274 0.25371 350.000 39.878 3.123 29.908 2.342 0.25372 355.000 39.454 6.586 29.591 4.940 0.25373 360.000 38.730 10.000 29.047 7.500 0.253。