找回密码
 立即注册

QQ登录

只需一步,快速开始

打印 上一主题 下一主题
开启左侧

无感FOC代码: 调试简单,起转顺利

  [复制链接]
91#
 楼主| Angus 发表于 前天 09:59 | 只看该作者
本帖最后由 Angus 于 2025-5-17 19:51 编辑

转速的计算和控制二

启动时,至少转过 N 个扇区,转速的计算才正确。在转速正确之前,不能做转速 PI 运算。每计算一次转速,变量 Do_Spd_PI 就加1。启动时赋值 Do_Spd_PI = -N-2;  转过一个扇区边界后 Do_Spd_PI = -N-1 ;  算是起点,再转过一个扇区Do_Spd_PI= -N; 就有了一个扇区前后两个边界的角度和时间,Do_Spd_PI= -1 时就有了 N 个扇区两边的角度和时间,就可计算出正确的转速了。


启动时不能做转速 PI 控制,也不能让转速设定值一直往上增加,所以代码中让转速设定值变量 RPM_Set_Target 一直等于测量转速。
启动后只有转到 Do_Spd_PI = -1 时,转速才正确,前面虽转速数据不对,让RPM_Set_Target = 测量转速,也无妨,因不做转速 PI 控制。 Do_Spd_PI = 0 以后就可以做转速 PI 控制了。



另一方面,启动阶段未变同步转动时 Motor_Status & 0x10) = 0,也不能做转速 PI 控制,也不能让设定转速一直往上增加。
启动时,是先 Do_Spd_PI 增加到0、还是先变同步转,不一定。

回复 支持 反对

使用道具 举报

92#
 楼主| Angus 发表于 前天 11:11 | 只看该作者
本帖最后由 Angus 于 2025-5-17 16:45 编辑

转速的计算和控制三。

同步转动时,测量转速值未更新也不做转速 PI 。在转一扇区时间、长于转速 PI 计算周期后,多次执行转速 PI 函数做一次 PI 运算,这相当于减小了积分系数,即随着转速降低,转速积分系数跟着降低。


如果不想让积分系数一直降低,就把变量 WaitCount 利用起来,当转速低到一定程度,Do_Spd_PI 一直不更新,而 WaitCount 已加到上限,也做一次转速 PI 运算。就得到了如下转速积分系数曲线:




回复 支持 反对

使用道具 举报

93#
匿名  发表于 昨天 08:35
Angus 发表于 2025-4-12 14:30
V26版,优化了启动逻辑,提速逻辑和缺相检测,并且把ADC 限流改为周期性检测和阶梯性报警。
如何做到重载启 ...

这里有个疑问,限压后,轻载能满足启动的电压电流要求,重载时,电压会不会不够用?毕竟负载不同,需要的电流不同,电压也相应不一定。
回复 支持 反对

使用道具

94#
 楼主| Angus 发表于 昨天 13:40 | 只看该作者
本帖最后由 Angus 于 2025-5-17 10:55 编辑
游客 58.49.24.x 发表于 2025-5-16 08:35
这里有个疑问,限压后,轻载能满足启动的电压电流要求,重载时,电压会不会不够用?毕竟负载不同,需要的 ...

限压多少,应按重载测试的效果确定,轻载启动稍快一点,依然很平稳,转速不会冲到很快。

限压带来的最大好处,是启动代码变得简单了,调整启动特性容易了。
回复 支持 反对

使用道具 举报

95#
 楼主| Angus 发表于 5 小时前 | 只看该作者
本帖最后由 Angus 于 2025-5-17 19:39 编辑

转速计算和控制四

压缩机在停转时一般不能立即关功率管,立即关功率管机械结构会猛得回弹,时间长了会损伤机械结构,应有个减速的过程。

M451 无感 FOC 代码,有加减速控制。代码中每25ms 电转速增加 50,一个 3000RPM 两对磁极电机,3秒内达到最快转速。 减速时每次减200,快了四倍。
代码中可修改这个加减速度。


全速3000 rpm 的电机,如果转速加到2500 rpm ,功率已到最大,不能再增加转速,代码如何处理呢? 功率 PI 运算采用增量式算法就轻易解决了此问题。

假如转速设定3000 rpm,  转速已到 2500 rpm,  则25ms 后,转速再增加 50。
如果功率 PI 算出增量是 300,只能按转速控制增加50,不然加速度就太快了。如果功率 PI 算出必须减 10,那就减10,不然功率就超了。即,功率 PI 算出的增量,和转速控制的增减量,哪个小,就计入哪个。这样在功率不超的前提下,加速度或减速度,都是期望的值。

回复 支持 反对

使用道具 举报

高级模式
B Color Image Link Quote Code Smilies |上传

本版积分规则

新唐MCU