当前位置: 首页 > news >正文

PLC中的运动控制 - (二)基本控制指令MC_Power,MC_Stop,MC_Halt

启动指令 MC_Power

MC_Power 功能块是运动控制中用于管理轴使能状态的核心指令,其本质是控制PLC与驱动器之间的“权力交接”。

MC_Power 的核心作用与接口

MC_Power 的基本功能是接通或断开驱动器的电源(或控制权),它是所有运动控制的前提。其核心输入输出接口如下:

MC_Power

相关变量

输入输出变量

输入输出变量 名称 数据类型 有效范围 初始值 描述
Axis AXIS_REF - - 映射到轴,即AXIS_REF的一个实例

输入变量

输入变量 名称 数据类型 有效范围 初始值 描述
Enable 执行条件 BOOL TRUE,FALSE FALSE 设置为 TRUE 则轴使能
EnablePositive BOOL BOOL TRUE,FALSE TRUE 设置为True则轴允许正向运动
EnableNegative BOOL BOOL TRUE,FALSE TRUE 设置为True则轴允许反向运动

输出变量

输出变量 名称 数据类型 有效范围 初始值 描述
Status 可运行状态 REAL TRUE,FALSE FALSE 如果轴已经准备好运动,置为TRUE
Valid 有效 BOOL TRUE,FALSE FALSE 是否合法,合法为True
Error 错误 BOOL TRUE,FALSE FALSE 异常发生时,置为TRUE
ErrorID 错误代码 ENUM 0 异常发生时,输出错误代码

各类轴的使能过程

状态机: 当使能完成后,只要轴处于非使能状态,都会将状态置为Standstill

对于不同类型的轴,其底层对不同类型的轴进行的操作有所不同。

1. 脉冲轴 (Pulse Axis)

MC_Power对脉冲轴的使能过程相对直接,主要在PLC本地完成

  • ****使能过程

    1. 检查状态:首先检查驱动器状态及错误。
    2. 激活脉冲通道:若Enable为TRUE且无故障,PLC激活指定的脉冲输出通道(PTO)。
    3. 提供使能信号:PLC会控制一个本地数字量输出点(DO点)输出高电平。这个信号通常直接连接到驱动器的“伺服使能”(Servo-On)或“使能”(Enable)端口,从而接通驱动器的电源,电机励磁并保持力矩。
    4. 状态监控:若使能成功,Status输出为TRUE。
  • ****失能过程

    • Enable设置为FALSE时,PLC会根据组态的StopMode(停止模式)停止脉冲输出,并关闭控制驱动器使能的DO点,驱动器断电。

2. 编码器轴 (Encoder Axis)

编码器轴在脉冲轴的基础上增加了位置反馈闭环

  • 使能过程

    1. 执行脉冲轴使能步骤:包含激活脉冲输出和提供驱动器使能信号。
    2. 启用高速计数器(HSC):同时,PLC会启用并配置与编码器相连的高速计数器。HSC开始实时采集编码器的A、B相脉冲,并将其转换为内部的位置值(如 %IDCActualPosition)。
    3. 形成闭环:此时,系统构成了一个“半闭环”或“全闭环”(取决于编码器安装位置),PLC可以比较指令位置和实际位置。
  • 关键点MC_PowerStatus 信号不仅表示驱动器已使能,也意味着编码器反馈回路已准备就绪

3. 总线轴 (Bus Axis)

对于总线轴,MC_Power 的使能过程本质是通过总线网络发送符合 CiA 402 协议的特定指令序列来遥控驱动器。

  • 通用使能流程(基于CiA 402状态机)

    1. 检查通信:确保PLC与驱动器之间的循环通信已建立且无错误
    2. 设置操作模式:通过SDO写入到对象字典的 0x6060: Modes of operation,设置驱动器的目标模式(如PP、PV等)。
    3. 发送使能序列:通过PDO周期性写入控制字(0x6040: Control Word 的特定位序列来启动驱动器。一个典型的“上使能”序列是:
      • 位0 (Switch On): 1 → 0 → 1 (有时需要“下降沿”触发)
      • 位1 (Enable Voltage): 1
      • 位2 (Quick Stop): 1 (允许正常停止)
      • 位3 (Enable Operation): 1
    4. 状态确认:通过PDO周期性读取状态字(0x6041: Status Word,确认驱动器是否成功进入“操作使能”状态(通常状态字值为 0x2337 或类似,表示“Switched on”和“Operation enabled”)。
    5. 反馈至MC_Power:当状态字显示“Operation enabled”后,MC_PowerStatus 输出变为TRUE。
  • EtherCAT 特定细节

    • 上述SDO和PDO通信通过 EtherCAT 邮箱和过程数据 完成。
    • 配置和映射通常在使用 ESI 文件组态时已完成,程序中的 MC_Power 调用触发此预配置流程。
  • CANopen 特定细节

    • 过程与EtherCAT高度一致,因其共享相同的CiA 402协议栈。
    • SDO用于参数配置,PDO用于循环传输控制字和状态字。
  • 失能过程

    • 通过控制字发送禁用序列(如将位2-Quick Stop置0触发急停),或直接切断通信。

使能过程中的注意事项

  1. 使能顺序:许多 PLC 的启动速度快于驱动器。若 PLC 启动后立即执行 MC_Power,而驱动器尚未准备就绪,可能导致使能失败(例如报错 16#8001)。最佳实践是等待驱动器和编码器的“通信就绪”信号有效后,再触发 MC_PowerEnable 输入。
  2. 错误处理:务必监控 MC_PowerErrorErrorID 输出,以便及时处理使能过程中可能出现的任何问题,如通信超时、驱动器故障等。
  3. 安全配置:务必在硬件组态中正确配置限位开关急停信号,确保异常情况下能安全停止轴运动。

MC_Stop

MC_Stop

相关变量

输入输出变量

输入输出变量 名称 数据类型 有效范围 初始值 描述
Axis AXIS_REF - - 映射到轴,即AXIS_REF的一个实例

输入变量

输入变量 名称 数据类型 有效范围 初始值 描述
Execute 执行条件 BOOL TRUE,FALSE FALSE 输入的一个上升沿将启动功能块的处理
Deceleration 减速度 LREAL 遵照数据类型 0 设置减速度值
Jerk 跃度 LREAL 遵照数据类型 0 设置跃度值

输出变量

输出变量 名称 数据类型 有效范围 初始值 描述
Done 指令执行完成 BOOL TRUE,FALSE FALSE 轴指令执行完成,置为TRUE
Busy 指令正在执行 BOOL TRUE,FALSE FALSE 当前指令正在执行中,置为TRUE
CommandAborted 指令被中断 BOOL TRUE,FALSE FALSE 当前指令被中断,置为TRUE
Error 错误 BOOL TRUE,FALSE FALSE 异常发生时,置为TRUE
ErrorID 错误代码 ENUM 0 异常发生时,输出错误代码

1. MC_Stop 指令概要

MC_Stop 是 PLCopen Motion Control(IEC 61131-3 Part 7)标准中的一个动作指令,用于停止轴的运动。

功能要点:

  • 将轴从当前运行状态(MoveAbsolute、MoveRelative、Jog、Velocity模式等)快速停止。
  • 停止方式通常是减速到零速度(使用设定的 Deceleration 值)。
  • 可以选择是否进行急停(Abort/Immediate stop)或者受控停(Controlled stop)。
  • 执行完成后,轴进入Standstill 或 Disabled 状态。

2. 状态机变化过程

MC_Stop 在状态机中的典型变化:

原状态 触发指令 中间状态 最终状态
Moving MC_Stop Stopping Standstill
Jog中 MC_Stop Stopping Standstill
Velocity模式 MC_Stop Stopping Standstill
Homing中 MC_Stop Stopping Standstill
ErrorStop MC_Stop 无变化 ErrorStop

具体过程:

  1. PLC 的 Motion 控制器检测到 MC_Stop 的 Execute 由 FALSE → TRUE 的上升沿。
  2. 状态机从 Moving 等活跃状态切换到 Stopping 状态。
  3. 控制器计算停止所需的减速度(通常由轴参数设定或 MC_Stop 的 Deceleration 输入)。
  4. 电机驱动开始执行减速控制。
  5. 速度降到零,位置锁定(即保持当前位置)。
  6. 状态机进入 Standstill(电机仍带使能),等待下一命令。
  7. 如果发生驱动故障或硬件报警,则会进入 ErrorStop。

3. 在不同类型轴上的执行动作

3.1 脉冲轴(Pulse Output Axis)

指由 PLC 通过脉冲+方向信号(Pulse/Dir)或正交脉冲输出控制的伺服/步进电机。

MC_Stop 执行过程:

  • PLC 内部 Motion 控制器计算需要的减速曲线。
  • 在高速脉冲输出模块中调整脉冲频率下降,按照设定减速度让电机减速到零。
  • 当目标速度为 0 时,输出脉冲停止(维持方向信号稳定)。
  • 驱动器内部保持电机抱闸或伺服锁定当前位置。
  • 编码器反馈位置用于精确停止点,更新 PLC 内部位置寄存器。

脉冲轴特点:

  • 减速过程完全由 PLC 控制脉冲频率。
  • 编码器反馈可以是独立接入 PLC,也可能只接到驱动(闭环或半闭环控制)。

3.2 编码器轴(Encoder Axis)

这里指无主动驱动,只使用外部编码器作为位置/速度采集的“虚拟”轴或跟踪轴。

MC_Stop 执行过程:

  • PLC 内轴控制对象不会输出指令给驱动(因为没有驱动)。
  • 将此“轴”的速度目标立即设为零(通常只是内部变量的改变)。
  • 若该编码器轴是通过跟随另一个主轴运动(例如 MC_GearIn),MC_Stop 会解除跟随关系。
  • 更新位置采样器、速度采样器为 0。
  • 状态机转入 Standstill。

编码器轴特点:

  • 没有实际减速动作,更多是逻辑上的“停止”。
  • 应用在同步检测、轨迹跟踪等虚拟轴场景。

3.3 总线轴(Bus Axis: EtherCAT, CANopen)

EtherCAT 轴

EtherCAT 总线下的驱动多使用 CiA 402(CANopen over EtherCAT)标准化控制状态机。

MC_Stop 执行过程:

  1. PLC Motion 控制器生成减速运动命令(位置或速度模式)。
  2. 通过 EtherCAT PDO(Process Data Object)周期性向驱动发送新的目标位置或目标速度。
  3. 驱动器根据设定的减速度执行受控停。
  4. 当反馈速度降到 0,并且位置锁定,驱动保持使能。
  5. PLC 状态机进入 Standstill。

特殊点:

  • EtherCAT 的停止命令并非直接关闭使能,而是连续调整目标速度/位置。
  • 对于 CiA 402 状态机,MC_Stop 不会触发 Quick Stop 或 Fault Reset,除非设定为急停。
CANopen 轴

CANopen 同样遵循 CiA 402 设备控制状态机,但通信机制是 CAN 报文。

MC_Stop 执行过程:

  1. PLC 将 MC_Stop 计算的减速目标通过 CANopen PDO 或 SDO 写入驱动的速度/位置寄存器。
  2. 驱动器执行减速。
  3. 停止后,驱动保持当前位置,继续处于 Operation Enabled 状态。
  4. 状态机从 Moving 到 Standstill。

特殊点:

  • CANopen 带宽较小,更新频率低于 EtherCAT,因此减速控制更多依赖驱动内部的加减速参数。
  • 如果是急停模式,可直接发送 Quick Stop 命令(CiA 402 控制字 bit 2)。

4. 注意事项

  • Deceleration 参数:
    • MC_Stop 可以指定减速度,如果为 0,则使用轴的默认减速度参数。
  • 急停 vs 受控停:
    • 急停:立即切断输出或直接发 Quick Stop,可能产生机械冲击。
    • 受控停:按照减速度平滑停止。
  • 总线延迟:
    • EtherCAT 的周期短(通常 1~4 ms),停止响应更快。
    • CANopen 因带宽低,需要驱动端配合内部减速功能。

MC_Halt

MC_Halt

相关变量

输入输出变量

输入输出变量 名称 数据类型 有效范围 初始值 描述
Axis AXIS_REF - - 映射到轴,即AXIS_REF的一个实例

输入变量

输入变量 名称 数据类型 有效范围 初始值 描述
Execute 执行条件 BOOL TRUE,FALSE FALSE 输入的一个上升沿将启动功能块的处理
Deceleration 减速度 LREAL 遵照数据类型 0 速度变小时减速度值
Jerk 跃度 REAL "正数"+"0" 0 指定跃度[指令单位/s³
BufferMode 缓冲模式 ENUM 0 定义功能块的时间顺序

输出变量

输出变量 名称 数据类型 有效范围 初始值 描述
Done 指令执行完成 BOOL TRUE,FALSE FALSE 轴指令执行完成,置为TRUE
Busy 指令正在执行 BOOL TRUE,FALSE FALSE 当前指令正在执行中,置为TRUE
Active 指令正在执行 BOOL TRUE,FALSE FALSE 表示功能块对轴具有控制权
CommandAborted 指令被中断 BOOL TRUE,FALSE FALSE 当前指令被中断,置为TRUE
Error 错误 BOOL TRUE,FALSE FALSE 异常发生时,置为TRUE
ErrorID 错误代码 ENUM 0 异常发生时,输出错误代码

1. MC_Halt 指令概要

MC_Halt 是 PLCopen Motion Control(IEC 61131-3 Part 7)标准中的一个动作指令,用于立即停止轴的运动。与 MC_Stop 不同,MC_Halt 通常会立即停止轴的运动,而不是通过减速到零速度的方式。

功能要点:

  • 立即停止轴的运动。
  • 可以选择是否进行急停(Abort/Immediate stop)或者受控停(Controlled stop),但通常为急停。
  • 执行完成后,轴进入 Standstill 或 Disabled 状态。

2. 状态机变化过程

MC_Halt 在状态机中的典型变化:

原状态 触发指令 中间状态 最终状态
Moving MC_Halt DiscreteMotion Standstill
Jog中 MC_Halt DiscreteMotion Standstill
Velocity模式 MC_Halt DiscreteMotion Standstill
Homing中 MC_Halt DiscreteMotion Standstill
ErrorStop MC_Halt 无变化 ErrorStop

具体过程:

  1. PLC 的 Motion 控制器检测到 MC_Halt 的 Execute 由 FALSE → TRUE 的上升沿。
  2. 状态机从 Moving 等活跃状态切换到 Stopping 状态。
  3. 控制器立即发送停止命令给驱动器。
  4. 驱动器根据设定的急停方式(如切断电源或使能信号)立即停止电机。
  5. 速度降到零,位置锁定(即保持当前位置)。
  6. 状态机进入 Standstill(电机仍带使能),等待下一命令。
  7. 如果发生驱动故障或硬件报警,则会进入 ErrorStop。

3. 在不同类型轴上的执行动作

3.1 脉冲轴(Pulse Output Axis)

指由 PLC 通过脉冲+方向信号(Pulse/Dir)或正交脉冲输出控制的伺服/步进电机。

MC_Halt 执行过程:

  • PLC 内部 Motion 控制器立即停止脉冲输出。
  • 驱动器接收到停止命令后,立即切断电机的电源或使能信号。
  • 电机迅速停止,可能产生机械冲击。
  • 编码器反馈位置用于精确停止点,更新 PLC 内部位置寄存器。

脉冲轴特点:

  • 立即停止脉冲输出,没有减速过程。
  • 编码器反馈可以是独立接入 PLC,也可能只接到驱动(闭环或半闭环控制)。

3.2 编码器轴(Encoder Axis)

这里指无主动驱动,只使用外部编码器作为位置/速度采集的“虚拟”轴或跟踪轴。

MC_Halt 执行过程:

  • PLC 内轴控制对象不会输出指令给驱动(因为没有驱动)。
  • 将此“轴”的速度目标立即设为零(通常只是内部变量的改变)。
  • 若该编码器轴是通过跟随另一个主轴运动(例如 MC_GearIn),MC_Halt 会解除跟随关系。
  • 更新位置采样器、速度采样器为 0。
  • 状态机转入 Standstill。

编码器轴特点:

  • 没有实际减速动作,更多是逻辑上的“停止”。
  • 应用在同步检测、轨迹跟踪等虚拟轴场景。

3.3 总线轴(Bus Axis: EtherCAT, CANopen)

EtherCAT 轴

EtherCAT 总线下的驱动多使用 CiA 402(CANopen over EtherCAT)标准化控制状态机。

MC_Halt 执行过程:

  1. PLC Motion 控制器生成急停命令。
  2. 通过 EtherCAT PDO(Process Data Object)周期性向驱动发送急停命令。
  3. 驱动器根据 CiA 402 标准,立即执行急停操作,切断电机电源或使能信号。
  4. 当反馈速度降到 0,并且位置锁定,驱动保持使能。
  5. PLC 状态机进入 Standstill。

特殊点:

  • EtherCAT 的急停命令通常是通过设置 CiA 402 控制字的 Quick Stop 位(bit 2)来实现。
  • 对于 CiA 402 状态机,MC_Halt 会触发 Quick Stop 或 Fault Reset。
CANopen 轴

CANopen 同样遵循 CiA 402 设备控制状态机,但通信机制是 CAN 报文。

MC_Halt 执行过程:

  1. PLC 将 MC_Halt 计算的急停命令通过 CANopen PDO 或 SDO 写入驱动的速度/位置寄存器。
  2. 驱动器接收到急停命令后,立即切断电机的电源或使能信号。
  3. 电机迅速停止,可能产生机械冲击。
  4. 停止后,驱动保持当前位置,继续处于 Operation Enabled 状态。
  5. 状态机从 Moving 到 Standstill。

特殊点:

  • CANopen 的急停命令同样是通过设置 CiA 402 控制字的 Quick Stop 位(bit 2)来实现。
  • CANopen 带宽较小,更新频率低于 EtherCAT,因此急停响应时间可能稍长。

4. 注意事项

  • 急停 vs 受控停:
    • 急停:立即切断输出或直接发 Quick Stop,可能产生机械冲击。
    • 受控停:按照减速度平滑停止。
  • 总线延迟:
    • EtherCAT 的周期短(通常 1~4 ms),停止响应更快。
    • CANopen 因带宽低,需要驱动端配合内部急停功能。
  • 状态机同步:
    • 在多轴联动中执行 MC_Halt 时,可能需要同步停止防止产生误差。
  • 安全考虑:
    • 急停可能会对机械系统造成冲击,需谨慎使用,特别是在高精度和高负载应用中。

MC_Stop和MC_Halt的区别

flowchart TDA[任何运动状态<br>如 ContinuousMotion] --> B{停止指令类型}B --> C[MC_Halt]B --> D[MC_Stop]subgraph C_path [MC_Halt 停止路径]direction TBC1[DiscreteMotion<br>减速停止中] --> C2[Standstill<br>停止完成]endsubgraph D_path [MC_Stop 停止路径]direction TBD1[Stopping<br>减速停止中] --> D2[Standstill<br>停止完成]endC --> C_pathD --> D_pathC2 --> E[✅ 停止完成后<br>可立即接受新运动指令]D2 --> F[❌ 停止完成后且Execute=FALSE前<br>阻塞新运动指令]

上图清晰地揭示了两条不同的状态路径及其最终影响。简单来说:

  • MC_Halt 像“暂停”,停止后允许随时继续。
  • MC_Stop 像“强制停止并锁住”,停止过程中和完成后(在 Execute 复位前)都拒绝其他指令。

下面是两者在状态机变化上更详细的对比:

特性 MC_Halt MC_Stop
触发状态 通常在 ContinuousMotionDiscreteMotion 在任何运动状态
停止过程状态 DiscreteMotion Stopping
停止完成状态 Standstill Standstill (需 Execute 置 FALSE 后)
停止优先级 较低,可被其他运动指令中断 最高,不可中断,会中止其他运动指令
停止完成后 立即接受新的运动指令 Execute 保持为 TRUE 时,阻塞新运动指令
停止位置 未定义 按预设减速度停止
主要应用场景 暂时暂停运动,后续需要继续运动 安全停止、紧急停止或流程结束后的完全停止

状态机变化过程详解

MC_Halt 的状态流程

当轴正在运动(例如处于 ContinuousMotion 状态)时执行 MC_Halt

  1. 触发停止MC_HaltExecute 输入出现上升沿。
  2. 状态转换:轴状态ContinuousMotion 转变为 DiscreteMotion。此时轴正在减速。
  3. 停止完成:当轴速度降至零后,MC_HaltDone 输出为 TRUE,轴状态DiscreteMotion 转变为 Standstill(保持静止)。
  4. 关键特性:在 DiscreteMotion 状态停止过程中,可以启动新的运动指令(如 MC_MoveRelative)来中断停止过程,轴会立即开始执行新的运动。

MC_Stop 的状态流程

当轴正在运动时执行 MC_Stop

  1. 触发停止MC_StopExecute 输入置为 TRUE
  2. 状态转换:轴状态立即转变为 Stopping。这是一个独立的高优先级状态。
  3. 停止完成与保持
    • 当轴速度降至零后,MC_StopDone 输出变为 TRUE
    • 但轴状态会保持在 Stopping,而不会立即返回 Standstill
    • 只有在 MC_StopExecute 输入被置为 FALSE 后,轴状态才会Stopping 转变为 Standstill
  4. 关键特性只要轴处于 Stopping 状态,就无法启动任何新的运动指令。这是它与 MC_Halt 最根本的区别之一,确保了停止的不可中断性和绝对性。

如何选择?

根据控制需求来选择:

  • 如果你只是想暂停运动,并计划在停止后立即执行新的运动(如切换点动模式或重新定位),请使用 MC_Halt
  • 如果你需要进行安全、彻底的停止,并且希望确保在停止过程完成之前不会发生任何意外运动,请使用 MC_Stop。这在紧急停止或流程结束时非常关键。

重要的注意事项

  • MC_StopExecute 信号:务必注意,MC_Stop 完成后需要将 Execute 置为 FALSE,才能使轴状态从 Stopping 返回 Standstill,从而解除对后续运动指令的阻塞。若 Execute 一直为 TRUE,轴将无法接受任何新命令。
  • 错误状态 ErrorStop:如果轴因故障进入 ErrorStop 状态,无论是 MC_Halt 还是 MC_Stop 通常都无法执行。必须先使用 MC_Reset 功能块来清除故障,使轴返回 Standstill 状态后,才能进行正常的停止或其他运动操作。
http://www.hskmm.com/?act=detail&tid=14812

相关文章:

  • FOC之电机模型
  • 使用shell脚本一键部署docker及docker-compose环境
  • paddleOCR 图片识别
  • 使用命令行powershell修改系统变量
  • 数据全生命周期安全建设方案推荐:双轮驱动架构的实践与创新
  • 赋能智慧水利:国标GB28181平台EasyGBS在农业水文监控中的落地实践
  • VS依赖项显示黄色感叹号、红色叉叉,NU1101找不到包异常情况处理方案
  • 噬菌体展示技术原理深度解析:从基因型-表型偶联到亲和筛选的核心逻辑
  • AT_arc197_e [ARC197E] Four Square Tiles
  • 不限速网盘盘点,五款免费网盘综合对比
  • 日记2
  • RTK精度和时间 - MKT
  • LeetCode-100.相同的树
  • ubuntu安装minio并切换数据存储目录
  • 学习笔记508— 威联通安装使用Zerotier One
  • Java 语法糖大揭秘:让代码更甜更高效的幕后功臣 - 教程
  • Linux命令
  • 树上莫队
  • 比余额宝收益高的低风险短期理财工具-银行同业存单
  • 陇剑杯2025 决赛-ShellDecoder
  • Springcloud gateway笔记
  • AT_arc122_e [ARC122E] Increasing LCMs
  • C++ 锁
  • 飞书对程序员下手了,0 代码生成各类系统!!(附保姆级项目实战教程)
  • Adaptix C2:跨平台渗透测试与对抗仿真框架
  • 国标GB28181软件EasyGBS网页直播平台在邮政快递场景的落地与应用
  • sql统计一个字段各个值各有多个个的方法
  • WBS、甘特图、关键路径……项目计划的五大核心概念一文全懂
  • 智启新程:哲讯科技引领SAP ERP实施新范式
  • 移动端性能监控探索:鸿蒙 NEXT 探针架构与技术实现