Codesys——PLCopen基本运动控制功能块的使用方法总结
运动控制 发布时间:2020年12月19日 14:40 收录时间:2020年12月19日 23:31 作者:工控分享 来源:微信公众号

加入工控分享社区,学习更多Codesys知识


PLCopen运动控制功能块

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


推荐阅读:
  1. codesys安装教程及注意事项
  2. 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 功能块可以使轴状态转移到指定的状态,由图中可以看到:

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

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

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

  4. 若不按上述转移图方式使用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
脱离齿合后,轴以脱离时的速度继续转动。





相关推荐

最新文章


热门文章