📄 acmotor.ls
字号:
1286 0326 cd0000 call c_lcmp
1288 0329 2a10 jrpl L144
1289 ; 416 VoltageIntegralTerm = S32_MAX; // Avoid IntTerm Overflow
1291 032b a6ff ld a,#255
1292 032d c70014 ld L7_VoltageIntegralTerm+3,a
1293 0330 c70013 ld L7_VoltageIntegralTerm+2,a
1294 0333 c70012 ld L7_VoltageIntegralTerm+1,a
1295 0336 a67f ld a,#127
1296 0338 c70011 ld L7_VoltageIntegralTerm,a
1297 033b L144:
1298 ; 419 if ( ( DeltaVoltage_slip < 0 ) && ( VoltageIntegralTerm > PreviousVoltageIntegral ) )
1300 033b c6000c ld a,L31_DeltaVoltage_slip
1301 033e 2a1f jrpl L344
1303 0340 aef9 ld x,#_ACM_SlipRegulation$L-7
1304 0342 cd0000 call c_ltor
1306 0345 ae11 ld x,#high(L7_VoltageIntegralTerm)
1307 0347 bf00 ld c_x,x
1308 0349 ae11 ld x,#low(L7_VoltageIntegralTerm)
1309 034b cd0000 call c_xlcmp
1311 034e 2a0f jrpl L344
1312 ; 421 VoltageIntegralTerm = S32_MIN; // Avoid IntTerm Underflow
1314 0350 4f clr a
1315 0351 c70014 ld L7_VoltageIntegralTerm+3,a
1316 0354 c70013 ld L7_VoltageIntegralTerm+2,a
1317 0357 c70012 ld L7_VoltageIntegralTerm+1,a
1318 035a a680 ld a,#128
1319 035c c70011 ld L7_VoltageIntegralTerm,a
1320 035f L344:
1321 ; 425 NewVoltage += (s16)( VoltageIntegralTerm / 256 ); /* Sum "proportional" and "integral" terms */
1323 035f ae11 ld x,#high(L7_VoltageIntegralTerm)
1324 0361 bf00 ld c_x,x
1325 0363 ae11 ld x,#low(L7_VoltageIntegralTerm)
1326 0365 cd0000 call c_xltor
1328 0368 ae04 ld x,#high(L43)
1329 036a bf00 ld c_x,x
1330 036c ae04 ld x,#low(L43)
1331 036e cd0000 call c_xldiv
1333 0371 b603 ld a,c_lreg+3
1334 0373 be02 ld x,c_lreg+2
1335 0375 b7f8 ld _ACM_SlipRegulation$L-8,a
1336 0377 bff7 ld _ACM_SlipRegulation$L-9,x
1337 0379 b6ff ld a,_ACM_SlipRegulation$L-1
1338 037b bbf8 add a,_ACM_SlipRegulation$L-8
1339 037d b7ff ld _ACM_SlipRegulation$L-1,a
1340 037f b6fe ld a,_ACM_SlipRegulation$L-2
1341 0381 b9f7 adc a,_ACM_SlipRegulation$L-9
1342 0383 b7fe ld _ACM_SlipRegulation$L-2,a
1343 ; 427 if ( NewVoltage < 0 )
1345 0385 2a09 jrpl L544
1346 ; 429 Voltage = 0;
1348 0387 3ffd clr _ACM_SlipRegulation$L-3
1349 ; 430 MinPiOut = TRUE;
1351 0389 a601 ld a,#1
1352 038b c70001 ld L32_MinPiOut,a
1354 038e 2023 jra L744
1355 0390 L544:
1356 ; 436 MaxVoltage = ACM_VoltageMaxAllowed( MTC_GetStatorFreq() );
1358 0390 cd0000 call _MTC_GetStatorFreq
1360 0393 cd000e call _ACM_VoltageMaxAllowed
1362 0396 b7fc ld _ACM_SlipRegulation$L-4,a
1363 ; 437 if ( NewVoltage > (s16)MaxVoltage )
1365 0398 5f clr x
1366 0399 b0ff sub a,_ACM_SlipRegulation$L-1
1367 039b 4f clr a
1368 039c b2fe sbc a,_ACM_SlipRegulation$L-2
1369 039e 2a08 jrpl L154
1370 ; 439 Voltage = MaxVoltage;
1372 03a0 b6fc ld a,_ACM_SlipRegulation$L-4
1373 03a2 b7fd ld _ACM_SlipRegulation$L-3,a
1374 ; 440 MaxPiOut = TRUE; /* Set ClampFlag if modulation reaches maximum value */
1376 03a4 a601 ld a,#1
1378 03a6 2008 jp LC001
1379 03a8 L154:
1380 ; 444 Voltage = (u8)NewVoltage;
1382 03a8 b6ff ld a,_ACM_SlipRegulation$L-1
1383 03aa b7fd ld _ACM_SlipRegulation$L-3,a
1384 ; 445 MinPiOut = FALSE;
1386 03ac 4f clr a
1387 03ad c70001 ld L32_MinPiOut,a
1388 ; 446 MaxPiOut = FALSE;
1390 03b0 LC001:
1391 03b0 c70000 ld L52_MaxPiOut,a
1392 03b3 L744:
1393 ; 450 return (Voltage);
1395 03b3 b6fd ld a,_ACM_SlipRegulation$L-3
1398 03b5 81 ret
1449 ; 470 u8 ACM_GetOptimumSlip(u16 StatorFrequency)
1449 ; 471 {
1450 switch .text
1452 xref.b _ACM_GetOptimumSlip$L
1453 03b6 _ACM_GetOptimumSlip:
1455 03b6 b701 ld _ACM_GetOptimumSlip$L+1,a
1456 03b8 bf00 ld _ACM_GetOptimumSlip$L,x
1458 ; 474 if ( StatorFrequency <= OPT_SLIP_LOWFREQ_LIMIT )
1460 03ba a0d1 sub a,#209
1461 03bc 9f ld a,x
1462 03bd a207 sbc a,#7
1463 03bf 2403 jruge L305
1464 ; 476 OptimumSlip = OPT_SLIP_LOWFREQ;
1466 03c1 a61e ld a,#30
1469 03c3 81 ret
1470 03c4 L305:
1471 ; 478 } else if ( StatorFrequency >= OPT_SLIP_HIGHFREQ_LIMIT )
1473 03c4 b601 ld a,_ACM_GetOptimumSlip$L+1
1474 03c6 a0c4 sub a,#196
1475 03c8 b600 ld a,_ACM_GetOptimumSlip$L
1476 03ca a209 sbc a,#9
1477 03cc 2503 jrult L705
1478 ; 480 OptimumSlip = OPT_SLIP_HIGHFREQ;
1480 03ce a650 ld a,#80
1483 03d0 81 ret
1484 03d1 L705:
1485 ; 484 Buffer = StatorFrequency * SLIP_COEFF - SLIP_OFFSET;
1487 03d1 b601 ld a,_ACM_GetOptimumSlip$L+1
1488 03d3 3f00 clr c_y
1489 03d5 90ae19 ld y,#25
1490 03d8 cd0000 call c_imul
1492 03db a050 sub a,#80
1493 03dd 88 push a
1494 03de 9f ld a,x
1495 03df a2c3 sbc a,#195
1496 03e1 b7fd ld _ACM_GetOptimumSlip$L-3,a
1497 03e3 84 pop a
1498 ; 485 OptimumSlip = (u8)(OPT_SLIP_LOWFREQ + (u8) (Buffer / 256));
1500 03e4 b6fd ld a,_ACM_GetOptimumSlip$L-3
1501 03e6 ab1e add a,#30
1502 ; 488 return ( OptimumSlip );
1506 03e8 81 ret
1550 ; 500 void ACM_GetPIParam(u16 StatorFrequency)
1550 ; 501 {
1551 switch .text
1553 xref.b _ACM_GetPIParam$L
1554 03e9 _ACM_GetPIParam:
1556 03e9 b701 ld _ACM_GetPIParam$L+1,a
1557 03eb bf00 ld _ACM_GetPIParam$L,x
1559 ; 503 if ( StatorFrequency <= PI_LOWFREQ_LIMIT )
1561 03ed a0f5 sub a,#245
1562 03ef 9f ld a,x
1563 03f0 a201 sbc a,#1
1564 03f2 2409 jruge L535
1565 ; 505 Kp = PI_PROP_LOWSPD;
1567 03f4 a605 ld a,#5
1568 03f6 c70016 ld L3_Kp,a
1569 ; 506 Ki = PI_INT_LOWSPD;
1571 03f9 a632 ld a,#50
1573 03fb 203f jra L735
1574 03fd L535:
1575 ; 509 else if ( StatorFrequency >= PI_HIGHFREQ_LIMIT )
1577 03fd b601 ld a,_ACM_GetPIParam$L+1
1578 03ff a020 sub a,#32
1579 0401 b600 ld a,_ACM_GetPIParam$L
1580 0403 a203 sbc a,#3
1581 0405 2508 jrult L145
1582 ; 511 Kp = PI_PROP_HIGHSPD;
1584 0407 4f clr a
1585 0408 c70016 ld L3_Kp,a
1586 ; 512 Ki = PI_INT_HIGHSPD;
1588 040b a63c ld a,#60
1590 040d 202d jra L735
1591 040f L145:
1592 ; 518 Buffer = StatorFrequency * PI_PROP_COEFF - PI_PROP_OFFSET;
1594 040f b601 ld a,_ACM_GetPIParam$L+1
1595 0411 48 sll a
1596 0412 59 rlc x
1597 0413 48 sll a
1598 0414 59 rlc x
1599 0415 a0d0 sub a,#208
1600 0417 88 push a
1601 0418 9f ld a,x
1602 0419 a207 sbc a,#7
1603 041b b7fe ld _ACM_GetPIParam$L-2,a
1604 041d 84 pop a
1605 ; 519 Kp = (u8)(PI_PROP_LOWSPD - (u8) (Buffer / 256));
1607 041e a605 ld a,#5
1608 0420 b0fe sub a,_ACM_GetPIParam$L-2
1609 0422 c70016 ld L3_Kp,a
1610 ; 520 Buffer = StatorFrequency * PI_INT_COEFF - PI_INT_OFFSET;
1612 0425 b601 ld a,_ACM_GetPIParam$L+1
1613 0427 be00 ld x,_ACM_GetPIParam$L
1614 0429 48 sll a
1615 042a 59 rlc x
1616 042b 48 sll a
1617 042c 59 rlc x
1618 042d 48 sll a
1619 042e 59 rlc x
1620 042f a0a0 sub a,#160
1621 0431 88 push a
1622 0432 9f ld a,x
1623 0433 a20f sbc a,#15
1624 0435 b7fe ld _ACM_GetPIParam$L-2,a
1625 0437 84 pop a
1626 ; 521 Ki = (u8)(PI_INT_LOWSPD + (u8) (Buffer / 256));
1628 0438 b6fe ld a,_ACM_GetPIParam$L-2
1629 043a ab32 add a,#50
1630 043c L735:
1631 043c c70015 ld L5_Ki,a
1632 ; 524 }
1635 043f 81 ret
1741 switch .bss
1742 0000 L52_MaxPiOut:
1743 0000 00 ds.b 1
1744 0001 L32_MinPiOut:
1745 0001 00 ds.b 1
1746 0002 L12_Voltage_slip_s32:
1747 0002 00000000 ds.b 4
1748 0006 L71_DeltaVoltage_slip_s32:
1749 0006 00000000 ds.b 4
1750 000a L51_Voltage_slip:
1751 000a 0000 ds.b 2
1752 000c L31_DeltaVoltage_slip:
1753 000c 00000000 ds.b 4
1754 0010 L11_Error_slip:
1755 0010 00 ds.b 1
1756 0011 L7_VoltageIntegralTerm:
1757 0011 00000000 ds.b 4
1758 0015 L5_Ki:
1759 0015 00 ds.b 1
1760 0016 L3_Kp:
1761 0016 00 ds.b 1
1762 xref _ART_Is_TimeInMsElapsed
1763 xref _ART_Set_TimeInMs
1764 xref _ART_IsRegPeriodElapsed
1765 xref _ART_SetSpeedRegPeriod
1766 xref _ART_IsSequenceCompleted
1767 xref _ART_SetSequenceDuration
1768 xdef _ACM_GetOptimumSlip
1769 xdef _ACM_GetPIParam
1770 xdef _ACM_SlipRegulation
1771 xdef _ACM_InitSlipFreqReg
1772 xdef _ACM_SustainSpeed
1773 xdef _ACM_SoftStartOL
1774 xdef _ACM_SoftStart
1775 xdef _ACM_InitSoftStart_OL
1776 xdef _ACM_InitSoftStart
1777 xdef _ACM_VoltageMaxAllowed
1778 xdef _ACM_Init
1779 xref _MTC_DisableMCOutputs
1780 xref _MTC_EnableMCOutputs
1781 xref _MTC_Set_ClockWise_Direction
1782 xref _MTC_StartTachoFiltering
1783 xref _MTC_InitTachoMeasure
1784 xref _MTC_ValidSpeedInfo
1785 xref _MTC_GetSlip
1786 xref _MTC_GetVoltage
1787 xref _MTC_GetStatorFreq
1788 xref _MTC_UpdateSine
1789 xref _MTC_InitSineGen
1790 xref _MTC_InitPeripheral
1791 xref.b c_lreg
1792 xref.b c_x
1793 xref.b c_y
1813 xref c_xlcmp
1814 xref c_ltor
1815 xref c_lcmp
1816 xref c_xlgadd
1817 xref c_lsub
1818 xref c_itol
1819 xref c_xldiv
1820 xref c_xltor
1821 xref c_rtoxl
1822 xref c_lmul
1823 xref c_rtol
1824 xref c_llsh
1825 xref c_udiv
1826 xref c_imul
1827 xref.b _MTC_UpdateSine$L
1828 end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -