简介:这份欧姆龙电子凸轮培训资料面向自动化工程师、PLC编程人员及设备调试技术人员,聚焦NJ系列控制器中电子凸轮的应用与实战。内容围绕基本概念、指令讲解、飞切凸轮计算方法、切刀纠偏方法及高端应用展开,帮助读者理解如何用编程替代传统机械凸轮,实现无间隙、高精度的运动控制,并掌握飞切追剪中的速度同步、动态补偿与预判计算思路。资源包为1个docx文档,大小约3.92MB,结构紧凑,便于按章节查阅与整理笔记。目前已有322人学习,适合需要提升包装、印刷、切削等设备控制精度与灵活性的技术人员参考,也可作为飞切追剪与切刀纠偏环节的排错与设计辅助材料。
1. 电子凸轮不是“高级指令”,而是一套位置映射关系
很多人第一次接触欧姆龙电子凸轮,是在设备已经跑起来、机械凸轮却要改曲线的时候。拆机械凸轮、重新加工、装回去对相位,一套流程下来停机半天。电子凸轮要解决的就是这件事:把主轴位置和从轴位置之间的对应关系,从一块金属曲线变成一张可以随时改的数据表。欧姆龙把这张表叫凸轮轮廓(Cam Profile),在 NJ/NX 系列里由 MC 功能块驱动,在 CP1H/CP1E 这类小型机上则靠 PLS2、INI 和脉冲输出指令拼出来。
它适合两类人:一类是做包装、飞剪、旋切、灌装这类需要从轴跟随主轴做非匀速运动的设备工程师;另一类是已经会用欧姆龙 PLC 发脉冲,但搞不清“凸轮表怎么填、相位怎么对、为什么从轴会抖”的调试人员。标题里的“培训资料”如果只讲概念,看完还是不会填表;真正要落地,得把主轴相位、从轴位移、插值方式、启动条件这四件事串起来。下面按“先建关系、再写程序、再调参数、最后排错”的顺序讲。
2. 欧姆龙电子凸轮的相位映射与轮廓表建立
2.1 主轴相位与从轴位移的对应关系
电子凸轮的核心是一张二维表:横轴是主轴相位(0~360° 或 0~主轴一圈脉冲数),纵轴是从轴位移(脉冲数或工程单位)。机械凸轮用轮廓曲线描述升程和回程,电子凸轮用离散点加插值逼近同一条曲线。欧姆龙 NJ/NX 的 Cam 数据结构里,CamProfile数组每个元素包含MasterPosition和SlavePosition,中间靠MC_CamIn建立耦合。
关键点在于:主轴相位不是时间,是从轴跟随的基准。主轴转一圈,从轴走完一个完整轮廓。如果主轴速度波动,从轴会按相位比例跟着变,这是电子凸轮比“时间轴插补”更贴近机械凸轮的地方。
常见做法是先用表格把关键点列出来,再决定插值方式。比如飞剪轮廓:
| 主轴相位 | 从轴位移 | 说明 |
|---|---|---|
| 0° | 0 | 等待区起点 |
| 90° | 20000 | 加速同步段 |
| 180° | 40000 | 同步剪切段 |
| 270° | 60000 | 减速回程段 |
| 360° | 80000 | 回到等待区 |
这张表里,180° 附近必须是等速段,否则剪切瞬间从轴速度和材料速度不一致,切口会拉毛。
2.2 用 Sysmac Studio 建立凸轮轮廓的最小步骤
在 Sysmac Studio 里建凸轮数据,路径是“运动控制设置 → 凸轮数据 → 新建”。填表时注意CamProfile的节点数不要超过控制器允许上限,NJ 系列一般支持 1024 点以内,点数越多曲线越平滑,但扫描周期占用也越大。
CamProfile[0].MasterPosition := 0; CamProfile[0].SlavePosition := 0; CamProfile[1].MasterPosition := 90; CamProfile[1].SlavePosition := 20000; CamProfile[2].MasterPosition := 180; CamProfile[2].SlavePosition := 40000; CamProfile[3].MasterPosition := 270; CamProfile[3].SlavePosition := 60000; CamProfile[4].MasterPosition := 360; CamProfile[4].SlavePosition := 80000;这段赋值逻辑是把表格写进控制器。MasterPosition单位是主轴相位,SlavePosition单位是从轴指令单位。插值方式选“三次样条”还是“直线”,取决于曲线是否允许速度突变。飞剪同步段建议用直线插值保证等速,回程段可以用样条减少冲击。
提示:轮廓表首尾点必须闭合,否则
MC_CamIn执行时会报“凸轮数据无效”。闭合指 360° 对应的从轴位移要能自然接回 0°。
2.3 用 CP1H 脉冲输出拼出简易电子凸轮
不是所有现场都有 NJ/NX。欧姆龙 CP1H 这类机型没有运动控制功能块,常见做法是用 PLS2 做带加减速的脉冲输出,再用 INI 在原点附近做相位修正。下面是一段梯形图对应的结构化文本思路:
// CP1H 简易凸轮:主轴编码器计数到不同区间,切换从轴脉冲频率 IF MasterCounter >= 0 AND MasterCounter < 9000 THEN TargetFreq := 2000; // 加速段 ELSIF MasterCounter >= 9000 AND MasterCounter < 18000 THEN TargetFreq := 5000; // 同步段 ELSIF MasterCounter >= 18000 AND MasterCounter < 27000 THEN TargetFreq := 3000; // 减速段 ELSE TargetFreq := 0; // 等待区 END_IF; PLS2(200, TargetFreq, 100, 0, &D100);PLS2的第一个参数是端口号,第二个是目标频率,第三个是加减速时间,第四个是脉冲数(0 表示连续),&D100是完成标志区。这种写法本质是“分段频率控制”,不是真正的相位插补,只适合对同步精度要求不高的送料、推料场景。如果从轴需要严格跟随主轴相位,还是得上 NJ/NX 的MC_CamIn。
3. MC_CamIn 与 MC_CamOut 的编程实现与参数设置
3.1 MC_CamIn 的 5 个必调参数
NJ/NX 里启动电子凸轮靠MC_CamIn。这个功能块参数多,但真正影响运行的就五个:
| 参数 | 含义 | 典型值 | 调错后果 |
|---|---|---|---|
Master | 主轴轴组 | 主轴轴变量 | 填错直接报轴未定义 |
Slave | 从轴轴组 | 从轴轴变量 | 从轴不动或飞车 |
CamTable | 凸轮表编号 | 0~7 | 编号不存在报错 |
MasterStartDistance | 主轴启动距离 | 根据相位余量 | 太小导致同步段没走完就切 |
MasterScaling | 主轴比例 | 1.0 | 比例错则整体相位偏移 |
MasterStartDistance是最容易被忽略的。它决定主轴走到哪个相位时从轴开始耦合。如果设成 0,从轴会在主轴当前位置立刻咬合,容易在同步段起点产生冲击。常见做法是留出 30°~60° 的预启动距离。
3.2 一段可复现的 CamIn 调用代码
// 主轴、从轴使能后调用 MC_Power(MasterAxis, TRUE); MC_Power(SlaveAxis, TRUE); // 启动电子凸轮 MC_CamIn( Master := MasterAxis, Slave := SlaveAxis, CamTable := 0, MasterStartDistance := 45.0, MasterScaling := 1.0, Execute := StartCam ); // 退出凸轮耦合 MC_CamOut(Slave := SlaveAxis, Execute := StopCam);逻辑说明:MC_Power先给两个轴使能,否则MC_CamIn会报“轴未使能”。Execute上升沿触发一次,MC_CamIn的InCam输出变 TRUE 表示耦合建立。MC_CamOut用于正常退出,退出后从轴按当前速度减速停止,不会保持相位。
参数说明:MasterStartDistance单位是主轴工程单位,如果主轴按度配置就是度。MasterScaling用于主轴和从轴单位不一致时做比例换算,比如主轴是角度、从轴是毫米,就要在这里补系数。
3.3 相位偏移与原点复归的配合
电子凸轮跑偏,十有八九是原点没对齐。欧姆龙的做法是先用MC_Home把主轴和从轴各自回零,再建立凸轮耦合。如果设备不允许每次回零,就要用MC_SetPosition手动写当前位置。
// 手动设定主轴相位为 0 MC_SetPosition( Axis := MasterAxis, Position := 0, Mode := mcSetPositionMode, Execute := SetMasterPos );Mode选mcSetPositionMode表示只改当前位置不改指令位置,适合在原点传感器触发后做微调。注意:MC_SetPosition执行时轴必须处于停止状态,运行中调用会报错。
注意:如果从轴在凸轮耦合状态下被
MC_SetPosition改位置,耦合关系会断开,必须重新MC_CamIn。
4. 电子凸轮调试中的抖动、报警与相位偏差排查
4.1 从轴抖动:先看插值再看增益
从轴在同步段抖动,常见原因有三个:凸轮表节点太少导致插值拐点、伺服增益太低、主轴编码器分辨率不够。排查顺序是先看凸轮表,再看伺服。
凸轮表节点太少时,样条插值会在节点之间产生过冲。解决办法是在同步段前后加密节点,比如原来 90° 一个点,改成 30° 一个点。用 Sysmac Studio 的凸轮曲线显示功能可以直接看到速度曲线是否平滑。
伺服增益方面,欧姆龙 1S 系列伺服可以调P和I。位置环增益太低,从轴跟不上指令;太高则会在换向时啸叫。常见做法是先用手动调整功能让从轴单独跑,调好增益再接入凸轮。
4.2 EIP21 报警代码与凸轮运行的关联
热词里出现的“欧姆龙 eip21 报警代码”在电子凸轮场景里也常遇到。EIP21 是 EtherNet/IP 单元,凸轮运行时如果主轴和从轴走网络同步,EIP21 报通信超时会导致MC_CamIn的InCam掉线。
常见报警和处理:
| 报警代码 | 含义 | 处理 |
|---|---|---|
| 0x0100 | 网络连接超时 | 检查网线、交换机、节点号 |
| 0x0200 | 从站未响应 | 确认伺服使能、EIP21 单元拨码 |
| 0x0300 | 同步周期丢失 | 降低网络负载或提高同步周期 |
排查时先用 Sysmac Studio 的“EtherCAT/ EtherNet/IP 诊断”看从站状态,再确认MC_CamIn的InCam是否保持 TRUE。如果InCam频繁跳变,基本可以锁定通信问题而不是凸轮表问题。
4.3 相位偏差的量化测量方法
相位偏差不能靠肉眼。常见做法是在主轴和从轴各装一个接近开关,用 PLC 高速计数器同时抓两个上升沿的时间差,再换算成相位差。
// 用高速计数器抓主轴和从轴标记 PRV(881, 0, &D200); // 读主轴计数器当前值 PRV(881, 1, &D202); // 读从轴计数器当前值 PhaseError := D200 - D202;PRV是 CP1H 读高速计数器当前值的指令,第一个参数 881 表示读计数器,第二个参数是端口号。PhaseError稳定在某个固定值说明是原点偏移,用MC_SetPosition补掉即可;如果PhaseError来回波动,说明是同步段速度不匹配,要回去改凸轮表。
5. 用协议宏和 HSL 通信扩展电子凸轮的联动能力
5.1 协议宏在凸轮相位同步中的用法
欧姆龙协议宏(Protocol Macro)常被用来在 PLC 和上位机、变频器、温控器之间传数据。在电子凸轮场景里,如果主轴是变频器驱动的,可以用协议宏把变频器实际频率读回来,动态修正MasterScaling。
// 协议宏发送序列示例(伪代码) Send: 01 03 00 00 00 02 CRC Receive: 01 03 04 [频率高] [频率低] CRC发送的是 Modbus 读保持寄存器命令,01是从站号,03是功能码,00 00是起始地址,00 02是读两个寄存器。收到频率后写入D300,再用D300参与主轴比例计算。这样主轴实际速度和凸轮基准一致,避免变频器滑差导致的相位漂移。
5.2 HSL 通信与欧姆龙 PLC 的数据交换
HSL 通信在欧姆龙体系里通常指通过串口或以太网做自定义协议的数据交换。如果设备上有工控机做配方管理,凸轮表可以由工控机下发,PLC 只负责执行。常见做法是工控机把凸轮节点写成 CSV,PLC 用FREAD/FWRITE或 socket 指令接收。
// 接收凸轮表数据并写入 CamProfile FOR i := 0 TO 4 DO CamProfile[i].MasterPosition := RecvBuf[i*2]; CamProfile[i].SlavePosition := RecvBuf[i*2+1]; END_FOR;这段循环把接收缓冲区里的数据按“相位、位移”成对写入凸轮表。注意接收缓冲区要先做字节序转换,欧姆龙默认低字节在前,上位机如果按高字节在前发送,数值会完全错乱。
5.3 凸轮表在线切换的注意事项
多品种生产时,凸轮表需要在线切换。欧姆龙支持用MC_CamIn的CamTable参数指定不同表号,但切换前必须先MC_CamOut,否则会报“凸轮表正在使用”。
MC_CamOut(Slave := SlaveAxis, Execute := TRUE); // 等待 InCam 变 FALSE MC_CamIn(Master := MasterAxis, Slave := SlaveAxis, CamTable := 1, Execute := TRUE);切换过程中从轴会按当前速度自由停车,如果机械不允许停车,就要用MC_CamIn的连续切换功能,或者把两张表合并成一张用CamTable偏移量区分。这个技巧在包装机换规格时很实用,但要求两张表的首尾相位一致,否则切换瞬间会跳变。
本文还有配套的精品资源,点击获取