快速折线式线性化方法
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
快速折线式线性化方法
黑龙江省七台河市热力公司何学新
摘要:线性化是经常遇到的问题。本文讨论的方法采用逻辑分区的办法取代了通常的比较运算,因而程序简练,运行较快。
关键词:线性化、曲线、逼进、A/D转换器、
一、原理。折线式线性化的基本原理如图1所示。
图中曲线y=f(x)是线性化前输入量和输出量的关系,直线y=kx是期望得到的关系。把全量程按y轴等分成若干个区间,并用数字作代号表
示之。对应最小y值的区间代号为0,其他依次为1,2……。如图1中AyBy即为1#区间。在1#区间,就可近似地把曲线AB看成是直线AB,只要把区间划分得足够小,这样做是允许的。
图1折线式线性化基本原理为使AB逼近直线y=kx,需要做2点工作:(1)将AB向上平移,使其左端点在直线上;(2)将其斜率乘以1个因子,令其等于k。上述第1点不难做到,而第2点,其实质就是当x有不同的增量Δx和Δx′时,y应当有1个相同的增量Δy=kΔx,而不是按直线AB的斜率增加。直线AB的斜率
kAB=(By-Ay)/(Bx-Ax),
它是前端信号(例如热电偶)固有的,无法改变。为此须引进1个修正因子r,使
Δy=r\5Δx′=kΔx,
由上式可得
r=kΔx/Δx′(1)
在实际工作中,通常将y作自变量来求x。例如,热电偶测温,虽然温度是真正的自变量,但我们却只能根据A/D转换器的输出值来求温度。式中的k值也是任选的,安全不必受曲线的约束,只要能合理地解释它就可以了。还是以热电偶测温为例,选用12位的A/D转换器,最大码值为4095,温度范围为0~1000℃,每个字的温度数不是1个整数,为0.244℃。我们完全可以设定1个合适的k值,令转换完成后的值有一个确定的意义。例如,每个字0.1℃。因此,可以认为转换后的输出值是另外一个量,不妨用xz来表示它。故可以一般地写出校正方程为
xz=xzn+rn\5Δy(2)
注意在上式中,是把y作为自变量看待的;式中的脚标n为各区间的代号,从左至右依次取0,1,2,……,n;xzn依次取各区间左端点之x值,即O(原点),A,B,C等各点的x值,称之为基值;rn是各区间的斜率;Δy 是y相对于基值的增量;xz是校正后的输出。
一般按一定规律把xzn和rn放在表格中。我们要做的就是:
(1)确定数据所在区间并据此提取出相应的xzn及rn;
(2)计算Δy;
(3)作算术运算,求出xz。
二、编程实现问题的关键是要把经A/D转换后的二进制数看成是2个二进制数。设转换后的数共有n+m位,其中n是高位位数,m 是低位位数。如果以2m-1作为区间大小,并把2n-1作为区间代号,则只要使有效的高n位从原数据中分离出来,成为1个独立的二进制数,也就得到了区间代号,而剩余的m位即是区间的增量。用这种方法,可以把整个量程按校正前输出量(A/D转换值)的大小均匀地划分成2n个数据区间,再用区间号作为相对地址指针,查找表格就很容易了。
下面的程序片段演示了这一方法。假定程序采用的是8051单片机,12位A/D转换,从P1和P3输入,分成16个区间进行校正。
XXH:MOV R1,P1;低位存入R1中
MOV A,P3;高位存入ACC中
ANL A,#0FH;A/D共12位,其中4位在高字节的;低4位中,它即是区间号,析出之
MOV R2,A;结果送R2保存
RL A;基值及斜率值皆以16位格式保存,故作指针查表时应乘;以2
RL A;基值及斜率值相邻存放,故应再乘以2
MOV B,A;保存指针于B中
MOV DPTR,#JZZ;将基值表格的地址送DPTR寄存器
MOV A,@A+DPTR;将存放在表格中的基值送R3,R4寄存器MOVR3,A;
INC B;
MOV A,B;
MOV A,@A+DPTR;
MOV R4,A;至此,取基值的工作已经完成
INC B;
MOV A,B;
MOV A,@A+DPTR;
MOV R5,A;
INC B;
MOV A,B;
MOV A,A+@A+DPTR;
MOV R6,A;至此取斜率已保存在R5,R6中
…
剩余的工作按照(2)式计算即可,程序略。
三、实现细节本方法是采用按A/D输出值均匀分区,因此,要选用合适位数的A/D转换器并适当控制前端放大器的增益,以便于分区和显示。例如,假设量程为0~1000,对应的输入为13.2mV,并选用12位的A/D转换器,则应使输入为13.2mV时,A/D的输出为07FFH。运算通常采用定点算法,速度较快。为减小误差。可将基值及斜率均乘以一因子保存,并将Δy亦以同一比例放大,得出结果后再除以同一因子。虽然本方法说明的是曲线逼近直线,但实际上它也可以逼近曲线。在分区较多时,表格制作的工作量也随之增大,但可以用计算机完成这一工作:先建立一个数据库,将原始参数输入其中。然后,编制一个程序,完成计算并输出成目标机(如8051单片机)的源程序(略)。
结束语本文讨论了一种线性化方法,其优点是速度快,程序简练。但必须熟悉所用计算机的指令系统才能较好地运用它。