00这是什么
“问渠 → 凸轮”工作台:打开网页版的项目,在 FreeCAD 里重算校核、建精确实体、装配、出工作图和程序。
问渠凸轮工作台用与网页版同一个计算核心:打开网页版“保存为文件”存下的项目,重算校核(结果逐项相同,摘要在“报告视图”里),建出零件——盘形与槽凸轮、圆柱凸轮(槽侧面按啮合方程拟合,偏差 ≤ 0.25 µm)、弧面分度凸轮的精确实体、换刀臂;凸轮系统按时序装配,改属性 Angle(凸轮轴转角)看动作;导出 STEP、加工程序、点表和 A3 工作图。
| FreeCAD 工作台(本帮助) | 网页版 | |
|---|---|---|
| 在哪用 | 本机 FreeCAD 1.1 | 浏览器 |
| 适合 | 精确实体、装配、工作图、在 CAD 里接着设计 | 设计与校核、制造程序、测量与补偿、系统设计、CAE、AI |
第一次用? 先装好工作台(下一节),再打开典型案例里任意一个示例项目。
01安装
下载一个压缩包,复制一个文件夹,重启 FreeCAD。
- 安装 FreeCAD 1.1(官网 freecad.org)。
- 网页版“制造”或“三维与制造”页点“下载 → FreeCAD 工作台 .zip”。
- 把压缩包里的
Mod/WenQuest文件夹复制到 FreeCAD 的用户 Mod 目录。目录在哪:在 FreeCAD 的 Python 控制台输入App.getUserAppDataDir()回车,显示的文件夹里的Mod(没有就新建)。FreeCAD 1.1 一般是 Windows%APPDATA%\FreeCAD\v1-1\Mod,macOS~/Library/Application Support/FreeCAD/v1-1/Mod,Linux~/.local/share/FreeCAD/v1-1/Mod,以控制台显示的为准。已经装过问渠轴承或数字工厂的,解压到同一个 WenQuest 文件夹,各自的按钮都在。 - 重启 FreeCAD,工作台列表里选 问渠,点 凸轮。
缺 Python 包(scipy、shapely)时点“凸轮”会提示一条安装命令,整行粘贴到 FreeCAD 的 Python 控制台里运行(命令会自动找到 FreeCAD 自带的 Python,没有 pip 先补上,再装缺的包),装完重启 FreeCAD。压缩包里有示例项目(examples)和本帮助的离线一份(Mod/WenQuest/cam-help/index.html,不联网也能看)。
02使用
点“凸轮”,选项目,看校核、实体、装配,导出。
- 点 凸轮,选网页版“保存为文件”存下的项目(或压缩包
examples里的示例)。 - 软件重算校核,摘要在“报告视图”里,与网页版逐项相同。
- 建出零件:盘形 / 槽凸轮(与网页版 STEP 同一个实体;槽凸轮要在项目里填毛坯半径和板厚,没填时只建示意件)、圆柱凸轮和滚子、弧面分度凸轮精确实体(约一分钟)、换刀臂。
- 凸轮系统:模型树里选“凸轮系统”,改属性 Angle(凸轮轴转角),转塔和换刀臂按时序转、上下动。
- 导出:在 Python 控制台运行一行命令(见“不开界面:控制台命令”),输出到你指定的文件夹:凸轮和换刀臂的 STEP 与 A3 工作图,加工程序(弧面凸轮、圆柱凸轮的四轴程序;盘形凸轮在网页版“制造”里填了刀具时出程序),盘形 / 槽凸轮的点表 CSV,示意件不导出;每张工作图(SVG,浏览器打开可打印成 PDF;技术要求留给工程师填)。
03典型案例
两个从实际问题出发的案例,每个数都是软件当场算的;示例参数都是虚构的。
| 案例 | 问题 | 用到 |
|---|---|---|
| 一、平缝机挑线槽凸轮:从设计到磨削与补偿 | 5000 r/min 下压力角、曲率够不够?砂轮多大?磨出来误差多少,能不能补? | 设计校核、求最小基圆、磨削程序与仿真、测量与补偿 |
| 二、加工中心凸轮式换刀机构:凸轮系统 | 两个凸轮错开动作不打架吗?电机要多大?停下来换刀臂晃多少? | 凸轮系统、联锁、电机转矩、残余振动、设计搜索、CAE |
每个案例的数都由 docs/帮助/凸轮软件帮助/build.py 生成帮助时调计算核心重算;改了计算核心,重新生成,帮助里的数跟着变。
04案例一:平缝机挑线槽凸轮,从设计到磨削与补偿
一个槽凸轮从“够不够”一直做到“磨出来差多少、怎么补”。
问题
平缝机挑线槽凸轮(示例,虚构):摆动从动件、滚子半径 4 mm、基圆半径 22 mm、中心距 45 mm、摆杆长 38 mm,5000 r/min。运动程序:升(修正正弦)—停—回(4-5-6-7 次多项式)—停。
▶ 试一试:打开这个示例第一步:校核
10 项里关键的几项:
| 项 | 结果 |
|---|---|
| 推程 / 回程最大压力角 | 21.2° / 32.5°(示例许用 45°) |
| 实际廓线最小曲率半径 | 20.7 mm(滚子 4 mm,不根切) |
| 滚子换侧次数 | 每转 4 次(槽凸轮形封闭,接触力换向处在槽间隙里有冲击) |
| 最大接触应力 | 414 MPa——没填许用值,所以是“未知” |
| 凸轮轴峰值力矩 | 0.97 N·m |
压力角离许用值还很远。“求最小基圆”给出 9.24 mm 就够(卡在推程压力角)——基圆还可以缩,凸轮能做得更小更轻;用多大由企业结合结构定。
第二步:磨削程序
顶部 制造,选磨削 X–C,砂轮半径取 4 mm(与滚子一样大,一刀同时磨出槽的两侧),弦高公差 1 µm:
- 不过切:凹处曲率半径 28.7 mm 大于砂轮半径;
- 程序仿真偏差:软件把导出的程序读回来让砂轮扫过毛坯,和设计廓线比,最大 1.03 µm(限 1.1 µm);
- 程序 168 个点,凸轮转一圈约 6 s。
第三步:测量与补偿
顶部 测量与补偿,点“载入合成测量数据(演示)”——软件按设计升程加上已知误差造出来的,只作演示。勾“自动对相位”,填示例许用加速度误差 50 rad/s²(虚构),点“分析”:
- 测量零位与零件差 1.50°(合成数据里放的就是 1.5°);
- 误差引起的最大加速度误差 158 rad/s²,超过许用值;按这个误差,最高只能跑约 2811 r/min;
- 选 1–6 阶补偿,点“生成补偿程序”:误差均方根从 3.19 降到 0.60 µrad(剩下的是没选的高阶和噪声),下载补偿后的程序。
05案例二:加工中心凸轮式换刀机构
一根凸轮轴上两个凸轮:弧面分度凸轮转换刀臂,槽凸轮让换刀臂拔刀、插刀;动作要错开,电机要够,停下来不能晃太大。
问题
加工中心凸轮式换刀机构(示例,虚构):凸轮轴 60 r/min,经 30:1 减速由电机带动。弧面分度凸轮:停—转 65°—停—转 180°—停—回 65°;槽凸轮 + 摆杆:在换刀臂停着时下拔、上插。
▶ 试一试:打开这个示例第一步:时序与联锁
“系统设计”页中间是时序图:凸轮轴转一圈,两个凸轮各在什么位置,阴影是运动段。联锁校核:一个动时另一个必须停着,两条都合格。一次换刀循环(起动到制动停住)1.08 s。
第二步:电机与振动
| 项 | 结果 |
|---|---|
| 电机峰值转矩 | 17.9 N·m |
| 电机均方根转矩(一次换刀) | 4.1 N·m |
| 凸轮轴峰值功率 | 2368 W |
| 停歇时换刀臂端部残余振动 | 252 µm |
| 停歇时拔插刀端部残余振动 | 49 µm |
电机额定值没填(照样本填),所以电机几项是“未知”;残余振动没给允许值,也是“未知”。
第三步:设计搜索——换运动规律
“设计搜索”把每种运动规律都试一遍(两个凸轮一起换):
| 运动规律(两个凸轮都换) | 停歇时换刀臂端部残余振动 µm | 电机峰值转矩 N·m | 校核 |
|---|---|---|---|
| 修正正弦 | 252 | 17.9 | 没有不合格 |
| 摆线(正弦加速度) | 106 | 26.8 | 不合格:换刀臂转动凸轮压力角 |
| 4-5-6-7 次多项式 | 48 | 35.3 | 不合格:换刀臂转动凸轮压力角、拔插刀凸轮推程压力角 |
| 修正梯形 | 251 | 26.6 | 不合格:换刀臂转动凸轮压力角 |
| 3-4-5 次多项式 | 148 | 22.0 | 不合格:换刀臂转动凸轮压力角 |
振动最小的几种规律都让弧面凸轮的压力角超了;在全部合格的里面,软件选 修正正弦(示例本来用的就是它)。给了允许振动、电机额定值时,还会求满足它们的最高转速。点“采用”换上那种规律。
第四步:CAE
“CAE 分析”页:换刀臂有限元(55724 个单元)最大应力 31.9 MPa、安全系数 16.9;换刀臂本身(孔固定)一阶固有频率 791 Hz;还有疲劳寿命和整机多体动力学(MuJoCo)与解析结果的对照。示例结果是 2026-10-18 用数字工厂计算服务同一套程序算的;提交新计算要企业账号。
▶ 试一试:打开 CAE 页06不开界面:控制台命令
在 FreeCAD 的 Python 控制台里一行跑完:校核、建模、导出。
import wq_cam
wq_cam.run_headless("项目.wqcam.json", "输出文件夹")
批量处理一批凸轮:
import glob, os, wq_cam
for f in glob.glob("凸轮/*.wqcam.json"):
wq_cam.run_headless(f, os.path.join("输出", os.path.basename(f)[:-11]))
07怎么算:运动规律、压力角、曲率、接触与跳离
每一项校核出自哪个公式;方法出自公开的教材和专著,每个模块带标准题。
运动程序与运动规律
一圈由升、停、回拼成,每段选一种运动规律:等速、等加速等减速、简谐(余弦加速度)、摆线(正弦加速度)、修正梯形、修正正弦、3-4-5 次多项式、4-5-6-7 次多项式。段与段接头处速度不连续是刚性冲击,加速度不连续是柔性冲击,软件逐个接头查。也可以用点表(至少 8 个点,按周期三次样条连起来)。
压力角、根切与曲率
- 压力角:接触点法线与从动件运动方向的夹角,推程、回程分别对比许用值。
- 不根切:理论廓线外凸处的曲率半径要大于滚子半径,槽凸轮两侧都查;实际廓线最小曲率半径 由廓线一、二阶导数算。
- 求最小基圆:压力角、根切、曲率都随基圆半径单调变化,所以按许用值二分求出最小基圆(Angeles & López-Cajún 把它当优化问题,这里单调,搜索就够)。
接触应力、跳离与转矩
- 接触应力:滚子(或平底)与廓线的赫兹线接触,长度取接触宽度。
- 高速不跳离(外廓凸轮):弹簧力 + 载荷 + 惯性力在一圈里始终大于 0,并算出不跳离的最高转速;槽凸轮形封闭,不适用,改查滚子换侧次数。
- 凸轮轴峰值力矩:接触力 × 类速度。
凸轮系统
凸轮轴转矩 T(θ) = J_e θ̈ + ½ J_e′ θ̇² + Σ L_i ψ_i′ + T_摩擦(拉格朗日方程,Norton、Chen);电机转矩按传动比和效率折算。停歇段残余振动按单自由度振动方程 y″ + 2ζω_n y′ + ω_n² y = −ψ̈(t)(Norton,凸轮动力学一章)。弧面分度凸轮的压力角按 Rothbart《Cam Design Handbook》里滚子齿轮凸轮的公式,啮合、筋厚、根切、接触应力另查。
圆柱凸轮
槽侧面由啮合条件闭式求出;压力角沿槽深变化,槽底处最大,按槽底给结论;锥形滚子的锥顶在凸轮轴线上,停歇时纯滚动。
08制造、测量与补偿
出程序、读回仿真;测出误差、分阶次、算加速度误差、反向补偿出新程序。机床参数都是示例值,按本厂设备改。
制造
- 加工方式:磨削 X–C(凸轮随 C 轴转、砂轮沿 X 进退)、铣削 XY、慢走丝(只出 DXF 和点表)。填刀具半径和弦高公差;槽凸轮刀具不能大于滚子,等于时一刀磨出两侧。
- 校核:不过切(凹处曲率半径大于刀具半径);X–C 能走(刀心轨迹对凸轮中心是“星形”);程序仿真偏差(程序读回来让刀具扫过毛坯,和设计廓线比,不超过弦高公差 + 0.1 µm 为合格——说明程序没问题,零件公差由企业定)。
- 下载:加工程序 .nc、廓线 .dxf、点表 .csv(每 0.5° 一行)、三维 .step(B 样条拟合偏差一般在 0.01 µm 量级)。
- 砂轮修整后没更新半径:填实际半径,点“算误差”,看用旧半径的程序磨出来差多少。
- 圆柱凸轮用四轴(A 转凸轮、X 沿轴线):刀具与滚子同样大时一刀成槽,小一号时两侧各走一刀;程序读回扫槽,与精确槽侧面比法向偏差。
测量与补偿(盘形凸轮)
- 数据:升程表(转角, 升程)或廓线 XY 点;没有数据时“载入合成测量数据(演示)”。
- 自动对相位:零位没和键槽、销孔对准时勾上;对准了就别勾,结果更准。
- 结果:相位差、基圆 / 零点误差、误差曲线、谐波(红 = 1 阶偏心和装夹,黄 = 低阶热处理变形,蓝 = 高阶机床和颤振)、误差引起的加速度误差和“这样的误差最高能跑多少转”。
- 补偿:选要修的阶次,软件把这些阶次的误差反向加到运动程序上,按“制造”里的刀具和机床重新出程序,并预测剩下的误差。
09内核:开源软件与参考书
数值、几何和网页交给成熟的开源软件;公式和判据出自公开的教材和专著,每个模块带标准题。
用到的开源软件
| 开源软件 | 做什么 | 在问渠凸轮里用在哪 | 许可证 |
|---|---|---|---|
| NumPy、SciPy | 数值计算 | 全部计算核心:运动程序、廓线、样条、最小基圆、谐波分析 | BSD-3 |
| Shapely | 平面几何 | 加工仿真(刀具扫过毛坯) | BSD-3 |
| manifold3d | 网格布尔运算 | 圆柱凸轮、弧面凸轮按加工方法生成的 STL | Apache-2.0 |
| FreeCAD 1.1、OpenCASCADE | 参数化 CAD、几何内核 | “问渠 → 凸轮”工作台;精确实体与工作图 | LGPL-2.0+、LGPL-2.1(带例外) |
| three.js | 网页三维 | 凸轮系统三维、圆柱凸轮三维 | MIT |
| FastAPI、Uvicorn、Vue | 接口与网页 | 凸轮计算服务、网页版 | MIT、BSD-3、MIT |
| Gmsh、CalculiX、pyLife、MuJoCo | 网格、有限元、疲劳、多体动力学 | 凸轮系统的 CAE(在数字工厂计算服务上跑) | GPL-2.0+、GPL-2.0、Apache-2.0、Apache-2.0 |
参考书
R. L. Norton, Cam Design and Manufacturing Handbook(运动规律、压力角、曲率、动力学与残余振动);H. A. Rothbart, Cam Design Handbook(滚子齿轮凸轮 / 弧面凸轮);J. Angeles, C. López-Cajún, Optimization of Cam Mechanisms(最小基圆);孙桓《机械原理》(廓线曲率)。另外和开源的 mechanism 包做过交叉对照。
我们自己做的
计算核心 services/cam/camkit/(纯 Python):运动程序、盘形与圆柱与弧面凸轮、制造程序与读回仿真、测量与补偿、凸轮系统与设计搜索、STEP 写出;标准题与闭式解对照(services/cam/tests/)。判定全由程序做,不经 AI;没填的数据结果为“未知”。
10系统设计
运动程序 → 计算核心 → 校核 → 制造程序 → 测量 → 补偿,绕成一个闭环;凸轮系统再接 CAE。
| 层 | 是什么 | 在哪 |
|---|---|---|
| 计算核心 | 纯 Python,不联网、不调 AI;网页版服务和 FreeCAD 工作台共用 | services/cam/camkit/ |
| 计算服务 | 网页版的接口:校核、最小基圆、制造、测量、补偿、系统、导出 | services/cam/app.py,网址 /cam/api/ |
| 网页版 | 单个凸轮三页、凸轮系统三页 | apps/cam/ |
| FreeCAD 工作台 | 精确实体、装配、工作图、程序 | services/cam/freecad/ |
| 云端、AI、CAE | 账号、企业授权、云端项目、AI 起草(经问渠网关);CAE 在数字工厂计算服务排队 | services/gateway/、数字工厂 |
规矩:判定只由程序做;许用值、机床参数、电机额定值由企业填,不编;示例一律标“虚构”。
11简化与限制
照实写:哪些是简化,哪些还没有。
- 接触应力按赫兹线接触,不计边缘效应和润滑。
- 停歇残余振动按单自由度模型,弹性频率和阻尼比由企业填;系统振动用的是含传动链的整体频率,与 CAE 里换刀臂本身(孔固定)的固有频率不同。
- 弧面凸轮的槽底按刀具端面直径扫出,比平底刀实际加工最多多留约 0.7 mm 的料(非工作面,偏安全)。
- 程序仿真合格只说明程序没问题;零件公差、机床精度由企业定。
- 测量与补偿只对盘形凸轮开放;“自动对相位”会把一部分像“错开一点角度”的误差当成相位差。
- 机床设置、电机参数、许用值都是示例或要企业填;不填的结果为“未知”。
12常见问题
为什么接触应力是“未知”? 没填许用接触应力。软件不替你编许用值,“未知”不算合格。
合计不是 360° 怎么办? 运动程序各段转角加起来必须是 360°,右下角“合计”变绿才算对;停歇段补齐即可。
网页版和 FreeCAD 版结果会不一样吗? 不会,同一个计算核心;FreeCAD 打开网页版存的项目,校核逐项相同。
槽凸轮为什么没有“跳离”? 槽凸轮是形封闭,不会跳离;改看滚子换侧次数,每次换侧都在槽间隙里有冲击。
示例里的许用值能直接用吗? 不能,示例的许用值、机床参数、电机参数都是虚构的,按企业标准和设备填。