无感电机控制算法与PFC算法的单芯片实现
Loading the player...
将在30s后自动为您播放下一课程
大家好 欢迎大家参加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的相关产品
大家好 欢迎大家参加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的相关产品
大家好 欢迎大家参加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控制的实现方法及相关注意事项
//=$v1;?>
//=$v['id']?>//=$v['down_category']?>//=$v['link']?>//=$v['is_dl']?>//=$v['link']?>//=$v['name']?>//=$v['name']?>
//=$v['id']?>//=$v['down_category']?>//=$v['path']?>//=$v['is_dl']?>//=$v['path']?>//=$v['name']?>//=$v['name']?>
////=count($lesson['bbsinfo'])?>
//=$elink?>//=$elink?>//=$tags[0]?>//=$tags[0]?>//=$elink?>//= $elink?>//=$tags[1]?>//=$tags[1]?>
//=$lesson['bbs'];?>
//=count($lesson['bbsinfo'])?>