如何在C2000上实现小于1微秒的电流环的设计(2)
Loading the player...
将在30s后自动为您播放下一课程
先做一下广告 现在都是开始讲技术了 这个就是 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
先做一下广告 现在都是开始讲技术了 这个就是 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
先做一下广告 现在都是开始讲技术了
这个就是 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
先做一下广告 现在都是开始讲技术了 这个就是 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
先做一下广告 现在都是开始讲技术了
这个就是 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
视频报错
手机看
扫码用手机观看
收藏本课程
视频简介
如何在C2000上实现小于1微秒的电流环的设计(2)
所属课程:基于 TI C2000 的电机控制应用
发布时间:2017.12.06
视频集数:5
本节视频时长:00:24:23
观看此视频后,我们会了解到C2000 F2004x在实时控制系统中特性,还会掌握如何在C2000上实现小于1微秒的电流环的设计。
//=$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'])?>