20201127调试

20201127 我当天主要的目的  是把VF控制调试的准确   

第一个待解决的问题:

VF控制模式下 计算出当前设定转速Motor_VF_Spd 对应的换相步长  Motor_VF_StepPhaseF   

 

令电机的机械给定速度为Motor_VF_Spd  为变量n   电机的极对数为2  

电角度的变化率为 2n/min  

每秒钟电角度的变化为 2n/60

那么10ms 电角度的变换为 2n/60/100=n/3000;

 

 

 

程序中 我大致设为 n/3000  如上图所示 

 

 

 

(2)转速的计算   

 

     void Vol2Hall(void中函数对于扇区的变化是对HallEstTickW  进行计数,

 

为了保证分辨率,扇区的计算必须放在比较快的循环中  故扇区的变化放在motor_INT()函数中比较合理 。Motor_INT()中 当扇区发生变化的时候,增加1 当大于65535 0  

 

10ms的电机管理循环中   每一把当前在motor_INT()中读到的数HallEstTickW 保存起来,赋予给局部变量A,然后减去上一次进入改分支计算出的全部变量

 

A小于N  counter=(65536-N)+A

 

A大于N  counter=A-N 

 

假设 20us 扇区仅变化一次  对应的机械转速是  

 

20us60度电角度    那么120us 360度电角度  

 

电角度的频率是     

 

f=1/120us  =8333  r/s

 

即可分辨出每秒变换8333的电转速。  

 

每分钟可变化 499980r/min 的电转速

 

转子是两对极  

 

即可分辨 250000r/min 的转速 

 

 

那么最低的转速可以分辨到多少

 

6553520us 时间间隔内 扇区状态未发生变化,

 

20us x65535= 1.31

 

360度对应7.8

 

即每秒钟  1/7.8  

 

每分钟  1/7.8  * 60  =33r/min  

 

转子两对极    机械转速  15r/min  

 

(3) VF控制中的一些参数 是在motor_VF1ms 子函数中 更新 ,但是motor_VF()子函数确实20us 刷新一次,  

即:一个参数需要执行500次后 才会刷新一次  

 

 

(3) 速度闭环下  扇区的刷新 VF控制模式 下 扇区 的刷新 计算是不是一样? 是否有标志位区别  ?  

 

重要:VF模式下 扇区的计算  与 速度闭环 下  扇区的计算在分支中是互斥的

 

 

 

此版本程序  VF控制中  spdobj  是上位机给定的机械转速   因为是电机是两对极  

   VF控制中实际直接控制的是换向  是电角度  于是需要

   spdobj=spdobj/2;

增加了以后  VF 可以3000r/min  启动了 

 

 

 

posted @ 2020-11-30 10:16  STEVEN-SUN  阅读(172)  评论(0编辑  收藏  举报