4. 电子凸轮软件环境搭建:常用编程环境介绍

做电子凸轮开发,第一步不是写代码,而是搭环境。这活儿看着简单,但我在项目里见过太多人卡在这一步——软件装不上、授权过期、连不上控制器……说白了,环境没搭好,后面全是坑。

今天我就带你走一遍,把常用的几个开发环境捋清楚。你跟着做,半小时内就能跑起第一个运动控制项目。

4.1 三大主流编程环境:选哪个?

目前工业界做电子凸轮,基本就这三家:CODESYSTwinCATPLCopen。它们的关系,我画了张图帮你理解。

电子凸轮软件环境生态 PLCopen 运动控制标准 CODESYS TwinCAT (Beckhoff) 电子凸轮函数库 MC_CamIn / MC_CamOut 凸轮表编辑器 主从轴曲线设定 轴组态与调试 Scope / 在线监控 💡 无论选哪个,底层都遵循 PLCopen 标准,API 几乎一样 学会一个,另一个上手很快

4.2 CODESYS:最通用的选择

CODESYS 是德国 3S 公司的产品。它不绑定硬件,很多国产控制器、PLC 都支持。我个人习惯把它叫做「工业界的 Android」——开放、灵活、生态好。

适用场景: 中小型项目、多品牌硬件、预算有限

安装步骤

  1. 下载:去官网(codesys.com)下载 CODESYS Development System V3.5 SP19 以上版本。注意区分 32 位和 64 位。
  2. 安装:一路 Next,默认路径即可。安装时会自动装好 .NET Framework 和 USB 驱动。
  3. 授权:CODESYS 免费版有 2 小时运行限制。破解?别想了。正版授权分两种:
    • SoftContainer:软授权,绑定电脑硬件,约 2000 元/年
    • USB Dongle:硬件狗,插上就能用,适合多台电脑切换
我的经验: 刚开始学习用免费版就行。2 小时够你写完一个凸轮程序了。真到项目交付时再买授权,别浪费钱。

4.3 TwinCAT:高性能玩家的选择

TwinCAT 是 Beckhoff 的看家本领。它把 Windows 变成了实时系统。说白了,你的电脑既是上位机,又是运动控制器。

我记得第一次用 TwinCAT 时,被它的「蓝屏恐惧」支配过——实时系统没配好,直接 BSOD。后来学乖了,每次改配置前先保存。

适用场景: 高速高精度、多轴联动、需要 Windows 生态

安装要点

  1. 系统要求:Win10/11 专业版或企业版。家庭版不行,别试了。
  2. 下载:Beckhoff 官网下载 TwinCAT XAE(集成在 Visual Studio 里)。版本选 TC3.1 以上。
  3. 安装顺序:先装 VS 2019/2022 → 再装 TwinCAT XAE → 最后装 TwinCAT XAR(运行时)。
  4. 授权:TwinCAT 免费版有 7 天试用。之后需要购买 license。Beckhoff 的授权是绑在硬件上的(CX 系列控制器或 EL 系列模块)。
⚠️ 避坑指南: 我曾经在 Win11 家庭版上折腾了一下午,TwinCAT 死活装不上。后来才发现系统版本不支持。所以,装之前先确认系统版本,别浪费时间。

4.4 PLCopen:不是软件,是标准

PLCopen 不是 IDE,而是一套运动控制函数库的标准。CODESYS 和 TwinCAT 都实现了这个标准。所以你学一个,另一个基本能无缝切换。

举个例子,电子凸轮的核心指令:

// CODESYS 写法
MC_CamIn(
    Master := Axis_Ref_Master,
    Slave  := Axis_Ref_Slave,
    CamTable := CamTable_1,
    Execute := bStart,
    MasterOffset := 0,
    SlaveOffset := 0,
    MasterScaling := 1,
    SlaveScaling := 1,
    StartMode := MC_CAM_START_MODE_IMMEDIATE
);

// TwinCAT 写法(几乎一样)
MC_CamIn(
    Master := Axis_Ref_Master,
    Slave  := Axis_Ref_Slave,
    CamTable := CamTable_1,
    Execute := bStart,
    MasterOffset := 0,
    SlaveOffset := 0,
    MasterScaling := 1,
    SlaveScaling := 1,
    StartMode := MC_CAM_START_MODE_IMMEDIATE
);

看到没?参数名、数据类型、调用方式完全一致。这就是标准化的好处。

4.5 创建第一个运动控制项目

好,环境装好了,我们动手创建一个项目。以 CODESYS 为例,TwinCAT 流程类似。

步骤一:新建项目

  1. 打开 CODESYS,点击 File → New Project
  2. 选择 Standard Project,输入项目名称(比如 MyFirstCam)
  3. 选择设备:如果你用的是模拟器,选 CODESYS Control Win V3
  4. 选择编程语言:我建议用 Structured Text (ST),做运动控制最方便

步骤二:添加轴

  1. 在左侧设备树,右键 PLC Logic → Add Object → SoftMotion General Axis Pool
  2. 添加两个轴:MasterAxis(主轴)和 SlaveAxis(从轴)
  3. 双击每个轴,在 General 标签页设置参数:
    • Drive Type: Virtual(模拟用)
    • Unit: mm(或度,看你需求)
    • Scaling: 1 pulse = 1 unit(模拟器无所谓)

步骤三:添加凸轮表

  1. 右键 Application → Add Object → Cam Table
  2. 命名 CamTable_1
  3. 在编辑器中设置主从轴映射关系。最简单的:
| Master Position | Slave Position |
|-----------------|----------------|
| 0               | 0              |
| 100             | 50             |
| 200             | 100            |
| 300             | 150            |
| 360             | 200            |

这表示主轴转一圈(360°),从轴走 200 个单位。比例 1:0.555。

步骤四:写主程序

PROGRAM Main
VAR
    bStart : BOOL := FALSE;
    bStop  : BOOL := FALSE;
    CamIn  : MC_CamIn;
    CamOut : MC_CamOut;
    AxisStatus : MC_ReadStatus;
END_VAR

// 启动凸轮
IF bStart AND NOT CamIn.Done THEN
    CamIn(
        Master := MasterAxis,
        Slave  := SlaveAxis,
        CamTable := CamTable_1,
        Execute := TRUE,
        MasterOffset := 0,
        SlaveOffset := 0,
        MasterScaling := 1,
        SlaveScaling := 1,
        StartMode := MC_CAM_START_MODE_IMMEDIATE
    );
END_IF

// 停止凸轮
IF bStop THEN
    CamOut(
        Slave := SlaveAxis,
        Execute := TRUE
    );
END_IF

步骤五:运行调试

  1. 点击 Login(或按 F11)连接到模拟器
  2. 点击 Start(或按 F5)运行程序
  3. 将 bStart 置为 TRUE,观察从轴是否跟随主轴运动
  4. 打开 SoftMotion Scope 查看曲线
我的小技巧: 第一次跑凸轮时,把主轴速度设慢一点(比如 10 units/s)。太快了看不清楚,也容易出错。调试嘛,稳字当头。

4.6 常见问题与解决

问题 原因 解决方法
轴不动 轴未使能 调用 MC_Power 使能轴
凸轮不启动 Execute 信号太短 用上升沿触发,保持 TRUE 直到 Done
曲线抖动 凸轮表点数太少 增加插值点,或用样条曲线
授权过期 试用期到了 购买正版授权,或重装系统(不推荐)

嗯,环境搭建这部分就这些。你跟着走一遍,应该能跑起来。记住,环境搭好了,后面学凸轮曲线、同步控制、飞剪追剪,才有地方练手。


公众号:蓝海资料掘金营,微信deep3321