(四) 如何在C2000上实现小于1微秒的电流环的设计(2)

+荐课 提问/讨论 评论 收藏
  • 本课程为精品课,您可以登录eeworld继续观看:
  • (四) 如何在C2000上实现小于1微秒的电流环的设计(2)
  • 登录
先做一下广告 现在都是开始讲技术了 这个就是 Fast Current Loop 这个是我们一般的Servo 我们理解的一般的Servo系统 它需要一个 有一个Motion Control Middle Motion Control发出指令 然后通过我们的这个Servo Drive 变频器啊或者什么也好 这个控制单元 这边是电机 然后这边是这个 电极的这个角度传感器 再加上负载传感器 这个都是系统配置的 有可能只有一边 那么这里面我们如何去实现 把一个指令真正转换成电机的实际动作呢 一般的话 控制环 速度环 电交环 其他发射器 都是标准动作 那这里面 我要实现一个高性能的 伺服系统 它有哪些要求呢 那这里面 我们就逐个 去看 就一般呢 我们知道 这种嵌套式的内环外环 多环路的 内环一定要比外环快 然后就是越往外越慢 越往里越快 这样 我发送的指令 你里面才能保证有足够的速度去跟踪 否则你整个系统就相当于失控了 不稳定了 那一般的工程经验啊 就是 位置环比电流环的带宽 是9到50倍 这个是一般 泛泛而指 所以 意思就是 它们两个一定要有非常大的带宽的差 我的控制性能才会好 那么整个系统如果我想做得非常高端 非常好 的相应速度的这个能力的话 它的这个短板在哪里 就是说我这个 位置环 我可以提呀 我可以几百赫兹 或者几K 我能不能提到100K啊 或者200K啊 可不可以啊 如果这个行啊 那么能提到什么程度呢 对不对 所以我们这样分析下来 整个系统如果无限制地往上提升的话呢 最终的极限点应该在电流管 因为电流管 你在这边提升 这边永远都要比它大 大9到50倍呢 所以 从整个MCU的运算能力 从整个系统稳定性的角度去考虑 最终让你不能再提升的极限点应该就是电流管的限制 所以这就是我们为什么花时间研究电流管 让电流管它的整个带宽 大幅提升 那么如果我们要提升电流管的带宽的话 还有一个限制 就是我们的开关频率 或者我们不叫它 我们叫做离散频率 有学过控制原理的知道 就是说 从连续域 自动控制原理就是把这个框图 或者它的传加数 变成离散化的时候 其他框图都不变 如果你的离散频率和你的带宽很接近的话 你的向矫率就会变得非常差 有可能在连续域 你是一个稳定的系统 那么离散以后你就不稳定了 原因就是你的离散频率 和你的带宽很接近 那我刚才说了 要提升整个系统性能 我就要尽量大带宽的电流环 那么尽量大带宽的电流环 那么如果这个带宽 往前扩大扩大 接近你的开关频率或者你的离散频率的时候 你的系统可能就不稳定了 因为你的带宽和离散频率太接近了 向矫率和幅度会受到非常严重的影响 这就是一个上加的限制 那可以啊 我这个离散频率影响我了 我可以再往上提嘛 一开始是10K 我可以提升到50K 100K 这个都可以 你软件上都可以提 但我100K的屏幕 那你知道你的Mouse啊 损耗啊 发热啊 这个 是非常严重的 所以在通常的实际应用中呢 我们不能无限往上提 所以这个是一样的 我们所有工程问题都是在权衡 就是这边太高了 那边下 那边太高了 那边下 要找到一个平衡点 两边可能都不是我最想要最极致的表现 但平衡了以后 都能满足我系统性能指标的要求 那所以 我们现在做的一个工作就是 尽量在不大幅提升PYI频率的情况下呢 能够把电流环的带宽能够提升 这是我们做的初衷 那么我们就是 从逻辑的角度 我们先不看具体环路的实现 我们就是从逻辑的角度去看我们怎么 去把这个电流环的带宽提高 那么我们知道整个环路为什么我们带宽 受限呢 其实 我们先讲这里 啊 我们在这里可以把那一页的内容涵盖了 这个是我们理解的电机控制的电流环的一个 这个控制框图 就是传电函数的一个 控制框图 其实我们看到其实这里都是连续域的 都是S的 那么整个框图呢 我们看起来很简单 就是PI环的一个控制 但是实际上呢 你要用这个做的话 你可以让它转 但是性能呢 肯定不好 为什么呢 因为它考虑的不全面 最主要的是 这个Delay它没有考虑进去 就是我们在用数字化的方式去实践的时候呢 采样 计算 再发PWM 这段时间对于这种低精度的控制系统 完全可以忽略 因为 你的最高的带宽可能在几百赫兹 终端频率可能在10K 5K 那就是远远大于 那么满足我们 这个从连续域到离散域的 我的离散频率 远远大于带宽 就是我不care 我不考虑 离散率对这个系统的影响 那么这个第一要求的这个系统 我们可以当做完全没有 就像刚才那个 上面的框图 去做 系统就可以 系统就可以转 可以跑得很好 但是如果我们把要求提高的话 那这个很多细节你就要考虑了 那我们这个着重强调的是 数字化时候的这个延迟 同时还有你整个采样环路 硬件调理环路 我的这个 运放 我的这个运放电路围绕在 电功率啊 这个电功率是什么带宽 那么你也要在这里面 把这个也考虑进去 就是严谨的这个系统 当然你可能考虑进去了以后 可能发现 其实对我们的这个带宽没有任何影响 因为这个硬件的滤波可能是我开关频率的10倍 或者100倍以上 所以 我们在整个带宽里面 我可以 但实际上 它是不影响的 所以为了简化我们研究的计算轨道 我们把它删掉 大家还是要严谨 还是要加上 因为它的接触 肯定不一样 就是加上以后 可能对你的带宽 对你的频率可能影响不大 但它对整个系统的接触会增加 OK 我们回到这个Delay上 我们从自动控制这个原理的角度上去看的话 有这个delay 和没这个delay其实对我系统的稳定性影响是非常非常大的 就是如果这个delay的时间也是 我们这个离散的频率 如果有关系 如果跟它相互一综合的话 我们的系统就会稳定或者不稳定 所以我们要仔细去研究这个delay 现在就是有一个结论 认为就是这个delay越长 那么我的系统不稳定 或者我的电流和带宽 就会越难往上提 这个 是我们可能大多数 配置我们的PWM或者中段 用的一种办法 在这里 我们去采样 然后呢 这段时间 我或者是计算 计算可能没有这么长时间 但我们知道 C2000它有一个 PWM更新的一个 模式 我们叫shadow模式 就是说 虽然我在下一个周期都算完了 但是我并不更新 我是在这个 零点 或者在下一个周期点 我再让新的PWM装载 这是我们很常用的一种方式 但这个问题相当于就是我从这一点开始 到这就是全部是Delay 就是我有一个叫compare的这个时间 这个delay 再加一个PWM Update的时间 大概有1.5倍的我的整个 采样周期的这个delay的时间 那这个呢 那就看吧 那系统要求高的时候 就1.5倍的时间 就可能让我的带宽推不上去了 那首先呢 我们要实现这个1微秒的电流环呢 第一个措施 我们有几个措施 我们一个一个来讲 第一个措施 就是我们不用shadow update的这个模式 我们用一个漂流模式 叫做immediate 直接update 那么我就是在这里采样 然后进行验算 从这到这 马上update 但这种update 会有几个问题 其实一个就是 我的PWM发波的这个范围的问题 大家有没有知道的啊 可以举手来回答一下 可以可以 哦 没人知道吗 没人知道 讲解就给我了 其实就是 如果我这个算测的时间如果是1% 那么我这个PWM最多只能发到99% 因为如果我想发100% 我在这就应该 告诉它是高定位 但我这段时间在算 我不能告诉他我要发百分之百 所以你这个计算时间越长 你要发波的duty的范围就越窄 这是一个问题 另外一个问题 就是我们刚才说的 越长 delay就越长 那这个就是一个稳定性的问题 反正这个呢 你虽然是不太好 但仍然会 起码比刚才那个delay要少得非常非常多 而且如果我们把它控制在2% 一般是在2%以内 我拧到这个98%的duty 其实对大多数应用来说其实是够了 我不一定要完全发到直通100% 那么这是我们的一个目标 这是我们的第一个手段 就是1%是最好的 越短越好 然后呢 这个就是 我们整个算出来以后 回到这个 就是 我们的目标就是我尽量减少 从我采样 计算到发送PWM 这中间的延迟的时间 我们知道这一系列动作 涉及到MCU的几个外设 AD CPU 因为我把AD的信息传递给CPU 我们内部的数据总线 然后我算完以后 再通过内部路线把它 发送到PWM PWM 再动作把它变成电频 整个这一系列环路 都是我们MCU这个 实时控制的一个最高的考验 所以 我们如何能够把这个思路 真正能最快速度地实现呢 那就是C2000 就这个 那我们从这个 AD先来 Zero Wait State 这个slide 看到的最多的就是zero wait state 不要犹豫 马上抢购 信号来了 就是zero wait state 可以过来CPU zero wait state 然后ram rom 那所有的这个都是我们的数据总线 整个芯片的结构设计 就是为了这个高速实时系统 去设计的 所以它的决策 整个MCU的决策 是非常简洁而迅速的 高效的这种决策机制 特别是有些高主频的MCU 它如果需要2级缓存啊 KH啊这些 它每一步都需要一个仲裁机制 所以这些都是要花时间的 所以我们整个这个回路 是非常简洁的一个模具 所以它能以最快速度把这个信号 传递到MCU 然后把每个部分该计算计算 然后我们的很多环节都是硬件实现的 比如我们的AD 我可以通过一个事件让AD开始工作 这个时候呢 我的主CPU是不用介入的 比如说 我通过我刚才的这个 PWM的周期的这个事件 只要我的PWM在跑道上跑 它就能启动AD AD采完了之后 它会给我一个事件 让我记录 让我中断 我再去算 要算的这个控制环路 那AD启动到采样 当然是非常非常快 我们知道这个大概是 原来我们的PLM 大概是200多个 不到200个大秒 其实是非常快的 但对于高精度系统 当然要强调的是高精度系统 这个时间也要考虑到 但如果你要考虑的话 这个时间你可以去干别的事了 因为主CPU不用在那里等着了 很多这个东西 比如你说进度慢 看AD 等 等完了AD我在计算 那这个就相当于我浪费了 当同时呢 PWM也是一样 也要很多硬件的自动机制 你只要对它进行配置 它就会按照你的配置周期进行工作 真正需要主CPU去计算的时候 CPU就去接了 什么是FCL FCL就是fast current loop 就是今天我们讲的这个 SOC Timing ADC PPB 这里这个PPB呢这个 我们仍用我们老一代的这个 C2000的 2812 和这个2407等等 那我们那个时候呢 就是 其实现在也是一样的 我们AD模块是需要这个 correlation的 它用到offset correlation 还有一个斜率的correlation 那我们知道老一代产品2812 2407 都需要我们工程师自己做的 而且你把这个telegram 的结果提高 set一个ratio 每一次采回来的AD值都要在代码里面写 把这两个传过去减回去 然后把你的AD矫正 现在我们这个叫ADCPPB呢 就是把这个过程用硬件实现了 所以在底层配置好了之后 每次你从AD 计算器读出来的结果 它就把(听不清)的部分做完了 硬件都做完了 就是已经把offset减去了 已经把ratio都乘过去了 这步已经做完了 所以你这个仍然是 不需要主CPU浪费时间去做这个的 这个是PPB 当然它还有温度的一些矫正 因为我们MCU内部有一个芯片温度的采集 要把这个温度采集信号 去做一个温度补偿 当然可能因为我们用不到这个 我们是有这个功能预留在那里的 然后是TMU 这个是非常强大的 也是我个人非常喜欢的单元 这个提升机动效率是非常明显的 同时我们的这个CLA 我们实现1微秒的电流环CLA 也是功不可没的 我们必须要用到CLA 就是很多部分其实是同时并行在计算 因为这两个是独立的核 他们都可以分别取访问我们的AD 我们的PWM 等等这些模块 所以他们是有自己完全独立的决策和这个 计算流程的 互不干扰 当然他们之间呢 也有我们所谓的 双重ram去高速的实施通讯 所以这个 我们实现这两个 1微秒的电流环的话 这两个是一个组合 一个CLA 和一个C28核 他们同时工作是很重要的一块 我们刚才讲了这个 第一个啊 就是这个是我们 C2000的这个 设计 整个这个模块的设计 包括外设的性能 同时再加上我们刚才这个 这个PWM update 来缩短这个延迟 但我们知道 虽然缩短了 但还是有延迟的 只要延迟在我的控制环路里面 它就会对我的传电函数 我的波特图的带宽 有一定的影响 那这里呢 我们又搞了一个secret格式 这个框一直都会是这个框啊 我也很期望它能把这个打开 我也不知道这里面是怎么实现的 但原理我们接受过组织培训啊 它就是用一个 其实我们自己用控制原理的思路去想 大概也会知道 其实是一个反向补偿 那我们大概知道这个延迟存在的话 我们可以从 控制原理的角度 可以对它进行补偿 同时呢 我们知道 尤其是对我们FOC这种 控制环路 那我们的这个 会有一个低客流的这个耦合 我会同时用这个compex controller 去把这个耦合也去掉 所以 它主要有两方面的工作 就是把这个低客流耦合 通过这个compex controller把它解决掉 同时会对延迟进行补偿 就是进一步减小我们这个 整个这个系统delay对这个 带宽的影响 所以我们最终 这是最终的一个测试图 这就是开始采样 到PWM更新 912个纳入点的话 每秒之内的 实测模型 对于这个 我们有一个比较 这912微秒 是我们不用complex controller的 就是我们传统的PI 那么用complex controller是940个纳入 那也就是比它稍微多一点 然后 fast current loop 就是这几个 特点吧 就是 主要就是我们刚才讲到的两点 第一是Immediate Update 还有一个就是complex controller 那我们最终是可以实现 这个刚才没讲到啊 就是可以实现3K的电流环带宽 是在10K的采样频率下 实现的3K的电流带宽 大家了解控制原理的话 其实知道这是不容易做到的 然后呢 我们很多伺服系统里面 会用到一个FPGA加一个转MCU的程式 我们这里也交流一下 如果用FPGA的话 它会有哪些 我们不叫问题吧 就是麻烦或者不容易处理的地方 第一个就是说 FPGA里面会有很多电频和电容 要提供多路电源 同时呢 它还没有内存 还要外挂AD 等等就是一系列的这些问题 就是还和主CPU进行高速通讯 增加了这个任务量啊 那这个选择就是 对于C2000这个 尤其是三级进阶这个 可以帮我们做到这个FPGA加 这个一个其他MCU方案 完全一个系统就可以搞定 同时呢 我们可以看到这里position manager 就是上一节有同事提到的这个 它就是一个绝对位置编码器的解码环节 那么我们这个三级进阶呢 跟大家讲 它就是有一个小单元叫 CLB 这在我们的数据手册上也有写 那这个CLB呢 大家可以理解为它是MCU内片 集成的一小块的这个 FPGA接口 它实际上是 FPGA功能集成在里面的 这些功能是偏内部的 能够去编一些内部的 软件库去损耗 CLB的功能 那我们现在有的这个就是position manager 那么它是节能 它是软件库的形式 有非常多的协议 你不用去换硬件 就是你芯片内部就可以 想要这个协议 就上这个代码 这个位置是这个协议 所以这里跟大家提一下 大家如果想了解详情的话 可以去官网看一下 G7D的position manager的这个 相关的内容。 然后我们现在FCL的这个呢 是以network的形式 去给大家提供 大家只要把这个network拿出来 配置一下 输入输出给进去 我们都能实现1微秒以下的 当然这个complex controller 也在里面 有点神秘啊 不知道什么时候才会open source 这个是我们的一些tools 还有一些资源 大家可以 我们有一个叫IDDK的 电源板 我们在这个板子上呢 配备了很多这个 供大家评估的办法 看个插槽啊 功率模块 大家可以直接 用我们的tool的软件 接到我们的control time上 这个板子上直接可以烤电机 评估电机的性能 这个是非常方便的 同时呢 我们的板子上还预留了你的公共安全的拓展 那电流采样 我们有下管电流采样 和Line采样 霍尔采样 还有德克斯马采样 就是你可以选到底用哪种 这几种都有 你只需要选其中一个就可以了 就可以控制系统 然后 我们有很多这个 就是design drive 就是我们刚才提到的design drive
课程介绍 共计5课时,1小时9分45秒

基于 TI C2000 的电机控制应用

TI C2000 电机控制

推荐帖子

LM4F231H5QR QEI功能 ph1A口 读不到脉冲?条件是phA1接入10-100KHZ的频率,
 unsigned int i; signed   int j1=0,j0=0;    //    // The FPU should be enabled because some compilers will use floating-    // point re...
sxjmcu 微控制器 MCU
来看看dsp与FPGA
怎么说呢,最为外围电路,特别是以DSP为体系的方式的时候fpga应用的很多,很广,可以设计,编程,自由度大的很,现在就发几篇论文,放在论文话题下面也是合适的啦!管理员看着办吧! 哈工大的强人的!...
gaoxiao 微控制器 MCU
我收藏的80多份TI中文资料
本帖最后由 dontium 于 2015-1-23 11:16 编辑 压缩版资料,见18楼; TI的模拟应用期刊; ...
music_586 模拟与混合信号
LaunchPad最多可以驱动多大的屏幕128x128的能搞定不!?
LaunchPad最多可以驱动多大的屏幕128x128的能搞定不!? 原来有个3100的老手机,预谋装到Launchpad上!     ************************************************************ 128x128个存储单元,   16位单片机应该可以搞定!? [ 本帖最后由 wuyanyan...
wuyanyanke 微控制器 MCU

大明58

基于 TI C2000 的电机控制应用

2020年03月03日 09:16:09

06010601

学习学习基于 TI C2000 的电机控制应用

2020年02月11日 15:36:59

shakencity

学习学习基于 TI C2000 的电机控制应用

2019年12月17日 13:58:16

hawkier

好好学习了哦

2019年09月10日 11:35:54

stormbreaker

C2000性能还是不错的

2019年09月06日 11:02:00

dovemeng

不错的视频,学习,学习

2019年05月26日 16:29:34

wudianjun2001

不错的视频,学习,学习

2019年03月27日 09:49:16

song430

继续来学习学习了。。。

2019年03月04日 20:52:36

weixiu123

继续学习

2019年01月18日 17:29:12

nick_liu1129

学习一下

2019年01月06日 18:22:25

分享到X
微博
QQ
QQ空间
微信

EEWorld订阅号

EEWorld服务号

汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新文章 手机版

站点相关: EEWORLD首页 EE大学堂 论坛 下载中心 Datasheet 活动专区 博客

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2023 EEWORLD.com.cn, Inc. All rights reserved