模拟量输出的现场标定补偿方法及算法分析

模拟量输出的线性转换

今天,用户反馈:控制器设定的执行器开度、执行器显示的开度、控制器通过检测执行器反馈的4-20mA信号所换算的开度,三者各不相同。

模拟量输出的现场标定补偿方法及算法分析

控制器设定值与执行器显示值

当单片机采用线性关系将开度数值转为PWM信号的占空比时,

由于光耦的通断的上升,下降时间等会引起该线性关系与实际推算的不一致。

当要求的控制精度比较高时,需要提供接口供用户调整该线性关系。

线性转换关系推导

模拟量输出的现场标定补偿方法及算法分析

4-20mA输出电路

假设从控制器保存的开度设置值S(真实开度*100)与PWM信号的占空比设定寄存器值D(PWM信号100%占空比对于的寄存器值为1000)的转换关系为:

D=k*S+b

而上图电路中,运放U2A输出的电压U与占空比的关系为:

U=D/1000*5

而输出电流I(mA)与电压V的关系为:

I=U/10*100=10U;

从而得到:

I=(k*S+b)/20;

当S=0时,I=4;

当S=10000时,I=20;

用excel的slope和intercept函数可以解得:

k=0.032,b=80。

因为STM32处理器没有硬件浮点数计算单元,将0.032转为*2097/65535。

得到,下述开度设定值转为占空比寄存器的C语言代码(实际数值稍有调整):

U16 lduty;
U32 data;
data = (U32)duty * 2919
data += 89; 
if(data > FAMA_FRED_PERIOD){
	lduty = FAMA_FRED_PERIOD;
}else{
	lduty = (U16)data;
}
lduty = FAMA_FRED_PERIOD - lduty;
FAMA_A_TIMER->CCR4 = lduty;

误差补偿算法推导

用户提供的在整个调节调节内三组数值的测试对照表,如下图:

模拟量输出的现场标定补偿方法及算法分析

客户提供的测量值

整个模拟量输出的线性转换关系如下图:

模拟量输出的现场标定补偿方法及算法分析

线性转换关系

在这些转换关系中,只有k1, b1已知,而k2、b2以及k3、b3需要通过用户提供的测量数据推算。

如下图excel计算得到:

模拟量输出的现场标定补偿方法及算法分析

各线性关系推导

我们知道,如果认为执行器的模拟量输入控制的精度足够高,则用户在执行器上读得的开度值与控制器上的设定值有以下的关系:

而补偿之后,我们得到下面的关系式:

补偿的目的在于,找到新的以及使得:


进一步运算得到:

需要满足下面两个关系式:

得到:

模拟量输出的现场标定补偿方法及算法分析

补偿系数计算过程

将代码修改如下:

U16 lduty;
U32 data;
data = (U32)duty * 2917 / 65535;
data += 80; //24ms op off time
if(data > FAMA_FRED_PERIOD){
		lduty = FAMA_FRED_PERIOD;
}else{
		lduty = (U16)data;
}	
lduty = FAMA_FRED_PERIOD - lduty;
FAMA_A_TIMER->CCR4 = lduty;

提供修改过的代码给用户测试,客户反馈结果如下,大大减少误差,

模拟量输出的现场标定补偿方法及算法分析

补偿之后的测量结果

下一步计划

在控制器的代码中实现补偿计算算法,用户通过工控屏输入设置的开度以及执行器显示的开度。

控制器自动计算出补偿后的线性系数。

在我们控制器的输入模拟量的标定中,我们已经使用了这种方法。

这其中核心算法为最小二乘法。

展开阅读全文

页面更新:2024-05-17

标签:算法   该线   关系式   设定值   寄存器   性关系   误差   线性   控制器   测量   信号   反馈   现场   关系   代码   方法   用户   科技

1 2 3 4 5

上滑加载更多 ↓
推荐阅读:
友情链接:
更多:

本站资料均由网友自行发布提供,仅用于学习交流。如有版权问题,请与我联系,QQ:4156828  

© CopyRight 2020-2024 All Rights Reserved. Powered By 71396.com 闽ICP备11008920号-4
闽公网安备35020302034903号

Top