- 將交流電源輸出設(shè)置為 0V (50/60Hz),打開交流電源,將輸入電壓從 0V 緩慢增加至 220V 交流。
- 必須在頭文件 user_mtr1.h 中定義所需的電機(jī)參數(shù),如以下示例代碼所示。如果用戶不太了解電機(jī)參數(shù),那么在示例實(shí)驗(yàn)中使用 FAST 估算器的情況下,可以使用電機(jī)識(shí)別來獲得電機(jī)參數(shù)。
#define USER_MOTOR1_TYPE MOTOR_TYPE_PM
#define USER_MOTOR1_NUM_POLE_PAIRS (4)
#define USER_MOTOR1_Rr_Ohm (NULL)
#define USER_MOTOR1_Rs_Ohm (0.38157931f)
#define USER_MOTOR1_Ls_d_H (0.000188295482f)
#define USER_MOTOR1_Ls_q_H (0.000188295482f)
#define USER_MOTOR1_RATED_FLUX_VpHz (0.0396642499f)
- 將 sys_main.c 文件中的 userParams.flag_bypassMotorId 值更改為“false”以啟用電機(jī)識(shí)別并作為以下示例代碼。
// false->enable identification, true->disable identification
userParams_M1.flag_bypassMotorId = false;
- 根據(jù)電機(jī)規(guī)格在 user_mtr1.h 文件中設(shè)置正確的識(shí)別值。
#define USER_MOTOR1_RES_EST_CURRENT_A (1.5f) // A - 10~30% of rated current of the motor
#define USER_MOTOR1_IND_EST_CURRENT_A (-1.0f) // A - 10~30% of rated current of the motor, just enough to enable rotation
#define USER_MOTOR1_MAX_CURRENT_A (4.5f) // A - 30~150% of rated current of the motor
#define USER_MOTOR1_FLUX_EXC_FREQ_Hz (40.0f) // Hz - 10~30% of rated frequency of the motor
- 重新構(gòu)建工程并將代碼加載到控制器中,通過點(diǎn)擊按鈕
來運(yùn)行工程,或點(diǎn)擊“Debug”選項(xiàng)卡中的 Run → Resume。經(jīng)過固定的時(shí)長(zhǎng)后,systemVars.flagEnableSystem 應(yīng)設(shè)置為 1,這意味著偏移校準(zhǔn)已完成并且浪涌電源繼電器已開啟。故障標(biāo)志 motorVars_M1.faultMtrUse.all 應(yīng)等于 0,否則用戶應(yīng)檢查電流和電壓檢測(cè)電路,如節(jié) 3.5.1中所述。
- 在“Expressions”窗口中將變量 motorVars_M1.flagEnableRunAndIdentify 設(shè)置為 1(如圖 3-46 所示),此時(shí)將執(zhí)行電機(jī)識(shí)別,整個(gè)過程需要大約 150s。motorVars_M1.flagEnableRunAndIdentify 等于 0 并且電機(jī)停止后,電機(jī)參數(shù)即被識(shí)別。復(fù)制“watch”窗口中的變量值,替換 user_mtr1.h 文件中定義的電機(jī)參數(shù),如下所示:
- USER_MOTOR1_Rs_Ohm = motorSetVars_M1.Rs_Ohm 的值
- USER_MOTOR1_Ls_d_H = motorSetVars_M1.Ls_d_H 的值
- USER_MOTOR1_Ls_q_H = motorSetVars_M1.Ls_q_H 的值
- USER_MOTOR1_RATED_FLUX_VpHz = motorSetVars_M1.flux_VpHz 的值
- 成功識(shí)別電機(jī)參數(shù)后,將 userParams_M1.flag_bypassMotorId 值設(shè)置為“true”以禁用識(shí)別,重新構(gòu)建工程并將代碼加載到控制器中。
- 按照以下步驟,該示例可以支持在線識(shí)別電機(jī),而無需重新加載代碼。
- 將 motorVars_M1.flagEnableRunAndIdentify 設(shè)為 0 停止運(yùn)行電機(jī)。
- 將 motorVars_M1.flagEnableMotorIdentify 設(shè)置為“1”以啟用識(shí)別。
- 將 motorVars_M1.flagEnableRunAndIdentify 設(shè)為 1 開始識(shí)別電機(jī)參數(shù)。motorVars_M1.flagEnableMotorIdentify 將自動(dòng)設(shè)為“0”,這意味著識(shí)別正在進(jìn)行。
- 如上面的步驟 6 所述,將識(shí)別新的電機(jī)參數(shù)。
- 識(shí)別完整的電機(jī)參數(shù)或在 user_mtr1.h 文件中設(shè)置正確的電機(jī)參數(shù)后。要開始運(yùn)行電機(jī),請(qǐng)執(zhí)行以下步驟。
- 再次將變量 motorVars_M1.flagEnableRunAndIdentify 設(shè)為 1 以開始運(yùn)行電機(jī)。
- 將目標(biāo)速度值設(shè)為變量 motorVars_M1.speedRef_Hz,并觀察電機(jī)軸速度如何隨設(shè)定速度改變。
- 要改變加速度,請(qǐng)?jiān)谧兞?motorVars_M1.accelerationMax_Hzps 中輸入不同的加速度值。
- 如節(jié) 3.4.2 或節(jié) 3.4.3 所述,使用 PWMDAC 或 DAC128S 模塊顯示監(jiān)視變量。電機(jī)角度和電流波形如圖 3-47 所示。
- FOC 系統(tǒng)電流控制器的默認(rèn)比例增益 (Kp) 和積分增益 (Ki) 在函數(shù) setupControllers() 中計(jì)算。調(diào)用 setupControllers() 后,全局變量 motorSetVars_M1.Kp_Id、motorSetVars_M1.Ki_Id、motorSetVars_M1.Kp_Iq 和 motorSetVars_M1.Ki_Iq 將使用新計(jì)算得出的 Kp 和 Ki 增益進(jìn)行初始化。如圖 3-46 中所示,調(diào)整“Expressions”窗口中這四個(gè)變量的 Kp 和 Ki 值,使電流控制器實(shí)現(xiàn)預(yù)期的電流控制帶寬和響應(yīng)。Kp 增益會(huì)產(chǎn)生一個(gè)零點(diǎn),以抵消電機(jī)定子的極點(diǎn),可以輕松地計(jì)算得出。Ki 增益可調(diào)整電流控制器-電機(jī)系統(tǒng)的帶寬。如果需要一個(gè)速度控制系統(tǒng)來實(shí)現(xiàn)特定阻尼,電流控制器的 Kp 增益將與速度控制系統(tǒng)的時(shí)間常數(shù)相關(guān)。
- FOC 系統(tǒng)速度控制器的默認(rèn)比例增益 (Kp) 和積分增益 (Ki) 也在函數(shù) setupControllers() 中計(jì)算。調(diào)用 setupControllers() 后,全局變量 motorSetVars_M1.Kp_spd 和 motorSetVars_M1.Ki_spd 將使用新計(jì)算得出的 Kp 和 Ki 增益進(jìn)行初始化。如圖 3-46 中所示,調(diào)整“Expressions”監(jiān)視窗口中這兩個(gè)變量的 Kp 和 Ki 值,使速度控制器實(shí)現(xiàn)預(yù)期的電流控制帶寬和響應(yīng)。與調(diào)整電流控制器相比,調(diào)整速度控制器的未知情況更多,默認(rèn)計(jì)算得出的 Kp 和 Ki 只是參考值作為起點(diǎn)。
- 將變量 motorVars_M1.flagEnableRunAndIdentify 設(shè)為“0”停止運(yùn)行電機(jī)。
- 完成后,現(xiàn)在可以停止控制器,并終止調(diào)試連接。通過首先點(diǎn)擊工具欄上的“Halt”按鈕
或點(diǎn)擊 Target → Halt 來完全停止控制器。最后,通過點(diǎn)擊
或點(diǎn)擊 Run → Reset 來重置控制器。
- 通過點(diǎn)擊“Terminate Debug Session”
或點(diǎn)擊 Run → Terminate 來關(guān)閉 CCS 調(diào)試會(huì)話。
當(dāng)電機(jī)正向旋轉(zhuǎn)時(shí),將 DAC128S085EVM 與示波器結(jié)合使用可監(jiān)測(cè)來自 FAST 估算器的電機(jī)轉(zhuǎn)子角度、電機(jī)的反饋速度以及電機(jī)的相電流,如圖 3-47 所示,方法是將 motorVars_M1.speedRef_Hz 設(shè)置為正基準(zhǔn)值。
如節(jié) 3.3.2 所示,在示例實(shí)驗(yàn)中可以支持多種 FOC 算法。用戶可以在實(shí)驗(yàn)工程中使用一個(gè)或兩個(gè)算法進(jìn)行電機(jī)控制,如表 3-7 所示。
用戶可以通過在工程屬性中添加預(yù)定義名稱 MOTOR1_FAST 和 MOTOR1_ESMO,在工程中同時(shí)實(shí)施 FAST 和 eSMO 估算器,如節(jié) 3.3.1 中所述。按照上述操作步驟重新構(gòu)建、加載和運(yùn)行工程。設(shè)置將如圖 3-46 中所示。
- systemVars.estType 值等于 EST_TYPE_FAST_ESMO,這意味著 FAST 和 eSMO 估算器在該工程中處于啟用狀態(tài)。
- motorVars_M1.estimatorMode 等于 ESTIMATOR_MODE_FAST,這意味著 FAST 估算器正在用于無傳感器 FOC;等于 ESTIMATOR_MODE_ESMO,這意味著 eSMO 估算器正在用于無傳感器 FOC。
- 圖 3-48 顯示了 FAST 和 eSMO 的估算轉(zhuǎn)子角度。通過將 motorVars_M1.speedRef_Hz 設(shè)置為正 值,電機(jī)在 FAST 正向 旋轉(zhuǎn)的情況下運(yùn)行。
- 圖 3-52 顯示了 FAST 和 eSMO 的估算轉(zhuǎn)子角度。通過將 motorVars_M1.speedRef_Hz 設(shè)置為負(fù) 值,電機(jī)在 FAST 逆向 旋轉(zhuǎn)的情況下運(yùn)行。
- 用戶可以將值更改為 ESTIMATOR_MODE_ESMO 以選擇無傳感器 FOC 的 eSMO 估算器。用戶還可以更改值以動(dòng)態(tài)地使用估算器進(jìn)行切換。
當(dāng)電機(jī)正向旋轉(zhuǎn)時(shí),將 DAC128S085EVM 與示波器結(jié)合使用可監(jiān)測(cè)來自 FAST 和 eSMO 估算器的電機(jī)轉(zhuǎn)子角度、電機(jī)的相電流,如圖 3-48 所示,方法是將 motorVars_M1.speedRef_Hz 設(shè)置為正基準(zhǔn)值。
當(dāng)電機(jī)逆向旋轉(zhuǎn)時(shí),將 DAC128S085EVM 與示波器結(jié)合使用可監(jiān)測(cè)來自 FAST 和 eSMO 估算器的電機(jī)轉(zhuǎn)子角度、電機(jī)的相電流,如圖 3-49 所示,方法是將 motorVars_M1.speedRef_Hz 設(shè)置為負(fù)基準(zhǔn)值。
用戶可以通過在工程屬性中添加預(yù)定義名稱 MOTOR1_FAST 和 MOTOR1_ENC,在工程中同時(shí)實(shí)施 FAST 和編碼器估算器,如節(jié) 3.3.1 中所述。按照上述操作步驟重新構(gòu)建、加載和運(yùn)行工程。
- systemVars.estType 值等于 EST_TYPE_FAST_ENC,這意味著 FAST 和編碼器估算器在該工程中處于啟用狀態(tài)。
- motorVars_M1.estimatorMode 等于 ESTIMATOR_MODE_FAST,這意味著 FAST 估算器正在用于無傳感器 FOC;等于 ESTIMATOR_MODE_ENC,這意味著編碼器估算器正在用于有傳感器 FOC。
- 圖 3-50 展示了 FAST 和編碼器的估算轉(zhuǎn)子角度。通過將 motorVars_M1.speedRef_Hz 設(shè)置為正值,電機(jī)在 FAST 正向旋轉(zhuǎn)的情況下運(yùn)行。
- 用戶可以將值更改為 ESTIMATOR_MODE_ENC,以選擇有傳感器 FOC 的編碼器估算器。用戶還可以更改值以動(dòng)態(tài)地使用估算器進(jìn)行切換。
當(dāng)電機(jī)正向旋轉(zhuǎn)時(shí),將 DAC128S085EVM 與示波器結(jié)合使用可監(jiān)測(cè)來自 FAST 估算器和編碼器的電機(jī)轉(zhuǎn)子角度、電機(jī)的相電流,如圖 3-50 所示,方法是將 motorVars_M1.speedRef_Hz 設(shè)置為正基準(zhǔn)值。
用戶可以通過在工程屬性中添加預(yù)定義名稱 MOTOR1_FAST 和 MOTOR1_HALL,在工程中同時(shí)實(shí)施 FAST 和霍爾傳感器估算器,如節(jié) 3.3.1 中所述。按照上述操作步驟重新構(gòu)建、加載和運(yùn)行工程。
- systemVars.estType 值等于 EST_TYPE_FAST_HALL,這意味著 FAST 和霍爾傳感器估算器在該工程中處于啟用狀態(tài)。
- motorVars_M1.estimatorMode 等于 ESTIMATOR_MODE_FAST,這意味著 FAST 估算器正在用于無傳感器 FOC;等于 ESTIMATOR_MODE_HALL,這意味著霍爾傳感器估算器正在用于有傳感器 FOC。
- 圖 3-51 中顯示了 FAST 和霍爾傳感器的估算轉(zhuǎn)子角度。通過將 motorVars_M1.speedRef_Hz 設(shè)置為正值,電機(jī)在 FAST 正向旋轉(zhuǎn)的情況下運(yùn)行。
- 圖 3-51 中顯示了 FAST 和霍爾傳感器的估算轉(zhuǎn)子角度。通過將 motorVars_M1.speedRef_Hz 設(shè)置為負(fù)值,電機(jī)在霍爾傳感器逆向旋轉(zhuǎn)的情況下運(yùn)行。
- 用戶可以將值更改為 ESTIMATOR_MODE_HALL 以選擇有傳感器 FOC 的霍爾傳感器估算器。用戶還可以更改值以動(dòng)態(tài)地使用估算器進(jìn)行切換。
當(dāng)電機(jī)正向旋轉(zhuǎn)時(shí),將 DAC128S085EVM 與示波器結(jié)合使用可監(jiān)測(cè)來自 FAST 估算器和霍爾傳感器的電機(jī)轉(zhuǎn)子角度、電機(jī)的相電流,如圖 3-51 所示,方法是將 motorVars_M1.speedRef_Hz 設(shè)置為正基準(zhǔn)值。
當(dāng)電機(jī)逆向旋轉(zhuǎn)時(shí),將 DAC128S085EVM 與示波器結(jié)合使用可監(jiān)測(cè)來自 FAST 估算器和霍爾傳感器的電機(jī)轉(zhuǎn)子角度、電機(jī)的相電流,如圖 3-52 所示,方法是將 motorVars_M1.speedRef_Hz 設(shè)置為負(fù)基準(zhǔn)值。
,用戶可以通過在工程屬性中添加預(yù)定義名稱 MOTOR1_ESMO 和 MOTOR1_ENC,在工程中同時(shí)實(shí)施 eSMO 和編碼器估算器,如節(jié) 3.3.1 中所述。按照上述操作步驟重新構(gòu)建、加載和運(yùn)行工程。
- systemVars.estType 值等于 EST_TYPE_ESMO_ENC,這意味著 eSMO 和編碼器估算器在該工程中處于啟用狀態(tài)。
- motorVars_M1.estimatorMode 等于 ESTIMATOR_MODE_ESMO,這意味著 eSMO 估算器正在用于無傳感器 FOC;等于 ESTIMATOR_MODE_ENC,這意味著編碼器估算器正在用于有傳感器 FOC。
- 來自 eSMO 和編碼器的估算轉(zhuǎn)子角度如圖 3-53 所示。通過將 motorVars_M1.speedRef_Hz 設(shè)置為正值,電機(jī)在 eSMO 正向旋轉(zhuǎn)的情況下運(yùn)行。
- 用戶可以將值更改為 ESTIMATOR_MODE_ENC,以選擇有傳感器 FOC 的編碼器估算器。用戶還可以更改值以動(dòng)態(tài)地使用估算器進(jìn)行切換。
當(dāng)電機(jī)正向旋轉(zhuǎn)時(shí),將 DAC128S085EVM 與示波器結(jié)合使用可監(jiān)測(cè)來自 eSMO 估算器和編碼器的電機(jī)轉(zhuǎn)子角度、電機(jī)的相電流,如圖 3-53 所示,方法是將 motorVars_M1.speedRef_Hz 設(shè)置為正基準(zhǔn)值。