FOC(电机矢量控制)的“大地图”(算法架构)

1、前言

永磁同步电机(PMSM)位置、速度、电流三闭环矢量控制(FOC)软件(以下简称“软件”)是为学习矢量控制算法而编写的,针对的是永磁同步电机,BLDC也可用,但是淘宝上面的电机大多数都是BLDC,传感器都是霍尔的(如果BLDC用FOC控制的话,扭矩是要比方波六步换相稍微低一些,但是声音会小很多而且扭矩平稳,所以我最喜欢玩霍尔BLDC的FOC控制),PMSM要比BLDC贵一些,理论上ABZ编码器foc最简单,hall_foc次之,无感foc转起来简单,控制得好比较难,当确认硬件板子没问题后,所有的电机控制都是参数问题了(建议一边学foc,一边理解这些参数)。

我有一套驱控(双驱,还顺便放了一个有刷控制接口和舵机控制接口)准备有偿提供,它既可以ABZ编码器控制,也可以BLDC方波控制,又可以BLDC霍尔FOC控制,又可以无感FOC控制 ,整套硬件采用模块化设计,驱控分离,预留多个冗余接口,单个驱动12个大mos管(单个 85V 160A),带有定时器BKE刹车和泄放电阻,最大可以支持功率为2KW的电机稳定运行(如果功率差距太大,采样电阻最好改一下),如果你不想管FOC的底层原理,只要求拿来就可调可用还有人指导,那这个再合适不过了,如果需要的朋友可以私信我,看最近是否有时间,本人有点考虑提供一对一的代码梳理服务。

首先说明,出此教程的目的,是为了让广大初学者可以挣脱淘宝CSDN海量教程的毒害,因为经常看到一些初学者搞了一堆资料,学了大半年,结果连程序都看不懂,实践的时候最多也就是按照教程接好线,通电看电机转一转,浪费的大量的时间和金钱,很多细节问题不清楚,没有解决问题的能力。

所以,我想以一套完整的、成熟的PMSM的FOC控制方案为例,从各个方面详细讲解了FOC的原理、实现方法等知识,几乎是逐条的分析了程序,又兼顾程序的系统层面,目的是让初学者看完我的资料,可以对FOC控制有一个类似游戏里面的“大地图”的概念,能达到这个目的,我就很满足了。知识是个触类旁通的东西,相信大家学完这个FOC算法后,肯定会对电机控制有一个更深的认识,其实也就是那么回事儿。

2、软件功能设计

软件通过RS422总线与上位机实时通讯交互,在主循环中采用查询的方式接收上位机发送的系统工作模式、伺服指令,并将系统相关状态监测量实时反馈给上位机;为了保障系统安全,软件对输入指令进行了限幅,避免指令超限。

2.1功能

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

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

 b)通过串口与上位机通讯。通过查询方式接收上位机数据,并进行解析;

 c)利用TI最新的SVPWM算法,产生占空比,驱动功率板;

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

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

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

控制软件全部功能描述见表1和表2所示 。

表1软件功能描述

序号

功能名称

说明

1

初始化功能

控制电源上电后对DSP相关硬件配置及变量进行初始化

2

SCI通信功能

与上位机通过RS422串口线进行实时通信

3

定时器功能

通过配置EPWM1获取125us周期定时,通过分频获取250us、1ms、10ms等周期定时

4

位置、速度、电流闭闭调节

完成电机位置闭环、速度闭环、电流的闭环调节

5

状态监测与故障诊断

对系统工作状态,故障状态实时监测

表2 软件性能描述

序号

性能名称

说明

1

串口数据发送周期

通过串口向上位机发送数据的周期为1ms。

2

脉宽调制信号

PWM波载波频率为8kHz,死区时间为2us

3

MainPwmISR()中断程序执行时间

中断执行一次时间不能超过总中断时间的80%,即不超过100us。

2.2主要接口

与FOC控制软件相关的硬件接口,包括RS422串口,片内ADC,外设I/O,数字I/O等,连接关系见图1。

图1  DSP接口图

2.3安全性

a)所有中断服务程序严格禁止嵌套,软件中仅启动一个中断;

b)软件设计时要注意避免潜在的死循环。在软件模块设计过程中,不允许出现无法跳出的情况;

c)不使用的中断源要进行屏蔽,屏蔽措施包括设置中断屏蔽寄存器和编写空中断返回处理语句;

  1. 对采集到的信号应进行适当滤波处理,防止异常值影响软件性能。

3、软件结构设计

3.1 软件平台

软件运行的硬件平台资源:

  1. 处理器:TMS320F28335,晶振频率30MHz,工作主频150MHz;
  2. 存储器:TMS320F28335内部资源模块寄存器,片内18K×16位SARAM存储器,64K×16位Flash存储器;
  3. 中断源:PWM1中断,8kHz;

软件的构成如图2所示。

图2 软件结构图

3.2 各模块功能介绍

(1)系统初始化模块

名称:系统初始化模块

标识符:InitDevice(DSP28_PLLCR,DSP28_DIVSEL);

功能:配置看门狗电路,配置系统时钟,打开ePWM、SCI、SPI、ADC等用到的硬件资源的时钟信号,关闭不用的硬件的时钟信号。这个是标准的模块,用户不用自己编写,复制来按自己的需求配置即可。

(2)参数初始化模块

名称:参数初始化模块

标识符:ParaInit();

功能:软件第一次被调用时,初始化用于闭环的主要控制参数。调节PID的参数时,就是在这个函数里进行更改的。

(3)定时器模块

名称:定时器定时模块

标识符:void SchTimer(void)

功能:设置成125us-500ms多种计时器,作为流程分配的时间基准,注意定时器的时间基准是PWM的中断周期,而不是用的常规的定时器;

(4)与上位机数据交换和通讯模块

名称:串口通讯模块

标识符:void Communication()

功能:使用RS422串口与上位机进行数据交互,对接收到的数据包进行解析,同时对发送的数据包进行编码,以实现消息互通。

(5)指示灯模块

名称:指示灯模块

标识符:LED

功能:系统正常运行时,指示灯每500ms翻转一次。

(6)片内AD采集处理模块

名称:信号采集处理模块

标识符:DriverDspAdcInit()

功能:通过DSP内部自带ADC采集1路母线电压信号、2路相电流信号。

3.3 执行方案

DSP上电后,软件执行初始化模块的初始化功能。在使能中断后,软件在中断中执行数据采集、闭环控制、PWM信号输出。软件执行流程如图4所示。

                                            图4软件执行流程图

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值