关注新智造网

新智造网 > 加工问答 > 问答详情 我要提问

凸轮机构的运动仿真

monk226 | 来自: | 浏览115次 | 提问时间:11-27 10:41 | 回答数量:3
此程序是申永胜主编的《机械原理教程》(清华大学出版社),第129页的例题3.3 大家有什么意见,请发表。谢谢大家的关注! 我把主要的代码写在下面,完整的程序请看附件。 Option Explicit Public Fai, Fai1, Fai2, W, Rb, h As Double Public s, v, a, x, y As Double Public ds, dx, dy As Double "一阶导数 Public dds, ddx, ddy As Double "二阶导数 Public P As Double "曲率半径 Public α As Double "压力角 Const Pi As Double = 3.1415926 Public Aifa1 As Double "推程许用压力角 Public Aifa2 As Double "回程许用压力角 Public Pa, Rr As Double "实际轮廓线的许用曲率半径,滚子半径 Public xx, yy As Double Private Sub Command1_Click() "画轮廓线 Pic1.Cls Pic1.AutoRedraw = True Pic1.Scale (-100, 100)-(100, -100) Pic1.Line (100, 0)-(-100, 0), vbRed Pic1.Line (0, -100)-(0, 100), vbRed Fai = 0 Rr = Val(Text4) While Fai <= 2 * Pi If Fai <= Pi Then s = h * (Fai / Fai1 - Sin(2 * Pi * Fai / Fai1) / Pi / 2) x = (Rb + s) * Sin(Fai) y = (Rb + s) * Cos(Fai) Pic1.PSet (y, x) ds = h / Fai1 * (1 - Cos(2 * Pi * Fai / Fai1)) dx = (Rb + s) * Cos(Fai) + ds * Sin(Fai) dy = -(Rb + s) * Sin(Fai) + ds * Cos(Fai) xx = x + Rr * dy / Sqr(dx ^ 2 + dy ^ 2) yy = y - Rr * dx / Sqr(dx ^ 2 + dy ^ 2) Pic1.PSet (yy, xx), vbGreen Fai = Fai + 0.001 Else If Fai <= 1.5 * Pi Then s = 50 x = (Rb + s) * Sin(Fai) y = (Rb + s) * Cos(Fai) Pic1.PSet (y, x) ds = 0 dx = (Rb + s) * Cos(Fai) + ds * Sin(Fai) dy = -(Rb + s) * Sin(Fai) + ds * Cos(Fai) xx = x + Rr * dy / Sqr(dx ^ 2 + dy ^ 2) yy = y - Rr * dx / Sqr(dx ^ 2 + dy ^ 2) Pic1.PSet (yy, xx), vbGreen Fai = Fai + 0.001 Else s = h * (1 - (Fai - 1.5 * Pi) / Fai2 + Sin(2 * Pi * (Fai - 1.5 * Pi) / Fai2) / Pi / 2) x = (Rb + s) * Sin(Fai) y = (Rb + s) * Cos(Fai) Pic1.PSet (y, x) ds = h * (-1 + Cos(2 * Pi * (Fai - 1.5 * Pi) / Fai2)) / Fai2 dx = (Rb + s) * Cos(Fai) + ds * Sin(Fai) dy = -(Rb + s) * Sin(Fai) + ds * Cos(Fai) xx = x + Rr * dy / Sqr(dx ^ 2 + dy ^ 2) yy = y - Rr * dx / Sqr(dx ^ 2 + dy ^ 2) Pic1.PSet (yy, xx), vbGreen Fai = Fai + 0.001 End If End If Wend Pic1.Circle (0, 0), Rb End Sub Private Sub Command2_Click() "计算最小基圆半径 Aifa1 = Val(Text2) / 180 * 3.1415926 Aifa2 = Val(Text3) / 180 * 3.1415926 Rr = Val(Text4) Pa = Val(Text5) Call MinRb Text1 = Rb MsgBox finished Command1.Enabled = True End Sub Private Sub Form_Load() Command1.Enabled = False h = 50 Fai1 = Pi Fai2 = Pi / 2 W = 10 End Sub Public Sub MinRb() "求最小基圆半径 Fai = 0 Rb = 1 Be: While 1 Select Case Int(Fai / Pi * 2) Case 0, 1 s = h * (Fai / Fai1 - Sin(2 * Pi * Fai / Fai1) / Pi / 2) ds = h / Fai1 * (1 - Cos(2 * Pi * Fai / Fai1)) dds = 2 * Pi * h * Sin(2 * Pi * Fai / Fai1) / Fai1 / Fai1 dx = (Rb + s) * Cos(Fai) + ds * Sin(Fai) dy = -(Rb + s) * Sin(Fai) + ds * Cos(Fai) ddx = dy + dds * Sin(Fai) + ds * Cos(Fai) ddy = -dx + dds * Cos(Fai) - ds * Sin(Fai) α = Atn(Abs(ds) / (s + Rb)) P = (dx ^ 2 + dy ^ 2) ^ 1.5 / (-dx * ddy + ddx * dy) If α <= Aifa1 Then If P < 0 Then Fai = Fai + 0.01 GoTo Be Else If P >= Pa + Rr Then Fai = Fai + 0.01 GoTo Be Else Rb = Rb + 0.02 Fai = 0 End If End If Else: Rb = Rb + 0.02: Fai = 0 End If Case 2 s = h ds = 0 dds = 0 dx = (Rb + s) * Cos(Fai) + ds * Sin(Fai) dy = -(Rb + s) * Sin(Fai) + ds * Cos(Fai) ddx = dy + dds * Sin(Fai) + ds * Cos(Fai) ddy = -dx + dds * Cos(Fai) - ds * Sin(Fai) α = Atn(Abs(ds) / (s + Rb)) P = (dx ^ 2 + dy ^ 2) ^ 1.5 / (-dx * ddy + ddx * dy) If α <= Aifa1 Then If P < 0 Then Fai = Fai + 0.01 GoTo Be Else If P >= Pa + Rr Then Fai = Fai + 0.01 GoTo Be Else Rb = Rb + 0.02 Fai = 0 End If End If Else: Rb = Rb + 0.01: Fai = 0 End If Case 3, 4 s = h * (1 - (Fai - 1.5 * Pi) / Fai2 + Sin(2 * Pi * (Fai - 1.5 * Pi) / Fai2) / Pi / 2) ds = h * (-1 + Cos(2 * Pi * (Fai - 1.5 * Pi) / Fai2)) / Fai2 dds = -h * 2 * Pi * Sin(2 * Pi * (Fai - 1.5 * Pi) / Fai2) / Fai2 / Fai2 dx = (Rb + s) * Cos(Fai) + ds * Sin(Fai) dy = -(Rb + s) * Sin(Fai) + ds * Cos(Fai) ddx = dy + dds * Sin(Fai) + ds * Cos(Fai) ddy = -dx + dds * Cos(Fai) - ds * Sin(Fai) α = Atn(Abs(ds) / (s + Rb)) P = (dx ^ 2 + dy ^ 2) ^ 1.5 / (-dx * ddy + ddx * dy) If α <= Aifa2 Then If P < 0 Then If Fai > 2 * Pi Then Exit Sub Else Fai = Fai + 0.01 GoTo Be End If Else If P >= Pa + Rr Then If Fai > 2 * Pi Then Exit Sub Else Fai = Fai + 0.01 GoTo Be End If Else: Rb = Rb + 0.02: Fai = 0 End If End If Else: Rb = Rb + 0.02: Fai = 0 End If End Select Wend End Sub Public Sub Exit1() If Fai > 2 * Pi Then Exit Sub Else Fai = Fai + 0.01 End If End Sub Private Sub Introduce_Click() "显示程序说明对话框 frmAbout1.Show 1 End Sub
回答人:老屈11-27 11:23
Pic1.PSet (yy, xx), vbGreen1 b/ w- G0 t) T( `$ v1 Wi Fai = Fai + 0.001 1 h7 l4 f! H J; q$ V1 Y" q$ G End If, T6 P, {+ {+ i1 G6 w& y9 p+ I End If ( ?2 q) T T) }/ w Wend% W7 a7 ^5 H3 Q3 _, w Pic1.Circle (0, 0), Rb - Y$ o% G* @) p: j( M) TEnd Sub 2 S1 y- n& |5 R6 ]Private Sub Command2_Click() "计算最小基圆半径* X/ J- K& }l( B8 b- _* I Aifa1 = Val(Text2) / 180 * 3.1415926 7 z* F2 gH; s; P$ Q4 a
回答人:侠盗小明11-27 11:21
对这不清楚 ,全是不了解的代码 苹果醋减肥胶囊: 同仁堂足道: e波挺:
回答人:jixiezheceyong11-27 11:17
采用程序来动作仿真,没有做过的。 不过我熟悉Proe中可以采用造型开做的。

凸轮机构订单

标签: 凸轮机构 

您目前状态:非注册用户 (**部分为隐藏内容,仅对会员开放)

查看隐藏内容请先登录或注册会员 登  录 注  册

相关问答
凸轮机构设计和曲柄连杆机构,求推荐书籍、资料
论坛里有收费课程可以学习下。 在哪里?
利用凸轮机构和线性弹簧实现恒力输出,求凸轮曲线
大概想了一个方向不知到行不行: 考虑用能量守恒来解: 假设绳索和滑轮之间不存在滑动,系统能量有重物的势能、重物的动能、两个滑轮的动能、凸轮的动能及势能,弹簧的势能,列出公式基本很难解出来了,所以加大了假设条件: 假设绳索和滑轮之间不存在滑动,且滑轮无质量: 系统能量守恒: -mgh+0.5*m*v^2+0.5*k*x^2=0; h=v*t则: -mgvt+0.5*m*v^2+0.5*k*x^2=0;对公式两侧求对时间的倒数: -(mg*0*t+mgv)+mv*0+kx*(dx/dt)=0; 得mgv=kx(dx/dt);对公式两侧再次求导: 0=k*(dx/dt)^2+kx*dx/dt^2; (dx/dt)^2=-x*dx/dt^2; (仅供参考啊,我也越算越不知道在算什么了,望楼下大神求解)
为什么修鞋机要采用凸轮机构?
第一次看到我童年的玩具学名原来叫手摇修鞋机啊。 研究研究好,补鞋机上用了好几种凸轮配合联动呢,我家现在还有好几个机头呢。小时候最开心的就是拿拆下来的废凸轮盘卖废铁换米花糖
那位前辈可以提供一下平面四连杆机构或平面凸轮机构的实际设计案例啊(现代机械工程中实用的设计方法,最好有详细的设计计算过程)。补充一点,不要发看手册什么的,我就是看手册,觉得不太明白才问的。谢谢
这个可以上爱问下载“凸轮软件”,要求设计参数,许用压力角,凸轮基圆,滚子半径,凸轮中心和摆杆中心距离,连杆最大摆角,摆杆长度,凸轮升程角,远近停角,用软件模拟出XY坐标,和最大压力角
哪位大侠能提供些关于凸轮机构的设计资料,或链接。 最近在试着利用凸轮机构,学的越多,不明白的也就越明显
把第五版机械设计手册借来,图书馆的,看了你就知道了