浮云's profile修行者PhotosBlogListsMore ![]() | Help |
修行者保持低调的生活态度和相对高调的工作热情 |
||||||
|
有啥事说呗!
|
December 11 搬家了! 搬家了,觉得GOOGLE还不错,集成了很多东西,photo,site,blog,documents,etc。。。。全部一个帐户搞定,虽然有些功能还不是很完善,但是已经很不错了,给人家点时间嘛。 以后可能不会再看到这里有动静了,除非哪天MS做得比GOOGLE更好了,我再回来。 地址:http://sites.google.com/site/mezengxy/ 欢迎来访!不过本不不善表达,比较枯燥,可能会让你失望。 December 04 虽然是一个很简单的差分放大,但是搞定了还是有点小开心啦折腾了好几天了,之前把原理都搞错了,今天看了一下胡老师的图才明白过来,唉。。。。事情真的是要亲力亲为,才能真正明白呀! 附上原理图: 为此我还画了我史上的第一块PCB板,小有纪念意义,也附上: 两个是不一致的啦,PCB是前面画的,也不可能拿去做,所以也不想改了。只是在面包板上实现了它。也算是做了吧。 黎工的评价是:作为第一块板子,还算很不错了,不过一开始电源线宽度没有区别对待。小高兴一下,呵呵。 这是黎工关于布线宽度的经验,记录一下: 黎工 14:46:25 黎工 14:47:39 明天开始试EKF,或者MRAS,从低阶开始试起。 November 27 今天解决的问题首先记录下,强大的胡老师帮我解决了昨天的一个问题:为什么开环给定位置再去测实际位置时,电流ialpha与转子角度是波峰对应的,而闭环的时候是向下过零时对应的。因为,给定位置时,转子总是向稳态运行,就是向力矩最小的位置运行。这时二者的磁场是平行的。而闭环的时候,为了达到最大转矩,所加电流是根据转子位置加在与转子磁极垂直的位置。感觉就是一个主动一个被动。这个应该也可以解决为什么开环,而且iq给定时能稳定的原因。 当电压不够时,电流增大,但是SVPWM的输出波形并没有变化: SVPWM的输出还是马鞍形。电流调节器已经基本饱和了(限幅0.8)而且id是负的。 虫虫所说的电流给定,用实际检测的转子位置来反馈的实验暂时没有做。 把放到RAM里能用的程序直接改掉CMD文件,结果可以了!后来想想,应该是后来线改接了,而电流采样程序里的顺序没有改回来导致的。 还发现了一个新问题:不加KALMAN程序,给定和实际是一致的,而加了那段程序以后,发现虽然反馈和给定似乎是一致的,但是实际 却减半了!测引脚波形才发现,其实所用时间已经超过了一个PWM周期了,所以变成两个周期才中断一次。所以减半了,至于为什么刚好减半,我也没有深究了。 有人催了,先写到这。 PS:今天的火锅吃得很爽! November 26 几个问题的总结一开始的位置偏移转正的方法是非常错误的:电流闭环,给定位置,电机转起来,然后检测位置,加上偏移量,使这两个位置趋于一致.因为实际上这种非闭环状态下给定位置和实际位置本身就一不致。在大量的实验之后发现,位置较正的参考变量是ialpha。转子的0位置应该对应于ialpha的向下过零点。这跟仿真的结果是一致的。 不过这样又有一点诡异的事:按胡老师的办法,先把转子预定位到0,就是IPARK的位置给定是0.这时候把EvaRegs.T2CNT清0,每过10000(一周脉冲数)就取模。得出来的结果竟然是位置的0点对应于ialpha的波峰!不知道怎么解释。 之前转到高速的时候老是id偏离0,然后电流增大,总以为是因为高速引起的位置偏差。后来在胡老师的指导下才发现是母线电压不高!虫虫的解释是母线电压不够导致调节器饱和,然后系统进入了非线性区。我觉得也应该是这样的。 还有一点,在id、iq、和位置(给定速度积分生成),理论上速度是不能稳定的。因为按转矩公式,电磁力矩和负载转矩不相等的话,应该会一直加速的呀!!结果速度稳定在给定速度上!很诡异!不过好像这时候的实际位置和给定位置偏差也是很大的。有空截图上来。 时间是够的,程序也是一样的,放到RAM里能运行,烧到FLASH里电机却转不起来?太诡异了!不知道发生了类似于堆栈溢出这类的错误以后程序是会继续运行呢?还是会跳到类似于illegal_ISR这样的中断里面?似乎不可能有别的问题了呀?难道真的是总结坏掉了?之前的开环运行程序是OK的,再试试,如果也不行,那肯定是片子出问题了。 总之呢,就是太多的问题了! November 23 还是补偿的问题小罗的生日。今天喝多了。但是有心得还是要写的。 把系数加到2,再加到3,在20Hz的时候电流明显比1.2的时候小了,看来还是补偿不够。但是系数加到3还是不能转到30Hz.这个是很悲哀的事。我还试过把补偿系数改成负的,显然不行,电流变得更大。本来还想把系数再改大点试试,但是今天不行了,打字已经不听使唤了,别一会把东西烧了。明天再来吧。 November 22 看来已经不是PI的问题了看来我前面的怀疑是有道理的,在不加补偿的时候,当频率到20HZ的时候,电流传感器检测到的电压幅值将达到0.4V+,而加上补偿以后(compensation = f*Ts),其余参数不变的情况下,传感器电压降到0.3V+,不过理论上来讲还是很大,但我再乘一个系数(1.2),电流也没有再减小,不知道是补偿方法不对,还是别的什么原因。还要请教一下高人。 解决了初始定位的问题,但是PI的问题还是没有解决要坚持天天写博看来真的是一件很需要毅力的事! 如果不进行初始定位,每次电机启动时都会抖动一下,相当让人不爽,更严重的是,双闭环的时候如果初始位置不对,又加了Ki的话,电机根本转不起来,而是一直在抖。还是强大的胡老师说得对:初始位置不对有可能使起动时电磁转矩过大,这样转子就会转到给定位置前面,然后电机就会在这个位置来回调整,使得转子在零位附近抖动。 简单的初始定位方法:让QEP程序先跑起来,并使能其中断。但是一定要关闭PWM周期中断。我的做法是完成所有初始化任务后等待,并判断使能寄存器,如果已经使能,则打开EVA中的T1UFINT中断,否则关闭之。在使能之前,先把电机转起来,至少转一圈。这时候T2CNT里的值就准确地记录了转子的当前位置。 完成了初始定位,再在使能之前加入Ki参数,电机也可以在双闭环时很平稳地转进来了!也不抖了!哈哈哈哈~~我得意地笑…… 虽然完成了前面的一系列工作:初始定位、加入Ki,但是转到0.2(pu)的时候,空载电流突然变得很大了,停下电机,看id,居然有0.1多!为何Ki没起作用? 初步设想是由于速度加快,转子位置从检测到运算到给出,已经有相当的误差了,这样导致了id的增大。下一步要做的就是想出一种办法对转子位置进行补偿。 November 13 都是电压惹的祸电阻辨识:通过示波器观察,给定占空比为0.3,实际只有0.25不到,这个死区效应也太明显了吧,这个根本无从计算,还有,线电压之间在判断的时候居然是负的1.几V,难怪平均值这么小,在这上面花了一个星期的时间,实在是耗不起了,多半是电流连续造成二极管续流呀这类的原因导致的,以后有空再研究吧,看来死区补偿要做到很高的精度靠开环计算肯定是行不通的,太多要考虑的因素了,只能通过闭环来控制。
电感辨识:Valpha(RMS)=Vbeta(RMS)=Vdc*Vpu/sqrt(3)/sqrt(2)。本以为要计算管压降、死区时间等等,l输出电压要比给定的低,结果反而要更高?What's wrong? 虽然万用表测量的结果和计算值还是有一点差距,但是各母线电压下的计算结果一致性还是相当的好的,所以算是一个比较成功的实验吧。 整来整去都是电压的问题,说不定都是同一个问题没搞清楚。一个人做事,还没经验,是很难 发现的一个新问题:用万用表的交流档测PWM的有效值到底是不是其均方根(RMS)值?用万用表测和用示波器测的结果完全不一样,但是万用表测量的结果和我的仿真结果是大致一致的。原因在哪里呢? November 11 电阻辨识中的疑惑如果在IPM的manual上写的饱和管压降Vces是1.8V,那么补偿量是不是应该是1.8*2=3.6V? 在官方例程中,输出电压=电压标幺*母线电压/sqrt(3);结果是:母线电压是6.35V,给定标幺值是0.5,电流仍然有0.3A,那实际加在定子上的电压到底是(V*XVdc)/sqrt(3)-Vcomp呢?还是 (V*XVdc-Vcomp)/sqrt(3)?前者基本不可能,因为6.35*0.5=3.175<3.8,后者又觉得不合理,sigh。。。。。
Who can give me a right answer?!!? November 07 《DSP C2000程序员高手进阶》的一些笔记1)当全局或静态变量没有显式初始化时,标准C规定变量初始化为0。但往往效率出发,DSP的C语言规定:没有显式初始化的,仍保持未初始化状态。这里往往汇编的角度给出解释:全局或静态变量存放在段.bss中,需要显式初始化的值放在段.cinit中,DSP上电时,系统初始化函会自动调用段.cinit的值来初始化段.bss。对没有显式定义初始化值的,则不初始化,这样养活了存储空间和初始化运行时间。(64) 2)函数文件经过编译后生成目标文件.obj,库文件的后缀是.lib。两者都属于可重新定位的二进制代码,但还是有所不同:目标文件.obj的所有代码都会被装入和链接到程序中去,链接函数库只链接所需要的函数。以标准C的函数库为例,当然不希望把抽有的函数都链接到自己的程序中去,那样最终可执行文件的代码会大得吓人。(P31) 3)
以上代码将被优化掉
以上代码不会被优化掉。 |
|||||
|
|