[CodeSys] Codesys——PLCopen基本运动控制功能块的使用方法总结

[复制链接]
查看22054 | 回复0 | 2024-9-11 09:23:35 | 显示全部楼层 |阅读模式
PLCopen运动控制功能块

PLCopen组织努力实现这个标准化。PLCopen组织成立于1992年,在开发、安装、维护中按照IEC61131编程环境通过不同平台协调工业控制市场。现在的主题包括运动控制、安全功能、XML数据交换和评价标准。PLCopen也持续促进这种标准在世界上的使用和培训,因为世界范围内的接受对它的开放的、独立的目标非常重要。为了创建标准运动控制规范,一套可重复使用的独立于硬件的控制组件已基于IEC61131功能块定义。根据这个标准,能重复使用应用软件。甚至多平台也是可能的。同时,也降低了培训和支持成本。实施新的开发更容易,从而带来更短的上市时间。在定义他们的运动控制功能块时,PLCopen特定任务要实现下列目标:
·容易编程、安装和维护的简单设计;
·创建多个功能块的效率;
·遵守著名的IEC 61131语言标准的一致协议;
·允许硬件独立实施的广泛的适应性;
·这些功能块和将来扩展的柔性;
·大多数运动控制应用的足够覆盖率。用允许单轴运动和同步多轴运动的一套基本的功能块实现这些目标。状态机在机器的顺序中描述单轴的行为。

推荐阅读:

    codesys安装教程及注意事项Codesys控制器关于CANopen总线的详细应用说明

使用详解:
在运动控制系统中,将轴的运行状态分成若干个逻辑状态,而每个逻辑状态直接的转移,需要特定的条件、或指定的MC 运控指令。这样划分处理的好处是便于轴按运动模式分类控制,轴在一个时候只能处于一种逻辑状态,而逻辑状态的转移需要按规则进行,不会因不同MC 的误触发而带来运行的混乱。
轴数据结构变量(Axis.nAxisState)来指示轴的当前运行状态,该变量Axis.nAxisState 为枚举型变量,共有如下8种可能状态:
0:Power_off(Disabled):轴未上电使能,或未使能,需执行MC_Power 指令

1:Errorstop;——————- 先执行MC_Reset/MC_Power 指令
2:Stopping;——————– 等待停机操作完成
3:Standstill;——————- 轴已停止运行,脱离同步
4:Discrete_Motion;——— 轴处于离散运行状态
5:Continuous_Motion;—– 轴处于连续运行中
6:Synchronized_Motion;— 轴处于同步运行中
7:Homing;———————- 轴处于回零运行中,等待归零操作执行完成
轴状态转移图如下,从一个状态转移到另一个状态,需要运行对应的条件,如运行MC 指令,或外部出现了故障,用户无法对其状态进行强制,编程时一定要按照逻辑要求,运行相关的指令:


图中的MC 功能块可以使轴状态转移到指定的状态,由图中可以看到:


    在轴停止状态(Standstill,即 Axis.nAxisState=3)可以转移到各种运行状态;

    可以由多种状态转移到停止状态(Standstill,即 Axis.nAxisState=3),,

    若伺服轴出现告警(Errorstop,即Axis.nAxisState=1),就必需先运MC_Reset 指令、MC_Power 指令使轴进入Standstill 状态,才能让轴再次运行;

    若不按上述转移图方式使用MC指令命令轴运动,就不会使轴响应,反而得到 MC 功能块的错误告警信息;

用户程序中,有时需要根据轴的状态,启动后续的控制逻辑,此时依据Axis.nAxisState 的判断,相比于对 MC 功能块的done 信号判断,更为准确可靠。

熟悉上述轴状态图的转移条件,并在编程时,注意MC 指令的使用逻辑和顺序,才能编写出稳定可靠的应用程序。

工控应用技术知识分享,就在VIP技术服务社区

MC_Halt
在MC_MoveVelocity模式下,用MC_Halt停止其轴,当前轴的状态由
ContinuousMotion(当前转速)---》DiscreteMotion(速度不为0)---》Standstill(速度为0)。

MC_Stop
在MC_MoveVelocity模式下,用MC_Stop停止其轴,当前轴的状态由
ContinuousMotion---》Stopping---》StandStill(速度为0)

MC_Reset
当轴出错时,执行MC_Reset可清除轴错误,但不会掉使能。
执行复位功能块,也有可能报错;

当轴报错且错误代码为34时,很有可能是MC_Stop的Execute一直为TRUE,此错误不需要用MC_Reset命令清除。当取消MC_Stop的输入端Execute为FALSE后,就可以执行其他功能块。

MC_Power
在bRegulatorOn为TRUE且bDriveStart为TRUE时,给Enable一个上升沿,MC_Power的输出Status就为TRUE。上使能成功之后,即使修改输入端Enable为FALSE,其输出端Status仍然为TRUE。

MC_MoveVelocity
每次要更新轴的设定速度时,需要给MC_MoveVelocity输入端的Execute一个上升沿,设定的速度值才会被更新到轴状态中。

MC_GearIn
同MC_MoveVelocity,每次更新电子齿轮比并发挥作用,需要给MC_GearIn输入端Execute一个上升沿,电子齿轮比才会起作用。

MC_GearOut
脱离齿合后,轴以脱离时的速度继续转动。


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册哦

x
您需要登录后才可以回帖 登录 | 注册哦

本版积分规则