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_CamIn、MC_CamOut、MC_CamTableSelect
4.1.2 倍福(Beckhoff)—— TwinCAT 3
倍福的TwinCAT 3,说白了就是Visual Studio里套了个PLC壳。它的电子凸轮功能在“Tc2_MC2” 和 “Tc3_MC3” 库里面。
- 硬件平台:CX系列嵌入式控制器或PC-based
- 软件版本:TwinCAT 3.1 Build 4024+
- 关键库:
MC_CamIn、MC_CamOut、FB_CamData
倍福有个好处——它的凸轮表可以直接用Excel编辑,然后导入。我当年调试一台飞剪设备,就是用Excel生成了2000个点的凸轮曲线,导入TwinCAT一次成功。省事!
4.1.3 汇川(Inovance)—— AutoShop + AC800系列
汇川这几年进步很快。它的软件叫AutoShop,基于CODESYS平台。电子凸轮功能在“MC” 运动控制库里面。
- 硬件平台:AC800系列、AM600系列
- 软件版本:AutoShop V3.0+
- 关键库:
MC_CamIn、MC_CamOut、MC_CamTableSelect
MC_CamIn、MC_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_Array 是 ARRAY OF ST_CamPointData 结构。每个点包含 MasterPosition 和 SlavePosition。说白了就是主轴位置和从轴位置的对应关系。
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 基本参数配置流程
参数配置,说白了就是告诉控制器:主轴转一圈,从轴该怎么动。我一般按这个流程走:
- 定义主轴和从轴——先确认两个轴都配置好了,能正常点动。
- 创建凸轮表——用表格或曲线编辑器,定义主轴位置和从轴位置的对应关系。
- 设置同步参数——包括偏移量、缩放比例、启动模式。
- 调试运行——先低速跑,观察从轴跟随情况。
- 优化曲线——根据实际运动效果,调整凸轮表点或加滤波。
这里我画了一张流程图,把整个配置逻辑串起来了:
4.4 避坑指南与个人经验
最后,我分享几个实战中遇到的坑,你碰到了能少走弯路:
- 凸轮表点数不够——我曾经调试一台包装机,凸轮表只给了100个点,结果从轴在高速时抖动厉害。后来加到500个点,问题解决。一般建议至少200个点以上。
- 启动模式选错——
StartMode有绝对同步和相对同步。绝对同步是主轴到某个位置,从轴立刻跳到对应位置。相对同步是从轴从当前位置平滑过渡。我见过有人用绝对同步做飞剪,结果启动时从轴猛冲一下,把产品切坏了。 - 主轴编码器方向——这个最隐蔽。主轴编码器方向反了,凸轮表怎么配都不对。你想想看,主轴正转,从轴却反转,同步肯定乱。先确认编码器方向,再配凸轮。