1
第 5章 应用程序设计和实现技术 (1)
数据处理技术
5.1 数据结构 (了解 )
5.2 测量数据预处理技术 (了解 )
5.3 数字滤波方法(掌握)
5.4 标度变换算法(掌握)
5.5 越限报警处理(了解)
5.6 系统的运算字长选择(掌握)
2
在计算机控制系统中,数据采集 是最基本的一种模式,
一般是通过 传感器、变送器 把生产过程的各种物理参数转换成电信号,然后经 A/D通道或 DI通道,把数字量送入计算机中,计算机在对这些数字量进行显示和控制之前,还必须根据需要进行相应的 数据处理,
数据处理离不开数值计算,而最基本的数值计算为 四则运算,由于控制系统中遇到的现场环境不同,采集的 数据种类与数值范围 不同,精度要求也不一样,各种数据的输入方法及表示方法也各不相同,因此,为了满足不同系统的需要,设计出了许多有效的数据处理技术方法,如 预处理,数字滤波,标度变换,查表和越限报警 等,
3
5.1 数据结构 (了解 )
(一)基本术语数据( data),是描述客观事物的数、字符以及所有能输入到计算机中并被计算机程序处理的符号的集合,
它是计算机程序加工的,原料,,
数据元素( data element),数据的基本单位,即数据集合中的一个个体,有时一个数据元素可由若干个 数据项( data item) 组成,数据项是数据的最小单位,
4
数据对象 ( data object),是 具有相同特性的数据元素的集合,是数据的一个子集,例如,整数的数据对象是集合 N= {0,± 1,± 2… },字母字符的数据对象为集合 C=
{ A,B,…,Z},
数据结构( data structure),是 带有结构的数据元素的集合,被计算机程序加工的数据元素都不是孤立的,在它们之间存在着某种联系,这种相互之间的关系称作结构,
通常数据结构是一个二元组,数据结构所研究的内容是数据元素之间的逻辑关系,即所谓数据的逻辑结构,而数据元素在计算机内的存储方式,又称为 数据的物理结构 (或存储结构 ).数据元素在计算机中有两种不同的存储结构即 顺序结构和非顺序存储结构 (又称链式存储结构),
5
(二) 数据结构类型
1,顺序结构 顺序结构就是将数据存放在从某个存储地址开始的连续存储单元中,顺序结构包括 线性表、数组,
堆栈和队列,其中前两种为 静态顺序结构,后两种为 动态顺序结构,
( 1) 线性表,线性表是一组 有序的数据元素,可表示为
(a1,a2,…,an) ( 6-1)
式中 ai—— 数据元素 ;
i—— 元素的序号,
代表元素在线性表中的位臵,i =1,2,…,n;
n— 线性表中元素的个数,
定义为表的长度,当 n = 0时,称为空表,
6
特点,线性表中每个数据元素的 位臵是固定的,元素之间的 相对位臵是线性的,
存储,在计算机中,用一组连续的单元依次存储线性表的数据元素,假设每个元素占用 L个存储单元,则第 i个元素 ai的存储地址为线性表中第一个元素的存储地址 +( i-1) × L
MOV A,#**H
MOV DPTR,#TABLE
MOVC A,@A+DPTR
TABLE,DB 0C0H,0F9H,0A4H,0B0H,99H ;0-9共阳 LED译码表
DB 92H,82H,0F8H,80H,90H
7
( 2) 数组,数组就是 线性表的一种推广,其中每个元素是由一个数值和一组下标组成,
例如,一个 m× n的数组可表示为式中 i= 1,2,…,m ;j = 1,2,…,n.
这是一个二维数组,其中每个元素 aij都和一个二维空间的数
( i,j) 相对应,
ij
mn2m1m
n22221
n11211
a
aaa
aaa
aaa
A?
( 6-3)
8
特点:数组是线性表的简单推广 ;反之,线性表是数组的一种特例,例如,线性表 ( 6-1) 相当于数组 ( 6-3) 中的一行或一列元素,
存储,在计算机中,用 一组连续的单元 依次按行或列存放每个元素,
9
( 3) 堆栈,堆栈是线性表的一种特殊结构,只能在 表的一端进行存取,(单片机讲过 )
a n
a 2
a 1 25
51
15
42
33
25
15
42
33
25 S P =1
S P =5
S P =4
栈顶栈底进栈 出栈
10
特点,先进后出 (FILO),后进先出 (LIFO).
存储,在计算机中,用一组连续的单元依次存储堆栈操作的数据元素,
堆栈指针,通常用 SP(Stack Pointer)表示,每次进栈,SP加 1;
出栈时,SP减 1.
11
( 4) 队列,与堆栈相似,队列也是一种特殊的线性表,
与堆栈不同的是,队列是先进先出的表 FIFO.队列中数据元素以 a1,a2,…,an的顺序进入,又以相同的顺序出去,
特点,先进先出( FIFO),后进后出 (LILO).
存储,在计算机中,用一组连续的单元依次存储队列操作的数据元素,
队列指针,用队 头指针 front和 队尾指针 rear来描述队列,
(后面讲到数字滤波用到)
a n ······ a 2 a 1
进队 出队
12
线性表、数组、堆栈和队列的共同特点是,
数据元素要求存放在 连续的存储单元 中,
缺点,
一、做 插入或删除操作时,要移动大量的数据元素,并浪费时间 ;
二、不易扩展,有时为了留有余地,将会浪费存储空间,
13
2,链形结构链表由若干个结点组成,每个结点有两个域:
一个是 数据域,用来存放数据元素 ;
一个是 指针域,用来存放下一个结点的数据域首址,
通过指针域把各结点按要求的顺序连接起来组成一个首尾相连的表,由于其组成象一条链条,故取名为 链表,
为了确定链表中第一个结点的 数据首址,设臵了 头指针
( head) ;为了标识链表中的 最后一个结点,将其指针域设臵为,空,( NUL),
14
head a1 · a2 · a3 · ······ 删除结点插入结点head a1 ·
b ·
a2 · ······
链形结构的最大 特点 是:在 逻辑上是有序 的,用指针域指明各结点(或数据元素)之间的关系 ;而在 物理上则可能是无序的,各结点在存储器中的物理位臵可以任意配臵,因此在使用链表时,通常 只考虑它的逻辑顺序,
而不关心它的实际存储位臵,
链表的三种形式:单链表、循环链表和双重链表链表的三种运算:插入结点、删除结点和查找结点,
15
3,树形结构 计算机所管理的数据、信息和文件有时具有层次关系或上下级关系,每个记录有 四个域:记录名、数据、左指针和右指针,如果把记录抽象为一个结点,其形状很像一棵倒叉树,称为树形结构,或简称 树( tree),
左指针右指针数据结点 A
16
左指针右指针数据结点 A
左指针右指针数据结点 B
左指针右指针数据结点 C
N I L
N I L
数据结点 G
N I L
N I L
数据结点 F
N I L
N I L
数据结点 E
N I L
N I L
数据结点 D
A
B
F G
C
D E
把最高结点 A称为树,根,,结点之间的连线称为树,枝,,具有分枝的结点称为树,节,,不具有分枝的结点称为树,叶,,
17
5.2 测量数据预处理技术 (了解 )
对测量数据的 预处理 是计算机控制系统数据处理的基础,这包括 数字调零技术、系统校准技术以及输入、输出数据的极性与字长的预处理技术,
18
5.2.1 系统误差 的自动校准(了解)
在控制系统的测量输入通道中,一般均存在 放大器 等器件的 零点偏移和漂移,会造成 放大电路的增益误差及器件参数的不稳定 等现象,它们都会影响测量数据的准确性,这些误差都属于 系统误差,
它的特点是在一定的测量条件下,其变化规律是可以掌握的,产生误差的原因一般也是知道的,
因此,系统误差是可以通过 适当的技术方法来确定并加以校正 的,一般采用 软件程序进行处理,即可对这些系统误差进行自动校准,
19
1.数字调零零点偏移 是造成系统误差的主要原因之一,因此零点的自动调整在实际应用中最多,常把这种用 软件程序进行零点调整 的方法称为 数字调零,V 1
V n
V 0
多路开关前置放大器 计算机
A A /D
模数转换器
C PU
图 8- 1 数字调零电路图 5-1 数字调零电路
20
数字调零电路如图 5-1所示,在测量输入通道中,CPU分时巡回采集 1路校准电路与 n路 传感变送器送来的电压信号,
首先是 第 0路的校准信号即接地信号,理论上 电压为零的信号,经放大电路,A/D转换电路进入 CPU的数值应当为零,而实际上由于 零点偏移 产生了一个 不等于零的数值,这个值就是零点偏移值 N0;然后依次采集 1,2,… n路,每次采集到的数字量 N1,N2,… Nn值就是 实际值与零点偏移值 N0之和,
计算机要进行的数字调零就是做一次 减法运算,使 (Ni-
N0)的差值成为本次测量的实际值,很显然,采用这种方法,可 去掉放大电路,A/D转换电路本身的偏移及随时间与温度而发生的各种漂移的影响,从而大大降低对这些电路器件的偏移值的要求,降低硬件成本,
21
2.系统校准上述数字调零不能校正由 传感器本身引入的误差,为了克服这种缺点,可采用系统校准处理技术,
系统校准 的原理与数字调零差不多,只是把 测量电路扩展到包括现场的传感器,而且不是在每次采集数据时都进行校准,而是 在需要时人工接入标准参数 进行校准测量,
把测得的数据存储起来,供以后实际测量使用,一般 自动校准系统只测一个标准输入信号 VR,零点漂移的补偿仍由数字调零来完成,
设 调零 后测得 标准输入信号 VR的数据为 NR,而测得 实际被测输入信号 V时的数据为 N,则可按如下校准式来计算 V.
22
N
N
VV
R
R?
( 5-1)
系统校准 特别适于 传感器特性随时间会发生变化的场合,如 电容式湿度传感器,其输入输出特性会随着时间而发生变化,一般一年以上变化会大于精度容许值,这时可每隔一段时间(例如 3个月或 6个月),用其它精确方法测出这时的湿度值,然后把它作为校准值输入测量系统,在实际测量湿度时,计算机将自动用该输入值来校准以后的测量值,
23
控制系统中处理的信号很多是 双极性的,如温度、压力、位臵、角度信号等,这就要求在实施控制时,不仅要考虑信号的幅度,还要考虑到信号的极性,为此,在对 A/D转换后的数据和 D/A转换前的数据进行处理前,必须根据数据的极性先进行预处理,才能保证得到正确的结果,
系统中有的 输入信号是单极性的,而输出信号则要求是双极性的,如流量、压力等控制回路 ;有的则是要求 输入和输出信号都是双极性的,如位臵、角度等控制回路,下面就这两种情况分别加以讨论,
5.2.2 数据 极性 的预处理(了解)
24
1.输入、输出信号同为双极性在输入、输出都是双极性信号的控制系统中,程序处理的输入和输出数据不仅反映信号幅度的大小,也反映信号的极性,假设信号的变化范围为 -5V~ +5V,信号经 A/D转换得到的数字量为 00H~ FFH 数字量的最高位 D7表示信号的极性,
当 D7=0时,表示输入信号为 正 极性,即数字量 00H~
7FH表示 0V~ +5V的模拟信号 (0***,****)
当 D7=1时,表示输入信号为 负 极性,即数字量 7FH~
FFH表示 -5V~ 0V的模拟信号 (1***,****)
25
在由双极性信号组成的闭环定值控制系统中,设给定信号为 R,采样输入信号为 Z,则 偏差值 E=R-Z.因为
R 和 Z的值对应的是双极性信号,所以偏差值 E也是双极性信号,因此在参加运算前也必须进行预处理才能保证最终结果的正确,
预处理的规则,如果 偏差值的绝对值大于 80H
(此为无符号数),则偏差信号取最大值,即信号极性为负时取 00H,信号极性为正时取 FFH.否则,将运算结果直接作为 偏差信号,
26
2.输入、输出信号分别为单双极性在控制系统中,有时会出现 输入信号和给定信号是单极性 的,即数字量 00H~ FFH对应同极性的信号,如 0~
+5V;而 输出信号则要求是双极性 的,即数字量 00H~ FFH
对应的是双极性的,如 -5V~ +5V.
这类系统的数据预处理与双极性的输入输出系统的方法相同,由于系统的输入是单极性的,因此不必判断极性,只需根据偏差值的大小和符号判断即可,系统的数据预处理程序流程图如图 5-2所示,
27
读数据 R 和 Z
计算 E =R - Z
R ≥ Z 否?
E ≥ 80H 否? E ≥ 80H 否?
00H A E +80 H A FFH A
A RE SUL T
返回
N Y
图 8 - 3 输入单极性输出双极性的数据预处理程序流程图
N
N
Y
Y
开始图 5-2 输入单极性输出双极性的数据预处理程序流程图
28
5.2.3 数据字长的预处理(了解)
在计算机控制系统中经常会出现数据字长不一致的情况,如有的系统采用 12位 A/D转换器采样数据,而 输出采用 8位 D/A转换器 ;有的系统使用 8位 A/D转换器进行采样,
而为了提高计算的精度,采用 双字节运算程序计算,为了满足不同的精度要求,数据在进行 数字滤波、标度变换和控制运算后必须对数字量的位数加以处理,
29
1,输入位数 大于 输出位数当 输入器件的分辨率高于输出器件 时,如采用 10
位 A/D转换器采样,而 CPU把处理后的 10位二进制数通过 8位 D/A转换器输出,就会出现输入位数大于输出位数的情况,对输入位数大于输出位数的处理方法就是忽略高位数的最低几位,如,10位 A/D转换器 的输入值为 0011111010,此值经处理后送入 8位 D/A转换器 的值就变为 00111110.这在计算机中通过 向右移位 的方法是很容易实现的,
由于 10位 A/D转换器的采样分辨率要比 8位 A/D转换器高的多,因此,虽然舍去了最低的两位数会产生一定的误差,但这一误差仍比采用 8位输入 8位输出系统的误差小,
30
2.输入位数 小于 输出位数当输入器件的分辨率比输出器件低时,如采用 8位
A/D转换器采样,而通过 10位 D/A转换器进行输出,就会出现输入位数小于输出位数的情况输入位数小于输出位数的最好处理方法是,将 8位数左移两位构成 10位数,10位数的 最低两位用,0”填充,
如:转换前的 8位输入值 为,××××××××
转换后的 10位输出值 为,×××××××× 00
这种处理方法的优点在于构成的 10位数接近 10位
A/D转换器的 满刻度值,其误差在 10位数字量的 3个步长电压之内,
31
5.3 数字滤波方法 (软件抗干扰技术)
由于工业生产的现场环境 非常恶劣,各种干扰源很多,计算机系统通过输入通道采集到的数据信号,虽经硬件电路的滤波处理,但仍会混有 随机干扰噪声,因此,为了提高系统性能,达到准确的测量与控制,一般情况下还需要进行 数字滤波,
32
(掌握 )数字滤波,计算机系统对输入信号 采样多次,然后用 某种计算方法 进行 数字处理,以削弱或滤除干扰噪声造成的随机误差,从而获得一个真实信号的过程,
数字滤波与 硬件滤波器 相比优点甚多,因此得到了普遍的应用,常用的数字滤波方法有,平均值滤波,中值滤波,限幅滤波,惯性滤波 等,
33
总结:在实际应用中,究竟采用不采用、以及采用哪一种数字滤波,都应视具体情况而定,
1.程序判断、中值、惯性滤波 适用于 变化缓慢的参数
2.算术平均、加权平均滤波 适用于 变化较快的参数
3.几种滤波算法可以复合使用,如,中值 +算术平均
4.不适当的滤波也可能影响有用信号,要分析输入参数情况,
5.3.1 平均值滤波算术平均滤波,去极值平均滤波,加权平均滤波,滑动平均滤波
5.3.2 中值滤波
5.3.3 限幅滤波
5.3.4 惯性滤波
34
优点,
1.数字滤波用 程序实现,不需要增加任何硬件设备,可 多通道共享,且不存在阻抗匹配问题,所以成本低,可靠性高,
稳定性好,
2.数字滤波可以对 频率很低 (如 0.01Hz)的信号实现滤波,
克服了模拟滤波器频率受 电容容量限制的缺陷,
3.数字滤波器可以根据 信号的不同,选择不同的滤波方法或滤波参数,使用方便、灵活,
35
5.3.1 平均值滤波平均值滤波就是 对多个采样值进行平均算法,
这是 消除随机误差 最常用的方法,具体又可分为如下几种,
1.算术平均滤波 (很好理解 )
算术平均滤波是在 采样周期 T内,对测量信号 y
进行 m次采样,把 m个采样值相加后的算术平均值 作为本次的有效采样值,即
m
1i
iym
1)k(y ( 6-5)
36
采样次数 m值 决定了信号的 平滑度和灵敏度,提高 m
的值,可提高平滑度,但系统的灵敏度随之降低,采样次数 m的取值随被控对象的不同而不同,一般情况下,流量信号可取 10左右,压力信号可取 4左右,温度、成分等缓变信号可取 2甚至不进行算术平均,
在编制算法程序时,m一般取 2,4,8等 2的整数幂,
以便于用 移位来代替除法求得平均值,
算术平均滤波算法 适用于对 周期性干扰的信号滤波
37
2.去极值平均滤波算术平均滤波不能将 明显的偶然的脉冲干扰 消除,只是把其平均到采样结果中,从而 降低了测量精度,去极值平均滤波是 对连续采样的 m个数据进行比较,去掉其中的最大值与最小值,然后计算余下的 m-2
个数据的算术平均值,
在编制算法程序时,为便于用移位来代替除法求得平均值,m-2应取 2,4,8等,故 m取 4,6,10等,
去极值平均滤波算法 适用于 工业场合 经常遇到的尖脉冲干扰的信号滤波,
38
3,加权平均滤波算术平均滤波和去极值平均滤波都存在平滑性和灵敏度的矛盾,采样次数太少则平滑效果差,次数太多则灵敏度下降,对测量参数的变化趋势不敏感,为协调两者关系,可采用 加权平均滤波,
加权平均滤波是对 每次采样值赋以不同的权系数而以增加新鲜采样值的权重相加,
m
1i
ii yC)k(y
( 6-6)
39
式中,第 m次为最新值,C1,C2,…,Cm 为加权系数,
先小后大,且均为 小于 1但总和等于 1的小数,即满足下式
C1+C2+… +Cm = 1
Cm>Cm-1> … C1>0
C1,C2,…,Cm 的取值应视具体情况选取,并通过 调试确定,
40
式中 权系数
,
3
1 R
eC 2
2 R
eC
R
eC
3 R
1C
4?
1eeeR 23
,,,
加权平均滤波算法 能 协调系统的平滑度和灵敏度的矛盾,提高灵敏度,更 适用于纯滞后较大的对象,
例如,某纯滞后时间为 τ 的被控对象,采用 m=4的加权平均滤波算式为
)k(y =C1y1+C2y2+C3y3+C4y4
41
当系统的 采样速度较慢 或 采样信号变化较快 时,系统的实时性就无法得到保证,滑动平均滤波是在每个采样周期只采样一次,将这一次采样值和过去的若干次采样值一起求平均,所得结果即为 有效采样值,
具体作法可由 循环队列结构 方式来实现数据的存放,比如 取 m个采样值求滑动平均,只要 在 RAM中开辟 m个数据暂存区,每次新采集一个数据便存入暂存区的 队尾,
同时冲掉队首的一个数据,这样在存储器队列中始终保持有 m个最新的数据,
4,滑动 平均滤波前三种的平均滤波算法有一个 共同点,即 每取得一个有效采样值必须连续进行若干次采样,
42
1N
0i
inn XN
1X
为第 n次采样经滤波后的输出 ;
为未经滤波的第 n- i次采样值 ;
N为滑动平均项数,
nX
inX?
滑动平均滤波算法 的最大优势就是 实时性好,提高了系统的响应速度,
( 5-7)
43
5.3.2 中值滤波中值滤波是 将信号 y的连续 m次采样值按大小进行排序,取其中间值作为本次的有效采样值,本算法为取中值,
故采样次数 m应为奇数,一般 3~ 5次 即可,
Yn = X2 (X1≤X2≤X3)
编制中值滤波的算法程序,首先 把 m个采样值从小到大(或从大到小)进行排队,这可采用几种常规的排序算法如 冒泡算法,然后再 取中间值,
中值滤波算法 对 缓变过程中的偶然因素引起的波动或采样器不稳定造成的误差所引起的脉动干扰比较有效,
而对快速变化过程 (如流量 )的信号采样则不适用,
44
5.3.3 限幅滤波(也称为程序判断滤波)
经验说明,生产过程中许多物理量的变化需要一定的时间,因此 相邻两次采样值之间的变化幅度应在一定的限度之内,
限幅滤波就是 把两次相邻的采样值相减,求其增量的绝对值,再与两次采样所允许的最大差值?Y进行比较,如果小于或等于?Y,表示本次采样值 y(k)是真实的,则取 y(k)为有效采样值 ;反之,y(k)是不真实的,则取上次采样值 y(k?1)作为本次有效采样值,
45
当 |y(k)?y(k?1)|Y时,则取 y(k)=y(k)
当 |y(k)?y(k?1)|>?Y时,则取 y(k)=y(k-1)
式中,y(k)──t=kT 时的采样值 ;
y(k-1)─ -t=(k-1)T时的采样值 ;
Y── 相邻两次采样值所允许的最大偏差,其大小取决于控制系统采样周期 T和信号 Y的正常变化率,
限幅滤波算法 对 随机干扰或采样器不稳定 引起的失真有 良好的滤波效果,
46
5.3.4 惯性滤波惯性滤波是模拟硬件 RC低通滤波器的数字实现,
常用的 RC滤波器的传递函数是
ST1
1
)S(X
)S(Y
f?
( 5-5)
其中,Tf=RC是滤波器的滤波时间常数,其大小直接关系到滤波效果,一般说来,Tf越大,则滤波器的截止频率(滤出的干扰频率)越低,滤出的电压纹波较小,
但输出滞后较大,由于大的时间常数及高精度的 RC电路不易制作,所以 硬件 RC滤波器不可能对极低频率的信号进行滤波,
47
将式 (5-5)写成差分方程
)k(x)k(y
T
)1k(y)k(yT
f
( 5-6)
整理后得
)1k(y)a1()k(ax)1k(yTT T)k(xTT T)k(y
f
f
f
( 5-7)
为此可以模仿式 (5-5)中硬件 RC滤波器的特性参数,用软件做成低通数字滤波器,从而实现一阶惯性的数字滤波,
48
式中:
y(k)——第 k次采样的滤波输出值 ;
x(k)——第 k次采样的滤波输入值,即第 k次采样值
y(k-1)——第 (k-1)次采样的滤波输出值 ;
a——滤波系数 a=T /(Tf+T )
T——采样周期
Tf——滤波环节的时间常数一般 T远小于 Tf,即远小于 1,表明本次有效采样值 (滤波输出值 )主要取决于上次有效采样值 (滤波输出值 ),而本次采样值仅起到一点修正作用,
49
通常,采样周期 T足够小,则 a≈T/T f,滤波算法的截止频率为
T2
a
RC2
1f
( 5-8)
当采样周期 T一定时,滤波系数 a越小,数字滤波器的截止频率 f就越低,例如当 T=0.5秒 (即每秒采样 2
次 ),a=1/32时:
f=(1/32)/(2× 3.14× 0.5)≈0.01Hz
这对于 变化缓慢的采样信号 (如大型贮水池的水位信号 ),其 惯性滤波算法 效果是很好的,
50
惯性滤波器的程序编制可按式 (6-7)进行,设计时,应根据采样周期与截止频率适当选取 a值,使得滤波器的输出既无明显纹波,又不太滞后,显然,惯性滤波算法 比较简单,
比起平均值滤波法要快,能很好地 消除周期性干扰和较宽频率的随机干扰信号,
51
5.4 标度变换算法生产中的各种参数都有着不同的量纲和数值,但在计算机控制系统的采集,A/D转换过程中已变为 无量纲的数据,当系统在进行显示、记录、打印和报警等操作时,必须把这些 测得的数据还原为相应量纲的物理量,这就需要进行 标度变换,
标度变换 的任务是 把计算机系统检测的对象参数的二进制数值 还原变换为原物理量的 工程实际值,
52
显示C PUA /D放大
0~ 48 m V 0~ 5V 00 ~FF H 0~ 12 000021~0 C
。
C
。
图 8-1 1 标度变换原理图图 5-3 标度变换原理图图 5-3为标度变换原理图,这是一个 温度测控系统,某种热电偶 传感器把现场中的温度 0~ 1200℃ 转变为 0~48mV信号,
经输入通道中的运算放大器放大到 0~5V,再由 8位 A/D转换成
00~ FFH的数字量,这一系列的转换过程是由输入通道的 硬件电路 完成的,CPU读入该数字信号在送到显示器进行显示以前,
必须把这 一无量纲的二进制数值 再还原变换成原量纲为 ℃ 的温度信号,比如,最小值 00H应变换对应为 0℃,最大值 FFH应变换对应为 1200℃.
53
这个标度变换的过程是由 算法软件程序 来完成的,
标度变换有各种不同的算法,它取决于 被测参数的工程量与转换后的无量纲数字量 之间的 函数关系,一般而言,输入通道中的 放大器,A/D转换器基本上是线性的,因此,传感器的输入输出特性就大体上决定了这个函数关系的不同表达形式,也就决定了不同的标度变换方法,
主要方法有,线性式变换、非线性式变换、多项式变换以及查表法,
54
图 5-4 线性关系的标度变换
5.4.1 线性式变换 (掌握 )
线性标度变换 是最常用的标度变换方式,其前提条件是 传感器的输出信号与被测参数之间呈 线性 关系,
如图 5-4所示,
工程量数字量A0
Am
Ax
Nx NmN0
55
数字量 Nx对应的 工程量 Ax的线性标度变换公式为
0
0m
0x
0mx ANN
NNAAA?
)( (5-9)
A0—— 一次测量仪表的下限(测量范围最小值) ;
Am—— 一次测量仪表的上限(测量范围最大值) ;
Ax—— 实际测量值 (工程量 );
N0—— 仪表下限所对应的数字量 ;
Nm—— 仪表上限所对应的数字量 ;
Nx—— 实际测量值所对应的数字量,
0m
0x
NN
NN
0m
0X
AA
AA相似三角形,会推导,不要记忆
56
式 (6-9)为线性标度变换的通用公式,其中 A0,Am,N0,Nm
对某一个具体的被测参数与输入通道来说都是常数,不同的参数有着不同的值,为使程序设计简单,一般把 一次测量仪表的下限 A0所对应的 A/D转换值臵为 0,即 N0=0.
这样式 (7-9)可写成:
0
m
x
0mx AN
NAAA ) (5-10)
在很多测量系统中,仪表下限值 A0=0,此时进一步简化为
m
x
mx N
NAA? (5-11)
57
式 (5-9),(5-10)和 (5-11)即为在不同情况下的 线性标度变换公式,据此,编程用的标度变换 子程序公式 分别简化为,
1x11x bNaA
(5-12)
其中
0
0m
0m
01
0m
0m
1 NNN
AAA,b
NN
AAa
0x22x ANaA
(5-13)
其中
m
0m
2 N
AAa
58
例 1:某加热炉温度 测量仪表的量程为 200~ 800℃,在某一时刻计算机系统采样并经数字滤波后的 数字量为
0CDH,求此时的 温度值是多少? (设该仪表的量程是线性的,计算机处理的信息是 8位的 ).
工程量 ℃
数字量200
800
T
205 2550
Nx=0CDH=(205)D
205
200T
0255
200800tg
T=……=682 ℃
解 1:
59
解 2:根据 式 (6-10)已知,A0=200℃,Am=800℃,
Nx=0CDH=(205)D,Nm=FFH=(255)D.
所以此时的温度为
0
m
x
0mx AN
N)AAA 2 0 0
2 5 5
2 0 5)2 0 08 0 0 = 682℃
60
工程量 ℃
数字量300
1000
P
125 2550
125
300P
0255
3001000tg
P=……=643Pa
解 1(推导)
例 2:某压力测量仪表的量程为 300~ 1000Pa,采用 8位 A/D
转换器,设某采样周期计算机中经采样及数字滤波后的 数字量为 125D,求此时的压力值,
61
解 2(公式法 )根据题意,已知
Y0=400Pa,Ymax=1200Pa,X=125,选 Nmax=FFH=255D,N0=0
则:
Pa643300255125)3001 0 0 0(YN X)Y(YY 0
m a x
0m a x
62
5.4.2 非线性式变换 (了解 )
如果传感器的输出信号与被测参数之间呈 非线性关系 时,上面的线性变换式均不适用,需要建立新的标度变换公式,由于非线性参数的变化规律各不相同,故应 根据不同的情况建立不同的非线性变换式,但前提是它们的函数关系可用 解析式 来表示,
例如,在 差压法测流量 中,流量与压差 间的关系为,
PKQ
(5-15)
Q——流体流量 ;
K——刻度系数,与流体的性质及节流装臵的尺寸有关 ;
P——节流装臵前后的压差
63
可见,流体的流量与被测流体流过节流装臵前后产生的压力差的平方根成正比,于是得到测量流量时的标度变换公式为
0
0m
0x
0mx QNN
NN)Q(QQ?
(5-16)
式中,Q0—— 差压流量仪表的下限值 ;
Qm—— 差压流量仪表的上限值 ;
Qx—— 被测液体的流量测量值 ;
N0—— 差压流量仪表下限所对应的数字量 ;
Nm—— 差压流量仪表上限所对应的数字量 ;
Nx—— 差压流量仪表测得差压值所对应的数字量,
64
对于流量仪表,一般下限皆为 0,即 Q0= 0,所以上式可简化为
0m
0x
mx NN
NNQQ
(5-17)
若取流量表的下限对应的数字量 N0= 0,便可进一步简化为:
m
x
mx N
NQQ? (5-18)
65
式 (5-16),(5-17),(5-18)即为不同初始条件下的流量 标度变换公式,与 线性 标度变换公式一样,由于
Qo,Qm,N0,Nm都是常数,故以上三式可分别简化为编程用的标度变换子程序公式,
00x11x QNNKQ
(5-19)
其中
0
0
1 NN
QQK
m
m
0x22x NNKQ
(5-20)
其中
0m
m
2 NN
QK
x33x NKQ?
(5-21)
其中
m
m
3 N
QK?
66
5.4.3 多项式变换 (了解)
还有些传感器的输出信号与被测参数之间虽为非线性关系,但它们的函数关系无法用一个解析式来表示,或者解析式过于复杂而难于直接计算,这时可以采用一种既计算简便又能满足实际工程要求的近似表达式 ── 插值多项式来进行标度变换,
插值多项式是用一个 n次多项式来代替某种非线性函数关系的方法,其插值原理是,被测参数 y与传感器的输出值 x具有的函数关系为 y=f(x),只知道在 n+1个相异点处的函数值为,f(x0)=y0,f(x1)=y1,…,f(xn)=yn.现构造一个 n次多项式
Pn(x)=anxn+ an-1xn-1+ … +a1x+a0去逼近函数 y=f(x),把 y=f(x)
中这 n+1个相异点处的值作为插值代入 n次多项式 Pn(x),便可以获得 n+1个一次方程组:
67
anX0n+ an-1 x0n-1+ … + a1 x0 + a0 = y0
anX1n+ an-1 x1n-1+ … + a1 x1 + a0 = y1
anX2n+ an-1 x2n-1+ … + a1 x2 + a0 = y2
……
anXnn+ an-1 xnn-1+ … + a1 xn + a0 = yn
式中 x0,x1,…,xn是已知的传感器的输出值,
y0,y1,…,yn是被测参数,可以求出 n+1个待定系数 a0、
a1,…,an,从而构造成功一个可代替这种函数关系的可插值多项式 Pn( x ).
68
下面用 热敏电阻 测量温度的例子来说明这一过程,热敏电阻具有灵敏度高、价格低廉等特点,但是热敏电阻的阻值与温度之间的关系是 非线性 的,而且只能以 表 7-1的方式表示,现构造一个三阶多项式 P3(R)来逼近这种函数关系,
━━━━━━━━━━━━━━━━━━━━━━━━━
温度 t(℃ ) 阻值 R(kΩ) 温度 t(℃ ) 阻值 R(kΩ)
表 7-1 热敏电阻的温度 -电阻特性
10 8.0000 26 6.0606
11 7.8431 27 5.9701
12 7.6923 28 5.8823
13 7.5471 29 5.7970
14 7.4074 30 5.7142
15 7.2727 31 5.6337
16 7.1428 32 5.5554
17 7.0174 33 5.4793
18 6.8965 34 5.4053
19 6.7796 35 5.3332
20 6.6670 36 5.2630
21 6.5574 37 5.1946
22 6.4516 38 5.1281
23 6.3491 39 5.0631
24 6.2500 40 5.0000
25 6.1538
69
取三阶多项式为
t=P3(R)=a3R3+ a2R2+a1R+a0
并取 t=10,17,27,39这 4点为 插值点,便可以得到以下方程组:
8.00003 a3 + 8.00002 a2 + 8.0000 a1 + a0 = 10
7.01743 a3 + 7.01742 a2 + 7.0174 a1 + a0 = 17
5.97013 a3 + 5.97012 a2 + 5.9701 a1 + a0 = 27
5.06313 a3 + 5.06312 a2 + 5.0631 a1 + a0 = 39
70
解上述方程组,得
a3=-0.2346989 a2=6.120273
a1=-59.28043 a0=212.7118
因此,所求的逼近多项式为
t=-0.2346989R3+6.120273R2-59.28043R+212.7118
这就是用来标度变换的 插值多项式,将采样测得的电阻值 R代入上式,即可获得被测温度 t.
71
显然,插值点的选择对于逼近的精度有很大的影响,通常在函数 y=f(x)的曲线上曲率大的地方应适当加密插值点,
一般来说,增加插值点 和 多项式 的次数能提高逼近精度,
但同时会增加计算时间,而且在某些情况下反而可能会造成误差的摆动 ;另一方面,对于那些带 拐点 的函数,如果用一个多项式去逼近,将会产生较大的误差,
为了提高逼近精度,且不占用过多的机时,较好的方法是采用分段插值法,分段插值法是将被逼近的函数根据其变化情况分成几段,然后将每一段区间分别用直线或抛物线去逼近,分段插值的 分段点 的选取可按实际曲线的情况灵活决定,
既可以采用 等距分段法,又可采用 非等距分段法,
72
如上例 热敏电阻温度 t与 阻值 R的插值多项式,
其计算量较大,程序也较复杂,为使计算简单,提高实时性,可采用 分段线性插值公式 或称分段线性化的方法,即用多段折线代替曲线进行计算,
温度图 8-13 热敏电阻特性及分段线性化电阻
t
3
t
0
R 1 R 2
t
2
t
1
R 3R 0
L 1
L 0
L 2
图 5-5 热敏电阻特性及分段线性化
73
根据表 5-1中的数据制成图 5-5所示的热敏电阻特性及分段线性化,图中曲线为热敏电阻的 负温度 -电阻特性,折线 L0、
L1,L2代替或逼近曲线,当获取某个 采样值 R后,先判断 R的大小处于哪一折线段内,然后就可按相应段的线性化公式计算出标度变换值,其计算公式是:
- k0(R - R0) + t3 R0≤R≤R1
t = - k1(R - R1) + t2 R1≤R≤R2
- k2(R – R2) + t1 R2≤R≤R3
式中 k0,k1,k2分别为线段 L0,L1,L2的斜率,
同样,分段数越多,线性化精度越高,软件开销也相应增加,分段数应视具体情况和要求而定,当分段数多到线段缩成一个点时,实际上就是另一种方法 ——查表法,
74
5.4.4 查表法 (了解 )
所谓查表法就是把 事先计算或测得的数据按照一定顺序编制成表格,查表程序的任务就是 根据被测参数的值或者中间结果,查出最终所需要的结果,它是一种 非数值计算方法,利用这种方法可以完成数据的补偿、计算、转换等各种工作,
比如输入通道中对 热电偶特性 的处理,可以用 非线性插值法 进行标度变换,也可以采用精度更高效果更好的查表法进行标度变换 ——利用 热电偶的 mV-℃ 分度表,通过计算机的查表指令就能迅速便捷地由 电势 mV值查到相应的温度 ℃ 值 ;当然控制系统中还会有一些其它参数或表格也是如此,如对数表、三角函数表、模糊控制表等,
75
查表程序的繁简程度及查询时间的长短,除与表格的长短有关外,很重要的因素在于 表格的排列方法,
一般来讲,表格有两种排列方法:
(1)无序表格,即表格中的数据是任意排列的 ;
(2)有序表格,即表格中的数据按一定的顺序排列,表格的排列不同,查表的方法也不尽相同,
具体的查表方法有,顺序查表法,计算查表法,对分搜索法等,
76
1.顺序查表法顺序查表法是针对无序排列表格的一种方法,
其查表方法类似人工查表,因为无序表格中所有各项的排列均无一定的规律,所以只能按照顺序 从第一项开始逐项寻找,直到找到所要查找的关键字为止,顺序查表法虽然比较,笨,,但对于无序表格或较短表格而言,仍是一种 比较常用 的方法,
77
2,计算查表法在计算机数据处理中,一般使用的表格都是 线性表,它是若干个数据元素 X1,X2,…,Xn的集合,各数据元素在表中的排列方法及所占的存储器单元个数都是一样的,因此,要搜索的内容与表格的排列有一定的关系,只要根据所给的数据元素 Xi,
通过一定的计算,求出元素 Xi所对应的数值的地址,然后将该地址单元的内容取出即可,
这种 有序表格 要求各元素在表中的排列格式及所占用的空间必须一致,而且各元素是严格按顺序排列,其 关键在于找出一个计算表地址的公式,只要公式存在,查表的时间与表格的长度无关,正因为它对表格的要求比较严格,并非任何表格均可采用,通常它适用于某些 数值计算程序、功能键地址转移程序以及数码转换程序等,
78
3.对分查表法在前面介绍的两种查表方法中,顺序查表法速度比较慢,
计算查表法虽然速度很快,但对表格的要求比较挑剔,因而具有一定的局限性,在实际应用中,很多表格都比较长,且难以用计算查表法进行查找,但它们一般都满足 从大到小或从小到大的排列顺序,如热电偶 mV-℃ 分度表,流量测量中差压与流量对照表等等,对于这样的表格,通常采用快速而有效的对分查表法,
对分查表法 的具体做法是:先取数组的 中间值 D=n/2进行查找,与要搜索的 X值进行比较,若相等,则查到,对于 从小到大的顺序 来说,如果 X>n/2项,则下一次取 n/2~ n间 的中值,即
3n/4进行比较 ;若 X<n/2项,则取 0~ n/2的 中值,即 n/4进行比较,如此比较下去,则可逐次逼近要搜索的关键字,直到找到为止,
79
5.4.5 铂热电阻、铜热电阻和温度的关系
80
81
82
5.5 越限报警 处理 (了解)
为了实现安全生产,在计算机测控系统中,对于重要的 参数 和 部位,都设臵紧急状态 报警系统,以便及时提醒操作人员注意或采取应急措施,使生产继续进行或在确保人身设备安全的前提下终止生产,其方法就是把计算机的采集数据在进行 预处理、数字滤波、标度变换 之后,
与 该参数的设定上限、下限值进行比较,如果高于上限值或低于下限值则进行报警,否则就作为采样的正常值,
进行显示和控制,
83
5.5.1 越限报警程序在控制系统中,报警参数可以是被控参数、被测参数、输入偏差或控制量等,设需要判断的 报警参数为 X,
该参数的 上、下限约束值分别为 XH和 XL,则越限报警,
有如下几种形式:
上限报警若 XK> XH,则发出上限报警,否则继续执行原定操作,
下限报警若 XK< XL,则发出下限报警,否则继续执行原定操作,
84
具体设计报警程序时,为了避免测量值在极限值一点处 来回摆动造成频繁报警,一般应 在极限值附近设臵一个回差带,如图 6-6所示,
被测值( X )
越上限报警越下限报警复限复限时间( k T)
O
上限报警值 X H
下限报警值 X L
图 8-15 越 限报警范围
e
e
e
e
图 5-6 越限报警范围
85
图中 XH,XL是上、下限约束值,2e为回差带宽,当被测值超越 XH+e时,才算越过上限报警 值并设臵相应的越上限标志(上限标志位臵 1),同时输出越上限的 声、光报警 ;
当 被测值下降到 XH-e以下时,则复位上限,这时应撤消越上限标志 (上限标志位清 0)及相应的声光报警,
同理,当 被测值低于 XL-e点时,才算越过下限 并设臵相应的越下限标志(下限标志位臵 1),同时输出越下限的声、光报警 ;当 被测值上升到 XL+e以上时,则复位下限,这时应撤消越下限标志(下限标志位清 0)及相应的声光报警,
如此,回差值 e避免了测量值在极限值 XH或 XL来回摆动造成频繁报警,e值 的大小可根据现场具体的被测参数 设定,越限报警程序流程图如图 5-7所示,
86
开始取上限值越上限否?
取上限复位值复位上限否?
取下限值越下限否?
取下限复位值复位下限否?
返回输出声、光报警信号越上限标志置位 ( =1 )
输出声、光报警信号
Y
N
Y
N
Y
N
越上限标志清零 ( =0 )
撤消声、光报警信号越下限标志置位 ( =1 )
越下限标志清零 ( =0 )
撤消声、光报警信号
N
Y
图 8 -16 越 限报警程序流程图图 5-7 越限报警程序流程图
87
5.5.2 越限报警方式在计算机测控系统中常采用 声、光及语言 进行报警,
1,普通声光报警图 7 -9 普通声光报警接口电路
74 L S06
12 V+5V+
KA
D 0
D 1
D 2
D 4
D 3
D 5
CPU
D 6
D 7
图 5-8 普通声光报警接口电路
D2
88
普通光报警常采用 发光二极管 LED实现,声报警常用 蜂鸣器或电笛 实现,图 5-8是普通声光报警接口电路图,发光二极管的 驱动电流一般为 10~ 20mA,CPU的数据线需要外接驱动器驱动,可采用 OC门 驱动器,如 反相驱动器 74LS06、正相驱动器
74LS07等,也可采用一般的锁存器如 74LS273,74LS373、
74LS377,或带有锁存器的 I/O接口芯片,如 8155,8255A等,
图中数据线 D3~ D7接 5个 LED用于 5路信号的越限报警,D2与 1
个驱动蜂鸣器的继电器线圈相连,当某一路需要报警时,只要对该路及 D2输出 高电平,经 7406反相后,LED点亮的同时,继电器线圈吸合,蜂鸣器或电笛发出鸣叫,达到 声光报警效果,
89
2.模拟声光报警模拟声光报警最常用的方法是采用 模拟声音集成电路芯片,
如 KD-956X系列,是一种采用 CMOS工艺、软封装的声报警 IC芯片,能够产生表 5-2所列的声光报警效果,(玩具 )
表 5-2 KD-956× 系列报警芯片功能表型号 声光性能
KD-9561 机枪、警笛、救护车、消防车声
KD-9561B 嘟嘟 … 声
KD-9562 机枪、炮弹等 8种声
KD-9562B 光控报警声
KD-9562C 单键 8音
KD-9563 3声 2闪光
KD-9565 6声 5闪光
90
图 5-9(a)是 KD-9561芯片 的外形图,它内部具有振荡器、节拍器、音色发生器、地址计数器、控制和输出级等部分,它设有两个选声端 SEL1和 SEL2,改变这两端的电平,可以选择不同的内部程序,从而产生表 5-2所示的功能,图 5-9(b)是它的接线图,VDD接电源正端,VSS接电源负端,改变跨接在 OSCl和 OSC2之间的外接振荡电阻
R,可以调节模拟声音的放音节奏,R阻值越大,报警声音越急促,一般在 180kΩ ~ 290kΩ 的范围内选择,外接的小功率 三极管 9013是为了驱动扬声器,当系统检查到报警信号后,使三极管 9013导通,便发出 报警声音,
91
SEL 2
SEL 1
O SC2
O SC1
K D9 56 1
V DD
V SS
27 0K
8Ω
3 ~ 4.5 V
B
A
O SC2 O SC1
SEL 2 SEL 1 V DDV SS O UT
(a ) 芯片图 (b) 接线图图8-18 K D-9 56 1 芯片的外形和接线图
e bc
3109
e
b
c
R
图 5-9 KD-9561芯片的外行和接线图
KD-956X系列具有工作电压范围大、静态电流小、体积小、价格低、音响逼真、控制简便等优点,所以在 报警装臵和儿童玩具 中得到广泛的应用,
92
3.语音报警随着单片机技术,语音信号处理技术 和语音芯片制造技术的不断发展,增加语音功能已经成为智能仪表和计算机测控系统的设计方向,显然,用 计算机直接发出语音信息告诉操作人员发生了什么以及应该采取什么应急措施,远比声光报警传递了更为 明确 的信息 ;而且利用语音系统还能实现运行参数的报读以及运行状态的提醒,
语音系统是在计算机测控系统中扩展 语音录放芯片实现的,目前已经有大量语音录放芯片可供选择,有的芯片可以录放 10秒或 20秒信息,有的芯片可以录放几分钟长度的信息,
用户可以按照录放信息长短的需要选取适当的芯片,图 6-10
给出一个用 PIC单片机 与 集成语音芯片 ISD33240(经常见到)
组成的报警功能连接框图,
93
8 位点阵式串行 L C D 字符显示器
R C 振荡电路键 盘
3 × 4
话 筒扬声器
P I C 16 C 6 2
单片机
I SD 3 32 40
语音录放芯片图 8-19 语音芯片与单片机的连接框图图 5-10 语音芯片与单片机的连接框图
ISD33240是 ISD公司的 单片智能型语音录放芯片,可记录长达 4分钟的语音信息,它是通过 串行外围接口模式( SPI) 与单片机连接成主从方式工作的 (ISD1420)
94
而 PIC16C62单片机的同步串行口可以工作在 SPI模式,所以使用 PIC单片机 控制 ISD33240是最节省外围器件的一种硬件设计,在单片机的控制下,通过话筒把语音录入语音录放芯片,在测量控制过程中,根据测量值或工作状态由单片机选择适当的语音段通过扬声器发出声音报警信号,也可以通过 LCD显示器 提示状态信息,ISD33240
芯片 使用 3V单电源供电,录音时耗电 30mA,放音时耗电
25mA,录放状态一结束就进入节电模式,静态电流仅 1μA,
功耗极小,可反复录制 10万 次,信息可保存 10年 以上,可处理多达 100段 信息,
95
5.6 系统的运算字长选择 (掌握 )
5.6.1 关于量化误差在微机测控系统中,产生数值量化误差的原因 有三个方面:
1,被测参数经 A/D转换器 变成数字量时产生的 量化误差,
2,控制算法中的参数 ( 如 PID算式中的 KP,TI,TD等 ) 在运算之前预先臵入指定内存单元时因 字长限制而采取截尾或舍入 引起的误差以及运算过程中产生的误差,经过量化的数字信号送入计算机后,要按照一定的控制规律进行计算,由于计算机所用字长也是有限的,因此计算过程也产生量化误差,
96
3,计算机输出的数字控制量经 D/A转换器变成模拟量时产生的误差,由于计算所用的字长通常要比 D/A转换的字长要长,因此,
经过 D/A转换后,也存在在一定的量化效应,
综上所述,一个被测参数在整个采样、
转换处理及输出过程中要产生三次量化误差,
97
5.6.2 A/D,D/A及运算字长的选择(重点掌握)
在系统设计过程中,为减少量化误差,如果条件允许,
应尽可能加大字长,下面分别讨论在系统设计中如何进行 A/D转换器,D/A转换器和运算的字长选择,
( 一 ) A/D转换器的字长选择为了把量化误差限制在允许的范围内,应使 A/D转换器有足够的字长,对于 A/D转换器的 字长选择,主要应考虑模拟输入信号的动态范围 和 分辨率 两个因素,
98
)VV1(l o gN m i nm a x2
2.分辨率有些情况下,也将 A/D转换器的字长要求以分辨率形式给出,分辨率定义为:
12
1D
N
1.输入信号的动态范围 (书 P198 推导 )
如果 模拟输入信号最大值为 Vmax,最小值为 Vmin,A/D转换器的字长与转换当量( mv/bit)分别为 N,λ,A/D 转换器的字长为,
99
(二) D/A转换器的字长选择在微机测控系统中,D/A转换器的输出用以控制被控对象,并通过功率放大装臵推动执行机构,D/A
转换器的输出应满足执行机构动态范围的要求,一般情况下,D/A字长小于或等于 A/D字长即可,
如果执行机构的最大输入值为 umax,最小输入值为 umin,灵敏度为 β,得到 D/A转换器的字长为:
)β uu1(l o gN m i nm a x2
100
在微机测控系统中,常用的 A/D和 D/A转换器字长为 8位、
10位和 12位(偶数),按照上述公式估算出的字长取整后再选取三种之一,对于特殊的被控对象,可选择 14,16等更高分辨率的 A/D和 D/A转换器,
(三) 运算字长的选择在微机测控系统中,为了保证运算精度,几乎毫无例外的采用 16位以上 字长对 A/D转换器的采集数据进行运算处理,CPU的运算精度不仅仅取决于字长,而且还取决于采用定点数或浮点数,如果采用 浮点数,运算精度可以大大提高,
第 5章 应用程序设计和实现技术 (1)
数据处理技术
5.1 数据结构 (了解 )
5.2 测量数据预处理技术 (了解 )
5.3 数字滤波方法(掌握)
5.4 标度变换算法(掌握)
5.5 越限报警处理(了解)
5.6 系统的运算字长选择(掌握)
2
在计算机控制系统中,数据采集 是最基本的一种模式,
一般是通过 传感器、变送器 把生产过程的各种物理参数转换成电信号,然后经 A/D通道或 DI通道,把数字量送入计算机中,计算机在对这些数字量进行显示和控制之前,还必须根据需要进行相应的 数据处理,
数据处理离不开数值计算,而最基本的数值计算为 四则运算,由于控制系统中遇到的现场环境不同,采集的 数据种类与数值范围 不同,精度要求也不一样,各种数据的输入方法及表示方法也各不相同,因此,为了满足不同系统的需要,设计出了许多有效的数据处理技术方法,如 预处理,数字滤波,标度变换,查表和越限报警 等,
3
5.1 数据结构 (了解 )
(一)基本术语数据( data),是描述客观事物的数、字符以及所有能输入到计算机中并被计算机程序处理的符号的集合,
它是计算机程序加工的,原料,,
数据元素( data element),数据的基本单位,即数据集合中的一个个体,有时一个数据元素可由若干个 数据项( data item) 组成,数据项是数据的最小单位,
4
数据对象 ( data object),是 具有相同特性的数据元素的集合,是数据的一个子集,例如,整数的数据对象是集合 N= {0,± 1,± 2… },字母字符的数据对象为集合 C=
{ A,B,…,Z},
数据结构( data structure),是 带有结构的数据元素的集合,被计算机程序加工的数据元素都不是孤立的,在它们之间存在着某种联系,这种相互之间的关系称作结构,
通常数据结构是一个二元组,数据结构所研究的内容是数据元素之间的逻辑关系,即所谓数据的逻辑结构,而数据元素在计算机内的存储方式,又称为 数据的物理结构 (或存储结构 ).数据元素在计算机中有两种不同的存储结构即 顺序结构和非顺序存储结构 (又称链式存储结构),
5
(二) 数据结构类型
1,顺序结构 顺序结构就是将数据存放在从某个存储地址开始的连续存储单元中,顺序结构包括 线性表、数组,
堆栈和队列,其中前两种为 静态顺序结构,后两种为 动态顺序结构,
( 1) 线性表,线性表是一组 有序的数据元素,可表示为
(a1,a2,…,an) ( 6-1)
式中 ai—— 数据元素 ;
i—— 元素的序号,
代表元素在线性表中的位臵,i =1,2,…,n;
n— 线性表中元素的个数,
定义为表的长度,当 n = 0时,称为空表,
6
特点,线性表中每个数据元素的 位臵是固定的,元素之间的 相对位臵是线性的,
存储,在计算机中,用一组连续的单元依次存储线性表的数据元素,假设每个元素占用 L个存储单元,则第 i个元素 ai的存储地址为线性表中第一个元素的存储地址 +( i-1) × L
MOV A,#**H
MOV DPTR,#TABLE
MOVC A,@A+DPTR
TABLE,DB 0C0H,0F9H,0A4H,0B0H,99H ;0-9共阳 LED译码表
DB 92H,82H,0F8H,80H,90H
7
( 2) 数组,数组就是 线性表的一种推广,其中每个元素是由一个数值和一组下标组成,
例如,一个 m× n的数组可表示为式中 i= 1,2,…,m ;j = 1,2,…,n.
这是一个二维数组,其中每个元素 aij都和一个二维空间的数
( i,j) 相对应,
ij
mn2m1m
n22221
n11211
a
aaa
aaa
aaa
A?
( 6-3)
8
特点:数组是线性表的简单推广 ;反之,线性表是数组的一种特例,例如,线性表 ( 6-1) 相当于数组 ( 6-3) 中的一行或一列元素,
存储,在计算机中,用 一组连续的单元 依次按行或列存放每个元素,
9
( 3) 堆栈,堆栈是线性表的一种特殊结构,只能在 表的一端进行存取,(单片机讲过 )
a n
a 2
a 1 25
51
15
42
33
25
15
42
33
25 S P =1
S P =5
S P =4
栈顶栈底进栈 出栈
10
特点,先进后出 (FILO),后进先出 (LIFO).
存储,在计算机中,用一组连续的单元依次存储堆栈操作的数据元素,
堆栈指针,通常用 SP(Stack Pointer)表示,每次进栈,SP加 1;
出栈时,SP减 1.
11
( 4) 队列,与堆栈相似,队列也是一种特殊的线性表,
与堆栈不同的是,队列是先进先出的表 FIFO.队列中数据元素以 a1,a2,…,an的顺序进入,又以相同的顺序出去,
特点,先进先出( FIFO),后进后出 (LILO).
存储,在计算机中,用一组连续的单元依次存储队列操作的数据元素,
队列指针,用队 头指针 front和 队尾指针 rear来描述队列,
(后面讲到数字滤波用到)
a n ······ a 2 a 1
进队 出队
12
线性表、数组、堆栈和队列的共同特点是,
数据元素要求存放在 连续的存储单元 中,
缺点,
一、做 插入或删除操作时,要移动大量的数据元素,并浪费时间 ;
二、不易扩展,有时为了留有余地,将会浪费存储空间,
13
2,链形结构链表由若干个结点组成,每个结点有两个域:
一个是 数据域,用来存放数据元素 ;
一个是 指针域,用来存放下一个结点的数据域首址,
通过指针域把各结点按要求的顺序连接起来组成一个首尾相连的表,由于其组成象一条链条,故取名为 链表,
为了确定链表中第一个结点的 数据首址,设臵了 头指针
( head) ;为了标识链表中的 最后一个结点,将其指针域设臵为,空,( NUL),
14
head a1 · a2 · a3 · ······ 删除结点插入结点head a1 ·
b ·
a2 · ······
链形结构的最大 特点 是:在 逻辑上是有序 的,用指针域指明各结点(或数据元素)之间的关系 ;而在 物理上则可能是无序的,各结点在存储器中的物理位臵可以任意配臵,因此在使用链表时,通常 只考虑它的逻辑顺序,
而不关心它的实际存储位臵,
链表的三种形式:单链表、循环链表和双重链表链表的三种运算:插入结点、删除结点和查找结点,
15
3,树形结构 计算机所管理的数据、信息和文件有时具有层次关系或上下级关系,每个记录有 四个域:记录名、数据、左指针和右指针,如果把记录抽象为一个结点,其形状很像一棵倒叉树,称为树形结构,或简称 树( tree),
左指针右指针数据结点 A
16
左指针右指针数据结点 A
左指针右指针数据结点 B
左指针右指针数据结点 C
N I L
N I L
数据结点 G
N I L
N I L
数据结点 F
N I L
N I L
数据结点 E
N I L
N I L
数据结点 D
A
B
F G
C
D E
把最高结点 A称为树,根,,结点之间的连线称为树,枝,,具有分枝的结点称为树,节,,不具有分枝的结点称为树,叶,,
17
5.2 测量数据预处理技术 (了解 )
对测量数据的 预处理 是计算机控制系统数据处理的基础,这包括 数字调零技术、系统校准技术以及输入、输出数据的极性与字长的预处理技术,
18
5.2.1 系统误差 的自动校准(了解)
在控制系统的测量输入通道中,一般均存在 放大器 等器件的 零点偏移和漂移,会造成 放大电路的增益误差及器件参数的不稳定 等现象,它们都会影响测量数据的准确性,这些误差都属于 系统误差,
它的特点是在一定的测量条件下,其变化规律是可以掌握的,产生误差的原因一般也是知道的,
因此,系统误差是可以通过 适当的技术方法来确定并加以校正 的,一般采用 软件程序进行处理,即可对这些系统误差进行自动校准,
19
1.数字调零零点偏移 是造成系统误差的主要原因之一,因此零点的自动调整在实际应用中最多,常把这种用 软件程序进行零点调整 的方法称为 数字调零,V 1
V n
V 0
多路开关前置放大器 计算机
A A /D
模数转换器
C PU
图 8- 1 数字调零电路图 5-1 数字调零电路
20
数字调零电路如图 5-1所示,在测量输入通道中,CPU分时巡回采集 1路校准电路与 n路 传感变送器送来的电压信号,
首先是 第 0路的校准信号即接地信号,理论上 电压为零的信号,经放大电路,A/D转换电路进入 CPU的数值应当为零,而实际上由于 零点偏移 产生了一个 不等于零的数值,这个值就是零点偏移值 N0;然后依次采集 1,2,… n路,每次采集到的数字量 N1,N2,… Nn值就是 实际值与零点偏移值 N0之和,
计算机要进行的数字调零就是做一次 减法运算,使 (Ni-
N0)的差值成为本次测量的实际值,很显然,采用这种方法,可 去掉放大电路,A/D转换电路本身的偏移及随时间与温度而发生的各种漂移的影响,从而大大降低对这些电路器件的偏移值的要求,降低硬件成本,
21
2.系统校准上述数字调零不能校正由 传感器本身引入的误差,为了克服这种缺点,可采用系统校准处理技术,
系统校准 的原理与数字调零差不多,只是把 测量电路扩展到包括现场的传感器,而且不是在每次采集数据时都进行校准,而是 在需要时人工接入标准参数 进行校准测量,
把测得的数据存储起来,供以后实际测量使用,一般 自动校准系统只测一个标准输入信号 VR,零点漂移的补偿仍由数字调零来完成,
设 调零 后测得 标准输入信号 VR的数据为 NR,而测得 实际被测输入信号 V时的数据为 N,则可按如下校准式来计算 V.
22
N
N
VV
R
R?
( 5-1)
系统校准 特别适于 传感器特性随时间会发生变化的场合,如 电容式湿度传感器,其输入输出特性会随着时间而发生变化,一般一年以上变化会大于精度容许值,这时可每隔一段时间(例如 3个月或 6个月),用其它精确方法测出这时的湿度值,然后把它作为校准值输入测量系统,在实际测量湿度时,计算机将自动用该输入值来校准以后的测量值,
23
控制系统中处理的信号很多是 双极性的,如温度、压力、位臵、角度信号等,这就要求在实施控制时,不仅要考虑信号的幅度,还要考虑到信号的极性,为此,在对 A/D转换后的数据和 D/A转换前的数据进行处理前,必须根据数据的极性先进行预处理,才能保证得到正确的结果,
系统中有的 输入信号是单极性的,而输出信号则要求是双极性的,如流量、压力等控制回路 ;有的则是要求 输入和输出信号都是双极性的,如位臵、角度等控制回路,下面就这两种情况分别加以讨论,
5.2.2 数据 极性 的预处理(了解)
24
1.输入、输出信号同为双极性在输入、输出都是双极性信号的控制系统中,程序处理的输入和输出数据不仅反映信号幅度的大小,也反映信号的极性,假设信号的变化范围为 -5V~ +5V,信号经 A/D转换得到的数字量为 00H~ FFH 数字量的最高位 D7表示信号的极性,
当 D7=0时,表示输入信号为 正 极性,即数字量 00H~
7FH表示 0V~ +5V的模拟信号 (0***,****)
当 D7=1时,表示输入信号为 负 极性,即数字量 7FH~
FFH表示 -5V~ 0V的模拟信号 (1***,****)
25
在由双极性信号组成的闭环定值控制系统中,设给定信号为 R,采样输入信号为 Z,则 偏差值 E=R-Z.因为
R 和 Z的值对应的是双极性信号,所以偏差值 E也是双极性信号,因此在参加运算前也必须进行预处理才能保证最终结果的正确,
预处理的规则,如果 偏差值的绝对值大于 80H
(此为无符号数),则偏差信号取最大值,即信号极性为负时取 00H,信号极性为正时取 FFH.否则,将运算结果直接作为 偏差信号,
26
2.输入、输出信号分别为单双极性在控制系统中,有时会出现 输入信号和给定信号是单极性 的,即数字量 00H~ FFH对应同极性的信号,如 0~
+5V;而 输出信号则要求是双极性 的,即数字量 00H~ FFH
对应的是双极性的,如 -5V~ +5V.
这类系统的数据预处理与双极性的输入输出系统的方法相同,由于系统的输入是单极性的,因此不必判断极性,只需根据偏差值的大小和符号判断即可,系统的数据预处理程序流程图如图 5-2所示,
27
读数据 R 和 Z
计算 E =R - Z
R ≥ Z 否?
E ≥ 80H 否? E ≥ 80H 否?
00H A E +80 H A FFH A
A RE SUL T
返回
N Y
图 8 - 3 输入单极性输出双极性的数据预处理程序流程图
N
N
Y
Y
开始图 5-2 输入单极性输出双极性的数据预处理程序流程图
28
5.2.3 数据字长的预处理(了解)
在计算机控制系统中经常会出现数据字长不一致的情况,如有的系统采用 12位 A/D转换器采样数据,而 输出采用 8位 D/A转换器 ;有的系统使用 8位 A/D转换器进行采样,
而为了提高计算的精度,采用 双字节运算程序计算,为了满足不同的精度要求,数据在进行 数字滤波、标度变换和控制运算后必须对数字量的位数加以处理,
29
1,输入位数 大于 输出位数当 输入器件的分辨率高于输出器件 时,如采用 10
位 A/D转换器采样,而 CPU把处理后的 10位二进制数通过 8位 D/A转换器输出,就会出现输入位数大于输出位数的情况,对输入位数大于输出位数的处理方法就是忽略高位数的最低几位,如,10位 A/D转换器 的输入值为 0011111010,此值经处理后送入 8位 D/A转换器 的值就变为 00111110.这在计算机中通过 向右移位 的方法是很容易实现的,
由于 10位 A/D转换器的采样分辨率要比 8位 A/D转换器高的多,因此,虽然舍去了最低的两位数会产生一定的误差,但这一误差仍比采用 8位输入 8位输出系统的误差小,
30
2.输入位数 小于 输出位数当输入器件的分辨率比输出器件低时,如采用 8位
A/D转换器采样,而通过 10位 D/A转换器进行输出,就会出现输入位数小于输出位数的情况输入位数小于输出位数的最好处理方法是,将 8位数左移两位构成 10位数,10位数的 最低两位用,0”填充,
如:转换前的 8位输入值 为,××××××××
转换后的 10位输出值 为,×××××××× 00
这种处理方法的优点在于构成的 10位数接近 10位
A/D转换器的 满刻度值,其误差在 10位数字量的 3个步长电压之内,
31
5.3 数字滤波方法 (软件抗干扰技术)
由于工业生产的现场环境 非常恶劣,各种干扰源很多,计算机系统通过输入通道采集到的数据信号,虽经硬件电路的滤波处理,但仍会混有 随机干扰噪声,因此,为了提高系统性能,达到准确的测量与控制,一般情况下还需要进行 数字滤波,
32
(掌握 )数字滤波,计算机系统对输入信号 采样多次,然后用 某种计算方法 进行 数字处理,以削弱或滤除干扰噪声造成的随机误差,从而获得一个真实信号的过程,
数字滤波与 硬件滤波器 相比优点甚多,因此得到了普遍的应用,常用的数字滤波方法有,平均值滤波,中值滤波,限幅滤波,惯性滤波 等,
33
总结:在实际应用中,究竟采用不采用、以及采用哪一种数字滤波,都应视具体情况而定,
1.程序判断、中值、惯性滤波 适用于 变化缓慢的参数
2.算术平均、加权平均滤波 适用于 变化较快的参数
3.几种滤波算法可以复合使用,如,中值 +算术平均
4.不适当的滤波也可能影响有用信号,要分析输入参数情况,
5.3.1 平均值滤波算术平均滤波,去极值平均滤波,加权平均滤波,滑动平均滤波
5.3.2 中值滤波
5.3.3 限幅滤波
5.3.4 惯性滤波
34
优点,
1.数字滤波用 程序实现,不需要增加任何硬件设备,可 多通道共享,且不存在阻抗匹配问题,所以成本低,可靠性高,
稳定性好,
2.数字滤波可以对 频率很低 (如 0.01Hz)的信号实现滤波,
克服了模拟滤波器频率受 电容容量限制的缺陷,
3.数字滤波器可以根据 信号的不同,选择不同的滤波方法或滤波参数,使用方便、灵活,
35
5.3.1 平均值滤波平均值滤波就是 对多个采样值进行平均算法,
这是 消除随机误差 最常用的方法,具体又可分为如下几种,
1.算术平均滤波 (很好理解 )
算术平均滤波是在 采样周期 T内,对测量信号 y
进行 m次采样,把 m个采样值相加后的算术平均值 作为本次的有效采样值,即
m
1i
iym
1)k(y ( 6-5)
36
采样次数 m值 决定了信号的 平滑度和灵敏度,提高 m
的值,可提高平滑度,但系统的灵敏度随之降低,采样次数 m的取值随被控对象的不同而不同,一般情况下,流量信号可取 10左右,压力信号可取 4左右,温度、成分等缓变信号可取 2甚至不进行算术平均,
在编制算法程序时,m一般取 2,4,8等 2的整数幂,
以便于用 移位来代替除法求得平均值,
算术平均滤波算法 适用于对 周期性干扰的信号滤波
37
2.去极值平均滤波算术平均滤波不能将 明显的偶然的脉冲干扰 消除,只是把其平均到采样结果中,从而 降低了测量精度,去极值平均滤波是 对连续采样的 m个数据进行比较,去掉其中的最大值与最小值,然后计算余下的 m-2
个数据的算术平均值,
在编制算法程序时,为便于用移位来代替除法求得平均值,m-2应取 2,4,8等,故 m取 4,6,10等,
去极值平均滤波算法 适用于 工业场合 经常遇到的尖脉冲干扰的信号滤波,
38
3,加权平均滤波算术平均滤波和去极值平均滤波都存在平滑性和灵敏度的矛盾,采样次数太少则平滑效果差,次数太多则灵敏度下降,对测量参数的变化趋势不敏感,为协调两者关系,可采用 加权平均滤波,
加权平均滤波是对 每次采样值赋以不同的权系数而以增加新鲜采样值的权重相加,
m
1i
ii yC)k(y
( 6-6)
39
式中,第 m次为最新值,C1,C2,…,Cm 为加权系数,
先小后大,且均为 小于 1但总和等于 1的小数,即满足下式
C1+C2+… +Cm = 1
Cm>Cm-1> … C1>0
C1,C2,…,Cm 的取值应视具体情况选取,并通过 调试确定,
40
式中 权系数
,
3
1 R
eC 2
2 R
eC
R
eC
3 R
1C
4?
1eeeR 23
,,,
加权平均滤波算法 能 协调系统的平滑度和灵敏度的矛盾,提高灵敏度,更 适用于纯滞后较大的对象,
例如,某纯滞后时间为 τ 的被控对象,采用 m=4的加权平均滤波算式为
)k(y =C1y1+C2y2+C3y3+C4y4
41
当系统的 采样速度较慢 或 采样信号变化较快 时,系统的实时性就无法得到保证,滑动平均滤波是在每个采样周期只采样一次,将这一次采样值和过去的若干次采样值一起求平均,所得结果即为 有效采样值,
具体作法可由 循环队列结构 方式来实现数据的存放,比如 取 m个采样值求滑动平均,只要 在 RAM中开辟 m个数据暂存区,每次新采集一个数据便存入暂存区的 队尾,
同时冲掉队首的一个数据,这样在存储器队列中始终保持有 m个最新的数据,
4,滑动 平均滤波前三种的平均滤波算法有一个 共同点,即 每取得一个有效采样值必须连续进行若干次采样,
42
1N
0i
inn XN
1X
为第 n次采样经滤波后的输出 ;
为未经滤波的第 n- i次采样值 ;
N为滑动平均项数,
nX
inX?
滑动平均滤波算法 的最大优势就是 实时性好,提高了系统的响应速度,
( 5-7)
43
5.3.2 中值滤波中值滤波是 将信号 y的连续 m次采样值按大小进行排序,取其中间值作为本次的有效采样值,本算法为取中值,
故采样次数 m应为奇数,一般 3~ 5次 即可,
Yn = X2 (X1≤X2≤X3)
编制中值滤波的算法程序,首先 把 m个采样值从小到大(或从大到小)进行排队,这可采用几种常规的排序算法如 冒泡算法,然后再 取中间值,
中值滤波算法 对 缓变过程中的偶然因素引起的波动或采样器不稳定造成的误差所引起的脉动干扰比较有效,
而对快速变化过程 (如流量 )的信号采样则不适用,
44
5.3.3 限幅滤波(也称为程序判断滤波)
经验说明,生产过程中许多物理量的变化需要一定的时间,因此 相邻两次采样值之间的变化幅度应在一定的限度之内,
限幅滤波就是 把两次相邻的采样值相减,求其增量的绝对值,再与两次采样所允许的最大差值?Y进行比较,如果小于或等于?Y,表示本次采样值 y(k)是真实的,则取 y(k)为有效采样值 ;反之,y(k)是不真实的,则取上次采样值 y(k?1)作为本次有效采样值,
45
当 |y(k)?y(k?1)|Y时,则取 y(k)=y(k)
当 |y(k)?y(k?1)|>?Y时,则取 y(k)=y(k-1)
式中,y(k)──t=kT 时的采样值 ;
y(k-1)─ -t=(k-1)T时的采样值 ;
Y── 相邻两次采样值所允许的最大偏差,其大小取决于控制系统采样周期 T和信号 Y的正常变化率,
限幅滤波算法 对 随机干扰或采样器不稳定 引起的失真有 良好的滤波效果,
46
5.3.4 惯性滤波惯性滤波是模拟硬件 RC低通滤波器的数字实现,
常用的 RC滤波器的传递函数是
ST1
1
)S(X
)S(Y
f?
( 5-5)
其中,Tf=RC是滤波器的滤波时间常数,其大小直接关系到滤波效果,一般说来,Tf越大,则滤波器的截止频率(滤出的干扰频率)越低,滤出的电压纹波较小,
但输出滞后较大,由于大的时间常数及高精度的 RC电路不易制作,所以 硬件 RC滤波器不可能对极低频率的信号进行滤波,
47
将式 (5-5)写成差分方程
)k(x)k(y
T
)1k(y)k(yT
f
( 5-6)
整理后得
)1k(y)a1()k(ax)1k(yTT T)k(xTT T)k(y
f
f
f
( 5-7)
为此可以模仿式 (5-5)中硬件 RC滤波器的特性参数,用软件做成低通数字滤波器,从而实现一阶惯性的数字滤波,
48
式中:
y(k)——第 k次采样的滤波输出值 ;
x(k)——第 k次采样的滤波输入值,即第 k次采样值
y(k-1)——第 (k-1)次采样的滤波输出值 ;
a——滤波系数 a=T /(Tf+T )
T——采样周期
Tf——滤波环节的时间常数一般 T远小于 Tf,即远小于 1,表明本次有效采样值 (滤波输出值 )主要取决于上次有效采样值 (滤波输出值 ),而本次采样值仅起到一点修正作用,
49
通常,采样周期 T足够小,则 a≈T/T f,滤波算法的截止频率为
T2
a
RC2
1f
( 5-8)
当采样周期 T一定时,滤波系数 a越小,数字滤波器的截止频率 f就越低,例如当 T=0.5秒 (即每秒采样 2
次 ),a=1/32时:
f=(1/32)/(2× 3.14× 0.5)≈0.01Hz
这对于 变化缓慢的采样信号 (如大型贮水池的水位信号 ),其 惯性滤波算法 效果是很好的,
50
惯性滤波器的程序编制可按式 (6-7)进行,设计时,应根据采样周期与截止频率适当选取 a值,使得滤波器的输出既无明显纹波,又不太滞后,显然,惯性滤波算法 比较简单,
比起平均值滤波法要快,能很好地 消除周期性干扰和较宽频率的随机干扰信号,
51
5.4 标度变换算法生产中的各种参数都有着不同的量纲和数值,但在计算机控制系统的采集,A/D转换过程中已变为 无量纲的数据,当系统在进行显示、记录、打印和报警等操作时,必须把这些 测得的数据还原为相应量纲的物理量,这就需要进行 标度变换,
标度变换 的任务是 把计算机系统检测的对象参数的二进制数值 还原变换为原物理量的 工程实际值,
52
显示C PUA /D放大
0~ 48 m V 0~ 5V 00 ~FF H 0~ 12 000021~0 C
。
C
。
图 8-1 1 标度变换原理图图 5-3 标度变换原理图图 5-3为标度变换原理图,这是一个 温度测控系统,某种热电偶 传感器把现场中的温度 0~ 1200℃ 转变为 0~48mV信号,
经输入通道中的运算放大器放大到 0~5V,再由 8位 A/D转换成
00~ FFH的数字量,这一系列的转换过程是由输入通道的 硬件电路 完成的,CPU读入该数字信号在送到显示器进行显示以前,
必须把这 一无量纲的二进制数值 再还原变换成原量纲为 ℃ 的温度信号,比如,最小值 00H应变换对应为 0℃,最大值 FFH应变换对应为 1200℃.
53
这个标度变换的过程是由 算法软件程序 来完成的,
标度变换有各种不同的算法,它取决于 被测参数的工程量与转换后的无量纲数字量 之间的 函数关系,一般而言,输入通道中的 放大器,A/D转换器基本上是线性的,因此,传感器的输入输出特性就大体上决定了这个函数关系的不同表达形式,也就决定了不同的标度变换方法,
主要方法有,线性式变换、非线性式变换、多项式变换以及查表法,
54
图 5-4 线性关系的标度变换
5.4.1 线性式变换 (掌握 )
线性标度变换 是最常用的标度变换方式,其前提条件是 传感器的输出信号与被测参数之间呈 线性 关系,
如图 5-4所示,
工程量数字量A0
Am
Ax
Nx NmN0
55
数字量 Nx对应的 工程量 Ax的线性标度变换公式为
0
0m
0x
0mx ANN
NNAAA?
)( (5-9)
A0—— 一次测量仪表的下限(测量范围最小值) ;
Am—— 一次测量仪表的上限(测量范围最大值) ;
Ax—— 实际测量值 (工程量 );
N0—— 仪表下限所对应的数字量 ;
Nm—— 仪表上限所对应的数字量 ;
Nx—— 实际测量值所对应的数字量,
0m
0x
NN
NN
0m
0X
AA
AA相似三角形,会推导,不要记忆
56
式 (6-9)为线性标度变换的通用公式,其中 A0,Am,N0,Nm
对某一个具体的被测参数与输入通道来说都是常数,不同的参数有着不同的值,为使程序设计简单,一般把 一次测量仪表的下限 A0所对应的 A/D转换值臵为 0,即 N0=0.
这样式 (7-9)可写成:
0
m
x
0mx AN
NAAA ) (5-10)
在很多测量系统中,仪表下限值 A0=0,此时进一步简化为
m
x
mx N
NAA? (5-11)
57
式 (5-9),(5-10)和 (5-11)即为在不同情况下的 线性标度变换公式,据此,编程用的标度变换 子程序公式 分别简化为,
1x11x bNaA
(5-12)
其中
0
0m
0m
01
0m
0m
1 NNN
AAA,b
NN
AAa
0x22x ANaA
(5-13)
其中
m
0m
2 N
AAa
58
例 1:某加热炉温度 测量仪表的量程为 200~ 800℃,在某一时刻计算机系统采样并经数字滤波后的 数字量为
0CDH,求此时的 温度值是多少? (设该仪表的量程是线性的,计算机处理的信息是 8位的 ).
工程量 ℃
数字量200
800
T
205 2550
Nx=0CDH=(205)D
205
200T
0255
200800tg
T=……=682 ℃
解 1:
59
解 2:根据 式 (6-10)已知,A0=200℃,Am=800℃,
Nx=0CDH=(205)D,Nm=FFH=(255)D.
所以此时的温度为
0
m
x
0mx AN
N)AAA 2 0 0
2 5 5
2 0 5)2 0 08 0 0 = 682℃
60
工程量 ℃
数字量300
1000
P
125 2550
125
300P
0255
3001000tg
P=……=643Pa
解 1(推导)
例 2:某压力测量仪表的量程为 300~ 1000Pa,采用 8位 A/D
转换器,设某采样周期计算机中经采样及数字滤波后的 数字量为 125D,求此时的压力值,
61
解 2(公式法 )根据题意,已知
Y0=400Pa,Ymax=1200Pa,X=125,选 Nmax=FFH=255D,N0=0
则:
Pa643300255125)3001 0 0 0(YN X)Y(YY 0
m a x
0m a x
62
5.4.2 非线性式变换 (了解 )
如果传感器的输出信号与被测参数之间呈 非线性关系 时,上面的线性变换式均不适用,需要建立新的标度变换公式,由于非线性参数的变化规律各不相同,故应 根据不同的情况建立不同的非线性变换式,但前提是它们的函数关系可用 解析式 来表示,
例如,在 差压法测流量 中,流量与压差 间的关系为,
PKQ
(5-15)
Q——流体流量 ;
K——刻度系数,与流体的性质及节流装臵的尺寸有关 ;
P——节流装臵前后的压差
63
可见,流体的流量与被测流体流过节流装臵前后产生的压力差的平方根成正比,于是得到测量流量时的标度变换公式为
0
0m
0x
0mx QNN
NN)Q(QQ?
(5-16)
式中,Q0—— 差压流量仪表的下限值 ;
Qm—— 差压流量仪表的上限值 ;
Qx—— 被测液体的流量测量值 ;
N0—— 差压流量仪表下限所对应的数字量 ;
Nm—— 差压流量仪表上限所对应的数字量 ;
Nx—— 差压流量仪表测得差压值所对应的数字量,
64
对于流量仪表,一般下限皆为 0,即 Q0= 0,所以上式可简化为
0m
0x
mx NN
NNQQ
(5-17)
若取流量表的下限对应的数字量 N0= 0,便可进一步简化为:
m
x
mx N
NQQ? (5-18)
65
式 (5-16),(5-17),(5-18)即为不同初始条件下的流量 标度变换公式,与 线性 标度变换公式一样,由于
Qo,Qm,N0,Nm都是常数,故以上三式可分别简化为编程用的标度变换子程序公式,
00x11x QNNKQ
(5-19)
其中
0
0
1 NN
QQK
m
m
0x22x NNKQ
(5-20)
其中
0m
m
2 NN
QK
x33x NKQ?
(5-21)
其中
m
m
3 N
QK?
66
5.4.3 多项式变换 (了解)
还有些传感器的输出信号与被测参数之间虽为非线性关系,但它们的函数关系无法用一个解析式来表示,或者解析式过于复杂而难于直接计算,这时可以采用一种既计算简便又能满足实际工程要求的近似表达式 ── 插值多项式来进行标度变换,
插值多项式是用一个 n次多项式来代替某种非线性函数关系的方法,其插值原理是,被测参数 y与传感器的输出值 x具有的函数关系为 y=f(x),只知道在 n+1个相异点处的函数值为,f(x0)=y0,f(x1)=y1,…,f(xn)=yn.现构造一个 n次多项式
Pn(x)=anxn+ an-1xn-1+ … +a1x+a0去逼近函数 y=f(x),把 y=f(x)
中这 n+1个相异点处的值作为插值代入 n次多项式 Pn(x),便可以获得 n+1个一次方程组:
67
anX0n+ an-1 x0n-1+ … + a1 x0 + a0 = y0
anX1n+ an-1 x1n-1+ … + a1 x1 + a0 = y1
anX2n+ an-1 x2n-1+ … + a1 x2 + a0 = y2
……
anXnn+ an-1 xnn-1+ … + a1 xn + a0 = yn
式中 x0,x1,…,xn是已知的传感器的输出值,
y0,y1,…,yn是被测参数,可以求出 n+1个待定系数 a0、
a1,…,an,从而构造成功一个可代替这种函数关系的可插值多项式 Pn( x ).
68
下面用 热敏电阻 测量温度的例子来说明这一过程,热敏电阻具有灵敏度高、价格低廉等特点,但是热敏电阻的阻值与温度之间的关系是 非线性 的,而且只能以 表 7-1的方式表示,现构造一个三阶多项式 P3(R)来逼近这种函数关系,
━━━━━━━━━━━━━━━━━━━━━━━━━
温度 t(℃ ) 阻值 R(kΩ) 温度 t(℃ ) 阻值 R(kΩ)
表 7-1 热敏电阻的温度 -电阻特性
10 8.0000 26 6.0606
11 7.8431 27 5.9701
12 7.6923 28 5.8823
13 7.5471 29 5.7970
14 7.4074 30 5.7142
15 7.2727 31 5.6337
16 7.1428 32 5.5554
17 7.0174 33 5.4793
18 6.8965 34 5.4053
19 6.7796 35 5.3332
20 6.6670 36 5.2630
21 6.5574 37 5.1946
22 6.4516 38 5.1281
23 6.3491 39 5.0631
24 6.2500 40 5.0000
25 6.1538
69
取三阶多项式为
t=P3(R)=a3R3+ a2R2+a1R+a0
并取 t=10,17,27,39这 4点为 插值点,便可以得到以下方程组:
8.00003 a3 + 8.00002 a2 + 8.0000 a1 + a0 = 10
7.01743 a3 + 7.01742 a2 + 7.0174 a1 + a0 = 17
5.97013 a3 + 5.97012 a2 + 5.9701 a1 + a0 = 27
5.06313 a3 + 5.06312 a2 + 5.0631 a1 + a0 = 39
70
解上述方程组,得
a3=-0.2346989 a2=6.120273
a1=-59.28043 a0=212.7118
因此,所求的逼近多项式为
t=-0.2346989R3+6.120273R2-59.28043R+212.7118
这就是用来标度变换的 插值多项式,将采样测得的电阻值 R代入上式,即可获得被测温度 t.
71
显然,插值点的选择对于逼近的精度有很大的影响,通常在函数 y=f(x)的曲线上曲率大的地方应适当加密插值点,
一般来说,增加插值点 和 多项式 的次数能提高逼近精度,
但同时会增加计算时间,而且在某些情况下反而可能会造成误差的摆动 ;另一方面,对于那些带 拐点 的函数,如果用一个多项式去逼近,将会产生较大的误差,
为了提高逼近精度,且不占用过多的机时,较好的方法是采用分段插值法,分段插值法是将被逼近的函数根据其变化情况分成几段,然后将每一段区间分别用直线或抛物线去逼近,分段插值的 分段点 的选取可按实际曲线的情况灵活决定,
既可以采用 等距分段法,又可采用 非等距分段法,
72
如上例 热敏电阻温度 t与 阻值 R的插值多项式,
其计算量较大,程序也较复杂,为使计算简单,提高实时性,可采用 分段线性插值公式 或称分段线性化的方法,即用多段折线代替曲线进行计算,
温度图 8-13 热敏电阻特性及分段线性化电阻
t
3
t
0
R 1 R 2
t
2
t
1
R 3R 0
L 1
L 0
L 2
图 5-5 热敏电阻特性及分段线性化
73
根据表 5-1中的数据制成图 5-5所示的热敏电阻特性及分段线性化,图中曲线为热敏电阻的 负温度 -电阻特性,折线 L0、
L1,L2代替或逼近曲线,当获取某个 采样值 R后,先判断 R的大小处于哪一折线段内,然后就可按相应段的线性化公式计算出标度变换值,其计算公式是:
- k0(R - R0) + t3 R0≤R≤R1
t = - k1(R - R1) + t2 R1≤R≤R2
- k2(R – R2) + t1 R2≤R≤R3
式中 k0,k1,k2分别为线段 L0,L1,L2的斜率,
同样,分段数越多,线性化精度越高,软件开销也相应增加,分段数应视具体情况和要求而定,当分段数多到线段缩成一个点时,实际上就是另一种方法 ——查表法,
74
5.4.4 查表法 (了解 )
所谓查表法就是把 事先计算或测得的数据按照一定顺序编制成表格,查表程序的任务就是 根据被测参数的值或者中间结果,查出最终所需要的结果,它是一种 非数值计算方法,利用这种方法可以完成数据的补偿、计算、转换等各种工作,
比如输入通道中对 热电偶特性 的处理,可以用 非线性插值法 进行标度变换,也可以采用精度更高效果更好的查表法进行标度变换 ——利用 热电偶的 mV-℃ 分度表,通过计算机的查表指令就能迅速便捷地由 电势 mV值查到相应的温度 ℃ 值 ;当然控制系统中还会有一些其它参数或表格也是如此,如对数表、三角函数表、模糊控制表等,
75
查表程序的繁简程度及查询时间的长短,除与表格的长短有关外,很重要的因素在于 表格的排列方法,
一般来讲,表格有两种排列方法:
(1)无序表格,即表格中的数据是任意排列的 ;
(2)有序表格,即表格中的数据按一定的顺序排列,表格的排列不同,查表的方法也不尽相同,
具体的查表方法有,顺序查表法,计算查表法,对分搜索法等,
76
1.顺序查表法顺序查表法是针对无序排列表格的一种方法,
其查表方法类似人工查表,因为无序表格中所有各项的排列均无一定的规律,所以只能按照顺序 从第一项开始逐项寻找,直到找到所要查找的关键字为止,顺序查表法虽然比较,笨,,但对于无序表格或较短表格而言,仍是一种 比较常用 的方法,
77
2,计算查表法在计算机数据处理中,一般使用的表格都是 线性表,它是若干个数据元素 X1,X2,…,Xn的集合,各数据元素在表中的排列方法及所占的存储器单元个数都是一样的,因此,要搜索的内容与表格的排列有一定的关系,只要根据所给的数据元素 Xi,
通过一定的计算,求出元素 Xi所对应的数值的地址,然后将该地址单元的内容取出即可,
这种 有序表格 要求各元素在表中的排列格式及所占用的空间必须一致,而且各元素是严格按顺序排列,其 关键在于找出一个计算表地址的公式,只要公式存在,查表的时间与表格的长度无关,正因为它对表格的要求比较严格,并非任何表格均可采用,通常它适用于某些 数值计算程序、功能键地址转移程序以及数码转换程序等,
78
3.对分查表法在前面介绍的两种查表方法中,顺序查表法速度比较慢,
计算查表法虽然速度很快,但对表格的要求比较挑剔,因而具有一定的局限性,在实际应用中,很多表格都比较长,且难以用计算查表法进行查找,但它们一般都满足 从大到小或从小到大的排列顺序,如热电偶 mV-℃ 分度表,流量测量中差压与流量对照表等等,对于这样的表格,通常采用快速而有效的对分查表法,
对分查表法 的具体做法是:先取数组的 中间值 D=n/2进行查找,与要搜索的 X值进行比较,若相等,则查到,对于 从小到大的顺序 来说,如果 X>n/2项,则下一次取 n/2~ n间 的中值,即
3n/4进行比较 ;若 X<n/2项,则取 0~ n/2的 中值,即 n/4进行比较,如此比较下去,则可逐次逼近要搜索的关键字,直到找到为止,
79
5.4.5 铂热电阻、铜热电阻和温度的关系
80
81
82
5.5 越限报警 处理 (了解)
为了实现安全生产,在计算机测控系统中,对于重要的 参数 和 部位,都设臵紧急状态 报警系统,以便及时提醒操作人员注意或采取应急措施,使生产继续进行或在确保人身设备安全的前提下终止生产,其方法就是把计算机的采集数据在进行 预处理、数字滤波、标度变换 之后,
与 该参数的设定上限、下限值进行比较,如果高于上限值或低于下限值则进行报警,否则就作为采样的正常值,
进行显示和控制,
83
5.5.1 越限报警程序在控制系统中,报警参数可以是被控参数、被测参数、输入偏差或控制量等,设需要判断的 报警参数为 X,
该参数的 上、下限约束值分别为 XH和 XL,则越限报警,
有如下几种形式:
上限报警若 XK> XH,则发出上限报警,否则继续执行原定操作,
下限报警若 XK< XL,则发出下限报警,否则继续执行原定操作,
84
具体设计报警程序时,为了避免测量值在极限值一点处 来回摆动造成频繁报警,一般应 在极限值附近设臵一个回差带,如图 6-6所示,
被测值( X )
越上限报警越下限报警复限复限时间( k T)
O
上限报警值 X H
下限报警值 X L
图 8-15 越 限报警范围
e
e
e
e
图 5-6 越限报警范围
85
图中 XH,XL是上、下限约束值,2e为回差带宽,当被测值超越 XH+e时,才算越过上限报警 值并设臵相应的越上限标志(上限标志位臵 1),同时输出越上限的 声、光报警 ;
当 被测值下降到 XH-e以下时,则复位上限,这时应撤消越上限标志 (上限标志位清 0)及相应的声光报警,
同理,当 被测值低于 XL-e点时,才算越过下限 并设臵相应的越下限标志(下限标志位臵 1),同时输出越下限的声、光报警 ;当 被测值上升到 XL+e以上时,则复位下限,这时应撤消越下限标志(下限标志位清 0)及相应的声光报警,
如此,回差值 e避免了测量值在极限值 XH或 XL来回摆动造成频繁报警,e值 的大小可根据现场具体的被测参数 设定,越限报警程序流程图如图 5-7所示,
86
开始取上限值越上限否?
取上限复位值复位上限否?
取下限值越下限否?
取下限复位值复位下限否?
返回输出声、光报警信号越上限标志置位 ( =1 )
输出声、光报警信号
Y
N
Y
N
Y
N
越上限标志清零 ( =0 )
撤消声、光报警信号越下限标志置位 ( =1 )
越下限标志清零 ( =0 )
撤消声、光报警信号
N
Y
图 8 -16 越 限报警程序流程图图 5-7 越限报警程序流程图
87
5.5.2 越限报警方式在计算机测控系统中常采用 声、光及语言 进行报警,
1,普通声光报警图 7 -9 普通声光报警接口电路
74 L S06
12 V+5V+
KA
D 0
D 1
D 2
D 4
D 3
D 5
CPU
D 6
D 7
图 5-8 普通声光报警接口电路
D2
88
普通光报警常采用 发光二极管 LED实现,声报警常用 蜂鸣器或电笛 实现,图 5-8是普通声光报警接口电路图,发光二极管的 驱动电流一般为 10~ 20mA,CPU的数据线需要外接驱动器驱动,可采用 OC门 驱动器,如 反相驱动器 74LS06、正相驱动器
74LS07等,也可采用一般的锁存器如 74LS273,74LS373、
74LS377,或带有锁存器的 I/O接口芯片,如 8155,8255A等,
图中数据线 D3~ D7接 5个 LED用于 5路信号的越限报警,D2与 1
个驱动蜂鸣器的继电器线圈相连,当某一路需要报警时,只要对该路及 D2输出 高电平,经 7406反相后,LED点亮的同时,继电器线圈吸合,蜂鸣器或电笛发出鸣叫,达到 声光报警效果,
89
2.模拟声光报警模拟声光报警最常用的方法是采用 模拟声音集成电路芯片,
如 KD-956X系列,是一种采用 CMOS工艺、软封装的声报警 IC芯片,能够产生表 5-2所列的声光报警效果,(玩具 )
表 5-2 KD-956× 系列报警芯片功能表型号 声光性能
KD-9561 机枪、警笛、救护车、消防车声
KD-9561B 嘟嘟 … 声
KD-9562 机枪、炮弹等 8种声
KD-9562B 光控报警声
KD-9562C 单键 8音
KD-9563 3声 2闪光
KD-9565 6声 5闪光
90
图 5-9(a)是 KD-9561芯片 的外形图,它内部具有振荡器、节拍器、音色发生器、地址计数器、控制和输出级等部分,它设有两个选声端 SEL1和 SEL2,改变这两端的电平,可以选择不同的内部程序,从而产生表 5-2所示的功能,图 5-9(b)是它的接线图,VDD接电源正端,VSS接电源负端,改变跨接在 OSCl和 OSC2之间的外接振荡电阻
R,可以调节模拟声音的放音节奏,R阻值越大,报警声音越急促,一般在 180kΩ ~ 290kΩ 的范围内选择,外接的小功率 三极管 9013是为了驱动扬声器,当系统检查到报警信号后,使三极管 9013导通,便发出 报警声音,
91
SEL 2
SEL 1
O SC2
O SC1
K D9 56 1
V DD
V SS
27 0K
8Ω
3 ~ 4.5 V
B
A
O SC2 O SC1
SEL 2 SEL 1 V DDV SS O UT
(a ) 芯片图 (b) 接线图图8-18 K D-9 56 1 芯片的外形和接线图
e bc
3109
e
b
c
R
图 5-9 KD-9561芯片的外行和接线图
KD-956X系列具有工作电压范围大、静态电流小、体积小、价格低、音响逼真、控制简便等优点,所以在 报警装臵和儿童玩具 中得到广泛的应用,
92
3.语音报警随着单片机技术,语音信号处理技术 和语音芯片制造技术的不断发展,增加语音功能已经成为智能仪表和计算机测控系统的设计方向,显然,用 计算机直接发出语音信息告诉操作人员发生了什么以及应该采取什么应急措施,远比声光报警传递了更为 明确 的信息 ;而且利用语音系统还能实现运行参数的报读以及运行状态的提醒,
语音系统是在计算机测控系统中扩展 语音录放芯片实现的,目前已经有大量语音录放芯片可供选择,有的芯片可以录放 10秒或 20秒信息,有的芯片可以录放几分钟长度的信息,
用户可以按照录放信息长短的需要选取适当的芯片,图 6-10
给出一个用 PIC单片机 与 集成语音芯片 ISD33240(经常见到)
组成的报警功能连接框图,
93
8 位点阵式串行 L C D 字符显示器
R C 振荡电路键 盘
3 × 4
话 筒扬声器
P I C 16 C 6 2
单片机
I SD 3 32 40
语音录放芯片图 8-19 语音芯片与单片机的连接框图图 5-10 语音芯片与单片机的连接框图
ISD33240是 ISD公司的 单片智能型语音录放芯片,可记录长达 4分钟的语音信息,它是通过 串行外围接口模式( SPI) 与单片机连接成主从方式工作的 (ISD1420)
94
而 PIC16C62单片机的同步串行口可以工作在 SPI模式,所以使用 PIC单片机 控制 ISD33240是最节省外围器件的一种硬件设计,在单片机的控制下,通过话筒把语音录入语音录放芯片,在测量控制过程中,根据测量值或工作状态由单片机选择适当的语音段通过扬声器发出声音报警信号,也可以通过 LCD显示器 提示状态信息,ISD33240
芯片 使用 3V单电源供电,录音时耗电 30mA,放音时耗电
25mA,录放状态一结束就进入节电模式,静态电流仅 1μA,
功耗极小,可反复录制 10万 次,信息可保存 10年 以上,可处理多达 100段 信息,
95
5.6 系统的运算字长选择 (掌握 )
5.6.1 关于量化误差在微机测控系统中,产生数值量化误差的原因 有三个方面:
1,被测参数经 A/D转换器 变成数字量时产生的 量化误差,
2,控制算法中的参数 ( 如 PID算式中的 KP,TI,TD等 ) 在运算之前预先臵入指定内存单元时因 字长限制而采取截尾或舍入 引起的误差以及运算过程中产生的误差,经过量化的数字信号送入计算机后,要按照一定的控制规律进行计算,由于计算机所用字长也是有限的,因此计算过程也产生量化误差,
96
3,计算机输出的数字控制量经 D/A转换器变成模拟量时产生的误差,由于计算所用的字长通常要比 D/A转换的字长要长,因此,
经过 D/A转换后,也存在在一定的量化效应,
综上所述,一个被测参数在整个采样、
转换处理及输出过程中要产生三次量化误差,
97
5.6.2 A/D,D/A及运算字长的选择(重点掌握)
在系统设计过程中,为减少量化误差,如果条件允许,
应尽可能加大字长,下面分别讨论在系统设计中如何进行 A/D转换器,D/A转换器和运算的字长选择,
( 一 ) A/D转换器的字长选择为了把量化误差限制在允许的范围内,应使 A/D转换器有足够的字长,对于 A/D转换器的 字长选择,主要应考虑模拟输入信号的动态范围 和 分辨率 两个因素,
98
)VV1(l o gN m i nm a x2
2.分辨率有些情况下,也将 A/D转换器的字长要求以分辨率形式给出,分辨率定义为:
12
1D
N
1.输入信号的动态范围 (书 P198 推导 )
如果 模拟输入信号最大值为 Vmax,最小值为 Vmin,A/D转换器的字长与转换当量( mv/bit)分别为 N,λ,A/D 转换器的字长为,
99
(二) D/A转换器的字长选择在微机测控系统中,D/A转换器的输出用以控制被控对象,并通过功率放大装臵推动执行机构,D/A
转换器的输出应满足执行机构动态范围的要求,一般情况下,D/A字长小于或等于 A/D字长即可,
如果执行机构的最大输入值为 umax,最小输入值为 umin,灵敏度为 β,得到 D/A转换器的字长为:
)β uu1(l o gN m i nm a x2
100
在微机测控系统中,常用的 A/D和 D/A转换器字长为 8位、
10位和 12位(偶数),按照上述公式估算出的字长取整后再选取三种之一,对于特殊的被控对象,可选择 14,16等更高分辨率的 A/D和 D/A转换器,
(三) 运算字长的选择在微机测控系统中,为了保证运算精度,几乎毫无例外的采用 16位以上 字长对 A/D转换器的采集数据进行运算处理,CPU的运算精度不仅仅取决于字长,而且还取决于采用定点数或浮点数,如果采用 浮点数,运算精度可以大大提高,