【Servo】电机铁疙瘩运动起来的必备参数||三种控制模式||三闭环控制系统

要让伺服电机成功转动起来,至少需要以下关键参数,这些参数涵盖了电机本身、驱动器设定以及控制算法等方面:


1. 电机本体参数(必须明确,驱动器需要知道如何驱动电机)

  • 电机额定功率( 01):决定电机的最大可持续输出功率,例如 750W、1.5kW。
  • 电机额定电压( 12):驱动器供给电机的工作电压,如 220V、380V。
  • 电机极数( 02):决定电机的同步转速计算公式,影响转速反馈计算。
  • 电机额定转矩( 04):电机在额定条件下能提供的转矩,单位 Nm(牛·米)。
  • 电机最大转矩( 05):电机的峰值转矩,决定短时间过载能力。
  • 电机额定转速( 08):电机在额定电压和负载下的稳定转速,例如 3000RPM。
  • 电机最高转速( 09):电机能达到的最大转速,例如 5000RPM。
  • 电机相电阻( 0B):影响电流调节精度。
  • 电机相电感( 0C):影响伺服驱动的控制响应特性。
  • 电机惯量( 0A):决定电机的加减速能力和负载适应性。
  • 反电势系数( 18):影响驱动器控制电机时的电流控制方式。

2. 编码器及反馈系统参数(决定电机的精确控制能力)

  • 编码器类型( 19):如增量式、绝对式、串行编码器等,决定反馈信号处理方式。
  • 编码器分辨率( 00):编码器的单圈脉冲数,决定控制精度。
  • 编码器零点相位( 14):编码器的零点偏移,决定电机初始位置校准。

3. 伺服驱动器关键参数(决定电机能否正确启动)

  • 控制模式
    • 位置模式(需要目标位置和速度)
    • 速度模式(需要目标速度)
    • 转矩模式(需要目标转矩)
  • 目标转速(若使用速度模式)
  • 目标位置(若使用位置模式)
  • 转矩限制(防止过载损坏电机)
  • PID 调节参数(影响电机运行平稳度)

4. 负载及运行环境(影响伺服系统性能)

  • 负载惯量:电机拖动的机械系统惯量,决定伺服增益调整策略。
  • 负载摩擦力:影响电机的额外负载,可能需要补偿。
  • 加减速时间:决定启动、停止的平稳程度。

小结

要让伺服电机转动,至少要知道:

  1. 电机的额定参数(功率、电压、极数、转矩、转速等)。
  2. 编码器参数(类型、分辨率、零点相位等)。
  3. 驱动器的控制方式(位置、速度、转矩模式)。
  4. 负载特性(惯量、摩擦等)。

这些参数在伺服驱动器的控制代码中,通常会用 C 语言去读取、计算、调整,例如:

float target_speed = 3000;  // 目标转速 3000 RPM
float max_torque = 5.0;      // 设定最大转矩 5Nm
set_speed(target_speed);     // 发送目标速度指令
set_torque_limit(max_torque); // 限制最大转矩

扩展 控制模式、三闭环控制系统

伺服电机的 位置模式(Position Mode)速度模式(Velocity Mode)转矩模式(Torque Mode) 是三种主要的运行控制模式。每种模式的控制目标不同,适用于不同的应用场景。


1. 位置模式(Position Mode)

目标:控制电机的转动位置

  • 伺服电机按照设定的 目标位置 进行精准运动,可以是 绝对位置(固定目标点)或者 相对位置(从当前位置偏移多少)。
  • 需要输入 位置指令,一般由 脉冲信号总线命令(如 CAN、Modbus) 提供。
  • 适用于 数控机床、机器人、自动化流水线 等要求高精度定位的场合。

控制参数

  • 目标位置(如 10000 脉冲 = 1 转)
  • 运行速度(避免瞬间跳跃导致抖动)
  • 加速度 / 减速度(影响启动和停止的平稳性)

示例
假设 1 转 = 10000 脉冲,现在要让电机转到 5 转的位置(50000 脉冲):

set_position(50000); // 设定目标位置
set_speed(2000);      // 设置运行速度 2000 RPM

电机会平稳转动到 50000 脉冲 位置后停止。


2. 速度模式(Velocity Mode)

目标:控制电机的转速,而不关心具体位置

  • 伺服电机按照设定的 目标转速 运行,通常使用 模拟信号(±10V)、通讯指令 或 CAN 总线 控制。
  • 适用于 传送带、电梯、电机测试设备,需要保持恒定速度的场景。

控制参数

  • 目标转速(RPM 或 rad/s)
  • 加速/减速时间
  • 限制最大转矩(防止过载)

示例
假设要让电机匀速运转在 3000 RPM:

set_speed(3000);   // 设定转速 3000 RPM
set_torque_limit(5.0); // 限制最大转矩 5 Nm

电机会匀速运行 3000 RPM,并持续旋转,直到收到停止命令。


3. 转矩模式(Torque Mode)

目标:控制电机的输出力矩,而不管转速和位置

  • 伺服电机按照设定的 目标转矩 运行,速度和位置由负载决定。
  • 适用于 张力控制(印刷机、纺织机)、恒定力矩应用(绕线机、挤压设备),需要维持恒定转矩的场合。
  • 常见的控制方式是通过 模拟量(±10V)、通讯命令、CAN 总线 设定目标转矩。

控制参数

  • 目标转矩(Nm)
  • 最大转速限制(防止失控)

示例
假设要设定电机输出恒定 3Nm 转矩:

set_torque(3.0);  // 设定目标转矩 3Nm
set_speed_limit(4000); // 限制最大速度 4000 RPM,防止超速

电机会持续提供 3Nm 的力矩,负载变重时速度会降低,负载变轻时速度会提高。


小结:三种模式的对比

模式 控制目标 输入信号 适用场景
位置模式 控制目标位置 脉冲信号 / 总线命令 CNC机床、机器人、自动化
速度模式 控制转速 模拟量(±10V)/ 总线命令 传送带、电梯、风机
转矩模式 控制输出力矩 模拟量(±10V)/ 总线命令 张力控制、扭矩测试

简单理解:

  • 位置模式:我要转到 某个固定位置,最常见!
  • 速度模式:我要保持 固定速度,不管位置。
  • 转矩模式:我要提供 固定力矩,不管速度和位置。

不同应用场景会选择不同模式,在 C 语言嵌入式开发中,这些模式通常在 伺服驱动器控制代码 里由寄存器参数或 CAN 指令设置。

在伺服控制系统中,主要有 电流环、速度环和位置环 这三个核心控制环,它们组成了三闭环控制系统,用于实现高精度的电机控制。每个环控制不同的物理量,按照内环优先响应、外环慢速调整的原则,逐层递进控制。


1. 电流环(Current Loop)——控制力

作用:控制电机的电流(即转矩)

  • 最内层的控制环,负责 调节电机的相电流,确保电流跟随设定值。
  • 由于电机的转矩与电流成正比,因此电流环也可以看作是 转矩控制环
  • 响应速度最快(一般在微秒级,常见带宽 > 1kHz),能够快速调整电机的输出力矩。

适用于:转矩模式(Torque Mode)

  • 转矩模式 下,控制系统只使用 电流环,直接控制电机的输出力矩。

控制算法:PI 调节

  • 典型的 PI(比例-积分)控制,根据电流误差(期望电流 - 实际电流)调节 PWM 信号,控制逆变器的输出电压。

示例:

假设目标转矩需要 5Nm,根据电机的转矩常数 ( K_t ),计算出相应的电流 ( I ):

float target_torque = 5.0;   // 目标转矩 5Nm
float Kt = 0.5;  // 假设电机的转矩常数 Kt = 0.5 Nm/A
float target_current = target_torque / Kt;  // 计算目标电流
set_current(target_current);  // 设定目标电流

电流环会调整电流,使得电机提供恒定 5Nm 力矩


2. 速度环(Velocity Loop)——控制快慢

作用:控制电机的转速

  • 速度环是中间层控制环,它的目标是确保电机按设定的 速度 旋转。
  • 速度环内部包含 电流环,用于间接调整力矩(电流)。
  • 响应速度较快(常见带宽 100~500Hz),比电流环慢,但比位置环快。

适用于:速度模式(Speed Mode)

  • 速度模式 下,控制系统使用 速度环 + 电流环,通过调节电流来实现目标转速。

控制算法:PI 调节

  • 计算速度误差(期望速度 - 实际速度),然后输出合适的目标电流给电流环。

示例:

假设目标速度是 3000 RPM:

float target_speed = 3000;  // 目标速度 3000 RPM
set_speed(target_speed);    // 设定目标速度

速度环会调整电流环,让电机稳定运行在 3000 RPM


3. 位置环(Position Loop)——控制去哪

作用:控制电机的位置

  • 位置环是最外层的控制环,负责让电机转到目标位置
  • 位置环的输出是目标速度,交给速度环去执行。
  • 由于涉及机械惯性,位置环的带宽较低(常见 10~50Hz),响应最慢

适用于:位置模式(Position Mode)

  • 位置模式 下,控制系统使用 位置环 + 速度环 + 电流环,逐层控制电机到达目标位置。

控制算法:PID 调节

  • 计算位置误差(目标位置 - 当前位置),然后输出合适的目标速度给速度环。

示例:

假设目标位置是 100000 脉冲:

long target_position = 100000;  // 目标位置 100000 脉冲
set_position(target_position);  // 设定目标位置

位置环会调整速度环,让电机平稳移动到 100000 脉冲的位置


4. 三环的关系

伺服系统通常采用 位置 → 速度 → 电流 三环级联控制:

  1. 位置环 计算出目标速度,传递给速度环。
  2. 速度环 计算出目标电流,传递给电流环。
  3. 电流环 直接控制电机的电流,使其产生期望的转矩。

形象理解

  • 电流环 = 控制“用多大力”(直接控制电机转矩)
  • 速度环 = 控制“转得多快”(用转矩来控制转速)
  • 位置环 = 控制“转到哪去”(用速度来控制位置)

5. 具体应用示例

控制模式 控制环 作用 典型应用
转矩模式 电流环 控制电流(力矩) 印刷机、纺织机、张力控制
速度模式 速度环 + 电流环 控制转速 传送带、电梯、风机
位置模式 位置环 + 速度环 + 电流环 控制位置 数控机床、机器人、自动化流水线

6. 代码实现(简化版)

void control_loop() {
    float pos_error = target_position - current_position;
    float target_speed = pid_position(pos_error);  // 位置环

    float speed_error = target_speed - current_speed;
    float target_current = pid_speed(speed_error); // 速度环

    float current_error = target_current - current_feedback;
    float pwm_output = pid_current(current_error); // 电流环

    set_pwm(pwm_output); // 控制电机电流
}

7. 小结

控制变量 输入 输出 作用 响应速度
电流环 电流(转矩) 目标电流 PWM 输出 控制力矩,影响加速度 最快(>1kHz)
速度环 速度(转速) 目标速度 目标电流 控制电机转速 中等(100~500Hz)
位置环 位置 目标位置 目标速度 控制电机目标位置 最慢(10~50Hz)

位置环 → 速度环 → 电流环,控制由外向内逐层递进,确保伺服电机平稳、精准运行。

你可能感兴趣的:(Servo,C,架构,fpga开发)