一直以来,传统的伺服产品选择将硬件电流环放在FPGA里,这样的硬件方案需要消耗MCU更多引脚资源用于和FPGA进行数据传输,双芯片占用板子面积,导致PCB布局布线困难;再者,使用FPGA后也会增加产品成本,不利于市场竞争,始终为行业和客户所困扰。
匠芯创科技M6800系列产品独创Hardware Current Loop(HCL)硬件电流环。创新性地采用独立于CPU的运行模式,使其有效提升电流环带宽,释放更多的算力资源。可实现单颗M6800方案取代MCU+FPGA的架构,是实现伺服电机控制的电流环算法硬件化的关键一环。
01
HCL介绍
功能模块:
Clarke变换
Park变换
防积分饱和PID
Ipark变换
死区补偿
SVPWM计算和处理
特点:
HCL将软件电流环算法固化在芯片里,且独立于CPU运行,有效提升系统整体执行效率;
通过内部测试,整个硬件电流环执行周期仅为200ns,完全做到PWM占空比立即更新,从而大大提高了电流环的带宽,充分提升系统的快速响应和鲁棒性;
支持增量式编码器和绝对式编码器,单圈分辨率高达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);//电流环周期100us hcl_set_maxduty(0, (INV_PWM_TBPRD - 5));//设置最大占比 hcl_set_minduty(0, 5);//设置最小占空比//PWM时间常数,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比例系数初值 hcl_set_qpidki(0, ki); //设置q轴pid积分系数初值 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比例系数初值 hcl_set_dpidki(0, ki); //设置d轴pid积分系数初值 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);//死区补偿打开 hcl_set_dtcomp(0, 0);//死区补偿值为0 hcl_set_dtflt(0, 262); //死区补偿滤波时间 hcl_en(0);//打开硬件电流环}
第二步 初始化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转换触发信号 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转换触发信号 adc_en(1); //使能ADC1}
第三步 在EPWM中断服务程序里面给硬件电流环赋值;本例中采样EPWM0,中断周期为100us,将速度环PID输出值赋给硬件环即可,剩下的电流环算法自动由硬件完成,无需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; //速度环PID给定值 pi_spd0.Fbk = speed_fack; //速度环PID反馈值 pi_cal(&pi_spd0); //速度环PID计算hcl_set_idref(0,0); //硬件电流环Id轴的给定给定为0 hcl_set_iqref(0,pi_spd0.Out); //硬件电流环Iq轴的给定为速度环的pid输出值(*EPWM[0]).PWM_EVNT_CLR.bit.PWM_INT_CLR = 0x1 //清除中断标志}}
Hardware Current Loop(HCL)硬件电流环从硬件配置方案和软件性能上,全方位提升算力,实现运动控制系统性优化升级,为提升终端产品竞争力提供坚实的技术支持与成本优势。
未来,我们将持续完善 M6800系统化解决方案,为更多行业客户提供可持续、长周期的技术和生态支持。
-
电机控制
+关注
关注
3577文章
1990浏览量
272509 -
硬件
+关注
关注
11文章
3498浏览量
67757 -
电流环
+关注
关注
0文章
50浏览量
14666
发布评论请先 登录
[匠芯创]D12开箱初体验
[匠芯创科技]匠芯创AIUIBuilder工具使用初体验
匠芯创发布新版GUI开发工具 新增多国语言设置等功能
移动电源硬件三合一方案和软件三合一方案对比
融创芯城|免费方案,免费下载↓↓↓
96%高效率 替代MP9486A方案---OC2004(启烨科技供应)提供原厂技术支持/免费方案服务
面向高效能应用的电机控制主控芯片及解决方案
共谱开源华章 | 匠芯创荣获“开源生态战略合作伙伴”奖

匠芯创M6801SPCS闭环步进控制设计方案:工业自动化的精密导航仪

解码工业自动化:匠芯创M6800系列编码器接口协议全解析

智能伺服,精准控制:匠芯创科技M6800系列方案助力工业升级

评论