首页 > 应用与设计 > 工业应用 > 带有PFC的TI无传感电机驱动系统算法设计 >

电机驱动

最新课程

热门课程

无感电机控制算法与PFC算法的单芯片实现

大家好 欢迎大家参加TI工业研讨会 我是TI Century FAE Igor An 主要负责数字电源 及电机控制算法开发 今天由我给大家介绍TI电机控制 加PFC解决方案 这里的电机控制主要是 无传感电机控制 今天主要介绍的内容是在 电机控制算法里面加入PFC算法 使两种算法在同一款MCU中协同工作 首先为大家简单介绍PFC控制算法 以及PFC控制中主要建模及环路建设 那我们知道在单向PFC中 最主要运用到的拓扑 就是简单的boost的拓扑 那如图所示 那在boost的拓扑中我们要对 这个boost的拓扑进行控制 那首先要做的就是 对这个系统进行建模 那按照平均电流法的 小信号模型去建模 那从右边这个推导过程中 我们可以得到 整个系统的一个稳态的一个关系 就是输入电压和输出电压 以及我们控制的真空比 的一个稳态关系 但我们知道 对PFC对这个boost的电路控制 实际上我们要实现两个控制目标 第一个就是我要实现我的输出电压 也就是这个直流母线电压上的 电压恒定 那是一个电压的一个控制 另外一个控制目标是 我要控制我的输入电流 是和输入电压同相位 都为正旋 就是实现高的PF和这个THD 就是高的这个公因数 那基本是1 那如果是实现了 这个电压和电流完全同相 那基本就是个 PF就是1 那如果是完全的正旋度完全重合 那它的谐波 谐波含量也是基本都是畸波含量 那为了实现这两个控制目标 我们要建立控制环路模型 那之前我们推导出的这个稳态的关系 其实并不是我们的被控系统的模型 因为我们要 被控系统如果要建立的话 首先要定义我要实现的控制目标 以及实现这个控制目标的 输入和输出值 那控制目标呢 其实就是我们模型中的输出量 那到底用什么数量建模 来搭建我的系统呢 那对于这个boost的电路来说 我们如果实现PFC功能 一般是建立双环路 就是外环电压环 内环电流环的环路 那内环电流环的输出 作为外环电压环的输入 那其实作为电压环的 这个最终控制来说 它的输入就是我的电感电流 输出就是我的母线电压 那对于电压环的这个输入输出 我的定义好了之后我就根据输入输出 按照平均电流法的小信号模型 去解算它的数学模型 同样的对于电流环 我要控制的是这个电感电流 那这个就是我的整个模型的输出 那它的输入量就是 我去实现这个控制的输入量 实际上就是我们的duty 那实际上电流环的 这个模型的输入输出 输入就是duty 输出就是电流 那输入输出建立好了 同样的 我们根据 平均电量法的建模理论 对这个系统进行建模 这样我们就得到我们电流环的模型 那看到它的输出是I 就是电感电流 输入是duty 那就是我们的这个真空比 那它得到一个这个模型 当然我们这里是简化模型 像电感的内阻我们并没有考虑 像一些寄生参数我们并没有考虑 如果将这个模型更加细化 或者说我们叫更进一步精确 那我们就把这些系统上的量 把它引入进去 来得到一个更完备的数学模型 当然我们知道这个 其实这个电感里面内阻是 相对来说这个电感来说是很小的 所以你加入它和不加入它 其实对波特图的影响 其实是比较微弱的 当然是会有影响 那对于有一些系统来说 对于有一些这个建模方式来说 我们可能会引入更多的环节 像我们的电流采样的这个 应放调理电路 应放调理电路中的这些滤波 它的带宽 也同样会引入 这些都是一些精细化的设计方法 但是最基本的这种建模方式 我们是在这里面给大家列出来 电流环电压环 它的一些建模 当然我们引入不同的这种 外界因素会得到不同的数学模型 那有了模型之后 我要考虑的就是说 我要建立我的闭环控制环路 来实现我的两个控制目标 那下面呢 就是我们的这个 典型的这个boost电路或者叫PFC的 单向PFC的控制环路 那上面我们可以看到 就是一个双环结构 外环就是电压环 那这是电压环 我们刚才推导出来电压环的数学模型 内环整个电压环输出 内环这块就是我们的电流环 那这是电流环的模型 那对PFC来说呢 我的电压是母线电压是直流的 反馈也是直流的 经过PI出来 所以这个地方 它的物理意义是电流 但是是电流的幅值 它也是个直流量 那我们要实现的控制目标呢 是要把输入电流控制成和输入电压 同相位的正旋信号 所以这里我们会需要乘以一个 与输入电压同相位的单位正旋 就说它这个正旋的幅值是1 乘以这个由环路决定的这个电流幅值 最终得到一个正旋的 幅值由电压环决定的 一个正旋的电流参考 那我建立一个环路使我的实际电流 跟随我的正旋的电流参考 从而实现PFC的这个正旋电流的 这个控制目标 那外环电压环就是为了 保证我的输出的这个电压值 时时刻刻跟随我的目标的电压值 就是固定死的一个恒定的电压值 那这样我的双环就建立起来了 那细化到这个更深的细节电流环 那我们可以看到 基本上是跟上面一样的 这个Ci基本上就是我们的Gi 然后这个current system 实际上就是说的模型 那剩下就是采样通道的一些 一些比例 那我们可以注意到这里 比上面那个图多增加了一块 那就是我们这里称之为Dc的这地方 那这里其实是我们的前馈 它主要解决的问题呢 就是我过零点电流畸变的问题 那我们从这个闭环控制回路上 我们可以知道 其实就是我一个正旋的参考 和一个正旋的 这里是正旋参考 正旋的反馈进行比较 然后利用这个error通过一个矫正器 可以是2P2C 也可以是PI 也可以是P 这类的这种矫正器输出一个duty 那我们看假如在过零点的时候 那我们的reference基本是零 那实际反馈基本也是零 那这个时候我的输出的这个duty 基本上是接近零的 所以是几乎没有duty的 那在这种情况下 没有duty的情况下 输入电压又非常小的情况下 那我这个时候的电流就会非常小 甚至几乎就是零 那我们一般就可以 就可能会在这个波形上看到 它在过零点的时候会有一个平的台阶 那这个台阶会严重地影响我们 最终输出的PHD 为了解决这个问题呢 我们引入了一个前馈 那这个这个前馈的计算方式 就是由我们之前讲到的这个 稳态的这个输入电压 和输出电压的一个关系 就计算出来了 实际上就是duty 和输入电压输出电压的关系 那我们这里的M1Volt 实际上就是输入电压Vin IqBusVoltRef 那实际上这个就是代表 我的这个Vout 那用VinVout的关系去解这个duty 实际上它就是 一个由稳态关系求出来的一个代数值 那因为这个Vin是个正旋的 所以这个duty实际上是按照这个关系 算出来的一个跟正旋相反的一个趋势 在过零点的时候 我这个前馈输出的值是最大的 随着到峰值它是会逐渐下降的 相当一个抛物线的一个波形 加到这个前馈里面 那这样会大大的改善我过零点的波形 让我实际空出来的这个电流波形 完全是接近正旋 那这是一个改善这个 电流波形正旋度的一种方式 当然还有其他一些方式 可以帮助我们去 改善过零点的这个正旋度 好 那前面呢 跟大家介绍了 如何去建立一个PFC控制环路 同时呢加上我们更早之前 介绍的这个无传感电机控制 那我们两个控制算法 都简单的给大家做了介绍 那如何把这这两个算法 共同集成到同一颗C2000 MCU中 让这两个算法协同工作 那尤其是我们之前提到 我们PFC的控制环路呢 大概是有40k左右的 这个飘轮开关频率 那电机控制呢传统上讲呢 一般在5到10k 有一些这种速度不是很高的电机呢 就是尽量让这个频率低 以减少我们的损耗 减少我们的这个功率管的开关损耗 所以我们以一个例子 就是我们把这个PFC频率 定在40k赫兹 然后把我们的电机控制频率 定在5k赫兹 那如果是这样的话 在数字控制领域呢 基本上是我产生一个plam的时候 我就要做一次采样 做一次运算 所以这个是同步的 那我们这张图给大家展示呢 就是C2000内部的 两个中断的实际的一个配合 那么看到蓝色的这个三角形 就是我们这个电机控制的 一个PWM的一个时机 那它产生一个周期的时候 里面包含了8个 红色的PFC的这个周期 因为正好是这个它的8倍 那我们知道 如果是我们把这个中断算法的 这个事件产生 同时都安排在这个过零的时候 就是我的电机的中断 和PFC的中断都是在这个位置的 就会产生中断冲突 当然C2000 会有一个中断优先级的问题 那会先执行一个高运行级的 那这取决于我们是用 电机控制的中断源和PFC中断源 是选哪个C2000里面的中断源 这些中断源会有一定优先级的安排 但无论选哪个 先执行的那个先算完 后执行的那个 等这个先执行的算完了之后 再拿到CPU资源再继续运算 这样的话 那我们认为的就是当前采样 去运算当前的duty的话 它就有一个不可控的一个时间延迟 所以一般地 在C2000的这种控制系统中 如果有一个以上的 两个或者三个这种中断的话 我们在中断源的安排上 尽量的是让它们产生错峰 就是避开相互的这个重叠 那在这个PFC算法中呢 我们PWM是40k的 那我们的实际计算呢 是可以低于这个40k的 那我们发波是按40k的 只是两个周期的这个plam用同一个值 这里呢 我们是两次plam周期 去进入一个ISR去采样 去算一下这个duty的更新 那所以我们看到这些点 就是它产生中断的这些点 尽量地不要去和这个电机的 这些中断源的点去重合 那细化到每一个中断 它整个的发生过程 我们以电机为例 首先第一个我们用 一个事件去触发adc 那这个事件触发adc以及 adc在这段时间开始采样 以及到采样结束 那这段时间我们的CPU 是不去控制adc的 就是adc硬件机制去完成采样 那这段时间CPU可以 运算其他的后台程序 那当adc采样结束之后 我们用adc采样结束的 结束事件 就是end of conversion EOC事件 去作为我们的中断源 那这个事件发生之后 我们才会进入adc 在adc中直接进入中断 在中断中直接去读adc的结果 然后再用我们的环路进行运算 那假设我整个环路运算 用了这么长的时间 到这儿的话我的整个电机算法的 这个计算结束 那这个恰好是在我的PFC中呢 产生之前结束的 所以它们不会产生 任何的重叠和相互影响 两个这个算法非常这个均匀地分配 不会相互打断 也不会有这个优先级的问题 那这个 那如果能够实现这种效果 那整个这个中断和CPU资源的安排 就是非常合理的 当然会有一些这种特殊情况产生 比如说我的这个 电机运算的算法非常复杂 那我在这个整个开始运算 到结束的时候用的时间非常长 那它就会覆盖到我这个PFC中断产生 就是说在PFC中断产生的时刻 我的电机中断运算还没有完成 那这种情况下 因为C2000的这个 中断优先级的概念 并不是像很多的这种PC级的 这种中断优先的概念 那它自动地 如果是PC的话 它可能自动会打断一个中断 那C2000的这种 中断优先级的安排就是 只是在我们之前讲到 它两个中断源同时发生的时候 它会让中断优先级去响应 但一旦一个中断先拿到CPU资源 CPU在运算的时候 如果你不做软件的处理 这个中断是打不断这个电机的中断的 所以只有等当前电机中断的 这个算法先执行完了之后 PFC的这个算法才会被执行 所以这个的中断会被推到后面 就是整个这个中断会向后推一段时间 而且这段时间是不确定 那整个PFC的控制有可能 在这个周期就会受影响 由于引入了一个不确定的这个延时 我们知道数字控制系统中 采样延时 和计算延时的影响是非常大的 所以这个就可能会对系统产生问题 那我们在这个 在软件中我们可以对 这个中断进行一些优化和配置 我们期望得到的效果 因为我们的这个电机的中断频率很低 所以我们期望的效果 就是在电机运算中 如果电机没有算完PFC中断就来了 我们希望PFC中断 能够打断电机的这个算法 先把PFC中断的这个运算算完 然后再继续的这个运算电机算法 从而实现像下图所示的这种 中断的这个资源的分配 那这一段的时间正好是 它们产生冲突的这段时间 那我们把它放大 就是在这一时刻 我PFC的这个adc开始采样 那我们通过刚才的这个讲解 大家知道这段 就是从电机采样到它采样结束这段 实际上是不需要CPU资源的 我电机控制算法 可以继续的运算电机算法 当这个PFC采样结束 PFC的这个ad产生了一个 end of conversion的一个事件的时候 PFC就要进入PFC中断 那这个时候我们希望 PFC能够拿到CPU资源 那就是这段时间我们变成 红色的PFC运算的时间 直到PFC运算结束退出 然后我再切换成电机算法 再变成蓝色 让电机继续运算直到结束 那希望得到一个这个效果 但是这种实现是不能 自动执行自动实现的 是需要我们的软件的 这个软件的支持的 那下面这个给大家列出来了 就是我们为了实现这种 我们叫做C2000的中断嵌套 而加入的这段代码 那其实主要是在这个电机的中断里面 我们如果是要允许一个中断 被其他中断打断的话 我们需要再进中断的最开始 去把一些中断源释放 这里释放的就是我们 这个PFC所对应的中断源 那这个如果您选择的是其他中断源 那这面的这个第几组或者是这些值 您可能根据这个中断源去将它改变 然后再出中断时候的处理 也是和正常的有所不同的 那PFC中断的处理呢 前面都是你的运算代码 那最终是一个conknowledge和clear 那这个都是标准动作 这没有任何不同 所以PFC来说它就是一个 就是正常处理的 这个C2000的中断处理 那对于这个电机来说 我需要在进入中断的一开始 就需要把这些值进行一定相应的处理 这样才能保证我的PFC可以打断它 那下面两张图呢 是我们就是实际操作中 去实现中断嵌套的两个波形图 那这个黄颜色呢 是我们在这个 电机中断里面放的一个L 进入中断的时候把这个L拉低 出中断的时候把L拉高 对于这个红色的 或者紫色的这个PFC的一样 进入中断的时候我会把这个它拉低 出中断的时候把拉高 那从第一张图上我们看呢 它就是一个不允许PFC中断 打断电机中断的这种方式 就是我们没做这种软件处理 没做嵌套处理的时候 我们看到电机我们先关注一下 这个红色的这个频率和周期 之前它的时间间隔 那这里明显时间间隔变大 这里又变小 就是相当于这个频率不稳定了 那原因就是因为这个时刻 电机算法一直占着CPU并没有算完 只有电机算完了之后 PFC的这个才会进入中断打断 再继续运算 那后面这张图呢 就是我们实现了 中断嵌套的这种方式 我们可以看到PFC的中断的 这个频率非常的稳定 那在这个时刻 就是典型的是时刻 其实是我的这个 电机控制算法并没有算完 那我允许了一个PFC中断 进入中断服务程序去运算PFC算法 就是它打断了电机控制的这个算法 那上面给大家介绍呢 就是其实是在PFC 加电机控制系统中 容易遇到的一个算法 或者是中断冲突的一个问题 那给大家提供了一个 这个解决的办法 那这个解决的办法 在我们的德eSupport的这个论坛上 也有相关的这个解释 大家可以关注一下我们的 德eSupport的这个论坛 有一些这个我们内部的一些 您使用中的问题可以在上面 提问题 我们会及时给您回复 另外呢就是给大家 介绍我们一个C2000 有一些这种免费的 open source提供给大家 那包括我们的ControlSUITE 在这ControlSUITE 里面呢 我们有非常多的 这个TI提供的EUM板的 这种从原理图泵表geber file 完全都是免费的 还有几个非常多的这种参考代码 都是完全源码公开的 那这里面着重提一下的 就是这个PowerSUITE 它是一个专门针对数字电源的 开发设计的一个便捷的工具 里面当然包含很多源码 但最重要的是 但最重要的是 它有一个图形化的界面 可以供大家去用图形化的方式 去配置你的plum输出端口 ad以及ad采样的比列等等等等 就这些硬件的信息 可以通过图像化界面去配置 同时它会自动的帮您生成 这个控制环路的控制参数 当然您要告诉它这个电感电容啊 这些值基本的信息 那我们目前支持几种 这个比较简单这种拓扑结构 只要是我们支持的拓扑结构呢 您都可以用图形化界面去配置 同时让它去自动生成代码 整个开发过程中呢 是不用您自己手写代码的 那这些这个软件的下载地址 就在TI的官网都是免费可以下的 另外一个就是MotorWare 那这个MotorWare呢 主要是包含我们的 instaSPIN FOC和instaSPIN motion 是为了instaSPIN 这个算法专门开发的 那在这个里面呢 除了每个工程里面会包含非常多的 这个不同的这个设置的历程 它每个历程里面有不同的特点 当然最核心的 还是我们的FAST的估算器 那在这个FAST的估算器的边缘 或者是周边我们设计了很多 这种工业界 经常会使用到的一些功能 比如说 这个低速力矩补偿 那这个在单转子压缩机的 应用上是大家都很需要的 那这个我们的力矩补偿呢 是一个基于二次线性迭代的 一种自适应的估计力矩曲线 的一种算法 和自适用地去补偿 所以它是一个自动机制 并不像传统的查表的力矩补偿 然后还有就是说 这个我们的IPD加HFI 那已经集成到 我们的instaSPIN里面了 那我们这个instaSPIN的 MotorWare里面也可以下到 这个高频注入的算法 和instaSPIN配合的这种库 好 谢谢大家 希望大家继续关注TI的相关产品

大家好 欢迎大家参加TI工业研讨会

我是TI Century FAE Igor An

主要负责数字电源 及电机控制算法开发

今天由我给大家介绍TI电机控制 加PFC解决方案

这里的电机控制主要是 无传感电机控制

今天主要介绍的内容是在 电机控制算法里面加入PFC算法

使两种算法在同一款MCU中协同工作

首先为大家简单介绍PFC控制算法

以及PFC控制中主要建模及环路建设

那我们知道在单向PFC中

最主要运用到的拓扑 就是简单的boost的拓扑

那如图所示

那在boost的拓扑中我们要对 这个boost的拓扑进行控制

那首先要做的就是 对这个系统进行建模

那按照平均电流法的 小信号模型去建模

那从右边这个推导过程中 我们可以得到

整个系统的一个稳态的一个关系

就是输入电压和输出电压

以及我们控制的真空比 的一个稳态关系

但我们知道 对PFC对这个boost的电路控制

实际上我们要实现两个控制目标

第一个就是我要实现我的输出电压

也就是这个直流母线电压上的 电压恒定

那是一个电压的一个控制

另外一个控制目标是 我要控制我的输入电流

是和输入电压同相位 都为正旋

就是实现高的PF和这个THD

就是高的这个公因数

那基本是1

那如果是实现了 这个电压和电流完全同相

那基本就是个 PF就是1

那如果是完全的正旋度完全重合 那它的谐波

谐波含量也是基本都是畸波含量

那为了实现这两个控制目标 我们要建立控制环路模型

那之前我们推导出的这个稳态的关系

其实并不是我们的被控系统的模型

因为我们要 被控系统如果要建立的话

首先要定义我要实现的控制目标

以及实现这个控制目标的 输入和输出值

那控制目标呢 其实就是我们模型中的输出量

那到底用什么数量建模

来搭建我的系统呢

那对于这个boost的电路来说

我们如果实现PFC功能 一般是建立双环路

就是外环电压环 内环电流环的环路

那内环电流环的输出 作为外环电压环的输入

那其实作为电压环的 这个最终控制来说

它的输入就是我的电感电流 输出就是我的母线电压

那对于电压环的这个输入输出

我的定义好了之后我就根据输入输出

按照平均电流法的小信号模型 去解算它的数学模型

同样的对于电流环 我要控制的是这个电感电流

那这个就是我的整个模型的输出

那它的输入量就是 我去实现这个控制的输入量

实际上就是我们的duty

那实际上电流环的 这个模型的输入输出

输入就是duty 输出就是电流

那输入输出建立好了

同样的 我们根据

平均电量法的建模理论 对这个系统进行建模

这样我们就得到我们电流环的模型

那看到它的输出是I 就是电感电流

输入是duty 那就是我们的这个真空比

那它得到一个这个模型

当然我们这里是简化模型

像电感的内阻我们并没有考虑

像一些寄生参数我们并没有考虑

如果将这个模型更加细化 或者说我们叫更进一步精确

那我们就把这些系统上的量

把它引入进去 来得到一个更完备的数学模型

当然我们知道这个 其实这个电感里面内阻是

相对来说这个电感来说是很小的

所以你加入它和不加入它

其实对波特图的影响 其实是比较微弱的

当然是会有影响 那对于有一些系统来说

对于有一些这个建模方式来说

我们可能会引入更多的环节

像我们的电流采样的这个 应放调理电路

应放调理电路中的这些滤波

它的带宽 也同样会引入

这些都是一些精细化的设计方法

但是最基本的这种建模方式 我们是在这里面给大家列出来

电流环电压环 它的一些建模

当然我们引入不同的这种 外界因素会得到不同的数学模型

那有了模型之后

我要考虑的就是说 我要建立我的闭环控制环路

来实现我的两个控制目标

那下面呢 就是我们的这个 典型的这个boost电路或者叫PFC的

单向PFC的控制环路

那上面我们可以看到 就是一个双环结构

外环就是电压环 那这是电压环 我们刚才推导出来电压环的数学模型

内环整个电压环输出 内环这块就是我们的电流环

那这是电流环的模型

那对PFC来说呢

我的电压是母线电压是直流的 反馈也是直流的

经过PI出来 所以这个地方 它的物理意义是电流

但是是电流的幅值 它也是个直流量

那我们要实现的控制目标呢

是要把输入电流控制成和输入电压 同相位的正旋信号

所以这里我们会需要乘以一个

与输入电压同相位的单位正旋

就说它这个正旋的幅值是1

乘以这个由环路决定的这个电流幅值

最终得到一个正旋的

幅值由电压环决定的 一个正旋的电流参考

那我建立一个环路使我的实际电流 跟随我的正旋的电流参考

从而实现PFC的这个正旋电流的 这个控制目标

那外环电压环就是为了 保证我的输出的这个电压值

时时刻刻跟随我的目标的电压值

就是固定死的一个恒定的电压值

那这样我的双环就建立起来了

那细化到这个更深的细节电流环

那我们可以看到 基本上是跟上面一样的

这个Ci基本上就是我们的Gi

然后这个current system 实际上就是说的模型

那剩下就是采样通道的一些 一些比例

那我们可以注意到这里 比上面那个图多增加了一块

那就是我们这里称之为Dc的这地方 那这里其实是我们的前馈

它主要解决的问题呢 就是我过零点电流畸变的问题

那我们从这个闭环控制回路上 我们可以知道

其实就是我一个正旋的参考 和一个正旋的

这里是正旋参考

正旋的反馈进行比较 然后利用这个error通过一个矫正器

可以是2P2C 也可以是PI 也可以是P

这类的这种矫正器输出一个duty

那我们看假如在过零点的时候 那我们的reference基本是零

那实际反馈基本也是零

那这个时候我的输出的这个duty 基本上是接近零的

所以是几乎没有duty的 那在这种情况下

没有duty的情况下 输入电压又非常小的情况下

那我这个时候的电流就会非常小

甚至几乎就是零

那我们一般就可以

就可能会在这个波形上看到 它在过零点的时候会有一个平的台阶

那这个台阶会严重地影响我们 最终输出的PHD 为了解决这个问题呢

我们引入了一个前馈 那这个这个前馈的计算方式

就是由我们之前讲到的这个

稳态的这个输入电压 和输出电压的一个关系

就计算出来了

实际上就是duty 和输入电压输出电压的关系

那我们这里的M1Volt 实际上就是输入电压Vin

IqBusVoltRef 那实际上这个就是代表 我的这个Vout

那用VinVout的关系去解这个duty

实际上它就是

一个由稳态关系求出来的一个代数值

那因为这个Vin是个正旋的

所以这个duty实际上是按照这个关系 算出来的一个跟正旋相反的一个趋势

在过零点的时候 我这个前馈输出的值是最大的

随着到峰值它是会逐渐下降的

相当一个抛物线的一个波形 加到这个前馈里面

那这样会大大的改善我过零点的波形

让我实际空出来的这个电流波形 完全是接近正旋

那这是一个改善这个 电流波形正旋度的一种方式

当然还有其他一些方式 可以帮助我们去

改善过零点的这个正旋度

好 那前面呢 跟大家介绍了 如何去建立一个PFC控制环路

同时呢加上我们更早之前 介绍的这个无传感电机控制

那我们两个控制算法 都简单的给大家做了介绍

那如何把这这两个算法 共同集成到同一颗C2000 MCU中

让这两个算法协同工作

那尤其是我们之前提到 我们PFC的控制环路呢

大概是有40k左右的 这个飘轮开关频率

那电机控制呢传统上讲呢 一般在5到10k

有一些这种速度不是很高的电机呢 就是尽量让这个频率低

以减少我们的损耗

减少我们的这个功率管的开关损耗

所以我们以一个例子

就是我们把这个PFC频率 定在40k赫兹

然后把我们的电机控制频率 定在5k赫兹

那如果是这样的话 在数字控制领域呢

基本上是我产生一个plam的时候 我就要做一次采样 做一次运算

所以这个是同步的

那我们这张图给大家展示呢

就是C2000内部的 两个中断的实际的一个配合

那么看到蓝色的这个三角形

就是我们这个电机控制的 一个PWM的一个时机

那它产生一个周期的时候

里面包含了8个 红色的PFC的这个周期

因为正好是这个它的8倍

那我们知道

如果是我们把这个中断算法的 这个事件产生

同时都安排在这个过零的时候

就是我的电机的中断 和PFC的中断都是在这个位置的

就会产生中断冲突 当然C2000 会有一个中断优先级的问题

那会先执行一个高运行级的

那这取决于我们是用 电机控制的中断源和PFC中断源

是选哪个C2000里面的中断源

这些中断源会有一定优先级的安排

但无论选哪个 先执行的那个先算完

后执行的那个 等这个先执行的算完了之后

再拿到CPU资源再继续运算

这样的话

那我们认为的就是当前采样

去运算当前的duty的话

它就有一个不可控的一个时间延迟

所以一般地 在C2000的这种控制系统中

如果有一个以上的 两个或者三个这种中断的话

我们在中断源的安排上 尽量的是让它们产生错峰

就是避开相互的这个重叠

那在这个PFC算法中呢

我们PWM是40k的

那我们的实际计算呢 是可以低于这个40k的

那我们发波是按40k的 只是两个周期的这个plam用同一个值

这里呢 我们是两次plam周期

去进入一个ISR去采样 去算一下这个duty的更新

那所以我们看到这些点

就是它产生中断的这些点

尽量地不要去和这个电机的 这些中断源的点去重合

那细化到每一个中断

它整个的发生过程 我们以电机为例

首先第一个我们用 一个事件去触发adc

那这个事件触发adc以及 adc在这段时间开始采样

以及到采样结束

那这段时间我们的CPU 是不去控制adc的

就是adc硬件机制去完成采样

那这段时间CPU可以 运算其他的后台程序

那当adc采样结束之后 我们用adc采样结束的

结束事件 就是end of conversion EOC事件

去作为我们的中断源

那这个事件发生之后 我们才会进入adc

在adc中直接进入中断

在中断中直接去读adc的结果

然后再用我们的环路进行运算

那假设我整个环路运算 用了这么长的时间

到这儿的话我的整个电机算法的 这个计算结束

那这个恰好是在我的PFC中呢 产生之前结束的

所以它们不会产生 任何的重叠和相互影响

两个这个算法非常这个均匀地分配

不会相互打断 也不会有这个优先级的问题

那这个 那如果能够实现这种效果

那整个这个中断和CPU资源的安排 就是非常合理的

当然会有一些这种特殊情况产生

比如说我的这个 电机运算的算法非常复杂

那我在这个整个开始运算 到结束的时候用的时间非常长

那它就会覆盖到我这个PFC中断产生 就是说在PFC中断产生的时刻

我的电机中断运算还没有完成

那这种情况下

因为C2000的这个 中断优先级的概念

并不是像很多的这种PC级的 这种中断优先的概念

那它自动地 如果是PC的话 它可能自动会打断一个中断

那C2000的这种 中断优先级的安排就是

只是在我们之前讲到 它两个中断源同时发生的时候

它会让中断优先级去响应

但一旦一个中断先拿到CPU资源 CPU在运算的时候

如果你不做软件的处理 这个中断是打不断这个电机的中断的

所以只有等当前电机中断的 这个算法先执行完了之后

PFC的这个算法才会被执行

所以这个的中断会被推到后面

就是整个这个中断会向后推一段时间

而且这段时间是不确定

那整个PFC的控制有可能 在这个周期就会受影响

由于引入了一个不确定的这个延时

我们知道数字控制系统中 采样延时 和计算延时的影响是非常大的

所以这个就可能会对系统产生问题

那我们在这个

在软件中我们可以对 这个中断进行一些优化和配置

我们期望得到的效果 因为我们的这个电机的中断频率很低

所以我们期望的效果 就是在电机运算中

如果电机没有算完PFC中断就来了

我们希望PFC中断 能够打断电机的这个算法

先把PFC中断的这个运算算完

然后再继续的这个运算电机算法

从而实现像下图所示的这种

中断的这个资源的分配

那这一段的时间正好是 它们产生冲突的这段时间

那我们把它放大

就是在这一时刻 我PFC的这个adc开始采样

那我们通过刚才的这个讲解 大家知道这段

就是从电机采样到它采样结束这段 实际上是不需要CPU资源的

我电机控制算法 可以继续的运算电机算法

当这个PFC采样结束

PFC的这个ad产生了一个 end of conversion的一个事件的时候

PFC就要进入PFC中断

那这个时候我们希望 PFC能够拿到CPU资源

那就是这段时间我们变成 红色的PFC运算的时间

直到PFC运算结束退出

然后我再切换成电机算法 再变成蓝色

让电机继续运算直到结束

那希望得到一个这个效果

但是这种实现是不能 自动执行自动实现的

是需要我们的软件的 这个软件的支持的

那下面这个给大家列出来了 就是我们为了实现这种

我们叫做C2000的中断嵌套

而加入的这段代码

那其实主要是在这个电机的中断里面

我们如果是要允许一个中断

被其他中断打断的话

我们需要再进中断的最开始 去把一些中断源释放

这里释放的就是我们 这个PFC所对应的中断源

那这个如果您选择的是其他中断源 那这面的这个第几组或者是这些值

您可能根据这个中断源去将它改变

然后再出中断时候的处理 也是和正常的有所不同的

那PFC中断的处理呢

前面都是你的运算代码

那最终是一个conknowledge和clear 那这个都是标准动作

这没有任何不同

所以PFC来说它就是一个

就是正常处理的

这个C2000的中断处理

那对于这个电机来说

我需要在进入中断的一开始 就需要把这些值进行一定相应的处理

这样才能保证我的PFC可以打断它

那下面两张图呢 是我们就是实际操作中

去实现中断嵌套的两个波形图

那这个黄颜色呢

是我们在这个 电机中断里面放的一个L

进入中断的时候把这个L拉低 出中断的时候把L拉高

对于这个红色的 或者紫色的这个PFC的一样

进入中断的时候我会把这个它拉低 出中断的时候把拉高

那从第一张图上我们看呢

它就是一个不允许PFC中断 打断电机中断的这种方式

就是我们没做这种软件处理 没做嵌套处理的时候

我们看到电机我们先关注一下 这个红色的这个频率和周期

之前它的时间间隔

那这里明显时间间隔变大 这里又变小

就是相当于这个频率不稳定了

那原因就是因为这个时刻 电机算法一直占着CPU并没有算完

只有电机算完了之后 PFC的这个才会进入中断打断

再继续运算

那后面这张图呢 就是我们实现了 中断嵌套的这种方式

我们可以看到PFC的中断的 这个频率非常的稳定

那在这个时刻 就是典型的是时刻

其实是我的这个 电机控制算法并没有算完

那我允许了一个PFC中断 进入中断服务程序去运算PFC算法

就是它打断了电机控制的这个算法

那上面给大家介绍呢

就是其实是在PFC 加电机控制系统中

容易遇到的一个算法 或者是中断冲突的一个问题

那给大家提供了一个 这个解决的办法

那这个解决的办法 在我们的德eSupport的这个论坛上

也有相关的这个解释

大家可以关注一下我们的 德eSupport的这个论坛

有一些这个我们内部的一些

您使用中的问题可以在上面 提问题 我们会及时给您回复

另外呢就是给大家 介绍我们一个C2000

有一些这种免费的 open source提供给大家

那包括我们的ControlSUITE 在这ControlSUITE 里面呢

我们有非常多的 这个TI提供的EUM板的

这种从原理图泵表geber file

完全都是免费的 还有几个非常多的这种参考代码

都是完全源码公开的

那这里面着重提一下的 就是这个PowerSUITE

它是一个专门针对数字电源的 开发设计的一个便捷的工具

里面当然包含很多源码 但最重要的是

但最重要的是 它有一个图形化的界面

可以供大家去用图形化的方式

去配置你的plum输出端口 ad以及ad采样的比列等等等等

就这些硬件的信息 可以通过图像化界面去配置

同时它会自动的帮您生成 这个控制环路的控制参数

当然您要告诉它这个电感电容啊 这些值基本的信息

那我们目前支持几种 这个比较简单这种拓扑结构

只要是我们支持的拓扑结构呢 您都可以用图形化界面去配置

同时让它去自动生成代码

整个开发过程中呢 是不用您自己手写代码的

那这些这个软件的下载地址 就在TI的官网都是免费可以下的

另外一个就是MotorWare 那这个MotorWare呢

主要是包含我们的 instaSPIN FOC和instaSPIN motion

是为了instaSPIN 这个算法专门开发的

那在这个里面呢

除了每个工程里面会包含非常多的

这个不同的这个设置的历程

它每个历程里面有不同的特点

当然最核心的 还是我们的FAST的估算器

那在这个FAST的估算器的边缘

或者是周边我们设计了很多

这种工业界 经常会使用到的一些功能

比如说

这个低速力矩补偿

那这个在单转子压缩机的 应用上是大家都很需要的

那这个我们的力矩补偿呢

是一个基于二次线性迭代的

一种自适应的估计力矩曲线 的一种算法

和自适用地去补偿

所以它是一个自动机制 并不像传统的查表的力矩补偿

然后还有就是说 这个我们的IPD加HFI

那已经集成到 我们的instaSPIN里面了

那我们这个instaSPIN的 MotorWare里面也可以下到

这个高频注入的算法 和instaSPIN配合的这种库

好 谢谢大家

希望大家继续关注TI的相关产品

视频报错
手机看
扫码用手机观看
收藏本课程

视频简介

无感电机控制算法与PFC算法的单芯片实现

所属课程:带有PFC的TI无传感电机驱动系统算法设计 发布时间:2017.05.10 视频集数:4 本节视频时长:00:24:07
单芯片实现无传感电机控制与PFC控制的实现方法及相关注意事项
TI培训小程序