启动指令 MC_Power
MC_Power 功能块是运动控制中用于管理轴使能状态的核心指令,其本质是控制PLC与驱动器之间的“权力交接”。
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本地完成。
-
****使能过程:
- 检查状态:首先检查驱动器状态及错误。
- 激活脉冲通道:若
Enable
为TRUE且无故障,PLC激活指定的脉冲输出通道(PTO)。 - 提供使能信号:PLC会控制一个本地数字量输出点(DO点)输出高电平。这个信号通常直接连接到驱动器的“伺服使能”(Servo-On)或“使能”(Enable)端口,从而接通驱动器的电源,电机励磁并保持力矩。
- 状态监控:若使能成功,
Status
输出为TRUE。
-
****失能过程:
- 当
Enable
设置为FALSE时,PLC会根据组态的StopMode
(停止模式)停止脉冲输出,并关闭控制驱动器使能的DO点,驱动器断电。
- 当
2. 编码器轴 (Encoder Axis)
编码器轴在脉冲轴的基础上增加了位置反馈闭环。
-
使能过程:
- 执行脉冲轴使能步骤:包含激活脉冲输出和提供驱动器使能信号。
- 启用高速计数器(HSC):同时,PLC会启用并配置与编码器相连的高速计数器。HSC开始实时采集编码器的A、B相脉冲,并将其转换为内部的位置值(如
%IDC
或ActualPosition
)。 - 形成闭环:此时,系统构成了一个“半闭环”或“全闭环”(取决于编码器安装位置),PLC可以比较指令位置和实际位置。
-
关键点:
MC_Power
的Status
信号不仅表示驱动器已使能,也意味着编码器反馈回路已准备就绪。
3. 总线轴 (Bus Axis)
对于总线轴,MC_Power
的使能过程本质是通过总线网络发送符合 CiA 402 协议的特定指令序列来遥控驱动器。
-
通用使能流程(基于CiA 402状态机):
- 检查通信:确保PLC与驱动器之间的循环通信已建立且无错误。
- 设置操作模式:通过SDO写入到对象字典的
0x6060: Modes of operation
,设置驱动器的目标模式(如PP、PV等)。 - 发送使能序列:通过PDO周期性写入控制字(
0x6040: Control Word
) 的特定位序列来启动驱动器。一个典型的“上使能”序列是:- 位0 (Switch On): 1 → 0 → 1 (有时需要“下降沿”触发)
- 位1 (Enable Voltage): 1
- 位2 (Quick Stop): 1 (允许正常停止)
- 位3 (Enable Operation): 1
- 状态确认:通过PDO周期性读取状态字(
0x6041: Status Word
),确认驱动器是否成功进入“操作使能”状态(通常状态字值为0x2337
或类似,表示“Switched on”和“Operation enabled”)。 - 反馈至MC_Power:当状态字显示“Operation enabled”后,
MC_Power
的Status
输出变为TRUE。
-
EtherCAT 特定细节:
- 上述SDO和PDO通信通过 EtherCAT 邮箱和过程数据 完成。
- 配置和映射通常在使用 ESI 文件组态时已完成,程序中的
MC_Power
调用触发此预配置流程。
-
CANopen 特定细节:
- 过程与EtherCAT高度一致,因其共享相同的CiA 402协议栈。
- SDO用于参数配置,PDO用于循环传输控制字和状态字。
-
失能过程:
- 通过控制字发送禁用序列(如将位2-Quick Stop置0触发急停),或直接切断通信。
使能过程中的注意事项
- 使能顺序:许多 PLC 的启动速度快于驱动器。若 PLC 启动后立即执行
MC_Power
,而驱动器尚未准备就绪,可能导致使能失败(例如报错 16#8001)。最佳实践是等待驱动器和编码器的“通信就绪”信号有效后,再触发MC_Power
的Enable
输入。 - 错误处理:务必监控
MC_Power
的Error
和ErrorID
输出,以便及时处理使能过程中可能出现的任何问题,如通信超时、驱动器故障等。 - 安全配置:务必在硬件组态中正确配置限位开关和急停信号,确保异常情况下能安全停止轴运动。
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 |
具体过程:
- PLC 的 Motion 控制器检测到 MC_Stop 的
Execute
由 FALSE → TRUE 的上升沿。 - 状态机从 Moving 等活跃状态切换到 Stopping 状态。
- 控制器计算停止所需的减速度(通常由轴参数设定或 MC_Stop 的 Deceleration 输入)。
- 电机驱动开始执行减速控制。
- 速度降到零,位置锁定(即保持当前位置)。
- 状态机进入 Standstill(电机仍带使能),等待下一命令。
- 如果发生驱动故障或硬件报警,则会进入 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 执行过程:
- PLC Motion 控制器生成减速运动命令(位置或速度模式)。
- 通过 EtherCAT PDO(Process Data Object)周期性向驱动发送新的目标位置或目标速度。
- 驱动器根据设定的减速度执行受控停。
- 当反馈速度降到 0,并且位置锁定,驱动保持使能。
- PLC 状态机进入 Standstill。
特殊点:
- EtherCAT 的停止命令并非直接关闭使能,而是连续调整目标速度/位置。
- 对于 CiA 402 状态机,MC_Stop 不会触发 Quick Stop 或 Fault Reset,除非设定为急停。
CANopen 轴
CANopen 同样遵循 CiA 402 设备控制状态机,但通信机制是 CAN 报文。
MC_Stop 执行过程:
- PLC 将 MC_Stop 计算的减速目标通过 CANopen PDO 或 SDO 写入驱动的速度/位置寄存器。
- 驱动器执行减速。
- 停止后,驱动保持当前位置,继续处于 Operation Enabled 状态。
- 状态机从 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
相关变量
输入输出变量
输入输出变量 名称 数据类型 有效范围 初始值 描述 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 |
具体过程:
- PLC 的 Motion 控制器检测到 MC_Halt 的
Execute
由 FALSE → TRUE 的上升沿。 - 状态机从 Moving 等活跃状态切换到 Stopping 状态。
- 控制器立即发送停止命令给驱动器。
- 驱动器根据设定的急停方式(如切断电源或使能信号)立即停止电机。
- 速度降到零,位置锁定(即保持当前位置)。
- 状态机进入 Standstill(电机仍带使能),等待下一命令。
- 如果发生驱动故障或硬件报警,则会进入 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 执行过程:
- PLC Motion 控制器生成急停命令。
- 通过 EtherCAT PDO(Process Data Object)周期性向驱动发送急停命令。
- 驱动器根据 CiA 402 标准,立即执行急停操作,切断电机电源或使能信号。
- 当反馈速度降到 0,并且位置锁定,驱动保持使能。
- PLC 状态机进入 Standstill。
特殊点:
- EtherCAT 的急停命令通常是通过设置 CiA 402 控制字的 Quick Stop 位(bit 2)来实现。
- 对于 CiA 402 状态机,MC_Halt 会触发 Quick Stop 或 Fault Reset。
CANopen 轴
CANopen 同样遵循 CiA 402 设备控制状态机,但通信机制是 CAN 报文。
MC_Halt 执行过程:
- PLC 将 MC_Halt 计算的急停命令通过 CANopen PDO 或 SDO 写入驱动的速度/位置寄存器。
- 驱动器接收到急停命令后,立即切断电机的电源或使能信号。
- 电机迅速停止,可能产生机械冲击。
- 停止后,驱动保持当前位置,继续处于 Operation Enabled 状态。
- 状态机从 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的区别
上图清晰地揭示了两条不同的状态路径及其最终影响。简单来说:
- MC_Halt 像“暂停”,停止后允许随时继续。
- MC_Stop 像“强制停止并锁住”,停止过程中和完成后(在
Execute
复位前)都拒绝其他指令。
下面是两者在状态机变化上更详细的对比:
特性 | MC_Halt | MC_Stop |
---|---|---|
触发状态 | 通常在 ContinuousMotion 或 DiscreteMotion |
在任何运动状态 |
停止过程状态 | DiscreteMotion |
Stopping |
停止完成状态 | Standstill |
Standstill (需 Execute 置 FALSE 后) |
停止优先级 | 较低,可被其他运动指令中断 | 最高,不可中断,会中止其他运动指令 |
停止完成后 | 可立即接受新的运动指令 | 在 Execute 保持为 TRUE 时,阻塞新运动指令 |
停止位置 | 未定义 | 按预设减速度停止 |
主要应用场景 | 暂时暂停运动,后续需要继续运动 | 安全停止、紧急停止或流程结束后的完全停止 |
状态机变化过程详解
MC_Halt 的状态流程
当轴正在运动(例如处于 ContinuousMotion
状态)时执行 MC_Halt
:
- 触发停止:
MC_Halt
的Execute
输入出现上升沿。 - 状态转换:轴状态从
ContinuousMotion
转变为DiscreteMotion
。此时轴正在减速。 - 停止完成:当轴速度降至零后,
MC_Halt
的Done
输出为TRUE
,轴状态从DiscreteMotion
转变为Standstill
(保持静止)。 - 关键特性:在
DiscreteMotion
状态停止过程中,可以启动新的运动指令(如MC_MoveRelative
)来中断停止过程,轴会立即开始执行新的运动。
MC_Stop 的状态流程
当轴正在运动时执行 MC_Stop
:
- 触发停止:
MC_Stop
的Execute
输入置为TRUE
。 - 状态转换:轴状态立即转变为
Stopping
。这是一个独立的高优先级状态。 - 停止完成与保持:
- 当轴速度降至零后,
MC_Stop
的Done
输出变为TRUE
。 - 但轴状态会保持在
Stopping
,而不会立即返回Standstill
。 - 只有在
MC_Stop
的Execute
输入被置为FALSE
后,轴状态才会从Stopping
转变为Standstill
。
- 当轴速度降至零后,
- 关键特性:只要轴处于
Stopping
状态,就无法启动任何新的运动指令。这是它与MC_Halt
最根本的区别之一,确保了停止的不可中断性和绝对性。
如何选择?
根据控制需求来选择:
- 如果你只是想暂停运动,并计划在停止后立即执行新的运动(如切换点动模式或重新定位),请使用
MC_Halt
。 - 如果你需要进行安全、彻底的停止,并且希望确保在停止过程完成之前不会发生任何意外运动,请使用
MC_Stop
。这在紧急停止或流程结束时非常关键。
重要的注意事项
MC_Stop
的Execute
信号:务必注意,MC_Stop
完成后需要将Execute
置为FALSE
,才能使轴状态从Stopping
返回Standstill
,从而解除对后续运动指令的阻塞。若Execute
一直为TRUE
,轴将无法接受任何新命令。- 错误状态
ErrorStop
:如果轴因故障进入ErrorStop
状态,无论是MC_Halt
还是MC_Stop
通常都无法执行。必须先使用MC_Reset
功能块来清除故障,使轴返回Standstill
状态后,才能进行正常的停止或其他运动操作。