电机控制是工程师绕不开话题,合格的工程师在设计之前,一定对整个电机控制拥有丰富的心得体会。本文从同步、定时和软件三方面,详细梳理电机控制的流程及组成,并分享工程师在实际工作中的经验。
同步和定时
每个实时应用程序的首要任务是适当的定时、同步和确定性的系统响应,设计电机控制软件时必须特别注意这些方面。 从本质上讲,该过程听起来非常简单:系统读取传感器值、处理控制算法、监控系统安全并通过调整 PWM 输出的占空比来管理输出级。
微小的时序错误可能会导致严重的系统响应错误、运行不稳定和性能不佳。 为了确保一切按预期运行,保持同步并确保系统的确定性至关重要。 在这里,我要强调的是,我们正在处理一个“硬实时系统”,在严格的期限内完成任务绝对至关重要。
电机控制器软件可以使用合适的 RTOS(实时操作系统)作为没有操作系统的裸机解决方案来实现,或者作为多核混合解决方案来实现,其中一些 CPU 内核在裸机模式下运行,而其他内核则使用一个操作系统。 裸机解决方案始终基于中断驱动设计,其中中断处理时间关键型任务,确保一切都以精确的时间间隔发生。
无论是裸机、RTOS 还是混合解决方案,都必须执行时序分析、任务优先级划分和安全分析,以确保高效可靠的系统性能。
时序分析可确保所有任务均按时完成。 这包括考虑每个任务的最坏情况执行时间。 电机控制中的一些主要关键任务包括传感器数据采集、通过 PWM 信号生成执行控制算法、故障检测和处理、紧急停止和安全功能、与其他系统组件的实时通信以及与外部系统的同步。
锁相环
如前所述,锁相环 (PLL) 无论是集成到 MCU/DSP 硬件中还是作为 FPGA 中的 IP 核实现,对于同步关键事件都至关重要。PLL 的主要功能是将 MCU/DSP/FPGA 的内部时钟与外部时钟源或信号同步。 这对于保持实时应用中的计时精度至关重要。PLL 有助于减少时钟抖动,这对于精确定时至关重要,在控制电机的速度和位置时尤其重要。PLL 可确保反馈信号采样(例如转子位置和电流测量)与控制算法执行之间的精确时序对齐,从而确保最佳同步和精度。 在多核系统中,PLL 可用于同步这些内核的操作。
通过锁相环 (PLL) 将脉冲宽度调制 (PWM) 与电流测量和模数转换 (ADC) 同步对于电机控制应用中确保精确高效的系统性能至关重要。 通过同步时钟,PLL 可确保所有系统组件(包括 PWM 发生器、ADC 和其他处理元件)在同步时钟上运行。 控制输送到电机的功率的 PWM 信号是根据该同步时钟生成的。 这些信号的时序直接影响电机性能。 电流传感器测量电机的电流。这些测量的时机至关重要,特别是在磁场定向控制 (FOC) 等系统中,其中电流反馈用于控制电机扭矩和速度。 使用 ADC 将电流传感器的模拟信号转换为数字值。PLL 有助于将 ADC 采样与 PWM 周期同步。 这种同步可确保 ADC 在相对于 PWM 信号的最佳时间(通常是在 PWM 既不完全开启也不完全关闭的点)对电流进行采样,以获得准确的电流。 然后将数字化的电流测量值输入控制算法中。PLL 确保以相对于 PWM 信号一致的间隔进行测量,使控制算法能够根据状态变量的变化精确修改 PWM 占空比,从而确保最佳电机性能。 通过将 ADC 采样与 PWM 同步,可以最大限度地减少开关噪声和失真的影响。 这在高功率电机控制应用中尤其重要,因为 PWM 信号可能会产生显着的噪声。
电流和位置测量
准确测量电流并使其与 PWM 脉冲同步至关重要。 使用定期采样、电流过采样和平均等技术来提高精度。
定期采样的频率与 PWM 的频率相同,因此挑战是确定适当的采样时间。 这涉及到在 PWM 周期开始和模数转换之间设置合适的延迟。
电流过采样涉及以高于 PWM 频率(有时高 8-32 倍)的频率进行采样并对测量结果取平均值。ADC 中断服务例程 (ISR) 频率可以远高于 PWM 频率,从而可以收集详细的数据。
过采样受到电流传感器带宽的限制。 例如,大多数通常用于电机控制的霍尔传感器的带宽在 50 kHz 到 160 kHz 之间。 正确定时和同步是处理影响相电流高频振荡的关键。
图 1:同步 PWM 和电流测量
图 1 显示了一个处理周期中的时序。 模数转换器 (ADC) 可配置为高频采样。 这需要设置 ADC 时钟并调整其采样率。 采样完成后,MCU或DSP处理这些样本以计算其平均值。 该计算通常在累积特定数量的样本后执行。 主处理中断服务程序 (ISR) 必须配置为在平均计算完成时触发。 此外,PWM模块的设置方式需要确保 ADC 采样、ISR 和 PWM 时序之间的同步。 现代 MCU 和 DSP 凭借其强大的处理能力、实时操作能力以及为管理 ADC、PWM 和 ISR 任务而设计的各种外设,擅长同时处理这些任务。
位置传感器数据的采样与主处理中断服务程序同步至关重要。 而且考虑数据传输引起的任何延迟,并且可以计算这些延迟以保持定时准确性。 应用任何滤波器时,重要的是要考虑相位延迟的影响。 在使用旋转变压器测量角速度的情况下,旋转变压器数据的处理必须是同步的,并且必须选择正弦和余弦信号幅度最小的点,以确保读数准确。此外,对旋转变压器信号进行过采样,并应用截止频率与 PWM 频率相匹配的带通滤波器。 这种方法有助于滤除不需要的频率,同时保持信号的完整性。
在高速系统中,必须推断位置以确保转子的准确性,从而使定子磁场相对于转子磁场正确对准。 精确的角度测量可确保在任何给定时间为电机提供适量的功率,从而减少能量损失、扭矩脉动、振动和发热。
本讨论主要集中于利用直接转子位置测量的磁场定向控制 (FOC) 应用。 它没有深入研究无传感器 FOC 应用,因为其中转子位置不是直接测量的,而是通过间接方法估计的。
安全功能
电机控制应用中常见的一些常见安全功能包括:
安全扭矩关闭 (STO):此功能立即切断电机驱动器的电源,使电机停止产生扭矩。 在紧急情况下,当需要尽快停止电机以防止伤害时,这是一个至关重要的功能。
安全方向 (SDI):防止电机沿意外方向运行。
安全操作停止 (SOS):此功能可在不切断电源的情况下使电机保持在停止状态。
安全速度范围 (SSR) 或安全限速 (SLS):确保电机在安全速度范围内或低于安全最大速度运行。
过流保护:此功能可保护电机和电子设备免受因短路或过载等故障引起的过电流损坏。
过压和欠压保护:这些功能可防止电压过高或过低,从而损坏电机或控制电子设备。
热保护:监控电机和驱动器的温度,如果温度超过安全限值,系统可以关闭以防止过热。
速度监控和限制:确保电机不超过预定义的速度限制,这对于超过特定速度可能会产生危险的应用至关重要。
紧急停止:物理按钮或开关,可以立即使电机停止。 这是工业应用中必须的标准功能。
安全制动控制:对于配备制动器的电机,此功能可以安全地接合制动器以停止电机,特别是在重力作用下会垂直移动的应用中。 在激活安全制动功能之前,系统首先尝试使用电气制动来停止电机(如果可行),在此过程中,能量流被反转以使电机减速。
安全功能可以通过硬件 (HW)、软件 (SW) 或两者的组合来实现,具体取决于应用的具体要求和限制。 过压和欠压保护、过流保护、热保护和紧急停止等安全功能通常在硬件中实现,以确保强大、快速和可靠的系统保护。
速度监控和限制、故障检测算法和安全操作停止 (SOS) 则在软件中实现。
安全扭矩关闭 (STO)、安全方向 (SDI)、安全速度范围 (SSR)/安全限速 (SLS) 和安全制动控制等功能通常通过硬件和软件组合来实现。 这种混合方法通常涉及用于启动和控制的软件命令,同时依靠硬件组件来有效执行和执行。
电机控制中的安全设计和功能安全主题(包括 SIL3 等标准)则是另外一个专门的主题。
嵌入式系统和电机控制领域的各种制造商提供全面的设计包和工具,旨在促进和加速工业、交通、能源和医疗等关键领域的设计和认证流程。 这些软件包通常包括预先认证的软件库、详细的安全手册以及旨在符合 IEC 61508、ISO 13849 等严格安全标准的硬件模块。 此外,他们还经常提供广泛的文档和支持,以实现 SIL(安全完整性等级)评级等认证,这对于高可靠性和安全关键型应用至关重要。 这种帮助不仅简化了开发流程,而且还显着减少了这些高度监管行业的合规性和认证所需的时间和精力。
实时操作系统(RTOS)
为电机控制应用选择正确的 RTOS 对于确保高性能、可靠性和安全性至关重要。 主要考虑因素包括 RTOS 的实时性能、资源效率(包括内存占用和 CPU 使用率)以及基于优先级的抢占式调度处理。 高效、快速的中断以及系统的可靠性和鲁棒性也是关键因素。 供应商支持和文档、与硬件的兼容性以及开发工具(如 IDE、调试器和分析器)和生态系统(包括库和代码示例)的可用性发挥着重要作用。 最后,还应考虑 RTOS 的许可条款和成本。
考虑到电机控制应用的各种因素和具体要求,FreeRTOS 这一广受好评的开源实时操作系统以其效率和多功能性而闻名,成为一个出色的选择。 在成本效益、运营效率、系统灵活性、可靠性和鲁棒性、易用性、广泛的硬件支持和资源效率等方面是关键考虑因素的场景中,这种选择特别有益。
应用架构
图 2:电机控制系统架构概述
电机控制应用的架构包括多个层和模块:
硬件抽象层 (HAL):提供用于访问硬件外设(包括 ADC、PWM 控制器和通信接口)的标准化接口,促进可移植性和可扩展性。 它还包含板支持包 (BSP) 和各种硬件外设的驱动程序,从而实现无缝的硬件软件集成。
核心实时运行层:该层包含实时操作系统 (RTOS),用于高效的任务调度和系统资源管理。 它还包括专门的内存管理,具有实时堆分配器,专为优化时间关键型应用程序中的内存分配而设计。 此外,该层集成了强大的内核间和进程间通信(IPC)机制,促进系统内不同内核和进程之间的无缝数据交换和同步。 该层作为核心操作功能的支柱,确保平稳高效的运行时性能。
中间件层:该层集成了如下几个关键功能:
- 通信接口:使用各种通信协议管理与外部系统或设备的交互。
- 跟踪和数据记录:专注于跟踪和记录特定的信号和事件,能够通过DAC、IO、以太网、UART、USB等通道实时输出数据。
- 软件上传:监督新软件版本或更新的上传,确保无缝集成和系统连续性。
- 配置管理:处理客户的系统配置设置优化和操作调整。
- 诊断和监控:提供系统诊断和持续监控工具,这对于维护系统健康和性能至关重要。
- 内置测试 (BIT):包括自测试功能,用于检查硬件和软件组件的状态和功能。
电机控制应用层:位于所有层的顶端是电机控制应用程序,它是执行特定于应用程序的工作流程的关键组件。 该层封装了:
- 控制和信号处理算法:这包括 PID 控制和磁场定向控制 (FOC) 等核心控制算法,以及旨在优化电机性能的信号处理算法。
- 安全逻辑:该组件致力于系统的安全方面,针对紧急情况和例行安全检查实施必要的协议,确保系统在安全参数内运行。
- 应用特定的工作流程:该层还集成了根据电机控制应用的特定要求定制的附加、独特的工作流程,确保全面的功能和性能。
应用程序工作流程
应用程序工作流程通常涉及几个关键步骤:
第一阶段引导加载程序 (FSBL):这个重要组件负责引导过程的初始阶段,包括低级硬件初始化和加载主要软件组件。 其作用的一个关键部分是加载和启动用户应用程序。FSBL 与应用层分开运行,通常由MCU或DSP在其SDK中提供。 通常需要定制BSP,例如添加额外的内存检查或诊断功能,以确保 FSBL 满足特定的系统要求并增强整体可靠性。
平台设置:硬件组件的初始化:这包括设置 ADC(模数转换器)、系统中断、PWM(脉宽调制)模块、通信接口(如 SPI、I2C、UART)、看门狗定时器和任何其他必要的硬件外围设备。 设置中断处理机制以响应定时器溢出/输入更改或通信等事件。 配置系统时钟、电源模式,并确保控制器和电机的高效电源管理。
应用程序配置:此步骤包含定义操作参数的关键任务,这通常是通过读取配置文件来实现的。 这些文件指定了电机特性、控制参数和操作限制等基本细节。 此外,配置设置可以通过各种方式进行调整,包括数字输入、DIP 开关,或通过外部 PC 或主设备的通信接口进行动态调整。 这种多方面的方法可确保灵活且适应性强的配置管理,满足广泛的应用程序需求。
这一阶段还包括:
- 定义任务:创建主控制任务、通信任务、运行状况监控任务等任务,这些任务对于应用程序的功能至关重要。
- 设置优先级:根据这些任务在应用程序中的重要性和作用为这些任务分配优先级。 这对于确保关键任务(如主控制任务)比不太关键的任务获得必要的 CPU 响应至关重要。
- 配置任务属性:这可以包括设置堆栈大小、指定任务参数以及配置任何特定于任务的属性。
- 建立任务间通信:建立任务间通信的机制,例如队列、信号量或共享数据结构。
传感器校准:在传感器集成的应用中,其校准对于确保读数的准确性至关重要。 具体来说,常用的霍尔效应传感器表现出必须考虑的初始偏移。 在校准阶段,这些初始偏移被识别并随后从电流测量中减去以校正传感器输出。 此步骤对于保证传感器数据的精度至关重要。
通信和监控:处理与外部设备或系统的通信,以进行命令和控制、诊断或远程监控。
人机界面 (HMI)
在电机控制应用中,HMI 可以表示简单的物理控件和指示器(例如按钮、LED 或显示器)或远程控制接口。
这部分工作流程包括:
传感器数据采集:实时读取和处理来自传感器的数据,这是控制回路反馈所必需的。
- 实时控制循环执行:这是执行主要控制算法(如 PID 控制或FOC)的地方,通常在主控制器中执行。响应定时器中断以获得一致的定时。
- 执行器命令生成:根据控制算法的输出,为电机驱动器等执行器生成命令。 它通常涉及设置特定的数字输出和 PWM 信号生成。
- 安全和紧急情况处理:为了确保立即响应安全和紧急事件(例如紧急停车),应在这个专用阶段按顺序并高度优先地处理这些事件。 这种方法不仅最大限度地减少了处理关键事件的延迟,而且还增强了系统的整体安全性和可靠性。 此外,此阶段还包括检测和响应各种类型的故障,包括过流、过压和硬件故障。 通过对这些任务进行优先级排序,系统能够更好地及时解决和减轻潜在风险,从而确保更安全的操作环境。
关键原则是维护一个简洁的中断服务例程(ISR),主要用于在需要进一步处理时通知主控制任务。 它的主要作用不是执行 ISR 内的整个控制逻辑,而是通知更高优先级的任务有关事件的发生。 为此,FreeRTOS 提供了各种通知方法,例如二进制信号量、任务通知或队列。 主控任务是一个RTOS任务,负责主控算法。 一旦收到 ISR 通知,该任务就会激活(或解锁)并执行前面描述的所有必要步骤。 为主控制任务分配适当的优先级以确保控制算法在 ISR 之后及时处理至关重要。
应使用看门狗定时器来确保主任务的运行,该任务被设计为定期重置看门狗定时器,展示其正确操作并防止定时器到期并触发系统重置或错误例程。
系统健康监控:持续监控系统是否存在过热或其他异常等故障,并在检测到任何问题时采取适当的措施。
日志记录和数据记录:记录重要事件、错误和系统性能指标,以供将来分析或故障排除。
图 3:数据旅程:从电机控制器记录到 PC 分析
正常关闭:确保应用程序停止时电机和控制器安全关闭。
如果应用程序运行在多核MCU/DSP/FPGA上,则必须确保适当的核间通信机制。 这可以使用片上共享 RAM 和软件中断来实现,但方法可能会因平台而异。 其他可能性包括消息传递接口、直接内存访问 (DMA) 通道或使用特定于架构的专用硬件通信块。
一种常见的方法是让一个内核专门处理通信任务,另一个内核用于主控制循环。 通常在两个内核上使用 RTOS 来实现高效的任务管理,但主控制内核通常在裸机环境中运行,以实现简化的低级控制。 包括德州仪器 (TI) 的CLA、ARM 的 Cortex-M DSP 扩展、意法半导体的 ART 加速器、Microchip 的 dsPIC、恩智浦 (NXP) 的电机控制协处理器以及英飞凌 (Infineon) 的 XMC 数字协处理器,都提供专门的处理单元, 以增强特定嵌入式系统应用的性能。 此类扩展增加了整体计算带宽,并释放 CPU 来执行其他任务,例如通信、监控和诊断。
END
作者:Boris Radonic
来源:strongerHuang
推荐阅读
更多电机控制技术干货请关注电机控制专栏。
迎添加极术小姐姐微信(id:aijishu20)加入技术交流群,请备注研究方向。