简介:面向机械类专业本科生的机械原理课程设计参考文档,针对偏置直动滚子推杆盘形凸轮机构的设计与分析展开,解决凸轮轮廓计算、运动规律选择与VB程序实现这类大作业典型难点。文档系统梳理了凸轮的分类(偏置直动、偏置曲动、圆弧凸轮等)、设计要求(运动特性、结构强度、材料选择),并对比VB编程与CAD软件两种设计路径,以及数学模型与仿真软件两类分析手段。预览显示,资源包含题号4-A、4-B、4-C的具体参数表与完整VB源代码,可直接参考套用。文档以单个doc文件提供,压缩包共1个文件,大小约363KB,已有896人在CSDN学习下载。可帮助读者快速掌握五项多项式推程与余弦加速度回程凸轮的设计流程、关键方程推导及编程实现思路,适合课程设计参考与机械原理凸轮章节复习。
1. 机械原理大作业里的凸轮机构:一份能直接出图的 VB 设计与分析方案
凸轮机构是机械原理课程里最考验空间想象力和参数联动的一块内容,尤其是偏置直动滚子推杆盘形凸轮,教科书上给了理论公式,但真到自己算数据、画轮廓线、校验压力角和曲率半径时,很多人会被一堆下标和分段边界绕晕。这份大作业资源把整套流程收拢成了一个 VB 程序:输入基圆半径、偏心距、滚子半径、推程等参数后,程序会按推程五次多项式、回程余弦加速度的规律,自动算理论轮廓、实际轮廓、位移曲线,并输出最大压力角、最小曲率半径这些关键校核值。适合正在做机械原理大作业、需要快速跑通一个凸轮设计全流程的机械类本科生,也适合想复习凸轮解析法建模的从业者。
2. 凸轮机构的工程约束与程序选型:为什么是偏置直动滚子推杆
2.1 题目里的四个约束条件
大作业题目看起来只是一段话,但每个词都是硬约束。偏置直动,指的是推杆的导路中心线不通过凸轮回转中心,存在一个偏心距 e,这一点直接改变了位移与转角之间的坐标变换关系,不能套用对心凸轮的公式。滚子推杆表示从动件端部是滚子,实际工作轮廓并不是理论轮廓本身,而是理论轮廓的等距线,距离就是滚子半径 rr,这一层等距偏移会直接影响最小曲率半径的约束。盘形凸轮沿逆时针匀速转动,意味着凸轮转角按匀速递增处理,程序里用 Timer 逐步累加转角,相当于一个虚拟的匀速转动源。
推程运动规律定为五项多项式,也就是通常说的五次多项式,它保证推程始末两端的位移、速度、加速度均为零,冲击小、运动平稳,适合中高速场合。回程用余弦加速度运动,也就是简谐运动规律,始末也有较好的无冲击特性,但加速度曲线存在突变点,适合回程这种对冲击要求略低的区段。这四个约束不是随便写的,每一项都对应程序里的一个具体分支与公式段。
2.2 参数表里那些数字的真实含义
题目给出了四组参数,以题号 4-A 为例看参数含义。r0 是凸轮基圆半径 15 mm,e 是偏心距 5 mm,rr 是滚子半径 10 mm,h 是推程 28 mm。后面的角度区间划分了四个运动阶段:近休角 0-60 度,推程角 60-180 度,远休角 180-270 度,回程角 270-360 度。α1 与 α2 分别是推程与回程的许用压力角,30 度和 70 度,这是校核用的上限值;后面的 0.3rr 表示最小曲率半径的许用系数乘以滚子半径。
四组题号参数有梯度差异,4-A 基圆小、偏心距小、滚子大,4-C 基圆大、偏心距大、推程也大。这种梯度设置是有讲究的:基圆半径直接影响压力角大小,偏心距改变压力角的不对称分布,滚子半径影响实际轮廓曲率半径,改一组参数就能对比出设计变量对凸轮性能的影响,这也是大作业常见的考核点——换一组题号,整个轮廓形态和校核结果都不同。
2.3 为什么用 VB 而不是 CAD 或 SolidWorks
用 VB 做凸轮设计,核心诉求是程序化生成数据和曲线,而不是建模渲染。CAD 软件画凸轮通常需要你先把离散点坐标算出来再导入,或者用参数化草图驱动,但压力角、曲率半径这些校核量还得另行计算;VB 方案则是把数学建模、数值计算、曲线绘制、校核输出放在同一个程序里,点击运行就能看到轮廓生成过程,转角、位移、压力角都可以实时打印到列表控件里。
另一个实际原因是课程环境。很多机械原理大作业的指定环境就是 VB,因为学生已经学过编程基础,VB 的表单控件可以快速搭建交互界面,Timer 控件天然适合模拟匀速转动的离散化过程。这份资源里的代码正是这种思路:界面控件负责输入输出,Timer 驱动转角步进,每次步进触发一次完整的轮廓点计算与绘制。
3. 凸轮数学建模的关键方程:五次多项式与余弦加速度的实现
3.1 推程段:五次多项式的六项系数来源
五项多项式运动规律,位移方程形式是位移 s 关于转角比例 u 的五次多项式,方程中的六项系数通过边界条件解出。设计边界条件是:推程起点位移为 0、速度为 0、加速度为 0,推程终点位移为 h、速度为 0、加速度为 0。
六个边界条件正好确定六个系数,第一项系数的计算结果是 10h 除以推程角的三次方,这对应程序行s = 10 * h * u00 ^ 3 / (u1 ^ 3) - 15 * h * u00 ^ 4 / (u1 ^ 4) + 6 * h * u00 ^ 5 / (u1 ^ 5)里的第一项;第二项系数是 -15h 除以四次方,来自位移连续性约束下的中间条件;第三项系数是 6h 除以五次方,来自速度与加速度同时为零的终端条件。三项组合起来保证了推程曲线无突变。
程序里的u1变量存储的是推程角长度,也就是Val(Text10) - Val(Text9),即 180 减去 60 等于 120 度;u00是当前步进角减去推程起始角,得到的局部坐标。这样处理的好处是:同一个五次多项式公式可以适配不同题号的推程角长度,不需要改方程本身。代码里对推程段的条件是If u0 >= ji2 And u0 <= ji3,也就是判断当前凸轮转角是否落在推程区间内。
3.2 回程段:余弦加速度的对称性
回程位移方程是s = h - h * (1 - Cos(pi * u00 / u2)) / 2。这个形式看起来复杂,实际拆开看就是:(1 - Cos(pi * u00 / u2)) / 2是一个从 0 到 1 的余弦过渡函数,回程开始取 0,返回值就是 h,回程结束取 1,返回值是 0,中间按余弦规律下降。u2是回程角长度,0 到 90 度区间内余弦衰减,位移从 h 线性映射到 0。
代码里回程的判断条件落在u0 >= ji4 And u0 <= ji5,也就是 270 到 360 度。这里有个容易被忽略的点:u00 = (u0 - Val(Text11))用的是当前角减去回程起始角 270,而不是直接使用全局角,在 270 度附近位移才开始明显变化,符合回程起始位置位移为 h 的边界逻辑。回程段的加速度虽然不像推程段那样在代码里显式计算,但从方程结构看,它的最大加速出现在起始和终止位置,这是该运动规律的特点。
3.3 理论轮廓与实际轮廓的坐标变换
理论轮廓坐标变换体现在lunkuofenxi_lilun子程序里。位移 s 在推程、回程各段计算完成后,坐标变换用到的核心公式为x = (s0 + s) * Sin(u * k) + e * Cos(u * k),y 用余弦形式y = (s0 + s) * Cos(u * k) - e * Sin(u * k)。这里的s0是基圆半径平方减去偏心距平方再开方,对应的是偏置直动推杆的初始位置到凸轮回转中心的距离,(s0 + s)才是实际向径。
实际轮廓的变换在lunkuofenxi_shiji子程序里,先算dxu与dyu两个偏导数分量,用于确定理论轮廓法线方向,然后si与co分别是法向量的正弦和余弦分量,偏移方向取负法向,也就是从理论轮廓向内偏移滚子半径。最终实际轮廓坐标是理论坐标减去滚子半径乘以法向分量,滚子尺寸越大,实际轮廓与理论轮廓的差距越明显,这也是为什么小滚子比大滚子更贴近理论廓线形态。
4. 用 VB 程序跑通凸轮设计全流程:半小时输出一套可直接上交的数据
4.1 程序界面与参数输入约定
程序界面按功能区域划分输入控件:Text1 到 Text7 依次对应基圆半径 r0、偏心距 e、滚子半径 rr、推程 h、最小曲率半径许用值、推程许用压力角 α1、回程许用压力角 α2;Text8 到 Text12 是四个运动阶段的边界角度;Text18 是当前转角,由 Timer 自动累加;Text13 后面跟四个文本控件,显示理论与实际轮廓坐标的实时数值。
List1 列表控件组承担数据存储功能,List1(0) 与 List1(1) 存理论轮廓坐标,List1(2) 与 List1(3) 存实际轮廓坐标,List1(5) 存位移序列,List1(10) 存转角序列。这些列表在程序运行结束时可以通过按钮导出或打印,是大作业报告里数据表的直接来源。
4.2 核心计算循环:Timer 驱动的逐度推进机制
程序的主计算循环依赖 Timer1 控件的 Interval = 1 毫秒触发机制。每次 Timer 事件将Text18 = Val(Text18) + 1,再调用Command1_Click执行一轮完整计算。If Val(Text18) >= 360 Then Text18 = Val(Text18) - 360让转角在 0 到 359 度之间循环取值,模拟凸轮完整转一圈的过程。
这种逐度推进策略用 360 个离散点逼近连续轮廓,对大部分凸轮设计精度足够。想要更高精度可以把Text18 = Val(Text18) + 1改成加 0.5,但界面运行速度会明显变慢,一般大作业没有必要。每个步进的计算内容包括:判断当前转角属于哪个运动区段,调用对应运动方程计算位移 s,再调用理论轮廓与实际轮廓两个子程序计算坐标点,最后把点连成曲线并动态更新压力角与曲率半径的最大值。
4.3 七个关键代码段的逻辑拆解
第一个关键段是全局变量与公共数组定义。Const k = pi / 180做角度到弧度的转换,Dim xxx(0 To 360), yyy(0 To 360), sss(0 To 360)三个数组分别缓存理论轮廓横坐标、纵坐标和位移量,供最后的数据汇总使用。
第二个关键段是理论轮廓子程序lunkuofenxi_lilun。它只算理论轮廓点,不做实际轮廓偏移,输出写入 Text13(0) 与 Text13(1)。这里有坑:它用的 u 来自外部传入的当前角加 90 度,这对应的是偏置直动推杆的导路偏转关系,不同题号的 e 值下,加 90 度的效果完全不同。
第三个关键段是实际轮廓子程序。多出了rg * co与rg * si两个偏移项,这里的 rg 来自Val(Text3),但从代码看运行前执行了pmin = Val(Text5) * rg,也就是 Text5 里输入的是最小曲率半径系数,真正的检验阈值是系数乘滚子半径。这个细节在改参数时特别容易忽略。
第四个关键段是推程区间的位移计算。五次多项式公式里使用了u00 ^ 3、u00 ^ 4、u00 ^ 5三次幂运算,VB 的幂运算符优先级高于乘除,所以10 * h * u00 ^ 3 / (u1 ^ 3)实际按10*h*(u00^3)/(u1^3)计算。如果手动改成 C 系语言,需要显式加括号,这是移植代码最容易出错的地方。
第五个关键段是位移曲线的分割绘制。Picture2(0).Line (jjj - 1, List1(5).List(jjj - 2))-(jjj, List1(5).List(jjj - 1))以 1 度为步长连线,画出的位移曲线是折线近似的平滑曲线。If jjj Mod 45 = 0在 45 度倍数的位置画刻度线和读数标签,方便目视检查四个运动区段的分界点是否落在预期角度。
第六个关键段是压力角计算。代码里qulv变量并未在贴出的片段中直接给出计算公式,但从使用位置看,它对应的是速度与位移的比值,也就是 tan 形式的压力角。压力角计算依赖位移的一阶导数,五次多项式的导数是显式可算的,程序里通过相邻点位移差近似实现。
第七个关键段是数据导出。Command4_Click遍历列表控件里的理论轮廓与实际轮廓坐标,每 10 度打印一行,形成报告用的数据表。这里有个边界处理:如果累计点超过 360,实际轮廓点数截断为 360,避免越界;打印间隔用i Mod 10 = 0,意味着最终报告是 36 行的精简表。
4.4 四组题号参数对照:从输入到输出差异
| 题号 | r0 (mm) | e (mm) | rr (mm) | h (mm) | α1 (°) | α2 (°) | 近休/推程/远休/回程 |
|---|---|---|---|---|---|---|---|
| 4-A | 15 | 5 | 10 | 28 | 30 | 70 | 0-60 / 60-180 / 180-270 / 270-360 |
| 4-B | 20 | 10 | 14 | 30 | 30 | 75 | 0-45 / 45-210 / 210-260 / 260-360 |
| 4-C | 22 | 14 | 18 | 35 | 35 | 65 | 0-30 / 30-210 / 210-280 / 280-360 |
四组题号的运动区间与参数均不同,但代码不需要结构性改动,只需在文本框里换值。参数变化的影响规律:基圆半径增大,压力角整体下降,轮廓更平缓;偏心距增大,推程与回程的压力角不对称性增大;推程增大,最大压力角与最小曲率半径都更紧张。手算时这种规律性要花大量时间验证,程序跑一遍立刻能看到趋势。
5. 数据验证与参数边界:从最小曲率半径到压力角校核
5.1 压力角校核的判别逻辑
程序每次步进都会计算当前压力角qulv与当前转角,通过与文本框中记录的当前最大值比较,更新Text15系列显示框。推程最大压力角输出显示为 39.5212 度,对应转角 30 度;回程最大压力角同为 39.5212 度,对应转角为 0 度。这个数据对应题号 4-C 的参数组合,也就是 r0=22、e=14、rr=18、h=35 的场景。
对比许用压力角:推程许用 α1=35 度,实际推程最大压力角为 39.52 度,已经超出许用值约 4.5 度,这说明 4-C 这组参数的偏置设计存在压力角超差风险。轴承磨损与传力效率都会受影响。出现这种情况的标准做法是增大基圆半径 r0,或者减小偏心距 e,二者都能降低压力角峰值,但会改变轮廓整体形态,需要重新校验曲率半径。
5.2 最小曲率半径与滚子半径的约束关系
程序输出的另一组关键校核值是实际轮廓最小曲率半径,4-C 场景显示最小值为 1,对应转角为 1 度。滚子半径 rr 是 18 mm,理论最小曲率半径减去滚子半径后得到实际轮廓最小曲率半径为 1 mm,说明实际轮廓在 1 度位置几乎是平直的尖角过渡,距离发生根切只剩很窄的余量。这里有个硬性规则:实际轮廓最小曲率半径必须大于 0,否则轮廓出现尖点或自交,机构无法正常工作。
程序里 Text5 输入的参数含义是最小曲率半径许用系数,代码把Val(Text5) * rg作为许用阈值。4-C 的系数是 0.35rr,即允许实际轮廓最小曲率半径不小于滚子半径的 0.35 倍。输出值 1 mm 意味着实际轮廓已经接近下限,若滚子半径再大一点,或者基圆半径再小一点,就可能翻车。
5.3 轮廓坐标数据表的解释与报告使用方式
运行结束后,通过 Command4 导出的数据表分为两个区块:前 360 行是理论轮廓坐标,每 10 度一组,共 36 组;如果累计点超过 360,后半段是实际轮廓坐标。每个坐标点保留三位小数,精确到微米量级,恰好满足一般机械原理大作业的精度要求。
报告中引用数据表时需要说明数据来源是程序计算输出,坐标系定义是凸轮回转中心为原点,推杆导路沿竖轴方向,理论轮廓坐标与实际轮廓坐标的单位都是毫米。转角与坐标点的对应关系是:转角的度数与数据行号一一对应,方便审查老师按角度反查坐标。
6. 常见坑点与排查手段:凸轮程序运行中的五个真实翻车现场
6.1 现象:位移曲线整体走形,回程段不下降
原因:运动区间的分界角度输入错误。程序用ji1 = Val(Text8)到ji5 = Val(Text12)五个变量存边界角,若 Text9 与 Text10 的输入值把推程区间写反,五次多项式公式里的u00变成负值,幂运算结果符号错乱,位移曲线会先上升后异常回落。解决:核对五个边界角是否按近休、推程、远休、回程的顺序严格递增,每次改参数时先看一遍界面上的 Text8 到 Text12 数值。
6.2 现象:理论轮廓与实际轮廓完全重合
原因:滚子半径 rr 在 Text3 里输入了 0 或者程序中途被强制终止导致 Text3 未赋值。实际轮廓方程里rg * co与rg * si两个偏移项在 rg 为 0 时整体消失,实际轮廓退化为理论轮廓。解决:检查 Text3 是否为 0,滚子半径至少要大于 0;另外注意代码里pmin = Val(Text5) * rg,如果 Text5 里误填了绝对半径而不是系数,最小曲率半径的判定值会偏大或偏小,导致校核失真。
6.3 现象:程序在 360 度转角附近报数组越界
原因:列表控件List1(5)的位移数据在第 361 个点写入时,jjj > 1 And jjj <= 360的判断条件没有覆盖到 360 点后的边界处理逻辑。具体来说是Picture2(0).Line (jjj - 1, List1(5).List(jjj - 2))-(jjj, List1(5).List(jjj - 1))这行在jjj - 2的计算中,当jjj = 1时引用了 List(-1),直接越界。解决:给jjj > 1的条件前加上List1(5).ListCount > 2的保护判断,或者在写入位移列表前先检查列表长度。
6.4 现象:压力角显示为负数或在 0 附近跳变
原因:代码中xl = (Atn(si / co)) / k的反正切计算在 co 接近零时会出现除零异常,产生极大值或 NaN。co 是法向量的余弦分量,当轮廓点切线与竖轴垂直时 co 为零,这是数学奇点。解决:常规做法是用 ATN2 形式的四象限反正切替代单参数 Atn,或者在 co 绝对值小于某个阈值时将该点压力角视为异常并跳过显示,只保留有效数据点的极值统计。
6.5 现象:基圆半径增大后,实际轮廓反而出现明显凹陷
原因:基圆半径增大导致理论轮廓的曲率半径增大,但实际轮廓是偏移滚子半径后的等距线,如果滚子半径大于理论轮廓最小曲率半径,实际轮廓会产生交叉或凹陷。这种现象在基圆变大、滚子半径不变时更容易出现,因为相同偏移量相对大曲率轮廓更明显。解决:把滚子半径改小,或者将基圆半径改小后重新校核,找到一个让实际轮廓最小曲率半径大于 0.3 倍滚子半径的折中点。实际调试时,我一般先把滚子半径设为基圆半径的 0.4 到 0.5 倍,再根据最小曲率半径输出微调。
7. 进阶:用图像对比验证程序正确性,以及一份可持续复用的参数模板
程序输出图像三件套——位移曲线、理论轮廓、实际轮廓是验证程序正确性的第一道关。位移曲线应该是四段式:近休段水平直线在零位移处,推程段单调上升的 S 形曲线,远休段水平直线在推程最大位移 h 处,回程段单调下降回到零。如果推程段出现波浪、回程段出现上凸,不用看数据就能判断程序逻辑有问题。
理论轮廓与实际轮廓的对比验证要点是:实际轮廓整体在理论轮廓内侧,两者间距处处等于滚子半径,且轮廓在近休与远休的圆弧段半径分别等于基圆半径加上相应位移。用程序界面里两个颜色不同的绘制线条就能确认:理论轮廓用黄色系,实际轮廓用红色系,叠在一起肉眼判断是否等距。
坐标数据验证有两种办法。方法一是拿出笔和计算器,任选推程区间的一个整数角度,比如 90 度,按五次多项式公式手算位移,再代入坐标变换公式算理论轮廓坐标,与程序导出数据表对照。方法二是换用 4-A 到 4-C 三组参数分别运行,记录每组参数下的最大压力角,按公式估算最大压力角与基圆半径的负相关关系,如果三组数据显示基圆半径越大、最大压力角越小,说明程序内部的导数计算是可信的。
我跑这个资源时,习惯先把 4-C 的参数原样输入一遍跑出结果,确认推程最大压力角 39.52 度、最小曲率半径 1 能复现,再去改其他变量做对比实验。从那以后,每次提交凸轮大作业我都强制走一遍流程:先备份默认参数,再改目标题号参数,运行完先看位移曲线四段形态,再核对压力角与曲率半径的极值、转角对应关系,最后导出一份 36 行的坐标表用于报告。这套流程看着繁琐,但能避免 90% 的低级错误,希望帮到你。
本文还有配套的精品资源,点击获取