运动控制功能块的一般规则

Micro800 运动配置指令的一般规则遵从 PLCopen 运动控制规范。
运动控制功能块的一般规则
规则适用于
规则
输入参数
对于 Execute:这些参数与执行输入的上升沿一起使用。若要修改任何参数,请更改输入参数并再次触发运动。
如果功能块的实例在其完成之前接收到新的 Execute(作为相同实例上的一系列命令),新的 Execute 将被忽略,并且先前发布的指令将继续执行。
对于 Enable:这些参数与启用输入的上升沿一起使用,并能不断修改。
缺少输入参数
在用户应用程序编译期间将捕获缺少输入情况。没有在控制器级别处理的缺少输入错误。
输入超出应用程序限制
如果功能块使用会导致违反应用程序限制的参数来命令,则功能块的实例将生成错误。在此情况下,错误输出将被标记为“开启”,并且输出 ErrorID 将指出错误信息。在大部分情况下控制器将保持运行模式,并且运动错误也不会报告为严重的控制器故障。
输入的符号规则
Acceleration、Deceleration 和 Jerk 输入始终为正值。Velocity、Position 和 Distance 输入可以为正值和负值。
Position 与 Distance
Position 是在轴坐标系统内定义的一个值。Distance 是与技术单元相关的相对指标。Distance 是两个位置间的差异。
Position/Distance 输入
Micro800 控制器中仅支持线性运动。对于 MC_MoveAbsolute 功能块,Position 输入是要命令到轴中的绝对位置。对于 MC_MoveRelative,距离输入是从当前位置开始的相对位置(将当前轴位置视为 0)。
Velocity 输入
Velocity 可以是带符号的值,也可以使用 Direction 输入定义速度的符号(负速度 x 负方向 = 正速度)。出于兼容性考虑,E 参数“Direction”引用速度输入和输出。
Direction 输入
对于距离(位置)运动,定义了目标位置(绝对或相对),运动方向唯一。距离移动的方向输入将忽略。
对于速度运动,方向输入值可以是 1(正方向)、0(当前方向)或 -1(负方向)。对于任何其他值,仅考虑符号。例如,-3 表示负方向,+2 表示正方向,等等。
对于速度移动 (MC_MoveVelocity),符号(速度 x 方向)将确定当值不为 0 时的实际运动方向。例如,如果速度 x 方向 = +300,则方向为正。
Acceleration、Deceleration 和 Jerk 输入
  • Deceleration 或 Acceleration 输入应为正值。如果 Deceleration 或 Acceleration 设置为非正值,则功能块会报告错误(错误 ID:MC_FB_ERR_RANGE)。
  • Jerk 输入应为非负值。如果 Jerk 设为负值,则功能块会报告错误(错误 ID:MC_FB_ERR_RANGE)。
  • 如果 Jerk 最大值设为零,则运动控制功能块的所有加加速度参数(包括 MC_Stop 的加加速度设置)必须设为零。否则,功能块会报告错误(错误 ID:MC_FB_ERR_RANGE)。
  • 如果 Jerk 设为非零值,系统将生成 S-Curve 配置;如果 Jerk 设置为 0,系统将生成 trapezoidal 配置。
  • 归位加加速度配置不仅限于最大加加速度配置。
  • 如果运动引擎无法生成动态输入参数预设的运动配置,则功能块会报告错误(错误 ID:MC_FB_ERR_PROFILE)。
输出排斥性
对于 Execute:当 Execute 为 TRUE 时,Busy、Done、Error 或 CommandAborted 输出必须也为 TRUE。这些输出互斥:一个功能块上只有一个输出可以为 TRUE。
一次只能设置输出 Active、Error、Done 和 CommandAborted 中的一个。
对于 Enable:Valid 和 Error 输出互斥:一个功能块上只有一个输出可以为 TRUE。
输出状态
对于 Execute:使用 Execute 指令的下降沿重置 Done、Error、ErrorID 和 CommandAborted 输出。但是,Execute 的下降沿不会停止也不会影响实际功能块的执行。即使在功能块完成之前重置 Execute,相应的输出也会至少设置一次循环。
如果功能块的实例在其完成之前接收到新的 Execute 命令(作为相同实例上的一系列命令),新的 Execute 命令将被忽略,并且先前发布的指令将继续执行。
对于 Enable:使用 Enable 的下降沿重置 Valid、Enabled、Busy、Error 和 ErrorID 输出。
Done 输出的行为
当命令的操作已成功完成时将设置 Done 输出。
当多个功能块按顺序在同一轴上运行时,以下适用:
如果轴上的一个运动被同一轴上的其他运动中断,而并未达到最终目标,则在第一个功能块上将不会设置 Done。
Busy 输出的行为
每个功能块可具有 Busy 输出,表示功能块尚未完成(对于使用 Execute 输入的功能块)或并非正在运行,并且需要新的输出值(在 Enable 输入的情况下)。
Busy 会在 Execute 的上升沿进行设置,并在设置 Done、Aborted 或 Error 等输出中的一个时进行重置。至少在 Busy 为 TRUE 之前,应该将此功能块保留在应用程序的活动回路中,因为输出可能会发生变化。
除非不再忙碌,否则带有相同实例的忙碌功能块无法执行。带有不同实例的功能块可以覆盖当前执行的功能块。
CommandAborted 输出的行为
当命令的运动被其他运动命令中断时,将设置 CommandAborted 输出。
CommandAborted 输出的重置行为与 Done 输出的重置行为类似。当出现 CommandAborted 时,将重置其他输出符号(例如 InVelocity)。
输出 Active
在缓冲的功能块上需要 Active 输出且在功能块控制了所依据轴时进行设置。
对于非缓冲模式,Active 和 Busy 输出可具有相同值。
Enable 和 Valid 状态
Enable 输入与 Valid 输出成对出现。Enable 对层级敏感,而 Valid 将显示功能块上一组有效输出可用。
只要有效输出值可用且 Enable 输入为 TRUE,Valid 输出即为 TRUE。只要输入 Enable 为 TRUE,即可刷新相关输出值。
如果出现功能块错误,输出将无效(将 Valid 设置为 FALSE)。当错误条件消失时,值将重新显示并再次设置 Valid 输出。
输出错误处理
用于定义错误的输出:
所有块均具有以下两个输出,可用于处理执行期间发生的错误:
  • 错误:“Error”的上升沿通知在功能块的执行期间发生错误。
  • ErrorID:错误编号。
Done 和 InVelocity 输出用于成功完成,因此这些输出在逻辑上不包括 Error。
实例错误不会始终导致轴错误(将轴置于“错误停止”状态)。
如何重置错误输出:
  • 可使用 Execute 和 Enable 的下降沿复位相关功能块的错误输出。
  • 对于使用 Enable 的功能块,可以在操作期间重置该功能块的错误输出,而不必重置 Enable。
错误类型:
  • 功能块逻辑(例如,参数超出范围、状态机尝试冲突等等)
  • 硬件限制或软件限制
  • 机制/电机
  • 变频器
命名规范 ENUM 类型
由于 IEC 标准中对变量名称唯一性的命名限制,因此 ENUM 使用了对 PLCopen 运动控制命名空间的“mc”引用。
因此,我们避免使用 ENUM 类型“正值”和“负值”作为变量的实例与整个其余项目中的名称相冲突,因为它们分别称为 mcPositive 和 mcNegative。
提供反馈
对本文档有问题或反馈吗? 请在这里提交您的反馈
Normal