基于模型的设计简化嵌入式电机控制 系统开发 -...

8
加入我们 基于模型的设计简化嵌入式电机控制 系统开发 作者:Dara OSullivanJens SorensenAengus MurrayADI公司 本文描述了围绕基于ARM ® 的嵌入式电机控制处理器构建的基于 模型设计(MBD) 平台的详细情况。随后,本文提供最初部署的基 本永磁同步电机(PMSM) 控制算法示例,并介绍了方便的功能扩 展,以包含自动化系统的多轴位置控制。 长期以来,系统和电路建模一直是电机控制系统设计的重要方 面。采用MBD方法后,电气、机械和系统级模型用于在构建和测 试物理硬件前评估设计概念。MathWorks最新的仿真工具可以对 完整的嵌入式控制系统进行建模,包括电气电路和机械系统领 域。同时,嵌入式编码工具从控制系统模型生成C语言代码,将 控制算法部署在嵌入式控制平台上。 这些工具实现了基于模型的设计过程,人们可以在最终硬件测试 前先在仿真平台上进行设计并完全测试。成功构建MBD平台的关 键是分隔系统模型和嵌入式软件代码。一旦MBD平台使用已知算 法和系统进行测试后,便可开发新算法,并在仿真平台上以系统 工作极限安全地测试。 完整的设计流程 MBD经过数十年的探讨,直到最近几年才发展为从模型创建到完 整实现的完整设计流程。MBD是解决设计复杂嵌入式控制系统相 关问题的数学和可视化方法。设计师无需使用复杂的结构和大量 软件代码,通过连续时间和离散时间构建模块,就可以使用MBD 定义具有高级功能特性的各种模型。这些与仿真工具一同使用的 模型能够缩短原型设计、软件测试和硬件在环(HIL)仿真的时间。 通过仿真,我们能够立即发现各种规范差异和模型误差,不会等 到设计周期的后续环节才发现。为了优化整体代码生成过程,可 以加入自动代码生成来减少任何手动部署步骤,并进一步有助于 缩短整体产品上市时间。总而言之,MBD方法使设计师能够从更 多经典设计方案开始扩展,以可控方式直接从模型创建转到仿 真、代码生成和HIL测试,无需重新设计整个系统就可对系统行 为作出递增改变。 本文中的实验性设置基于交流馈入闭合电机控制系统,如图1所示。该 系统表示一个功能完整的PMSM市电输入电机驱动,具有功率因数校正、 完全控制、通信信号隔离和光学编码器反馈功能。该系统的核心是一个 ARM Cortex ® -M4混合信号控制处理器,即ADIADSP-CM408。它通过搭配IAR MathWorks公司的工具,实现完整的MBD平台部署。 交流电机驱动系统建模 目标驱动系统是带有编码器位置反馈的PMSM,连接三相交流电 源逆变器,带有隔离式相位电流反馈。驱动控制算法部署在混合 信号专用信号处理器(ASSP),包含外设,可捕获电机反馈信号并 控制电源逆变器。 CPU 100V TO 250V 15V_ISO 5V_ISO 5V_ISOW 5V INRUSH PFC PWM (6) 3V3_ISO EN PFC EN PWM V AC C DC V DC V DC I AC I DC I V , I W T C RS-232 CM408 3V3 J-LINK 1V8 UART PWM TRIP TRIP GPIO SINC ADC MUX QEP SPI I 2 C SRAM FLASH JTAG SPRT ADM3202 ADP121 ADP7102 ADP1047 AD8515 PWM(6) AD8515 AD8662 FEEDBACK SELECTION ADN4662 E S C A B Z AD2S1210 AD8515 AD7417 AD8515 ADCMP600 ADP3634 ADP1715 ADP1864 EMI LIVE CIRCUIT IGBT MODULE SHUNT SENSORS CURRENT FEEDBACK OPTIONS POSITION FEEDBACK OPTIONS MOTOR 0.5HP RES ENC HE SENSORS G D ADuM1401 ADuM2250 ADuM1310 ADuM1310 AD7401 ADuM5000 MATLAB ® SIMULINK GUI WORKBENCH (a) (b) 1. 驱动系统平台(a)交流馈入闭合电机控制系统框图(b)系统原型制作 技术文章 analog.com/cn

Upload: others

Post on 21-Jun-2020

18 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: 基于模型的设计简化嵌入式电机控制 系统开发 - …mouser.eetrend.com/files/2017-12/wen_zhang_/100009549...个功能模块,来实现平台灵活性,并方便开发。关键的代码功能

加入我们

基于模型的设计简化嵌入式电机控制 系统开发作者:Dara O’ Sullivan、Jens Sorensen、Aengus Murray,ADI公司

本文描述了围绕基于ARM®的嵌入式电机控制处理器构建的基于

模型设计(MBD)平台的详细情况。随后,本文提供最初部署的基

本永磁同步电机(PMSM)控制算法示例,并介绍了方便的功能扩

展,以包含自动化系统的多轴位置控制。

长期以来,系统和电路建模一直是电机控制系统设计的重要方

面。采用MBD方法后,电气、机械和系统级模型用于在构建和测

试物理硬件前评估设计概念。MathWorks最新的仿真工具可以对

完整的嵌入式控制系统进行建模,包括电气电路和机械系统领

域。同时,嵌入式编码工具从控制系统模型生成C语言代码,将

控制算法部署在嵌入式控制平台上。

这些工具实现了基于模型的设计过程,人们可以在最终硬件测试

前先在仿真平台上进行设计并完全测试。成功构建MBD平台的关

键是分隔系统模型和嵌入式软件代码。一旦MBD平台使用已知算

法和系统进行测试后,便可开发新算法,并在仿真平台上以系统

工作极限安全地测试。

完整的设计流程

MBD经过数十年的探讨,直到最近几年才发展为从模型创建到完

整实现的完整设计流程。MBD是解决设计复杂嵌入式控制系统相

关问题的数学和可视化方法。设计师无需使用复杂的结构和大量

软件代码,通过连续时间和离散时间构建模块,就可以使用MBD

定义具有高级功能特性的各种模型。这些与仿真工具一同使用的

模型能够缩短原型设计、软件测试和硬件在环(HIL)仿真的时间。

通过仿真,我们能够立即发现各种规范差异和模型误差,不会等

到设计周期的后续环节才发现。为了优化整体代码生成过程,可

以加入自动代码生成来减少任何手动部署步骤,并进一步有助于

缩短整体产品上市时间。总而言之,MBD方法使设计师能够从更

多经典设计方案开始扩展,以可控方式直接从模型创建转到仿

真、代码生成和HIL测试,无需重新设计整个系统就可对系统行

为作出递增改变。

本文中的实验性设置基于交流馈入闭合电机控制系统,如图1所示。该

系统表示一个功能完整的PMSM市电输入电机驱动,具有功率因数校正、

完全控制、通信信号隔离和光学编码器反馈功能。该系统的核心是一个

ARM Cortex®-M4混合信号控制处理器,即ADI的ADSP-CM408。它通过搭配IAR

和MathWorks公司的工具,实现完整的MBD平台部署。

交流电机驱动系统建模

目标驱动系统是带有编码器位置反馈的PMSM,连接三相交流电

源逆变器,带有隔离式相位电流反馈。驱动控制算法部署在混合

信号专用信号处理器(ASSP),包含外设,可捕获电机反馈信号并

控制电源逆变器。

CPU

100V TO250V

15V_ISO

5V_ISO

5V_ISOW

5VINRUSH

PFCPWM (6)

3V3_ISO

ENPFCENPWM

VAC

CDC

VDC

VDC

IAC

IDC

IV, IW

TC

RS-232CM408

3V3

J-LINK

1V8UART

PWM

TRIP

TRIP

GPIO

SINC

ADC

MU

X

QEP SPI

I2C

SRAM

FLASH

JTAG SPRT

ADM3202

ADP121

ADP7102

ADP1047

AD8515

PWM(6)AD8515

AD8662

FEEDBACKSELECTION

ADN4662

E

SC

AB

Z

AD2S1210

AD8515

AD7417

AD8515

ADCMP600

ADP3634

ADP1715ADP1864

EMI

LIVE CIRCUIT IGBT MODULE

SHUNTSENSORS

CURRENT FEEDBACKOPTIONS POSITION FEEDBACK

OPTIONS

MOTOR0.5HP

RES ENC

HESENSORSG

D

ADuM1401ADuM2250 ADuM1310 ADuM1310

AD7401 ADuM5000

MATLAB ®SIMULINKGUIWORKBENCH

(a) (b)

图1. 驱动系统平台(a)交流馈入闭合电机控制系统框图(b)系统原型制作

技术文章

analog.com/cn

Page 2: 基于模型的设计简化嵌入式电机控制 系统开发 - …mouser.eetrend.com/files/2017-12/wen_zhang_/100009549...个功能模块,来实现平台灵活性,并方便开发。关键的代码功能

系统有三个主要组件可用于建模:电源逆变器和电机(对象)、控

制反馈电路和数字控制器。对象模型使用Simulink Simscape组件来

仿真连续时间域内的电源逆变器电气电路和电机机电元素。反馈

电路模型处理控制器和电机驱动模型之间的增益和数据类型。

Simulink嵌入式编码器工具创建的C语言代码可以在仿真平台和嵌

入式控制处理器上精确反映算法的执行。基于模型设计的成功执

行有赖于精确的系统和电路模型,以及正确分隔系统模型和嵌入

式控制软件。由于系统中混合了离散和连续时间函数,因此该仿

真求解器采用了固定步长离散求解器。

驱动系统硬件包括电源板、控制板、以及带编码器反馈的PMSM

(参见图1b)。电源板包含输入整流器、三相逆变器模块、电流和

电压传感器、数字和模拟信号隔离电路,以及编码器信号缓冲

器。控制板包含电机控制ASSP(集成240 MHz ARM Cortex-M4F内核)

以及专用电机控制外设(包括PWM定时器、正交编码计数器、Sinc

滤波器和嵌入式模数转换器(ADC))。硬件包含电机电流反馈选

项,采用隔离电流传感器(集成嵌入式ADC)或分流器(集成隔离式

ADC Σ-∆型转换器),以及嵌入式Sinc滤波器。

反馈信号采集和控制算法执行通过处理器中断机制与PWM开关频

率同步。由于对象中被关注的时间常数远长于PWM开关周期,系

统仿真采用相同的时间步长。由于全开关信号仿真无法提供有用

的控制信息,电源逆变器使用平均值模型。

PMSM电机模型来源于MathWorks SimPower系统库,受配置菜单(甚

至预设模型参数)的支持。用户可以在自定义电机或逆变器模型

之间切换,具体取决于设计开发的要求。

电机控制(MC)算法模型是一组离散时间函数,每一个时间步进均

在仿真和嵌入式平台上执行。通常,MC算法函数包含在单个子

系统模块内,简化代码产生过程。代码生成器创建C语言代码,

来执行算法输入、输出和状态变量的控制算法和数据结构。算法

本身是常用的磁场定向控制(FOC),具有外部速度环路、内部d轴

和q轴电流环路,如图2所示。

逆变器接口和反馈路径分为传感器信号调理和嵌入式接口模块。

电流传感器和信号调理模型是简单的增益元素,因为它们的带宽

超出了控制反馈所关心的范围。位置传感器模型更为复杂,因为

它提供高分辨率增量位置信号和低分辨率绝对位置信号。

嵌入式信号接口模型包括类型转换函数,因为ADC、Sinc滤波

器、计数器和定时器外设具有16位或32位定点输出数据寄存器。

每个嵌入式接口的增益都是外设系统时钟速率、采样速率和接口

外设寄存器设置的函数。模型参数必须匹配嵌入式系统配置,确

保仿真结果的精确性。

软件分隔和代码生成

电机驱动系统执行多种功能和电机控制算法。嵌入式软件分为多

个功能模块,来实现平台灵活性,并方便开发。关键的代码功能

是系统初始化、通信接口、应用任务、电机控制接口和电机控制

算法。图3显示的是高电平驱动程序流程图,图4显示的是代码

结构。

主程序调用初始化例程来配置ASSP硬件,然后将处理器置于连

续等待环路。所有其它函数都由事件驱动型中断服务例程(ISR)

调用。ADC中断具有最高优先级,而当新传感器数据样本就绪

时,ADC ISR调用电机控制函数。ADC采样与PWM切换同步,为控

制环路提供执行时序。ADC ISR每一个PWM周期执行一次,但仅在

电机运行标识置位时才调用电机控制例程(PMSMctrl)。在代码构建

前选择电机电流反馈路径。

PWM触发中断是异步的;它仅在响应硬件故障时才会调用,而且

是延迟故障的唯一函数,因为硬件PWM触发函数会自动关断逆变

器PWM信号。通信端口ISR具有较低的优先级,处理用户命令,

并发送调试监控器函数捕捉的数据。内核定时器ISR管理背景应

用任务,比如电机启动和停止序列、调试监控器接口以及其它管

理类任务。

PI

FIELDFLUX LOOP

TORQUE LOOP

FORWARD PARK

FIELD ALIGNMENTCURRENT LOOPSVELOCITY LOOP

COMMAND

PI

PI

VOLTAGE CONTROL

CURRENTAND POSITION

FEEDBACKCLARKE

PW

M M

OD

ULA

TO

R

3 �

INV

ER

TE

R

SHAFTSENSOR

MOTOR

ENCODERALIGNMENT

(FINE) A, B

HU,HV,HW(COARSE)

PERIPHERAL

CONTROL

�*

+0

cos(�)

sin(�)

−sin(�)

cos(�)

�r�r

�r d�

dt

�abs �inc

�abs

Iq*

Id*

ia

ia=

−ib −ic

ib

ibiaiq

id

ib

ic ic

ic

Rs

Rs

Rs Ls

Ls

Ls

Vd*

Vq*

V�

V�

i�

i�

Va*

Va

Vb* Vb

Vc*

Vc

REVERSE PARK

cos(�)

−sin(�)

sin(�)

cos(�)

GPIO

QEP

sin(�) cos(�)

ADC1

ADC0

FORWARDCLARKE

1 0

− √32

− √32

− √32

+ √32

√31

√3−1

0

1 0 0

图2. FOC算法

2 | 基于模型的设计简化嵌入式电机控制系统开发

Page 3: 基于模型的设计简化嵌入式电机控制 系统开发 - …mouser.eetrend.com/files/2017-12/wen_zhang_/100009549...个功能模块,来实现平台灵活性,并方便开发。关键的代码功能

图3. ISR说明

图4. 代码分隔

嵌入式代码按照功能组织而不是按编程顺序组织。系统初始化代

码时以标准方式设置处理器时钟、电源和内核定时器,与应用程

序函数几乎无关。通信和应用程序任务代码通过用户接口和系统

管理要求定义,与电机控制算法几乎没有关系。

电机控制(MC)接口函数管理电机驱动硬件和控制算法之间的信号

数据流。此代码专门用于控制驱动电路以及控制为控制算法提供

反馈信号的电机控制相关外设。电机控制算法是独立于平台的代

码,由Simulink生成,包含反馈和输出信号的数据结构。所有其

它驱动代码均为手动编码。

实现细节

若要发挥MBD的最大效益,理解电机控制系统不同部分的建模详

细要求并尽可能将关键物理系统参数与相应模型参数相匹配很重

要。这包括将已建模的系统分隔为不同的详细部分。总体而言,

以PWM平均值方式对整个系统建模就足够了。例如,在高频PWM

开关周期中以平均值处理所有信号,并且在电压或电流信号中不

包含PWM纹波或开关分量。

系统模型分隔至逻辑模块内,如图5所示(图中显示相关信号流)。

每一个模块再进一步细分(如图中右侧所示),且每一个子模块采

取适当的建模方法,如表1中所列。表中未列出用户命令模块。

用户命令通过C语言代码内部的全局参数结构与内核算法通

信;一旦它们在Simulink算法中定义为全局可调参数后,便可正

确处理。

图5. 系统模型分隔

ISR

ISR

ISR

ISR

WAIT

ADC

PWM TRIP

COMM

KERNELTIMER

APPLICATION TASKS:START/STOP/SPEED

SIGNAL MONITORPFC INTERFACE

SYSTEM FAULT MONITOR

RECEIVE USER INPUTTRANSMIT MONITOR DATA

INITIALIZECLOCKSI/O PINS

PERIPHERALSINTERRUPTS

MC SETTINGSPWMADC

TIMERSPORTS

SET FAULT FLAG

UPDATE i, �, � INPUTSPMSMctrl

OUTPUT AH, BH, CHRUN

STOP

MOTORCONTROL

ALGORITHM

INVERTER

CPU

CORE

RAM

PLL

COMM/APP SYSTEM INIT

HANDWRITTEN C CODE

COMMAND

AC MOTORMC INTERFACE

iv, iw

�, �

AUTOGENERATEDC CODE

GA

TE

DR

IVE

UART

CAN

ETH

PWM

ADC

QEP

DRIVERCIRCUITS

PERIPHERALS

COREALGORITHM

ELECTRO-MECHANICAL

SYSTEM

SENSORSAND

INTERFACE

USER COMMANDS

USER COMMANDS

ENCODER

I/V SENSORS

SIGNALCONDITIONING

INV

ER

TE

R

MO

TO

R

ME

CH

SY

ST

EM

GATEDRIVERS

ADC, PWM, QEP,GPIO, TMR

PROCESSOR

PROCESSOR

AUTOCODE/MODEL

TRIP

1

4

3

2

表1. 模型考虑因素

模块 建模/代码生成 关键参数

机电系统(1)*逆变器:均值函数模型,非常简单 无

电机:标准机电DQ模型 定子电感、反电动势/扭矩常数

机械系统:标准刚度-惯性-摩擦模型,特定应用 负载惯量

传感器和接口(2) 函数模型 增益、失调

处理器(3) 外设:函数模型 定标系数、量化效应

内核算法:从此处生成代码 高效部署、定点/浮点边界

驱动器电路(4) 函数模型 无

*括号中的数字对应图5中的框图。

analog.com/cn | 3

Page 4: 基于模型的设计简化嵌入式电机控制 系统开发 - …mouser.eetrend.com/files/2017-12/wen_zhang_/100009549...个功能模块,来实现平台灵活性,并方便开发。关键的代码功能

除了基本设置(比如类型大小、字节顺序等),通过使自动代码生

成变为不针对某个特定目标,便可最大程度实现代码便携性和易

于维护。MathWorks提供特定处理器的代码生成模块,可直接寻

址处理器外设和驱动器。虽然某些情况下这种功能非常吸引人,

其缺陷是代码便携性不足,且设备驱动程序或外设配置的任何

改变(比如新处理器变体)都将要求更改代码。因此,在本文所述

的设计示例中,代码生成仅限控制算法,而Simulink模型包含全

部外设函数模型,并在应用项目中手动编码。此方法在图6中强

调;由图可知,MathWorks控制器模型生成的代码连接至主应用

程序项目的其它代码和库模块。

(a)

(b)图6. 模型代码接口

带分隔模型模块的Simulink模型如图7所示。如图所示,代码由模

型的电机控制算法部分生成。代码生成的重要设置可在配置代码

硬件部署窗口中选择(该窗口中可以选择整体设备类型),以及

在配置参数代码生成接口窗口中选择(在该窗口中选择标准

数学库)。

影响代码效率的另一个因素是使用的C语言“方言”。大部分代码

生成工具以及嵌入式工作台支持的常见“方言”是C89/C90和C99。

最重要的是,在工具中应当使用相同的“方言”。例如,如果嵌

入式工作台配置为根据C99构建代码,则自动代码生成工具必须同

样依据C99标准构建代码。如果不能做到这一点,则代码性能会大

打折扣,甚至在最差的情况下会使代码产生非预期的作用。

另一个重要的因素是定点和浮点类型表示。两种编码“方言”均

支持定点,因此这种情况下选择何种“方言”并不重要,只要在

所有工具中使用相同的“方言”即可。然而,如果使用了浮点类

型,则C“方言”的选择就变得很重要。

C89/C90不区分单精度浮点和双精度浮点。如果代码要在支持双

精度的处理器上运行,那这样做也许是可以接受的;但对于仅支

持单精度的处理器而言(比如ARM Cortex-M4),情况就大为不同了。

请记住,应当确保自动代码生成工具以及嵌入式工作台设置为使

用C99“方言”。

Simulink提供Simscape和SimMechanics等工具箱,当物理参数已知

时可用来为机电系统轻松建模。即使物理参数未完全特性化,预

定义组件模型(比如电机)可以加载大致相当的规格,实现电机控制

算法的初步设计。就算法本身来说,某些模块很有用,比如Park

变换和正弦余弦CORDIC近似模块可以简化电机控制算法的开发。

自动代码接口由初始化函数调用和一个或多个时间步长函数调用

定义,必须在主应用程序代码内以适当的时间步长调用。本例

中有两个时间步进函数——主控制算法,在10 kHz PWM速率时调

用,以及速度测量函数,在1 kHz速率时调用。自动生成的代码模

块集成至主项目中,如图8所示。

SYSTEM MODEL

MOTOR/INVERTER

MODEL

TEST SIGNALS VERIFY

CODEGENERATION

CONTROLLERMODEL

MOTOR DRIVE SYSTEM

EMBEDDED CONTROLLER

SYSTEM MOTOR/INVERTER

HW

PC

TARGET

ARM LIBRARY• M3/M4 SUPPORT

EXECUTABLE

DEVICE DRIVERS• SW ENABLEMENT PACKAGE

APPLICATION CODE• STATE MACHINES

C CODE C CODE

C CODE

MOTOR CONTROL• FOC FUNCTIONS

SCHEDULING• IRQS/RTOS

DEVICE DRIVERS• FUNCTIONAL MODEL

SYSTEM RESOURCES• ALLOCATION AND SETUP

LEGACY CODE• EXISTING CODE

ADSP-CM40x

VDC_MEAS

DCP

DCM

A

DUTY

B

C

+

DC_LINK

DISCRETE,s = 0.0001s

POWER GUI

VDC

B6

DUTY_ABC

POWER INVERTER AND MOTOR (MODEL)

MC ALGORITHM(SIMULINK)

PMSMCTRL

ADSP-CM40x

PMSM

[DUTY_ABC]

[RPM]

T

[IABC]

[CNT_A]

[CNT_B]

[CNT_C]

ePWM

SLATERPMSM

CC AND LINK DEVICE DRIVERS

EMBEDDEDDECODER

[CNT_A]

[CNT_B]

[IABC_ADC]

CURRENT SENSOR

VOLTAGE SENSOR

[IABC]

[VDC_ADC][CNT_C]

[THETA_QEP]

[ABC_ADC]

[VDC_ADC]

A

VABC

IABC

B

C

ABC

VARPM

IABC

THETA

[RPM]

[IABC]

[THETA]

[ALL_ABC]

VB

VC

MC C CODEDEVICE DRIVERS

APPLICATION CODE

MC APPLICATIONFIRMWARE

IABC_SNS IABC

[THETA_QEP] QEP_cnt

POSITIONSENSOR

SENSORS, INTERFACES,AND DEVICE DRIVERS

[PD]

[VDC]VDC_SNS VDC

THETA_SNS

THETA

HALL_ABC

[THETA]

[HALL_ABC]HALL

[PD]

K–

ADC

IABC_ADC

VDC_ADC

IABC_SNS

VDC_SNS

QEP

THETA_SNSQEP_CNT

PD

PD HALL_ABC

CNT_A

DUTY_ABC CNT_B

CNT_C

图7. 建模和代码生成部署

4 | 基于模型的设计简化嵌入式电机控制系统开发

Page 5: 基于模型的设计简化嵌入式电机控制 系统开发 - …mouser.eetrend.com/files/2017-12/wen_zhang_/100009549...个功能模块,来实现平台灵活性,并方便开发。关键的代码功能

图8. 代码模块组织和算法函数调用

如图所示,代码以模块化方式组织,集成特定应用函数,比如联

网和保护,非常直观。高优先级任务(比如电机控制算法)从图3中

的ISR处调用。应用程序级任务从基本调度程序内核处作为调度

任务调用。MC接口例程包含于电机控制和测量代码模块中,后

者包含所有电流反馈信号处理代码。ADI电机代码包含用于系统

测试的调试监视器函数,可以在电机运行时捕捉应用和控制算法

信号数据。数据通过串行链路传输至PC,以供显示和分析。

系统测试与调试

通过测量、计算和查阅数据手册确定表1中的关键参数后,速度

和电流环路的正确控制器增益便可使用Simulink模型确定。这可

以利用标准PID调谐法[2]或MathWorks提供的调谐工具(比如PID调谐

器工具)实现。该过程详见参考文献3。

建模和实验操作的电流环路性能如图9和图10所示。该曲线中的

实验数据仅每隔5 ms采样一次,因此存在一些混叠,但整体趋势

非常明显。

基于模型的自动生成代码的性能可以通过在PWM周期内检查代码

执行的时间期限确定。这可以使用I/O引脚和示波器来完成,或更

简单地使用IAR Embedded Workbench C-SPY调试器中的ITM事件功能

来完成。PWM周期中事件的序列如图11时间期限所示。

PWM同步脉冲发生在每一个新PWM周期开始处,并在硬件中连接

ADC定时器,控制每个ADC通道的采样。这种情况下,电机电流

将在PWM同步脉冲之后立即采样,并直接存储器存储(DMA)至存

储器,然后执行算法,并生成PWM占空比更新值。如图11所示,

执行基于模型的自动生成代码消耗的PWM周期不到10%,从而允

许有大量的其它背景任务开销。以前对于自动生成代码效率的担

忧将不复存在。

(a)

(b)

图9. 比较模型操作和经验操作的(a)速度响应以及(b) q轴电流参考

图10. 电流环路性能——模型和经验结果

图11. 代码执行时间期限

10kHz FUNCTION CALL

1kHz FUNCTION CALL

INITIALIZATION CALL

SPEED REFERENCE

SP

EE

D (p

m)

TIME (s)

00

360

720

1080

1440

1800

0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1

MODELEXPERIMENTAL

Q-A

XIS

CU

RR

EN

T (A

)

TIME (s)

00

360

720

1080

1440

1800

0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1

IQ-REF: MODELIQ-REF: EXPERIMENTALIQ:MODELIQ:EXPERIMENTAL

Q-A

XIS

CU

RR

EN

T (A

)

TIME (s)

00

0.06

0.12

0.18

0.24

0.3

0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1

IQ-REF: MODELIQ-REF: EXPERIMENTAL

HIGH OPT

AVAILABLE FOR BACKGROUND TASKSALGORITHM

ADC SAMPLING

PWM SYNC PWM SYNC

0×140×0A

0×00 0×000×0

87.2�s8.2�s4.7�s

analog.com/cn | 5

Page 6: 基于模型的设计简化嵌入式电机控制 系统开发 - …mouser.eetrend.com/files/2017-12/wen_zhang_/100009549...个功能模块,来实现平台灵活性,并方便开发。关键的代码功能

就代码尺寸而言,算法自动代码的相对尺寸如表2所示;可以看

出,自动生成的代码仅占据略大于10 kb的存储器,约为总尺寸的

15%。ADSP-CM408的可用SRAM为384 kB,显然可以轻松支持该存

储器要求,允许程序以最高速率从SRAM运行,并提供足够多的

裕量用于更复杂的算法和其它监控或用户接口功能。

表2. 代码模块尺寸

模块 代码(字节) 数据(字节) 总计

电机控制外设 (PWM、编码器)

1584 94 2.3%

测量外设 (ADC、Sinc、串行监控)

2224 2691 6.7%

PFC控制器配置和监控 3032 2149 7.1%

用户接口外设 (UART、LCD)

1484 5055 9%

系统 (内核、状态机、启动)

1192 1364 3.5%

算法自动代码 5656 5022 14.7%

驱动程序、库 21,596 19,737 56.7%

总计 36,768 36,112 72,880 (100%)

新应用程序开发

本文所讨论的软件假设为含有两个主要组件的系统。第一个是基

于模型的组件,部署控制算法。虽然模型以嵌入式目标为原则开

发,从自动生成工具获取的代码本质上是通用的。第二个是手

写软件组件,将通用算法代码绑定至嵌入式目标,处理调度并

分配处理器资源。在重用模型和扩展性方面,这种系统分隔有

一定优势。

本文讨论了单个电机(单轴)的控制开发。现在,想象驱动程序规

格通过同一个处理器调用两个电机(双轴)控制。无疑,这对系统

来说是一个很大的变化,但采用通用模型进行工作的优势也得

以凸显。已经完成开发的单轴模型不对处理器外设作出任何假

设——它是PM电机的通用控制算法。因而,创建一个可以控制

单轴/双轴的模型就变成了创建单轴模型第二个实例的问题。

自然,手写代码需要修改才能支持单轴/双轴,但假设处理器具

有一组正确的外设和计算资源来控制双轴,则手写代码的修改

也很直观。无论控制的是单轴或是双轴,手写代码的主要任务都

是将数值分配至模型的输入、将模型的输出写入处理器外设,以

及调度模型的执行时间。因此,从单轴到双轴只不过是外设的分

配/配置,并调度增加轴的算法执行时间。该过程是无缝的,并

由于模型是通用的这一事实而得以实现。

如果只开发一个单控制系统,那么使用基于模型的设计优势有

限。然而,大多数情况下,产品开发意味着多个产品变体,并且

对于这些情况而言,重用模型具有很大的吸引力——不仅因为缩

短了开发时间,还由于使用受信任模型而导致的质量不断上升。

随着时间的推移,算法开发人员将会创建模型库;如果部署正

确,这些模型可在不同产品之间重用。由于模型是通用的,它们

可以运行在目前和未来的处理器上。

除了满足产品变体的潜在要求或控制多轴之外,开发人员有时候

还能提供不同的控制器模式。一个典型的例子便是提供扭矩控

制、速度控制和位置控制模式的应用。在电流和速度控制算法的

基础构建块上可以部署位置控制算法。

在大多数应用中,位置控制环路作为围绕内层速度和电流环路的

外层。基本的位置控制器仅需比例增益项。一般不需要积分项,

因为位置环路中的任何稳态误差都会导致非零速度参考。若内层

电流和速度环路经过良好调谐,则这些可以视为理想的单位增益

模块,以及调谐位置环路变为一个直观的任务。

除了外层比例控制环路,包含一个位置参考也可能很重要,以便

负载遵循定义的周期和加速度与减速度速率。这对于最大程度减

少很多系统中的机械应力而言十分重要。在本应用示例中,恒定

加速度、恒定速度和恒定减速度曲线施加到位置参考变化,如图

12所示;图中表示位置参考、曲线位置参考以及相应的理想速度

曲线。至于哪个实际速度遵循该曲线则取决于速度控制器的动态

响应。

图12. 位置参考曲线

所有这些功能——位置环路增益、位置曲线以及辅助功能(比如

回零定位和终端-停止检测)作为额外模块部署在代码中基于模型

的部分。唯一需要的手写代码更改是I/O配置,以支持家庭位置和

终端-停止信号。

结论

基于模型的设计是强大的工具,可以加速电机驱动制造商的嵌入

式开发。如果以通用方式设置和配置,则可以大幅减轻手写代码

开发和维护的重担。它还能加快产品上市时间,因为代码开发可

在缺少硬件的情况下初始处理——只要提供关键系统组件的合理

精确模型。

这些特性已在PMSM驱动器情形中得到证实,该驱动器在扩展至

多轴和位置控制的FOC下操作。对软件模块和基于模型的组件进

行分割的方法已经详细说明,可以优化基于模型的解决方案提供

的数值。实验数据也表明了模型在优化速度控制器参数、代码生

成紧凑性和效率方面的优势。

POSITION REFERENCE

PROFILED POSITION REFERENCE

IDEAL VELOCITY PROFILE

6 | 基于模型的设计简化嵌入式电机控制系统开发

Page 7: 基于模型的设计简化嵌入式电机控制 系统开发 - …mouser.eetrend.com/files/2017-12/wen_zhang_/100009549...个功能模块,来实现平台灵活性,并方便开发。关键的代码功能

参考文献

www.analog.com/cn/cm4xx

Drury、Bill。《控制技术传动与控制手册》。《IET电力和能源系

列》,第2版,2009年。

O’Sullivan、Dara、Jens Sorensen、Anders Frederiksen。“闭环电机控

制中基于模型的设计工具。”PCIM Europe 2014展会;电力电子、

智能运动、可再生能源和能源管理国际展览会与研讨会;论文

集,2014年5月。

作者简介

Dara O’Sullivan是ADI公司电机与功率控制部门的一名系统应

用工程师。其专长领域是交流电机控制应用的功率转换和

控制。O’Sullivan拥有爱尔兰科克大学工程学士、工程硕士

和博士学位。联系方式: [email protected]

Jens Sorensen是ADI公司应用工程师,负责工业应用的电机

控制解决方案。他的主要兴趣在于控制算法、电源电子和

控制处理器。Sorensen目前专注工业应用,而在早期职业生

涯中致力于开发家用电器和汽车应用中的电机控制和电源

电子元件。联系方式: [email protected]

Aengus Murray是ADI公司汽车、能源和传感器部门的电机和电

源控制应用经理。他负责工业电机和电源控制的整个ADI信

号链产品。Murray拥有爱尔兰都柏林大学电气工程学士和

博士学位。他在功率电子行业拥有超过30年的丰富经验,

曾先后在Rectifier、Kollmorgen Industrial Drives和都柏林城市大

学工作。联系方式: [email protected]

在线支持社区

访问ADI在线支持社区,与ADI

技术专家互动。提出您的棘

手设计问题、浏览常见问题

解答,或参与讨论。

ezchina.analog.com

analog.com/cn | 7

Page 8: 基于模型的设计简化嵌入式电机控制 系统开发 - …mouser.eetrend.com/files/2017-12/wen_zhang_/100009549...个功能模块,来实现平台灵活性,并方便开发。关键的代码功能

analog.com/cn

©2015 Analog Devices, Inc. All rights reserved. Trademarks and registered trademarks are the property of their respective owners.

TA13139sc-0-8/15

全球总部

One Technology WayP.O. Box 9106, Norwood, MA 02062-9106 U.S.A.Tel: (1 781) 329 4700Fax: (1 781) 461 3113

大中华区总部

上海市浦东新区张江高科技园区

祖冲之路 2290 号展想广场 5 楼

邮编 : 201203电话 : (86 21) 2320 8000传真 : (86 21) 2320 8222

深圳分公司

深圳市福田中心区

益田路与福华三路交汇处

深圳国际商会中心 4205-4210 室

邮编 : 518048电话 : (86 755) 8202 3200传真 : (86 755) 8202 3222

北京分公司

北京市海淀区

上地东路 5-2 号

京蒙高科大厦 5 层

邮编 : 100085电话 : (86 10) 5987 1000传真 : (86 10) 6298 3574

武汉分公司

湖北省武汉市东湖高新区

珞瑜路 889 号光谷国际广场

写字楼 B 座 2403-2405 室

邮编 : 430073电话 : (86 27) 8715 9968传真 : (86 27) 8715 9931

亚洲技术支持中心

免费热线电话 : 4006 100 006电子邮箱 : [email protected]技术专栏 : www.analog.com/zh/CIC样品申请 : www.analog.com/zh/sample在线购买 : www.analog.com/zh/BOL在线技术论坛 : ezchina.analog.com