4. 电子凸轮软件配置基础:主流品牌的软件环境与参数配置

做电子凸轮这些年,我接触过西门子、倍福、汇川这三家的系统。说实话,每家都有自己的脾气。但底层逻辑是相通的——你只要搞懂一家,另外两家上手就快多了。今天我就把这三家的软件环境、功能块调用和基本配置流程,掰开了讲给你听。

4.1 主流品牌的软件环境介绍

先说说软件环境。这玩意儿就像你进车间要穿工装鞋一样,是基本功。

4.1.1 西门子(Siemens)—— TIA Portal + S7-1200/1500

西门子的电子凸轮主要在TIA Portal里搞。我个人习惯用V17以上版本,对凸轮功能的支持更完整。你需要安装“Technology Object” 里的 “Cam” 选件包。

  • 硬件平台:S7-1200(固件4.4+)或S7-1500(固件2.8+)
  • 软件版本:TIA Portal V15.1 起步,推荐 V17 或 V18
  • 关键库MC_CamInMC_CamOutMC_CamTableSelect
小提示:我在项目里遇到过,有人用V15.1死活调不通凸轮同步,最后发现是固件版本太低。嗯,这里要注意——S7-1200的固件低于4.4,根本不支持电子凸轮功能块。

4.1.2 倍福(Beckhoff)—— TwinCAT 3

倍福的TwinCAT 3,说白了就是Visual Studio里套了个PLC壳。它的电子凸轮功能在“Tc2_MC2”“Tc3_MC3” 库里面。

  • 硬件平台:CX系列嵌入式控制器或PC-based
  • 软件版本:TwinCAT 3.1 Build 4024+
  • 关键库MC_CamInMC_CamOutFB_CamData

倍福有个好处——它的凸轮表可以直接用Excel编辑,然后导入。我当年调试一台飞剪设备,就是用Excel生成了2000个点的凸轮曲线,导入TwinCAT一次成功。省事!

4.1.3 汇川(Inovance)—— AutoShop + AC800系列

汇川这几年进步很快。它的软件叫AutoShop,基于CODESYS平台。电子凸轮功能在“MC” 运动控制库里面。

  • 硬件平台:AC800系列、AM600系列
  • 软件版本:AutoShop V3.0+
  • 关键库MC_CamInMC_CamOutMC_CamTableSelect
核心观点:三家虽然界面不同,但功能块的名字几乎一样——MC_CamInMC_CamOut。这是PLCopen标准统一的结果。你学会一家,另外两家就是换个皮肤的事。

4.2 电子凸轮功能块/指令库的调用

功能块怎么调?我直接给你看代码。你想想看,这东西其实就三个动作:挂上凸轮脱离凸轮切换凸轮表

4.2.1 西门子TIA Portal中的调用

在TIA Portal里,你从右侧库面板拖出 MC_CamIn 就行。记得先创建一个凸轮数据块(DB),用来存凸轮表。

// 西门子 S7-1500 电子凸轮启动示例
// 网络1:激活凸轮同步
"MC_CamIn_DB"(
    Execute := TRUE,           // 上升沿触发
    Master := "Axis_Master",   // 主轴
    Slave := "Axis_Slave",     // 从轴
    CamTable := "Cam_DB",      // 凸轮表数据块
    MasterOffset := 0.0,       // 主轴偏移
    SlaveOffset := 0.0,        // 从轴偏移
    MasterScaling := 1.0,      // 主轴缩放
    SlaveScaling := 1.0,       // 从轴缩放
    StartMode := 0,            // 0=绝对同步, 1=相对同步
    InSync => "InSync_Flag"    // 同步状态输出
);
注意:我曾经遇到一个坑——Execute 信号必须用上升沿触发。如果你一直给TRUE,功能块只执行一次。有人用常ON信号,结果凸轮根本挂不上,查了半天。

4.2.2 倍福TwinCAT 3中的调用

倍福的调用方式类似,但它的凸轮表是用 FB_CamData 来管理的。

// 倍福 TwinCAT 3 电子凸轮启动示例
// 声明部分
PROGRAM MAIN
VAR
    fbCamIn : MC_CamIn;
    fbCamData : FB_CamData;
    bExecute : BOOL;
    bInSync : BOOL;
END_VAR

// 实现部分
fbCamData(
    CamTable := 1,             // 凸轮表编号
    CamData := CamData_Array,  // 凸轮数据数组
    Execute := TRUE
);

fbCamIn(
    Execute := bExecute,
    Master := MasterAxis,
    Slave := SlaveAxis,
    CamTable := fbCamData.CamTableID,
    MasterOffset := 0,
    SlaveOffset := 0,
    MasterScaling := 1,
    SlaveScaling := 1,
    StartMode := MC_CAM_START_MODE_ABSOLUTE,
    InSync => bInSync
);

倍福有个特点——它的 CamData_ArrayARRAY OF ST_CamPointData 结构。每个点包含 MasterPositionSlavePosition。说白了就是主轴位置和从轴位置的对应关系。

4.2.3 汇川AutoShop中的调用

汇川基于CODESYS,调用方式和倍福很像。但它的凸轮表是用 MC_CamTableSelect 来选择的。

// 汇川 AutoShop 电子凸轮启动示例
// 先选择凸轮表
MC_CamTableSelect(
    Execute := TRUE,
    CamTable := 0,             // 凸轮表ID
    CamData := CamData_Array,  // 凸轮数据
    Done => bSelectDone
);

// 再启动凸轮同步
MC_CamIn(
    Execute := bSelectDone,
    Master := MasterAxis,
    Slave := SlaveAxis,
    CamTableID := 0,
    MasterOffset := 0,
    SlaveOffset := 0,
    MasterScaling := 1,
    SlaveScaling := 1,
    StartMode := MC_CAM_START_MODE_ABSOLUTE,
    InSync => bInSync
);
我的经验:汇川的 MC_CamTableSelect 必须在 MC_CamIn 之前执行。如果你顺序搞反了,凸轮表没加载,MC_CamIn 会报错。我见过有人把这两个放在同一个网络里,结果凸轮表还没选好,同步就开始了。

4.3 基本参数配置流程

参数配置,说白了就是告诉控制器:主轴转一圈,从轴该怎么动。我一般按这个流程走:

  1. 定义主轴和从轴——先确认两个轴都配置好了,能正常点动。
  2. 创建凸轮表——用表格或曲线编辑器,定义主轴位置和从轴位置的对应关系。
  3. 设置同步参数——包括偏移量、缩放比例、启动模式。
  4. 调试运行——先低速跑,观察从轴跟随情况。
  5. 优化曲线——根据实际运动效果,调整凸轮表点或加滤波。

这里我画了一张流程图,把整个配置逻辑串起来了:

电子凸轮软件配置核心流程 1. 轴配置与使能 2. 创建凸轮表 3. 参数设置 4. 调试 5. 优化曲线 关键参数:MasterOffset | SlaveOffset | MasterScaling | SlaveScaling | StartMode 参数名 说明 常见值 MasterOffset 主轴偏移角度/位置 0.0 SlaveOffset 从轴偏移角度/位置 0.0 MasterScaling 主轴缩放系数 1.0

4.4 避坑指南与个人经验

最后,我分享几个实战中遇到的坑,你碰到了能少走弯路:

  • 凸轮表点数不够——我曾经调试一台包装机,凸轮表只给了100个点,结果从轴在高速时抖动厉害。后来加到500个点,问题解决。一般建议至少200个点以上。
  • 启动模式选错——StartMode 有绝对同步和相对同步。绝对同步是主轴到某个位置,从轴立刻跳到对应位置。相对同步是从轴从当前位置平滑过渡。我见过有人用绝对同步做飞剪,结果启动时从轴猛冲一下,把产品切坏了。
  • 主轴编码器方向——这个最隐蔽。主轴编码器方向反了,凸轮表怎么配都不对。你想想看,主轴正转,从轴却反转,同步肯定乱。先确认编码器方向,再配凸轮。
总结一句话:电子凸轮配置,软件环境是基础,功能块调用是手段,参数调试是核心。你只要把主轴、从轴、凸轮表这三者的关系理清楚,剩下的就是调参数、看波形、优化曲线。别怕,多试几次就熟了。

专注资料整理