纯手工翻译,供作者个人学习使用。
原文连接:https://movingcap.de/webmanuals/mc-eth-sw-manual-en/cia402_overview.html
一、引言
CiA 402,也被称为 DS 402(Device Stardard 402),是由 CAN in Automation (CiA) 组织定义的用于驱动和电机控制的行业规范。它定义了控制电气驱动设备(如伺服驱动、伺服控制器、变频器或类似设备)的通用接口和标准行为。作为 “CANopen行规”,它是 CANopen 协议的一部分,同时它也在 EtherCAT、POWERLINK、TCP/IP 等协议中使用。CiA 402 在 IEC61800-7-201 标准中是第一类,即用于电力驱动系统(PDS)的 CiA402 行规。
本节提供了 CiA 402 核心部分的概述,特别专注于对象字典里的驱动状态/ CiA 402 状态机、主控制字(6040h)和状态字(6041h)、一般操作模式(6060h)和其他标准对象的标准对象。
二、CIA 402 状态机
CiA 402 规范的核心是状态机(PDS FSA, 即电力驱动系统-有限状态机),它定义了一个驱动器的允许状态和状态转换。通过定义不同操作模式下的允许动作和期望反应,状态机保证了运动轴的安全且可预测的控制。
主要状态:
未准备(Not Ready to Switch On):打开开关后的初始状态。此时驱动器还不能进行运动。
开启未使能(Switch On Disabled):驱动器可能未使能(比如发生了错误之后或者在初始化期间)。
准备开启(Ready to Switch On):内部检查完成;驱动器可以使能。
开启(Switched On):驱动器准备完成,可以输入使能指令。
操作使能(Operation Enabled):驱动器可以执行运动命令。
急停激活(Quick Stop Active):急停被激活,驱动器会尽快停下。
故障反应激活(Fault Reaction Active):驱动器对被检测到的故障做出反应 - 它可以携带安全测量。
故障(Fault ):一个故障条件被检测到;驱动器必须重置。
状态转换:
状态转换由控制字(6040h)控制,控制字由主机发送到设备上。设备通过状态字(6041h)返回其电流状态。
具体描述可以在 CiA 402 规范中找到。
三、控制字(6040H 对象)
控制字(索引 6040h)是核心控制对象,主机通过它控制驱动器的状态和行为。它是一个16位的字,每一个比特(或几个比特)能够触发驱动器的动作和响应,例如状态改变和移动指令。
比特位含义:
| 比特位 | 比特位名字 | 名字含义 |
|---|---|---|
| 0 | 开关打开(Switch On) | 要求驱动器打开开关 |
| 1 | 使能电压(Enable Voltage) | 使能内部电源供应 |
| 2 | 急停(Quick Stop) | 要求一个运动立刻停下 |
| 3 | 操作使能(Enable Operation) | 完全激活一个运动轴 |
| 7 | 故障重置(Fault reset) | 应答/重置一个错误 |
| 8 | 停止(Stop) | 在不失能驱动器的情况下 停止一个移动 |
| 9 | 专用操作模式(Operation Mode Specific) | 在特定操作模式下使用 |
| 10 | 保留位(Reserved) | - |
| 11-15 | 制造商定义 | - |
这些比特位的组合和时序决定了状态机的状态是如何切换的。例如:从“Switch On Disabled”到“Operation Enabled”,应该把位0,1,2置1,然后把位3置1。
四、状态字(6041H 对象)
状态字(索引 6041h)是一个16位的字,由驱动器发送给主机,传递电流状态信息。通过读取状态字,主机可以知道 CiA 402 状态机中驱动器的电流状态。
比特位含义:
| 比特位 | 比特位名字 | 名字含义 |
|---|---|---|
| 0 | 准备开启(Ready to Switch On) | 驱动器准备启动 |
| 1 | 已启动(Switched On) | 驱动器已使能 |
| 2 | 操作已使能(Operation Enabled) | 驱动器运动已使能 |
| 3 | 故障(Fault) | 发现错误 |
| 4 | 电压已使能(Voltage enabled) | 内部电压开启 |
| 5 | 急停(Quick Stop) | 急停函数已激活 |
| 6 | 启动已失能(Switch On Disabled) | 驱动器已失能 |
| 7 | 警告(Warning) | 发现警告 |
| 8 | 制造商使用(Manufacturer Specific) | - |
| 9 | 远程(Remote) | - |
| 10 | 目标已到达(target reached) | 位置误差已在容许范围内 |
| 11 | 内部限制激活(internal limit active) | 根据 607D 对象已达到限制 |
| 12,13 | 不同运行模式下有不同含义。 | - |
| 14,15 | 制造商使用(Manufacturer Specific) | - |
五、操作模式(6060H 对象)
6060h 操作模式决定了驱动器工作的模式。每一个模式支持一个操作范式(例如位置控制,速度控制,转矩控制)。
| 值(十进制) | 模式名字 | 应用 |
|---|---|---|
| -128到-1 | 制造商制定模式(Manufacturer-specific mode) | 制造商专用 |
| 0 | 无模式(No mode assigned) | |
| 1 | 轨迹位置模式(Profile Position Mode) | 根据轨迹移动位置 |
| 2 | 速度模式(Velocity Mode) | 已废弃 |
| 3 | 轨迹速度模式(Profile Velocity Mode) | 根据轨迹加速度控制速度 |
| 4 | 轨迹转矩模式(Profile Torque Mode) | 根据轨迹控制转矩 |
| 6 | 回零模式(Homing mode) | 回到零点 |
| 7 | 插值位置模式(Interpolated position mode) | 根据插值位置点移动 |
| 8 | 循环同步位置(Cyclic Synchronous Position) | 实时同步位置控制 |
| 9 | 循环同步速度(Cyclic Synchronous Velocity) | 实时同步速度控制 |
| 10 | 循环同步转矩(Cyclic Synchronous Torque) | 实时同步转矩 |
根据 CiA 402,一个伺服驱动通常只支持部分操作模式。常见的支持的模式包括:
- 1 = 轨迹位置模式(Profile Position Mode),
- 3 = 轨迹速度模式(Profile Velocity Mode),
- 6 = 回零模式(Homing mode),
- 8 = 循环同步位置(Cyclic Synchronous Position)。
电流模式可以通过显示操作模式(6061h)来读取。
六、 轨迹位置模式
6060h = 1 轮廓位置模式(PPM)是 CiA 402 的基本位置控制模式。在此模式下,驱动器根据移动轨迹把它的负载移动到目标位置。可以设置速度、加速度、减速度等参数得到光滑且受控的运动。这个模式适用于点到点位移、序列移动、索引任务。
步骤:
- 设置操作模式(6060h)为1(轨迹位置模式)。
- 设置目标位置(607Ah)和期望轨迹参数。
- 构建轨迹速度(6081h),轨迹加速度(6083h)和轨迹减速度(6084h)。
- 根据控制字(6040h)开始移动(通过根据 CiA 402 设置新的参考点)。
- 监控状态字和位置实际值(6064h)来保证过程进行。
轨迹位置的主要标准对象:
| 索引 | 名字 | 名字含义 | 类型 |
|---|---|---|---|
| 6060h | 操作模式(Modes of operation) | 对于轨迹额位置模式,置为1 | integer8 |
| 607Ah | 目标位置(Target Position) | 目标位置 | integer32 |
| 6081h | 轨迹速度(Profile Velocity) | 最大允许速度 | unsigned32 |
| 6083h | 轨迹加速度(Profile Acceleration) | 加速度值 | unsigned32 |
| 6084h | 轨迹减速度(Profile Deceleration) | 减速度值 | unsigned32 |
| 6064h | 轨迹真实值(Position Actual Value) | 实际位置 | integer32 |
| 6040h | 控制字(Controlword) | 触发移动、管理状态 | unsigned16 |
| 6041h | 状态字(Statusword) | 状态的反馈 | unsigned16 |
位置模式的可选对象:
| 索引 | 名字 | 名字含义 | 类型 |
|---|---|---|---|
| 60F2h | 位置方式代码 | 旋转位置坐标和定位行为的选项 | unsigned16 |
| 6073h | 最大电流 | 最大电流/转矩/力的限制 | unsigned16 |
| 607Dh.01h | 最小位置 | 软件位置限制 负方向的位置限制 或最小旋转位置 | integer32 |
| 607Dh.02h(原文勘误) | 最大位置 | 软件位置限制 正方向的位置限制 或最大旋转位置 | integer32 |
七、轨迹速度模式
6060h = 3 轨迹速度模式(PVM)使得我们可以直接设置轴速度,借此维护轨迹加速度和减速度跳变。典型的应用包括传输带、风机等要求迅速的其他系统。
步骤:
- 设置操作模式(6060h)为3(轨迹速度模式)。
- 设置目标速度(60FFh)和期望的轨迹加/减速度(6083h/6084h)。
- 使用控制字(6040h)来触发开始、停止和速度变化
- 读取速度真实值(606Ch)和状态字用于监控。
轨迹速度的主要标准对象:
| 索引 | 名字 | 名字描述 | 类型 |
|---|---|---|---|
| 6060h | 操作模式(Modes of Operation) | 设置为3是轨迹速度模式 | integer8 |
| 60FFh | 目标速度(Target Velocity) | 目标速度 | integer32 |
| 6083h | 轨迹加速度(Profile Acceleration) | 加速度跳变 | unsigned32 |
| 6084h | 轨迹减速度(Profile Deceleration) | 减速度跳变 | unsigned32 |
| 606Ch | 速度真实值(Velocity Actual Value) | 真实速度 | integer32 |
| 6040h | 控制字(Controlword) | 控制启/停/保持 | unsigned16 |
| 6041h | 状态字(Statusword) | 监控反馈和状态 | unsigned16 |
八、CIA 402 基本参数概览(对象字典)
在上文中操作模式中提到的、与驱动的控制和监测相关的基本参数总览。
| 索引 | 名字 | 描述 | 类型 |
|---|---|---|---|
| 6040h | 控制字 | 控制并改变状态(主机->驱动) | unsigned16 |
| 6041h | 状态字 | 状态反馈(驱动->主机) | unsigned16 |
| 6060h | 操作模式 | 设置驱动器的操作模式 | integer8 |
| 6061h | 显示操作模式 | 当前操作模式 | integer8 |
| 607Ah | 目标位置 | 轨迹位置模式下的目标位置 | integer32 |
| 6064h | 位置真实值 | 位置反馈 | integer32 |
| 606Ch | 速度真实值 | 速度反馈 | integer32 |
| 6081h | 轨迹速度 | 轨迹位置模式下的最大速度 | unsigned32 |
| 6083h | 轨迹加速度 | 加速度跳变 | unsigned32 |
| 6084h | 轨迹减速度 | 减速度跳变 | unsigned32 |
| 60FFh | 目标速度 | 轨迹速度模式下的目标速度 | integer32 |
| 6098h | 归零方式 | 归零方式的选择 | integer8 |
| 607Dh.01h | 最小位置 | 软件位置最小值 | integer32 |
| 607Dh.02h | 最大位置 | 软件位置最大值 | integer32 |
| 6073h | 最大电流 | 最大电流/转矩/力 | unsigned16 |
| 6075h | 电机额定电流 | 物理单位下的电机额定电流 | unsigned32 |
| 60783h | 电流真实值 | 以0.1%为单位的电流真实值。负值表示负方向。 | integer16 |
九、位置缩放/用户定义单位
在 CiA 402 中的位置缩放将可配置的缩放参数和电机/编码器的固定性质组合起来,实现内部位置单位(增量)到用户定义单位的转换。
电机/编码器系统性质(608FH):
- 608Fh:位置编码器分辨率
608Fh.01 encoder_increments:电机每转一圈的增量脉冲数
608Fh.02 motor_revolutions:编码器每转对应的电机转数
举例:对于一个 16位增量式编码器:
608Fh.01 = 65,536,
608Fh.02 = 1 (几乎总是为 1,除非电机和编码器直接有齿轮)
注意:
这些值反应了硬件性质,只能在硬件变化时修改。
可配置缩放(6091H 和 6092H):
- 6091h:齿轮比
6091h.01h motor_revolutions:电机转数
6091h.02h shaft_revolutions:轴输出转数
举例:每 2 圈输出轴转数对应 5 圈电机转数:
6091h.01h = 5,
6091h.02h = 2
- 6092h:进给常数
6092h.01h feed:输出轴每转对应的技术单位(比如 mm,um)
6092h.02h shaft_revolutions:输出轴的转数
举例:齿形带轴,每转对应 100mm,单位采用 um:
6092h.01h feed = 100,000,
6092h.02h = 1
位置缩放的表达式:
| 大小 | 基本公式 | 基于CiA 402 对象的计算 |
|---|---|---|
| 编码器分辨率 | Encoder_resolution = encoder_increments / motor_rev | 608Fh.01h/608Fh.02h |
| 齿轮比 | Gear_ratio = motor_revolutions / shaft_revolutions | 6091h.01h/6091h.02h |
| 进给常数 | Feed_constant = feed / shaft_revolutions | 6092h.01h/6092h.02h |
| 内部位置单位 | Pos_internal = Pos_user × Encoder_resolution × Gear_ratio / Feed_constant | Pos_user × (608Fh.01h / 608Fh.02h) × (6091h.01h / 6091h.02h) / (6092h.01h / 6092h.02h) |
| or: Pos_user × (608Fh.01h × 6091h.01h× 6092h.02h) / (608Fh.02h × 6091h.02h× 6092h.01h) | ||
| 以用户单位表示的位置值 | Pos_user = Pos_internal × Feed_constant / (Encoder_resolution × Gear_ratio) | Pos_internal × (6092h.01h / 6092h.02h) / [ (608Fh.01h / 608Fh.02h) × (6091h.01h / 6091h.02h) ] |
| or: Pos_internal × (608Fh.02h × 6091h.02h × 6092h.01h) / (608Fh.01h × 6091h.01h × 6092h.02h) |
十、举例
给定:
- 电机编码器 = 65,536 个脉冲每电机转一圈
608Fh.01h = 65536,
608Fh.02h = 1 - 齿轮比:轴输出1转对应电机5转(6091h.01h = 5,6091h.02h = 1)
- 进给常数:100mm 对应轴输出每转(6092h.01h = 100,6092h.02h = 1)
计算:
- 内部编码器一个脉冲对应的用户定义的单位
= Feed_constant / (Encoder_resolution × Gear_ratio)
= (100mm/rev) / (5 * 65536 increments/rev)
= 0.00030517578125 [mm / increment]
举例:
定位到 80,000个内部增量脉冲位置:
Pos_user = 80,000 * 0.00030517578125 = 24.41mm