📄 imvc07_a.lst
字号:
302 00bc bc00- LDP #_position
303 00bd bf80 LACC #0
00be 0000
304 00bf 9064- SACL _pos_ref_1
305 00c0 9065- SACL _pos_1
306 00c1 905f- SACL _pos_ref
307 00c2 905e- SACL _pos
308 00c3 9066- SACL _e_pos_1
309 00c4 9067- SACL _I_pos_1_high
310 00c5 9068- SACL _I_pos_1_low
311 00c6 9053- SACL _omg_ref
312 00c7 9069- SACL _omg_ref_low
313 00c8 ef00 RET
314
315 ;=============================================================================
316 ; Routine Name: _pi_reg_pos
317 ; -------------------------
318 ; Description: Implements position PI controller
319 ;
320 ; OVM=1
321 ; dyi=sat(yi-yim1)
322 ; dyri=sat(yri-yrim1)
323 ; ei=sat(eim1+dyri-dyi)
324 ; dyri=ei-eim1+dyi
325 ; Pi=satsfl(Kps*dyri-Kps*dyi)
326 ; uim1=ui=sat(Pi+Iim1+uim1)
327 ; Iim1=satsfl(Kis*ei)
328 ; yrim1=yrim1+dyri
329 ; yim1=yi
330 ; eim1=ei
331 ; OVM=0
332 ; --------------------------
333 ; Calling Convention: extern void _pi_reg_pos();
334 ;==============================================================================
335 ; +--------------------------------------------------------------------------+
336 ; | Input global variables:
337 ; +--------------------------------------------------------------------------+
338 ; | _pos_ref | reference value of the speed at step i (yri)
339 ; | _pos | feedback value of the speed at step i (yi)
340 ; | _Kps_pos | scaled Kp coeff: Kps = Kp / (2^scalKp) so that
341 ; | | -1 < Kps < +1
342 ; | _sf_P_pos | sf_P_omg = scalKp
343 ; | _Kis_pos | scaled Ki coeff: Kis = Ki / (2^scalKi) so that
344 ; | | -1 < Kis < +1
345 ; | _sf_I_pos | sf_I_omg = scalKi
346 ; | _pos_ref_1 | reference value of the speed at step i-1 (yrim1)
347 ; | _pos_1 | feedback value of the speed at step i-1 (yim1)
348 ; | _e_pos_1 | error at step i-1
349 ; | _I_pos_1_high | integral term at step i-1, (16 MSB) |
350 ; | _I_pos_1_low | integral term at step i-1, (16 LSB) |
351 ; +--------------------------------------------------------------------------+
352 ; | Input local variables:
TMS320C1x/C2x/C2xx/C5x COFF Assembler Version 7.00 Mon May 28 09:55:02 2007
Copyright (c) 1987-1999 Texas Instruments Incorporated
D:\Imvc\IMVC07_a.asm PAGE 9
353 ; +--------------------------------------------------------------------------+
354 ; | dif_pos_ref | difference between actual and old reference
355 ; | dif_pos | difference between actual and old feedback
356 ; | e_pos | error at step i
357 ; +--------------------------------------------------------------------------+
358 ; | Output global variables:
359 ; +--------------------------------------------------------------------------+
360 ; | _omg_ref | output of the regulator (16 MSB)
361 ; | _omg_ref_low | output of the regulator (16 LSB)
362 ; +--------------------------------------------------------------------------+
363 ;------------------------------------------------------------------------------
364 .global _pi_reg_pos
365 ;==============================================================================
366 00c9 _pi_reg_pos:
367 00c9 be47 SETC SXM
368 00ca bc00- LDP #_position
369 00cb be43 SETC OVM ; set overflow protection mode
370
371 00cc 6a5e- LACC _pos,16
372 00cd 6565- SUB _pos_1,16
373 00ce 9801- SACH dif_pos ; dyi=sat(yi-yim1)
374
375 00cf 6a5f- LACC _pos_ref,16
376 00d0 6564- SUB _pos_ref_1,16
377 00d1 9800- SACH dif_pos_ref ; dyri=sat(yri-yrim1)
378
379 00d2 6501- SUB dif_pos,16 ; ACC=dyri-dyi
380 00d3 6166- ADD _e_pos_1,16
381 00d4 9802- SACH e_pos ; ei=sat(eim1+dyri-dyi)
382
383 00d5 6566- SUB _e_pos_1,16
384 00d6 6101- ADD dif_pos,16
385 00d7 9800- SACH dif_pos_ref ; dyri=ei-eim1+dyi
386
387 00d8 7360- LT _Kps_pos
388 00d9 5400- MPY dif_pos_ref ; Kps*dyri
389 00da be03 PAC
390 00db 5401- MPY dif_pos ; Kps*dyi
391 00dc be05 SPAC ; Kps*dyri-Kps*dyi
392 00dd SATSFL _sf_P_pos ; ACC=Pi=satsfl(Kps*dyri-Kps*dyi) in Q31 format
1 00dd 83a0 sar AR3, *+
1 00de 80ab sar AR0, *+,AR3
1 00df 0361- LAR AR3, _sf_P_pos
1 00e0 bf08 LAR AR0, #satvals12
00e1 0026-
1 00e2 8be0 MAR *0+
1 00e3 6180 ADD *,16
1 00e4 6580 SUB *,16
1 00e5 6580 SUB *,16
1 00e6 6189 ADD *,16,AR1
1 00e7 0b61- RPT _sf_P_pos
1 00e8 be09 SFL
1 00e9 8b90 mar *-
1 00ea 0090 lar AR0, *-
TMS320C1x/C2x/C2xx/C5x COFF Assembler Version 7.00 Mon May 28 09:55:02 2007
Copyright (c) 1987-1999 Texas Instruments Incorporated
D:\Imvc\IMVC07_a.asm PAGE 10
1 00eb 0380 lar AR3, *
393 00ec be46 CLRC SXM
394 00ed 2068- ADD _I_pos_1_low
395 00ee 2069- ADD _omg_ref_low
396 00ef be47 SETC SXM
397 00f0 6167- ADD _I_pos_1_high,16
398 00f1 6153- ADD _omg_ref,16
399
400 00f2 sat_reg_out C_SAT_OMG_REF ; macro that saturates regulator's output
1 00f2 bf9f ADD #C_SAT_OMG_REF,15
00f3 3334
1 00f4 bfaf SUB #C_SAT_OMG_REF,15
00f5 3334
1 00f6 bfaf SUB #C_SAT_OMG_REF,15
00f7 3334
1 00f8 bf9f ADD #C_SAT_OMG_REF,15
00f9 3334
401
402 00fa 9853- SACH _omg_ref ; uim1=ui=sat(Pi+Iim1+uim1)
403 00fb 9069- SACL _omg_ref_low
404
405 00fc 7362- LT _Kis_pos
406 00fd 5402- MPY e_pos
407 00fe be03 PAC ; Kis*ei
408 00ff SATSFL _sf_I_pos ; ACC=Iim1=satsfl(Kis*ei)
1 00ff 83a0 sar AR3, *+
1 0100 80ab sar AR0, *+,AR3
1 0101 0363- LAR AR3, _sf_I_pos
1 0102 bf08 LAR AR0, #satvals12
0103 0026-
1 0104 8be0 MAR *0+
1 0105 6180 ADD *,16
1 0106 6580 SUB *,16
1 0107 6580 SUB *,16
1 0108 6189 ADD *,16,AR1
1 0109 0b63- RPT _sf_I_pos
1 010a be09 SFL
1 010b 8b90 mar *-
1 010c 0090 lar AR0, *-
1 010d 0380 lar AR3, *
409 010e 9867- SACH _I_pos_1_high ; Iim1=satsfl(Kis*ei)
410 010f 9068- SACL _I_pos_1_low
411
412 0110 6a64- LACC _pos_ref_1,16
413 0111 6100- ADD dif_pos_ref,16
414 0112 9864- SACH _pos_ref_1 ; yrim1=yrim1+dyri
415
416 0113 105e- LACC _pos
417 0114 9065- SACL _pos_1 ; yim1=yi
418
419 0115 1002- LACC e_pos
420 0116 9066- SACL _e_pos_1 ; eim1=ei
421
422 0117 be42 CLRC OVM ; disable overflow protection mode
TMS320C1x/C2x/C2xx/C5x COFF Assembler Version 7.00 Mon May 28 09:55:02 2007
Copyright (c) 1987-1999 Texas Instruments Incorporated
D:\Imvc\IMVC07_a.asm PAGE 11
423 0118 ef00 RET
424
425 ;=============================================================================
426
427 ; Routine Name: _init_pi_reg_omg
428 ; ------------------------------
429 ; Description: Setup of speed, PI controller variables
430 ; ------------------------------
431 ; Calling Convention: extern void _init_pi_reg_omg();
432 ;=============================================================================
433 .global _init_pi_reg_omg
434 ;=============================================================================
435 0119 _init_pi_reg_omg:
436 0119 bc00- LDP #_omg
437 011a bf80 LACC #0
011b 0000
438 011c 9058- SACL _omg_ref_1
439 011d 9059- SACL _omg_1
440 011e 9053- SACL _omg_ref
441 011f 9052- SACL _omg
442 0120 905a- SACL _e_omg_1
443 0121 905b- SACL _I_omg_1_high
444 0122 905c- SACL _I_omg_1_low
445 0123 9047- SACL _i_q_ref
446 0124 905d- SACL _iq_ref_low
447 0125 ef00 RET
448
449 ;=============================================================================
450 ; Routine Name: _pi_reg_omg
451 ; -------------------------
452 ; Description: Implements speed PI controller
453 ;
454 ; OVM=1
455 ; dyi=sat(yi-yim1)
456 ; dyri=sat(yri-yrim1)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -