3. 数据采集硬件接口与驱动层

实时运动控制系统的数据采集质量,首先取决于硬件接口与驱动层能否把物理量稳定、低延迟地转换为软件可用的数字量。本节围绕编码器、霍尔、旋变、ADC、现场总线与工业以太网六类接口,说明它们在软件接入时的关键差异、驱动结构以及工程实现要点。

一、位置与速度反馈接口:编码器、霍尔与旋变

增量式编码器输出 A/B/Z 三路信号,软件接入的核心是正交解码与计数方向判定。以 STM32 定时器编码器模式为例,A、B 接入 TIM 的 CH1、CH2,硬件自动完成四倍频计数,Z 信号接外部中断用于零点校准。读取时需注意计数器位宽与溢出处理:若使用 16 位计数器,单圈脉冲超过 65535 时必须扩展为 32 位软件计数,否则高速段会出现跳变。速度计算常用 M/T 法,在固定采样周期 T 内读取计数差 ΔC,速度 v = ΔC·K / T,其中 K 为每脉冲对应位移。低速时 ΔC 过小导致量化噪声,可切换为测周法,用高频时钟测量相邻脉冲间隔。

霍尔传感器多用于无刷电机的换相与低速位置估计。三路霍尔输出 6 种有效状态,对应电角度每 60° 一个扇区。软件接入时通常配置为带滤波的输入捕获或外部中断,在中断中读取三路电平组合并查表得到扇区号。霍尔分辨率低,不能直接用于高精度位置环,但可与编码器融合:编码器提供高分辨率增量,霍尔提供绝对扇区,上电时用霍尔确定初始电角度,避免换相失败。

旋变(Resolver)输出正弦/余弦两路模拟信号,需经旋变数字转换器(RDC)或 ADC 采样后解调。软件接入的关键是角度解算:对 sinθ、cosθ 采样后,通过反正切或跟踪环路得到角度。以 AD2S1210 为例,其通过 SPI 输出 16 位角度和速度,软件只需按寄存器映射读取并做标定。若用 ADC 直接采样,则需保证两路同步采样,否则高速旋转时 sin/cos 相位偏差会引入角度误差。典型做法是使用双通道同步 ADC 或带采样保持的同步采样芯片。

运动控制数据采集接口与驱动层接入关系 物理传感器/信号 增量编码器 A/B/Z 霍尔 U/V/W 旋变 sin/cos 模拟量/电流电压 总线从站/以太网帧 硬件接口/外设 TIM 编码器模式 GPIO 中断/捕获 RDC / 同步 ADC ADC 规则/注入通道 CAN/EtherCAT/以太网 MAC 驱动层软件 正交解码+溢出扩展 扇区查表+换相 角度解算+标定 采样+滤波+校准 协议栈+PDO 映射 实时控制应用 位置/速度环 电流环/换相 状态监控 故障诊断 数据记录/上传 关键:物理量→外设寄存器→驱动解算→实时控制量;同步采样、溢出扩展、协议周期与时间戳是驱动层核心

二、ADC 接口的软件接入

模拟量采集在运动控制中主要用于电流环、母线电压和温度。软件接入时,ADC 的配置要点包括:采样时间与信号源阻抗匹配、触发源选择、DMA 搬运以及校准。以电流采样为例,通常由 PWM 定时器触发 ADC 注入通道,在 PWM 中点采样,避开开关噪声。若使用规则通道扫描多路,需保证总转换时间小于控制周期。DMA 搬运可避免中断开销,但要注意半满/全满中断与数据一致性:若控制周期读取 DMA 缓冲区时数据正在更新,应使用双缓冲或读取前关闭对应通道。

ADC 校准不可省略。以 STM32 为例,上电后需执行 ADC 校准序列,否则零点偏移可达数十 LSB。软件中还应做两点校准:已知零电流时读取偏置,已知参考电压时计算增益。对于电流采样,常见做法是在 PWM 关断期间注入已知测试电流或利用半桥下管导通时采样,得到偏置后写入驱动层。温度采集则需注意 NTC 非线性,通常查表或使用 Steinhart-Hart 公式转换。

三、现场总线与工业以太网接口

现场总线以 CAN/CANopen 和 EtherCAT 为代表。CAN 接口软件接入的核心是报文过滤与周期同步。以 CANopen 为例,从站通过 PDO 映射把位置、速度、状态字映射到报文,主站按 SYNC 周期发送同步帧,从站收到后更新 PDO。软件中需配置对象字典、PDO 映射参数和同步窗口。若使用 CAN 原始帧,则需自行定义 ID 分配和周期,注意总线负载率不宜超过 70%,否则低优先级报文延迟增大。

EtherCAT 采用主站软件协议栈加从站 ESC 的结构。软件接入时,主站需配置过程数据映射(PDO Mapping)、分布式时钟(DC)和看门狗。DC 同步是重点:主站发送 ARMW 帧读取从站时间,计算偏移并写入从站偏移寄存器,使各从站时钟对齐。若 DC 未启用,从站采样时刻会随帧到达抖动,导致多轴同步误差。软件中还应处理从站状态机:INIT→PREOP→SAFEOP→OP,只有进入 OP 后才开始周期数据交换。

工业以太网如 PROFINET、EtherNet/IP 的软件接入通常依赖协议栈库。以 PROFINET 为例,需配置设备名称、IP 地址、GSD 文件以及输入输出模块。实时等级 RT 使用标准以太网,IRT 需要专用硬件。软件中应关注看门狗时间和数据保持策略:通信中断时,输出应进入安全状态而非保持最后值。

四、驱动层统一接入与时间戳

无论哪种接口,驱动层都应向上提供统一的数据结构,例如包含位置、速度、电流、状态和故障码的结构体,并附带采样时间戳。时间戳来源可以是定时器计数或 EtherCAT DC 时间。对于多接口融合,建议在驱动层完成单位统一和坐标定义:位置统一为脉冲或弧度,速度统一为 rad/s 或 mm/s,方向定义需与机械坐标系一致。若编码器计数方向与电机正转相反,应在驱动层取反,而不是在应用层修正,避免后续混淆。

工程建议:编码器 Z 信号校准应在低速下进行,避免高速时 Z 脉冲宽度不足导致漏检;旋变解算后应做角度滞后补偿,补偿量与转速相关,可通过实验标定。
常见问题:ADC 采样时刻与 PWM 不同步会引入电流纹波;EtherCAT DC 未启用时多轴同步误差可达数十微秒;CAN 总线负载过高时 PDO 延迟抖动明显。排查时先用示波器观察触发信号与采样点,再检查协议配置。

综上,硬件接口与驱动层的软件接入不是简单的寄存器读写,而是围绕同步、校准、溢出、时间戳和协议状态机展开的系统工程。只有把物理量到控制量的链路做稳,上层运动控制算法才有可靠的数据基础。