一般用汇编的Q格式都是截尾舍人,为了提高精度可以向上舍人,但我觉得下面的精度处理有些不对,程序中屏蔽了高位,但减的比留下的最大值都大,这不就不管用了么(肯定会跳)。不知我的看法对么,大侠们怎么看,小弟盼高手指点。下面是三相异步电机中的电流模型的 一部分,已经处理到_cur_error=_cur_error+_kr*(_isd-_imr), _cur_error的初值是0.<br /><br />_kr 电流模型积分常数<br />_k 速度与角度的变换常数<br />_cur_error 电流模型量化误差累计寄存器一<br /><br />程序为<br />current_model: <br /> lacc _isd<br /> sub _imr <br /> sacl _foc_temp<br /> lt _foc_temp<br /> mpy _kr <br /> pac <br /> clrc SXM<br /> and #07fffh<br /> add _cur_error <br /> sacl _cur_error<br /> sub #32768 <br /> blz no_limit1<br /> sacl _cur_error<br /> setc SXM<br /> pac<br /> sach _foc_temp,1<br /> lacc _foc_temp <br /> add #1<br /> sacl _foc_temp<br /> add _imr<br /> sacl _imr<br /> bcnd i_mrnotzero,neq<br /> lacc #0<br /> sacl _foc_temp<br /> b i_mrzero<br />no_limit1:<br /> setc SXM<br /> pac<br /> sach _foc_temp,1<br /> lacc _foc_temp <br /> add _imr<br /> sacl _imr<br /> bcnd i_mrnotzero,neq<br /> lacc #0<br /> sacl _foc_temp<br /> b i_mrzero<br /> |
|