2. 伺服系统基础
伺服系统是工业自动化、机器人和精密运动控制的核心执行单元。理解伺服电机、编码器与驱动器三者之间的物理连接与信息流动,是进行固件架构设计的前提。本章将首先拆解伺服系统的硬件组成与信号链路,随后深入剖析位置环、速度环、电流环三环闭环控制的理论模型与工程实现要点,最后明确固件(Firmware)在实时控制、通信解析与故障保护中的核心职责。通过本章学习,读者应能在脑海中建立起“硬件拓扑—控制算法—固件载体”的完整映射关系。
2.1 伺服系统的硬件组成与信号链路
伺服系统的基本硬件拓扑由运动控制器(上位机)、伺服驱动器、伺服电机和编码器四大部分构成。其中,伺服驱动器是固件运行的物理载体,它内部包含数字信号处理器(DSP/MCU)、功率驱动模块(IPM或IGBT)、电流采样电路、编码器接口电路以及通信接口电路。固件工程师必须清晰理解这些硬件模块之间的信号流向,才能合理分配中断优先级、DMA通道和定时器资源。
从信号流向上看,系统存在三条关键链路:指令链路、功率链路和反馈链路。指令链路将上位机的位置指令(如脉冲/方向信号、EtherCAT总线报文)解析为内部的位置给定值;功率链路将电流环计算出的电压矢量通过SVPWM算法转换为六路PWM信号,驱动IPM模块输出三相电压到电机定子绕组;反馈链路则通过编码器接口获取电机转子的位置和速度信息,同时通过ADC采样电阻两端的电压获得三相电流瞬时值。这三条链路在固件中分别对应通信协议栈、PWM定时器中断和ADC采样中断。
2.2 三环闭环控制的基本原理
伺服驱动器的核心控制算法是三个串联的闭环:电流环(最内环)、速度环(中间环)和位置环(最外环)。三环的结构决定了伺服系统的动态响应和稳态精度。电流环控制电枢电流,使其快速跟踪电流给定值;速度环控制电机转速,输出电流环的给定值;位置环控制机械位置,输出速度环的给定值。三环的带宽依次递减,通常电流环带宽为1-2kHz,速度环为100-200Hz,位置环为20-50Hz。
电流环的数学模型基于电机定子坐标系下的电压方程。在转子磁场定向控制(FOC)中,通过Clark变换将三相静止电流变换为两相静止电流,再通过Park变换旋转到转子同步坐标系下,得到励磁电流Id和转矩电流Iq。电流环通常采用PI控制器,分别对Id和Iq进行闭环调节。Id的给定值通常设为0(表贴式PMSM),Iq的给定值来自速度环输出。电流环的输出为d-q轴电压,经过逆Park变换和SVPWM调制后生成PWM占空比。
速度环的输入是位置环输出的速度给定值,反馈值来自编码器位置微分或专用的速度观测器。速度环PI控制器的输出限幅值即为电流环的Iq限幅,该限幅值对应电机的最大允许转矩。位置环的输入是上位机给定的位置指令,反馈值来自编码器的位置。位置环通常采用P控制器或PDFF(伪微分反馈)结构,输出为速度给定值。
| 控制环 | 输入信号 | 反馈信号 | 控制器类型 | 典型带宽 | 输出 |
|---|---|---|---|---|---|
| 电流环 | Iq_ref, Id_ref | Iq_fb, Id_fb (ADC采样) | PI (解耦) | 1-2 kHz | Vd, Vq → SVPWM |
| 速度环 | Speed_ref | Speed_fb (编码器微分) | PI + 前馈 | 100-200 Hz | Iq_ref |
| 位置环 | Pos_ref | Pos_fb (编码器位置) | P / PDFF | 20-50 Hz | Speed_ref |
2.3 固件在伺服系统中的角色与职责
固件是伺服驱动器的“大脑”,它负责将硬件资源组织成实时控制任务。固件的主要职责包括:实时控制、通信管理、状态监控与保护以及参数管理与自整定。实时控制是固件的核心任务,要求在固定的中断周期内完成电流采样、坐标变换、三环计算和PWM更新。通信管理负责解析上位机指令(如位置指令、速度指令、模式切换),并上报驱动器状态和故障信息。状态监控与保护包括过流、过压、过温、编码器故障检测等,一旦触发异常,固件需在微秒级时间内封锁PWM输出。
从软件架构角度看,固件通常分为三个层次:硬件抽象层(HAL)、控制算法层和应用层。HAL层封装了定时器、ADC、编码器接口、GPIO等底层驱动;控制算法层实现FOC、三环PI、SVPWM等数学运算;应用层包含通信协议栈、状态机、参数管理等功能。这种分层设计便于代码复用和移植。
固件的时间关键性(Time-Critical)决定了中断嵌套和优先级设计至关重要。通常,电流环中断(如PWM下溢中断)具有最高优先级,速度环和位置环可以在较低优先级的中断或任务中执行。对于高性能伺服,电流环中断周期为62.5μs(16kHz),速度环为125μs(8kHz),位置环为1ms(1kHz)。固件工程师需要精确计算每个中断内的指令周期数,确保在最坏情况下不超时。
2.4 案例拆解:伺服上电初始化与使能流程
下面通过一个典型的伺服驱动器上电流程,说明固件如何协调硬件资源完成系统初始化。该案例基于一款采用STM32H743芯片(主频480MHz)的伺服驱动器,编码器为多摩川17bit式编码器,通信方式为EtherCAT。
初始现象与目标:驱动器上电后,需要完成从“无电”到“伺服使能”的完整状态迁移。目标是在500ms内完成所有初始化,并确保在使能瞬间无电流冲击。
关键输入参数:母线电压VDC=310V,电机额定电流3A,编码器分辨率131072线/圈,PWM载波频率16kHz。
固件执行步骤:
- 硬件自检(10ms):检查ADC校准值、编码器通信链路、IPM温度传感器、母线电压是否在允许范围内。若母线电压低于200V,则报欠压故障。
- 编码器初始化(50ms):配置SPI接口与多摩川协议,发送位置读取命令,获取单圈位置和多圈计数值。将读取到的位置值作为位置环的初始反馈值。
- 参数加载(20ms):从Flash中读取用户自定义的PID参数、加减速时间、电子齿轮比等。若参数校验失败,则加载默认参数并报参数错误警告。
- PWM与ADC配置(30ms):配置高级定时器TIM1产生中心对齐PWM,频率16kHz;配置ADC1注入组采样三相电流,采样窗口与PWM同步。
- 伺服使能(Servo On):接收到上位机使能指令后,固件先执行直流母线预充电(若未完成),然后闭合电流环,给定Iq_ref=0,等待电流稳定。100ms后闭合速度环和位置环,进入运行状态。
结果对比与复盘:通过上述流程,驱动器在使能瞬间的电流冲击小于额定电流的5%。如果在使能前未正确读取编码器位置,会导致电机在使能瞬间发生“跳步”现象,这是因为位置环的反馈值跳变导致速度给定突变。复盘经验:编码器初始化必须放在使能之前,且位置环的反馈值必须经过低通滤波或平滑处理。
2.5 常见误区与总结复盘
在伺服固件开发中,初学者常犯以下错误:误区一:将位置环、速度环、电流环放在同一个中断中执行,导致中断周期过长,电流环带宽不足。正确做法是采用多速率控制,电流环最高优先级,速度环次之,位置环最低。误区二:忽略编码器反馈的量化误差。当电机低速运行时,编码器位置微分得到的速度信号噪声较大,应使用测速发电机或状态观测器(如龙伯格观测器)来平滑速度反馈。误区三:在电流环中直接使用浮点运算,导致计算时间过长。在资源受限的MCU上,应使用Q格式定点数或使用FPU加速。