【Codesys】-MC_CamIn问题解决记录(20240830更)

问题1:

正常运行的凸轮程序,偶尔有挂上了同步,但从轴不运行的情况。

问题原因:凸轮点位的dA给了额外值。

解决办法:将所有点位的dA写0,即程序自行运行加速度。不由外部给定。

问题2:

使用凸轮曲线类型为直线时,凸轮无法挂上,报SMC_CI_SCALING_INCORRECT

该问题通常是数据错误导致的。

解决办法:

将传入凸轮中未用到的点位,全部改成最后一个使用的点位。

例如

凸轮点数组定义为10  

实际仅使用到下标4的点位

则后面的5-10的点位数据=下标4的点位即可。

问题3:        

MC_Cam_TableSelect   执行选择时报错

解决办法:查找凸轮所有点位,是否有存在。主轴点是否有大于xEnd点位的情况

问题4:

MC_Cam_TableSelect   执行选择时报错

解决办法:查找凸轮所有点位,是否有存在点位为空的情况

### Codesys 中 `MC_MoveRelative` 功能块的使用方法 #### 功能概述 `MC_MoveRelative` 是用于执行相对位置移动的功能块,在指定的目标位置基础上增加一个偏移量来定义新的目标位置。此功能块通常应用于运动控制系统中的定位操作。 #### 参数说明 - **Axis** (输入): 连接到要控制的轴实例。 - **Execute** (输入): 启动命令信号,当设置为 TRUE 时触发动作。 - **InPos.FBStatus** (输出): 表明当前 FB 的状态。 - **nErrorID** (输出): 错误 ID, 如果发生错误则返回相应的错误码。 - **Distance** (输入): 定义相对于当前位置的距离增量。 - **Velocity** (输入): 设置最大速度。 - **Acceleration** (输入): 加速度参数。 - **Deceleration** (输入): 减速度参数。 - **Timeout** (输入): 超时时间设定。 - **BufferMode** (输入): 缓冲模式选项,决定新请求是否会被立即处理还是加入队列等待前一任务完成后再执行[^1]。 #### 示例代码 下面是一个简单的例子展示如何配置并调用 `MC_MoveRelative` 来使电机沿正方向移动特定距离: ```pascal // 声明变量 VAR mcMoveRel : MC_MOVE_RELATIVE; // 创建 MC_MoveRelative 实例 axis : REFERENCE TO AXIS_01; // 需预先创建好对应的轴对象 END_VAR // 初始化阶段(仅需首次运行) mcMoveRel.Axis := ADR(axis); // 绑定至具体轴 mcMoveRel.Distance:= LREAL#10.0; // 设定位移大小为 10 mm 或者其他单位 mcMoveRel.Velocity:= LREAL#500.0; // 最大速度设为 500 mm/s mcMoveRel.Acceleration:= LREAL#2000.0;// 加速率为 2000 mm/s² mcMoveRel.Deceleration:= LREAL#2000.0;// 减速率同样为 2000 mm/s² mcMoveRel.Timeout:= TIME#5s; // 操作超时时间为 5 秒钟 mcMoveRel.BufferMode:= BUFFER_MODE.OVERRIDE;// 新指令覆盖旧指令 // 执行阶段 IF NOT mcMoveRel.Busy THEN // 只有在不忙的时候才允许发出下一个命令 mcMoveRel.Execute := TRUE; ELSE mcMoveRel.Execute := FALSE; END_IF; // 清理阶段 IF mcMoveRel.Done OR mcMoveRel.Error THEN mcMoveRel.Reset(); // 当动作完成后重置该功能块以便下次使用 ENDIF; ``` 上述程序片段展示了基本的操作流程,实际应用中可能还需要考虑多细节如异常情况下的恢复机制等。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值