00这是什么

“问渠 → 凸轮”工作台:打开网页版的项目,在 FreeCAD 里重算校核、建精确实体、装配、出工作图和程序。

问渠凸轮工作台用与网页版同一个计算核心:打开网页版“保存为文件”存下的项目,重算校核(结果逐项相同,摘要在“报告视图”里),建出零件——盘形与槽凸轮、圆柱凸轮(槽侧面按啮合方程拟合,偏差 ≤ 0.25 µm)、弧面分度凸轮的精确实体、换刀臂;凸轮系统按时序装配,改属性 Angle(凸轮轴转角)看动作;导出 STEP、加工程序、点表和 A3 工作图。

FreeCAD 工作台(本帮助) 网页版
在哪用 本机 FreeCAD 1.1 浏览器
适合 精确实体、装配、工作图、在 CAD 里接着设计 设计与校核、制造程序、测量与补偿、系统设计、CAE、AI

第一次用? 先装好工作台(下一节),再打开典型案例里任意一个示例项目。

01安装

下载一个压缩包,复制一个文件夹,重启 FreeCAD。

  1. 安装 FreeCAD 1.1(官网 freecad.org)。
  2. 网页版“制造”或“三维与制造”页点“下载 → FreeCAD 工作台 .zip”。
  3. 把压缩包里的 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 文件夹,各自的按钮都在。
  4. 重启 FreeCAD,工作台列表里选 问渠,点 凸轮。

缺 Python 包(scipy、shapely)时点“凸轮”会提示一条安装命令,整行粘贴到 FreeCAD 的 Python 控制台里运行(命令会自动找到 FreeCAD 自带的 Python,没有 pip 先补上,再装缺的包),装完重启 FreeCAD。压缩包里有示例项目(examples)和本帮助的离线一份(Mod/WenQuest/cam-help/index.html,不联网也能看)。

▶ 录像:安装工作台,打开槽凸轮示例

02使用

点“凸轮”,选项目,看校核、实体、装配,导出。

  1. 点 凸轮,选网页版“保存为文件”存下的项目(或压缩包 examples 里的示例)。
  2. 软件重算校核,摘要在“报告视图”里,与网页版逐项相同。
  3. 建出零件:盘形 / 槽凸轮(与网页版 STEP 同一个实体;槽凸轮要在项目里填毛坯半径和板厚,没填时只建示意件)、圆柱凸轮和滚子、弧面分度凸轮精确实体(约一分钟)、换刀臂。
  4. 凸轮系统:模型树里选“凸轮系统”,改属性 Angle(凸轮轴转角),转塔和换刀臂按时序转、上下动。
  5. 导出:在 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:

▶ 试一试:打开制造页
▶ 案例一录像:磨削程序与仿真

第三步:测量与补偿

顶部 测量与补偿,点“载入合成测量数据(演示)”——软件按设计升程加上已知误差造出来的,只作演示。勾“自动对相位”,填示例许用加速度误差 50 rad/s²(虚构),点“分析”:

▶ 试一试:打开测量与补偿
▶ 案例一录像:测量、谐波分析与补偿

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 页
▶ 案例二录像:三维与 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 个点,按周期三次样条连起来)。

压力角、根切与曲率

接触应力、跳离与转矩

凸轮系统

凸轮轴转矩 T(θ) = J_e θ̈ + ½ J_e′ θ̇² + Σ L_i ψ_i′ + T_摩擦(拉格朗日方程,Norton、Chen);电机转矩按传动比和效率折算。停歇段残余振动按单自由度振动方程 y″ + 2ζω_n y′ + ω_n² y = −ψ̈(t)(Norton,凸轮动力学一章)。弧面分度凸轮的压力角按 Rothbart《Cam Design Handbook》里滚子齿轮凸轮的公式,啮合、筋厚、根切、接触应力另查。

圆柱凸轮

槽侧面由啮合条件闭式求出;压力角沿槽深变化,槽底处最大,按槽底给结论;锥形滚子的锥顶在凸轮轴线上,停歇时纯滚动。

▶ 录像:圆柱凸轮

08制造、测量与补偿

出程序、读回仿真;测出误差、分阶次、算加速度误差、反向补偿出新程序。机床参数都是示例值,按本厂设备改。

制造

测量与补偿(盘形凸轮)

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简化与限制

照实写:哪些是简化,哪些还没有。

12常见问题

为什么接触应力是“未知”? 没填许用接触应力。软件不替你编许用值,“未知”不算合格。

合计不是 360° 怎么办? 运动程序各段转角加起来必须是 360°,右下角“合计”变绿才算对;停歇段补齐即可。

网页版和 FreeCAD 版结果会不一样吗? 不会,同一个计算核心;FreeCAD 打开网页版存的项目,校核逐项相同。

槽凸轮为什么没有“跳离”? 槽凸轮是形封闭,不会跳离;改看滚子换侧次数,每次换侧都在槽间隙里有冲击。

示例里的许用值能直接用吗? 不能,示例的许用值、机床参数、电机参数都是虚构的,按企业标准和设备填。