首页/文章/ 详情

TIDSP_F283xC2000_IPM_FOC_V1.0(主要讲解成熟的CCS软件架构)

6天前浏览295

前言:V1.0版本是初始入门版本,主要分为硬件篇和软件篇。硬件篇是熟悉硬件测试平台,和实现电机控制过程中用到的外设;软件篇是整体CCS工程的架构、实现的开发过程以及对应的理论介绍。


永磁同步电机(PMSM)位置、速度、电流三闭环矢量控制(FOC)软件(以下简称“软件”)是为学习矢量控制算法而编写的,针对的是永磁同步电机,代码已经经过了项目验证,可以放心学习、使用。

软件以一套完整的、成熟的PMSM的FOC控制方案为例,从各个方面详细讲解了FOC的原理、实现方法等知识,几乎是逐条的分析了程序,又兼顾程序的系统层面,目的是让初学者看完资料,可以独立的完成FOC的编写,独立的解决一些项目中的实际问题。知识是个触类旁通的东西,相信大家学完这个PMSM的FOC算法后,对其他的控制算法也能很快的上手。

图1 永磁同步电机矢量控制框图(PMSM_FOC_sensor_ABZ)

图1是永磁同步电机常见的有感矢量控制(Field Oriented Control,FOC),ABZ编码器测取转速位置信息用于坐标变换。FOC的核心部分主要有电流采样、PI调节器和电压矢量空间脉宽调制技术(Space Vector Pulse Width Modulation,SVPWM)。

所采用的开发环境是MATLAB和TI的DSP_C2000系列的控制芯片(CCS),后续的软硬件测试验证就使用这两种工具。

图3 MATLAB和CCS软件

CCS软件采用语言C编程,需要具备一定的基础。MATLAB的建模方式多种,适合迭代优化的仿真类型是利用sfunction模块并结合M语言实现控制策略或者功能。

采用sfunction模块进行M语言实现与CCS软件中的C代码实现具有相同之处,可相辅相成,可加深对实现的内容理解。

图4 基于TI_DSP_F283xC2000的硬件测试平台

表1 永磁同步电机参数

硬件测试平台主要分为驱动板和控制板,以及配套的电源、开关、仿真烧录器和100W的永磁同步电机。控制板搭载的是TI_DSP_F28335芯片,板上资源丰富,适合后续的电机控制所需的算力。

表2 V1.0版本的开发大纲

V1.0版本的开发主要是基于目前的软硬件平台搭建出一套CCS软件架构,实现基础的带ABZ编码器的永磁同步电机有感矢量控制,并移植一套成熟的上位机通过串口通信实现高刷新率的控制变量的显示,方便调试。

接下来从硬件、软件和上位机三个方面介绍PMSM_FOC_sensor_ABZ。

一、硬件篇(简要总结)

1.1 ePWM外设以及配套外围硬件模块电路

图1.1 ePWM外设模块的配置流程

七段式SVPWM

五段式SVPWM

1.2 ADC外设

注:电流和电压采样是电机控制的重中之重,电机控制的核心目标之一就是精准地调节电流。ADC外设模块的采样精度,直接决定闭环控制的稳定性与准确性。

图1.3 ADC外设模块的配置步骤流程图

1.3 eQEP外设

图1.4 eQEP外设模块的配置步骤流程图

图1.5 上位机抓取的波形图

二、软件篇

2.1 MATLAB/Simulink(真实系统)

图2.1各种离散化仿真类型的分析

图2.2 硬件部分

图2.3 控制策略实现部分

整个仿真验证部分一共分成4个部分:

(1)硬件模拟;

(2)控制层和SVPWM调制模块;

(3)加载部分和Powergui、示波器;

(4)脚本文件,用于设置电机参数和控制参数;

图2.4 基于零极点对消设计的速度波形变化情况

图2.5 基于零极点对消的电流波形变化情况

2.2 CCS(浮点标幺,以图1id=0的控制系统为例)

从框图中可以看出,FOC运算,需要知道电机的三相电流和转子位置,因此我们在设计中,需要采集、解算这两个量。

硬件平台我们采用常见的DSP,资源如下:

1)处理器:TMS320F28335,晶振频率30MHz,工作主频150MHz;

2)存储器:TMS320F28335内部资源模块寄存器,片内18K×16位SARAM存储器,64K×16位Flash存储器;

3)中断源:Pwm1中断,8Khz;

软件的构成如图2所示。

图2.1 软件结构图

软件通过RS485与上位机实时通讯交互,在主循环中采用轮询的方式将系统相关状态监测量实时反馈给上位机;为了保障系统安全,软件对输入指令进行了限幅,避免指令超限。

2.2.1 主要功能

表1软件功能描述

软件的具体功能及实现需求如下:

a)在控制电源上电后,完成各功能模块初始化;

b)通过串口与上位机通讯;

c)利用TI最新的SVPWM算法和基于零序电压注入的方法,产生占空比,驱动功率板;

d)通过DSP内部自带ADC采集母线电压信号、相电流信号;

e)完成速度闭环、电流闭环调节;

f)系统状态监测、故障诊断与处理(工业应用中故障诊断、系统检测是很复杂的,为了突出本教程重点,故程序仅保留过压、欠压、过流保护功能);

控制软件全部功能描述见表2。

表2 软件性能描述

与FOC控制软件相关的硬件接口,包括RS485串口,片内ADC,外设I/O,数字I/O等,连接关系见图(2.2)所示,具体的IO配置表见附录I所示。

图2.2 DSP接口图

2.2.2 软件架构设计

暂且把这个架构叫《伺服软件迭代进化架构》吧。

伺服软件代码架构千奇百怪,初学者甚至是一些“老师傅”都很难辨别优劣,差的架构不利于代码的理解,更不利于知识的积累,跨平台移植代码更是劳民伤财,不利于个人、企业的发展。

根据自己的理解,提出本架构,买家可以依托自己原有的技术积累,以此架构为平台,进行自身技术的积累,软件的迭代、进化,通过不断的学习、实践,凝结核心技术,形成多种成熟可靠的电机控制软件平台,逐步扩充自己的伺服软件型谱,提高个人薪资竞争力,同时,打造出值得信赖的伺服软件品牌。

软件采用分层架构设计思想,分5个层次

(1)系统配置(CMD文件、LIB文件、启动文件、官方库文件……);

(2)外设配置层(时钟、GPIO分配、ADC配置、PWM配置、SCI配置……);

和硬件确定标准接口,明确所有接口的首选、备选方案。根据永磁同步电机驱动特点,设置标准的底层配置模式,可实现快速切换

(3)模块驱动层(速度反馈解算、位置反馈解算、各种滤波、指令斜坡处理、SVPWM计算、ClarkPark变换、各种PID运算、串口通信、总线、故障诊断……);

以功能划分模块,各模块之间采用水平逻辑,模块内采用自上而下的垂直逻辑。

每个模块自成体系,具有明确的输入、输出,设置自己的参数结构体,表征所有用到的中间变量、标志位信息,整个生命周期不能直接影响模块以外的任何变量、参数,必须采用参数传递的形式。

模块采用统一写法,设计时必须附带调用说明,参数设置说明,功能说明等文档。

模块之间相互独立,便于更新、升级。

通过项目验证的,进入CBB货架管理,通过多次飞试验证等,进行封包,进入系统配置层的LIB中。

(4)控制算法层;

a)前馈补偿、抗负载扰动、参数惯量(电机极对数、旋变极对数、旋变安装偏差、电阻、电感、转动惯量、负载转矩、反电动势系数、摩擦系数)、参数自整定(电流环、速度环PI参数)、电流解耦、死区补偿、执行机构末端抖振抑制、母线电压波动拟制补偿、再生制动、能量回馈、故障保护(常规故障保护、缺相运行、异常状态的再启动等技术)……

b)弱磁、直接转矩……

c)无位置算法(观测器、锁相环、高频注入……)

d)先进智能控制算法的研究应用(自抗扰、滑模变结构)……

根据算法需求,调用模块驱动层的函数,进行算法设计。

同样,算法之间平行、独立,自成体系,采用标准写法。

软件人员利用实验平台,验证先进的智能控制算法,不断的扩充算法层、优化、升级现有算法层中内容。

成熟稳定的算法可进入模块驱动层,无需修改,供直接调用。

(5)任务调度层(实时任务采用中断机制,执行快速、慢速流程任务,非实时任务采用多任务调度机制,整个软件采用实时操作系统进行任务调度);

中断任务中完成实时性较强的电流电压采集、控制算法和故障保护等任务,不同的实时任务运行于不同的控制周期;

多任务调度系统中完成通信、系统检测等实时性要求较弱的任务。

2.2.3 架构特点

(1)跨平台开发时,仅需移植系统配置层、外设配置层,内容很少,而核心的模块驱动层、软件算法层、任务调度层可无需修改,直接复 制。

(2)模块按最小化功能划分,输入、输出、中间变量明确,各模块之间完全独立,使得功能函数的迁移完全自由,极大方便了协同工作,同时,给同一功能不同实现方法的对比分析提供了便利条件,有利于整个软件的迭代、进化。

(3)算法层模块化处理,使得软件可以很方便的借助Simulink工具对已有c形式的算法进行脱离硬件平台的仿真验证,模拟出很多硬件难以达到的边界条件,扩充了算法验证手段。同时,也更方便借助Simulink代码生成技术,对新算法先仿真,然后直接生成可用的c代码,加快了新算法、新控制策略的落地、应用。

(4)任务调度层模块化处理,单线程中任务跳转逻辑可采用Stateflow进行设计、验证,复杂系统的多进程任务,可采用RTOS进行调度、管理。

(5)组织架构清爽,模块界线清晰,方便排查问题。

(6)优秀的架构,使得软件的质量和可靠性得到保证。

2.2.4 实施步骤

选择1个具有代表性的型号,按以下步骤展开工作:

(1)以任务书为指导,按架构设计伺服软件框架。

输出:软件架构以及功能说明。

(2)从标准和产品特点出发,形成功能函数的编写模板。

输出:功能函数模板。

(3)梳理软硬件接口推荐表,进行软件底层配置的首选配置以及备选配置的快速切换设计,封装固定模式,预留可调模式的对外接口。

输出:推荐接口表;底层架构。

(4)按软件功能划分模块,梳理模块驱动层中所有函数的输入、输出、中间变量、激励要素等,并按c语言模板进行初次定型。

输出:功能函数表;每个函数的输入、输出要素表。

(5)实时任务、非实时任务流程设计,完成项目调试、交付,对软件进行评审。

输出:软件改进建议表。

(6)改进软件、新项目中继续验证优化,算法迭代、进化……

同时,梳理需求,搭建实验平台,帮助算法验证。

图2.3 代码组织形式

2.3详细设计

2.3.1 主循环模块

主循环模块是程序运行时的主控流程,控制程序的流程走向。

软件在控制电源上电复位后执行主程序,主程序完成初始化后,开中断(触发周期125us),然后进入主循环等待中断的发生,同时在主循环中完成与上位机的实时通讯,翻转LED,提示用户系统正在正常运行中。

主程序主要完成初始化(相关功能模块初始配置,控制变量、结构体的初始化),开主中断,然后进入主循环等待中断发生。主循环中完成与上位机的实时通讯交互(查询接收上位机输入的工作指令),具体流程见图5所示。

图2.4 DSP主循环模块流程图

完成这个过程后,程序的执行流程则见图(2.5)所示。

图2.5 lsw=1时软件执行流程图

2.3.2 PWM初始化及TZ保护模块初始化(具体内容见1.1节)

矢量控制中,一般需要六路(3组)PWM输出,配置为两两互补带死区的导通形式。PWM初始化,配置PWM频率、死区,载波频率8kHz,死区时间为2us,对PWM1启动125us中断以及ePWM模块的错误联防保护功能。

2.3.3 串口通信模块(具体内容见第三章)

串口主要完成和上位机的通信,接收上位机的控制指令,并将一些需要监视的变量回传给上位机。

本程序中设置波特率为460800pbs,8位数据位,1位停止位;无奇偶校验,全双工传送,设置RX FIFO中断深度1,TX FIFO中断深度0。

SCI内部串行时钟信号由低速外设时钟信号LSPCLK及波特率选择寄存器共同决定。BRR为16为波特率设定值,其高8位装入SCIHBAUD中,低8位装入SCILBAUD中,即可配制出不同的波特率。

2.3.4 片内片内AD采集处理模块(具体内容见1.2节)

最基本的FOC只需要两相电流即可,为了硬件保护等,我们可能还要采集母线电压、电流、温度等信号。并对采样值进行滤波数据处理。

ADC模块具有多个分频器,以产生任何需要的ADC操作时钟,图15为ADC的时钟链结构。

图2.6 ADC时钟链结构图

2.3.5 中断处理模块

EPWM1产生的主中断,每次事件触发1次中断,因此中断触发周期为125us,该模块执行时间不能超过125us的80%即100us,因为还要留时间去执行非中断中的任务。

该模块完成状态机机制下各子函数定时计数器时间分配任务(根据上位机指令,选择要执行的流程)。

中断服务程序流程图见图16所示,中断服务程序中主要完成(故障保护不分析):

(a)获取转子位置角度(每120us);

(b)获取电机三相电流(每120us);

(c)通过分频获取其他周期定时;

(d)每120us执行电流闭环控制;

(e)每500us执行速度闭环控制(如果被选择);

(f)每1ms执行位置闭环控制(如果被选择);

其中电流闭环、速度电流双闭环、位置速度电流3闭环执行流程分别如图2.7、图2.8、图2.9所示。

中断服务程序流程图见图16所示,中断服务程序中主要完成(故障保护不分析):

(a)获取转子位置角度(每120us);

(b)获取电机三相电流(每120us);

(c)通过分频获取其他周期定时;

(d)每120us执行电流闭环控制;

(e)每500us执行速度闭环控制(如果被选择);

(f)每1ms执行位置闭环控制(如果被选择);

其中电流闭环、速度电流双闭环、位置速度电流3闭环执行流程分别如图2.7、图2.8、图2.9所示。

图2.7 中断服务程序流程图

图2.8 中断服务程序流程图

图2.9 速度环子程序流程图

图2.10 位置闭环子程序

其中三个环中使用的MotorCtrl()流程如图(2.11)所示。

图2.11 子程序

MotorCtrl函数中,对变换使用的转子位置角进行了判断,目的是,在开环拉电机时,直接使用给定的theta = 0.0(调试时,也可以改变theta值,观察电机转向)将电机拉到指定的位置。正常工作时,再使用编码器计算得到的eQEP1.ElecTheta

同理,下面的这两段代码也是为了开环拉电机和校准编码器零位使用的,正常工作时,程序不会执行这两段代码。

定时计数器配置功能:使用EPWM1产生的主中断周期作为时间基准,使用TimerCtrl结构体定义的变量TimerCnt自加,得到125us到500ms不同的定时计数器,当TimerCnt变量累加到所需定时计数器的预设值时,设置时间标识位变量置1,执行相应的功能函数,函数执行完成后该变量清零。

软件定时器功能见表6。

表6 定时器功能

2.3.6 转子位置角获取模块(具体内容见1.3节)

电机用的是增量式正交编码器,因此本程序采用的EQEP模块来采集电机的转子位置角,该模块就是一个片内外设的配置应用问题,没有技术上的难度。

三、上位机(根据显示波形变化情况协助调试)

(a)速度波形变化

(b)电流、位置和调制波波形的变化

图3.1 上位机波形抓取

如果控制板上没有DAC模块,那就只能采用上位机(电子示波器)来抓取过程变量,评判电机运行的性能。

一款好的上位机是电机控制开发的调试利器,直观的查看电机运行过程中的速度、位置、电流的变化,更改控制参数和功能代码的实现。

四、总结

4.1 V1.1版本的开发内容预告

4.2开发过程中的问题梳理

1、PI调节器中为什么不加入D项?

微分,说白了在离散情况下,就是error的差值,就是t时刻和t-1时刻error的差,会引入噪声反而会劣化控制性能。另一个实际只用到了PI控制,没有引入微分,因为电流的采样率非常高不需要加入微分项。

2、欢迎讨论,会根据讨论的问题进行总结,在下期文中进行展示;



来源:浅谈电机控制
电源电路电子MATLAB芯片通信Simulink理论电机控制试验
著作权归作者所有,欢迎分享,未经许可,不得转载
首次发布时间:2026-08-19
最近编辑:6天前
公众:浅谈电机
硕士 签名征集中
获赞 45粉丝 7文章 88课程 0
点赞
收藏
作者推荐

电机控制软硬件验证合集V3版本:转子初始位置辨识功能的优化开发记录和总结

前言自叙:V3版本的开发是在V2版本的基础上,进行性能优化和功能增加。功能增加主要包括:1、转子初始位置辨识;2、转子初始位置辨识精度的提升优化;3、电流检测与电流控制;开发内容的总体大纲:在现有的浮点标幺化仿真系统中加入bode图分析的功能,速度环和电流环的PI参数设置好后,运行脚本后可以直接查看对应的幅频、相频特性曲线和阶跃响应。一、开发资料的整理1.1 参考文献和资料1、《一种永磁同步电机初始定位的方法_康现伟》2、《一种大幅提高永磁同步电机转子初始位置检测精度的方法》3、《一种增强可靠性的永磁同步电机初始角检测_黄科元》4、《电机控制算法实战》1.2 CCS工程架构、功能的介绍图1.1 CCS工程化架构在第五个文件下增加了系统轮询和上位机部分的头文件和源文件的内容,在调试过程中借助上位机显示的过程变量,调整控制参数和实现过程有了可靠参考。1.3 为什么要进行转子初始位置辨识永磁同步电机(PMSM)需要转子初始位置辨识,核心原因是:矢量控制必须知道转子磁极位置,才能把定子电流正确地分解到 d/q 轴上。如果不知道初始位置,电机刚启动时控制器不知道“转子磁场朝哪儿”,就可能出现以下问题:1、无法 正确产生电磁转矩:PMSM 的转矩主要由 q 轴电流产生。控制器需要把三相电流变换到与转子同步旋转的 d/q 坐标系中。如果转子角度错了,原本想加在 q 轴上的电流可能被加到 d 轴甚至反向 q 轴上,导致转矩不足、反转、抖动或启动失败。2、无位置传感器控制启动困难:对无位置传感器 PMSM 来说,中高速时可以通过反电动势或观测器估算位置;但静止和低速时反电动势很小,基本无法直接估算,所以启动前必须先辨识转子初始位置。3、避免启动冲击和反转:如果初始角度估计错误,给定电流方向可能与期望转矩方向不一致。轻则启动抖动、噪声大,重则短暂反转或过流。4、提高启动成功率和动态性能:精确初始位置可以让电机从静止开始就进入正确的磁场定向控制状态,使启动转矩可控、响应平稳。5、对凸极 PMSM / IPMSM 尤其重要:内嵌式永磁同步电机(IPMSM)有明显磁阻差异,可以利用高频注入等方法辨识转子位置;但如果初始极性判断错误,可能出现 180° 电角度误判,导致转矩方向相反。简单说:PMSM 控制器要“对准转子磁场”才能控制转矩,而电机静止时控制器通常不知道转子磁场初始方向,所以需要初始位置辨识。现有的永磁同步电机转子初始位置检测方法可以分为两类:基于电机自身的磁路结构凸极效应和基于定子铁心的非线性饱和特性。内置式永磁同步电机由于自身转子磁路结构不对称,其在直轴电感、交轴电感不同时呈现结构凸极性。一般情况下,表贴式永磁同步电机的交、直轴电感相等,在定子绕组注入电流,电流产生的磁场方向和永磁体磁场方向一致时,会导致直轴磁路出现饱和,直轴电感小于交轴电感,呈现出饱和凸极性。二、转子初始位置辨识方法总结2.1 预定位法预定位的原理是通过对电机的定子绕组施加静止的电流矢量(固定角度和幅值),然后由该电流矢量所产生的电磁转矩将电机的转子旋转到预定位置。图2.1 转子预定位算法结构控制永磁同步电机时,不要速度环,直接把转矩电流设定为0,把励磁电流设定为固定值,给它不同的设定角度,可以控制电机运行到任何角度位置。2.2 基于电压矢量脉冲注入法 基于电压矢量脉冲注入的原理实现,具体过程参考以下的参考文献:《一种大幅提高永磁同步电机转子初始位置检测精度的方法》《一种增强可靠性的永磁同步电机初始角检测_黄科元》2.3 高频注入法(要求同步机具有一定的凸极性IPMSM)目前的控制电机为表贴式PMSM,所以不能进行这部分的验证实现,后面更换电机再进行实现和验证。三、电流检测与电流控制(优化补充)后期内容进行整理。四、软、硬件平台的实现和验证4.1 MATLAB/Simulink仿真验证(本节不做仿真模拟)4.2 TI_DSP28335实验平台验证测试图4.1 参考文献中的注入电压脉冲对应的电流响应图4.2 实际硬件测试平台抓取的电压脉冲注入对应的电流响应图4.3 转子初始位置辨识后的电机启动波形V3版本中采用多轮电压矢量脉冲注入法,第一轮采用的是12脉冲交叉注入,获取初始角;第二轮注入,根据第一轮注入获取的角,进行细分注入,精确得到电机的初始角度,精度达到±3°,将获取的初始位置角赋值转换成编码器的位置计算器的值,进行闭环启动。为了防止辨识过程中转子轴转动,采用+V、0、-V注入,持续一段时间让电流响应有足够的时间,从而削弱转矩力,在辨识过程中保持转子轴静止,实测结果如图(4.3)所示,电机启动时转子轴没有反转的现象。五、总结1、V3版本是在V2版本的基础上进行的,局部实现的过程优化和功能的增加,优化软硬件框架,为后续的内容开发提供基础;2、V2版本中的转子初始位置辨识用的预定位法,V3版本采用基于电压矢量脉冲注入法,适用场景得到拓展,适用于要求电机启动转子轴静止不动的应用场景;3、对硬件测试平台的电流采样实现的方式进行总结、梳理以及对采样得到的电流进行优化处理;4、电流控制的内容,主要就是电流内环的PI参数整定以及前馈电压补偿部分的总结;5、基于电压矢量脉冲注入法对转子初始位置角的估计精度的优化,一般采用多轮注入,最大的问题就是解决辨识启动,电机转子轴反转的问题;来源:浅谈电机控制

未登录
还没有评论
课程
培训
服务
行家
VIP会员 学习计划 福利任务
下载APP
联系我们
帮助与反馈