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