一直以來,傳統(tǒng)的伺服產(chǎn)品選擇將硬件電流環(huán)放在FPGA里,這樣的硬件方案需要消耗MCU更多引腳資源用于和FPGA進行數(shù)據(jù)傳輸,雙芯片占用板子面積,導致PCB布局布線困難;再者,使用FPGA后也會增加產(chǎn)品成本,不利于市場競爭,始終為行業(yè)和客戶所困擾。
匠芯創(chuàng)科技M6800系列產(chǎn)品獨創(chuàng)Hardware Current Loop(HCL)硬件電流環(huán)。創(chuàng)新性地采用獨立于CPU的運行模式,使其有效提升電流環(huán)帶寬,釋放更多的算力資源??蓪崿F(xiàn)單顆M6800方案取代MCU+FPGA的架構,是實現(xiàn)伺服電機控制的電流環(huán)算法硬件化的關鍵一環(huán)。
01
HCL介紹
功能模塊:
Clarke變換
Park變換
防積分飽和PID
Ipark變換
死區(qū)補償
SVPWM計算和處理
特點:
HCL將軟件電流環(huán)算法固化在芯片里,且獨立于CPU運行,有效提升系統(tǒng)整體執(zhí)行效率;
通過內部測試,整個硬件電流環(huán)執(zhí)行周期僅為200ns,完全做到PWM占空比立即更新,從而大大提高了電流環(huán)的帶寬,充分提升系統(tǒng)的快速響應和魯棒性;
支持增量式編碼器和絕對式編碼器,單圈分辨率高達16777216ppr。
02
HCL操作步驟
第一步 初始化HCL
void HCL_Init(void) { U16 INV_PWM_TBPRD = 10000;hcl_cmu_init(); hcl_set_opm(0, HCL_OPM2);//Mode2,電角度選擇編碼器反饋的電角度 hcl_set_posm(0, TA_POS);//選擇絕對式編碼器
hcl_set_udm0(0, 0); //Mode0 D軸電壓 hcl_set_uqm0(0, 1475); //Mode0 Q軸電壓 0.045 hcl_set_epwmprd(0, INV_PWM_TBPRD);//電流環(huán)周期100us hcl_set_maxduty(0, (INV_PWM_TBPRD - 5));//設置最大占比 hcl_set_minduty(0, 5);//設置最小占空比//PWM時間常數(shù),3.2768 = _IQ(1)/ INV_PWM_TBPRD hcl_set_timeconst(0, _IQ(1.0)); hcl_set_curcal(0, _IQ10(1.0)); //電流增益校正 //set qaxi-pid _iq kp = _IQ(0.1983); _iq ki = _IQ(0.0244);
hcl_set_qpidkp(0, kp);//設置q軸pid比例系數(shù)初值 hcl_set_qpidki(0, ki); //設置q軸pid積分系數(shù)初值 hcl_set_qpidmax(0, _IQ( 0.9)); //設置q軸pid輸出最大值 hcl_set_qpidmin(0, _IQ(-0.9)); //設置q軸pid輸出最小值 hcl_set_intgsep(0, _IQ( 0.9));//0.9 hcl_set_iqref(0, _IQ(0.0)); //設置q軸pid給定初值
//set daxi-pid hcl_set_dpidkp(0, kp); //設置d軸pid比例系數(shù)初值 hcl_set_dpidki(0, ki); //設置d軸pid積分系數(shù)初值 hcl_set_dpidmax(0, _IQ( 0.125)); //設置d軸pid輸出最大值 hcl_set_dpidmin(0, _IQ(-0.125)); //設置d軸pid輸出最小值 hcl_set_idref(0, _IQ(0)); //設置d軸pid給定初值 hcl_dtcmp_en(0);//死區(qū)補償打開 hcl_set_dtcomp(0, 0);//死區(qū)補償值為0 hcl_set_dtflt(0, 262); //死區(qū)補償濾波時間 hcl_en(0);//打開硬件電流環(huán)}
第二步 初始化ADC
void ADC_Init(void){//初始化ADC0 adc_q1_trig_sample_num(0, SMP_1_NODE); //設置ADC0隊列1有一個采樣點 adc_q1_node0_set(0, ADCCH4); //設置轉換通道 adc_hcl_en(0); //使能HCL自動獲取ADC0轉換值 adc_pre_set(0, 0x1); //ADC0預充設置為1 adc_smp_rate_set(0, SMP_RATE_1MHZ); //設置ADC0采樣頻率 adc_q1_cvra_en(0); //使能EPWM事件A作為ADC0轉換觸發(fā)信號 adc_q1_int_en(0); //使能ADC0隊列1轉換結束中斷 adc_en(0); //使能ADC0
//初始化ADC1 adc_q1_trig_sample_num(1, SMP_1_NODE); //設置ADC1隊列1有一個采樣點 adc_q1_node0_set(1, ADCCH5); //設置轉換通道 adc_hcl_en(1); //使能HCL自動獲取ADC1轉換值 adc_pre_set(1, 0x1); //ADC1預充設置為1 adc_smp_rate_set(1, SMP_RATE_1MHZ); //設置ADC1采樣頻率 adc_q1_cvra_en(1); //使能EPWM事件A作為ADC1轉換觸發(fā)信號 adc_en(1); //使能ADC1}
第三步 在EPWM中斷服務程序里面給硬件電流環(huán)賦值;本例中采樣EPWM0,中斷周期為100us,將速度環(huán)PID輸出值賦給硬件環(huán)即可,剩下的電流環(huán)算法自動由硬件完成,無需CPU干預。
//EPMW0周期中斷服務程序void EPWM_IRQHandler_isr(void) { u32 epwm_sts; epwm_sts = Glb_Pwmcs_Regs.GLB_EPWM_INT_STS.all;//判斷是否epwm0中斷 if((epwm_sts & EPWM0_INT_PEND) == EPWM0_INT_PEND) {pi_spd0.Ref = speed_ref; //速度環(huán)PID給定值 pi_spd0.Fbk = speed_fack; //速度環(huán)PID反饋值 pi_cal(&pi_spd0); //速度環(huán)PID計算hcl_set_idref(0,0); //硬件電流環(huán)Id軸的給定給定為0 hcl_set_iqref(0,pi_spd0.Out); //硬件電流環(huán)Iq軸的給定為速度環(huán)的pid輸出值(*EPWM[0]).PWM_EVNT_CLR.bit.PWM_INT_CLR = 0x1 //清除中斷標志}}
Hardware Current Loop(HCL)硬件電流環(huán)從硬件配置方案和軟件性能上,全方位提升算力,實現(xiàn)運動控制系統(tǒng)性優(yōu)化升級,為提升終端產(chǎn)品競爭力提供堅實的技術支持與成本優(yōu)勢。
未來,我們將持續(xù)完善 M6800系統(tǒng)化解決方案,為更多行業(yè)客戶提供可持續(xù)、長周期的技術和生態(tài)支持。
-
電機控制
+關注
關注
3582文章
2021瀏覽量
273839 -
硬件
+關注
關注
11文章
3529瀏覽量
68379 -
電流環(huán)
+關注
關注
0文章
51瀏覽量
14735 -
匠芯創(chuàng)
+關注
關注
0文章
35瀏覽量
67
發(fā)布評論請先 登錄
匠芯創(chuàng)發(fā)布新版GUI開發(fā)工具 新增多國語言設置等功能
【匠芯創(chuàng)D133CBS KunLun Pi開發(fā)板試用體驗】開箱評測
【匠芯創(chuàng)D133CBS KunLun Pi開發(fā)板試用體驗】介紹、環(huán)境搭建
移動電源硬件三合一方案和軟件三合一方案對比
融創(chuàng)芯城|免費方案,免費下載↓↓↓
96%高效率 替代MP9486A方案---OC2004(啟燁科技供應)提供原廠技術支持/免費方案服務
共譜開源華章 | 匠芯創(chuàng)榮獲“開源生態(tài)戰(zhàn)略合作伙伴”獎

匠芯創(chuàng)M6801SPCS閉環(huán)步進控制設計方案:工業(yè)自動化的精密導航儀

解碼工業(yè)自動化:匠芯創(chuàng)M6800系列編碼器接口協(xié)議全解析

智能伺服,精準控制:匠芯創(chuàng)科技M6800系列方案助力工業(yè)升級

匠芯創(chuàng)ArtInChip 2025年8月資訊

直擊工博會 | 匠芯創(chuàng)M7000系列DSP賦能機器人關節(jié)精準控制

評論