计算机控制技术第5章课件.ppt
第第5章计算机控制系统程序设计章计算机控制系统程序设计1/82巡回检测程序巡回检测程序 越限报警程序越限报警程序 判断程序判断程序控制算法控制算法PID程序程序 数字滤波程序数字滤波程序 步进电机控制程序步进电机控制程序 线性化处理程序线性化处理程序 标度变换程序标度变换程序 5.15.1判断程序判断程序所谓算术判断程序,就是根据算术运算结果进行判断。所谓算术判断程序,就是根据算术运算结果进行判断。用于算术操作类的指令如:用于算术操作类的指令如:ADD,ADDC,INC,DA,SUBB,DEC,MUL,DIV,其中的加(其中的加(ADD,ADDC),减(),减(SUBB),乘(),乘(MUL)和除()和除(DIV)是四种基本的)是四种基本的算术运算指令。由运算结果判断程序流向的指令,如,算术运算指令。由运算结果判断程序流向的指令,如,JZ、JNZ、CJNZ、DJNZ指指令。将它们有机地结合起来就很容易地根据用户需要形成算术判断程序。令。将它们有机地结合起来就很容易地根据用户需要形成算术判断程序。 算术判断程序的两个基本要素:其一,是算术运算类指令;其二,是控制算术判断程序的两个基本要素:其一,是算术运算类指令;其二,是控制程序转移类指令。程序转移类指令。 2/82第第5章计算机控制系统程序设计章计算机控制系统程序设计算术判断程序算术判断程序 在计算机控制系统中,常常需要对检测的数据或状态进行分析,根据数值的在计算机控制系统中,常常需要对检测的数据或状态进行分析,根据数值的大小及状态进行判断,以确定程序的流向。为此目的而设计的程序即为判断程序。大小及状态进行判断,以确定程序的流向。为此目的而设计的程序即为判断程序。 5.1.5.1.1 1 算术判断程序算术判断程序例5-1 图5-1是用DAC0832作电压波形发生器的电路。写出产生三角波的程序清单。说明算术判断程序的设计。图5-1电压波形发生器电路3/82第第5章计算机控制系统程序设计章计算机控制系统程序设计 三角波程序清单: ORG 2000HSTAR: MOV DPTR,#0BFFFH ;选通道STARA: MOV R6,#00H ;置初值STARB: MOV A, R6 MOVX DPTR,A ;启动D/A转换 INC R6 ;数字加1 CJNE R6,#FFH,STARB ;数字FFH,循环STARC: DEC R6 ;数字到FFH后减1 MOV A,R6 MOVX DPTR,A ;启动D/A转换 CJNE R6,#00H,STARC ;数字00H,返回STRAC AJMP STARA4/82第第5章计算机控制系统程序设计章计算机控制系统程序设计5.1.5.1.1 1 算术判断程序算术判断程序在此程序中,将D/A转换的初值送入R6中,在第一个循环体中对R6作INC加1操作,然后,将R6中的数和常数0FFH进行比较,用CJNE R6,#FFH,STARB 指令,当(R6)FFH时,程序转向STARB继续循环;当(R6)=FFH时,三角波的左半部分已经形成,已处于三角波的顶点,于是就进入下一个循环中,对R6又作DEC减1操作,使D/A转换生成三角波的右半部分,用CJNE R6 ,#00H,STARC指令对R6中的数值与00H常数作比较,以确定程序的转向。三角波波形图如图5-2所示。图5-2三角波波形图5/82第第5章计算机控制系统程序设计章计算机控制系统程序设计5.1.5.1.1 1 算术判断程序算术判断程序例5-2 查找关键字程序入口条件:在外部RAM 3000H3020H的区域中检查关键字ABH。出口条件:找到在则将关键字送入累加器A,否则A清零。查找关键字程序流程图,如图5-3所示。 图5-3查找关键字程序流程图6/82第第5章计算机控制系统程序设计章计算机控制系统程序设计 程序清单: ORG 2000H MOV DPTR,#3000H MOV R7,#01H MOV R0,#0ABH LOOP: MOVX A,DPTR INC DPTR SUBB A,R0JZ LOOP1 DJNZ R7,LOOPCLR AAJMP HALT LOOP1: MOV A,R0 HALT: RET7/82第第5章计算机控制系统程序设计章计算机控制系统程序设计5.1.2 5.1.2 逻辑判断程序逻辑判断程序1.逻辑判断程序是根据逻辑关系来确定程序流向的程序。2.在MCS-51单片机控制系统中,用于逻辑操作类的指令如:ANL、ORL、XRL、RL、RLC、RR、RRC、CPL、CLR,它们与其它的控制转移类指令结合起来就可以构成逻辑判断程序。3.在逻辑判断程序中也包含两个基本要素:其一,是逻辑操作类的指令;其二,是控制程序转移类指令。 例5-3 设K1K4表示四个开关,当它们全都打开时,绿色指示灯亮,表明系统投入正常运行,否则,等待正确指令,电路如图5-4所示。 图5-4 逻辑判断电路8/82第第5章计算机控制系统程序设计章计算机控制系统程序设计8031P1.0P1.1P1.2P1.3P3.0+5V+5VK1K2K4K3 逻辑判断程序清单: ORG 2000H MAIN: MOV A, P1 ;读开关状态 ANL A, 0FH ;屏蔽P1.7P1.4 XRL A, #0FH ;判断K1K4是否全为主电平 CJNE A, #00H , MAIN ;K1K4没有全打开转向MAIN,等待 正确指令 SETB P3.0 ;置P3.0=1绿灯亮,系统投入运行 RET 9/82第第5章计算机控制系统程序设计章计算机控制系统程序设计 同理,可以用逻辑操作写出类似的其它形式的判断程序。下面是用布尔操作指令来实现的逻辑判断程序。例5-4 逻辑运算图如图5-5所示。设U、V分别为P1.1和P1.2的状态,W是定时器0的溢出标志TF0,X是 请求标志IE1,Y和Z是程序中设置的软件标志20H.0和20H.1处的布尔变量,Q为输出P3.0。试写出Q为不同值时的逻辑判断程序。10/82第第5章计算机控制系统程序设计章计算机控制系统程序设计图5-5 逻辑运算写出逻辑表达式:Q=U(V+W)+XY Z 程序清单: ORG 2000HMAIN: MOV C,V ORL C,W ;V+W或门 ANL C, U ;AND与们 MOV F0, C ;中间结果存入F0H中 MOV C, X ANL C, ORL C,F0 ;OR或 ORL C, MOV P3.0,C ;输出,P30输出 JC LOOP2 ;Q=1时转向LOOP2LOOP1: ;Q=0时的处理程序 AJMP ENDLOOP2: ;Q=1时的处理程序END: RET11/82第第5章计算机控制系统程序设计章计算机控制系统程序设计Y 标志判断程序标志判断程序 标志判断程序是根据标志单元或标志位的状态进行判断,以确定程序流向的程序。 标志可根据实际需要设定在存贮单元中,如MCS-51的片内RAM区007FH,或外部扩展存贮器中,也可设定在位地址空间007FH中。执行MCS-51的一些指令时也会产生标志,如Cy(PSW.7),OV(PSW.2),P(PSW.0)等,另外,还有中断请求标志和定时器溢出标志等等。 例5-5 设MCS-51系统采用6MHz晶体,用定时器0产生1ms定时,由P1.0输出2ms方波。 求定时器的初值:设定时器T0选择工作方式0,则: 213-X210-6=110-3 X=7692 化成十六进制为0F0CH 定时器工作方式控制字:TMOD=00H 允许定时器T0中断 12/82第第5章计算机控制系统程序设计章计算机控制系统程序设计13/82第第5章计算机控制系统程序设计章计算机控制系统程序设计程序清单: ORG 0000H AJMP MAIN ; 上电转主程序 ORG 000BH ;T0中断入口地址 AJMP INT ORG 2000H MAIN: CLR P1.0 MOV TMOD, #00H ;T0工作方式0 MOV SP,#60H MOV TL0, #0CH MOV TH0, #0F0H ;T0置初值 SETB TR0 ;启动T0 SETB ET0 ;允许T0中断 SETB EA ;CPU开中断 RET 14/82第第5章计算机控制系统程序设计章计算机控制系统程序设计中断服务子程序: ORG 2400HINT:MOV TL0,#0CH ;用软件重新装载TH0和TL0 MOV TH0,#0F0H CPL P1.0 ;P1.0位取反 RETI图5-6定时器T0产生方波P1.0输出的波形如图5-6所示。15/82第第5章计算机控制系统程序设计章计算机控制系统程序设计5.2 5.2 巡回检测程序巡回检测程序巡回检测中的模拟量输入通道巡回检测中的模拟量输入通道生 产 过 程接口S/HA/D多路开关变送器MCS-51IIIIII图5-7 巡回检测中的模拟量输入通道它由变送器()、转换器()和I/O接口()三部分组成。其基本功能是对检测点进行数据采集、放大、并转换为数字量。巡回检测中的模拟量输入通道如图5-7所示。16/82第第5章计算机控制系统程序设计章计算机控制系统程序设计5.2.2采样定理与采样周期的选取采样定理与采样周期的选取1.采样定理 在计算机控制系统中,只能每隔一定的时间间隔T采入模拟信号的瞬时值,这一过程即是采样,时间间隔T称之为采样周期。采样过程是由采样开关来完成的,从而使原来在时间上连续的信号X(t)变成时间上的离散的采样信号X*(t)。 通常采样持续时间非常短暂,可以将采样信号X*(t)理想地看作是有强度,无宽度的单位脉冲序列: 而(t)是由X(t)调幅的结果,如图5-8所示此时,脉冲强度由X(kt)决定,所以采样函数就为:17/82第第5章计算机控制系统程序设计章计算机控制系统程序设计因为 ty,则y(k)y(k1),取上次采样值。 式中,y(k)为第k次采样值;y(k1)为第(k1)次采样值;y为相邻两次采样值所允许的最大偏差,其大小决于对采样周期T及y值变化的动态响应。 64/82第第5章计算机控制系统程序设计章计算机控制系统程序设计2限速滤波限速滤波的算法是根据以下原则取顺序采样时刻t1、t2、t3所采集的参数y(1)、y(2)、y(3)。(1) 若|y(2)-y(1)|y,则取y(2)。(2) 若|y(2)-y(1)|y,则不采用y(2),将其保留,继续采样,取得y(3)。(3) 若|y(3)-y(2)|y,则取y(3)。(4) 若|y(3)-y(2)|y,则取y(3)+y(2)/2。 图5-29 限速滤波的程序流程图65/82第第5章计算机控制系统程序设计章计算机控制系统程序设计5.6.2中值滤波中值滤波的算法为:yy2 (y1y2y3)。所谓中值滤波就是对某一个被测参数连续采样几次,通常取奇数,如n3或5,从小到大或者从大到小排队,选择中间值作为本次采样值。程序清单: ORG 2000H INTER: MOV R2,#04H;置大循环次数 SORT: MOV A,R2 ;小循环次数(R3) MOV R3,A MOV R0,#SAMP;采样数据首地址(R0 ) LOOP: MOV A,R0;比较 INC R0 66/82第第5章计算机控制系统程序设计章计算机控制系统程序设计 MOV R1,A CLR C SUBB A,R0 MOV A,R1 JC DONE MOV A,R0 DEC R0 XCH A,R0 INC R0 MOV R0,A DONE: DINZ R3,LOOP ;R30,小循环继续进行 DJNZ R2,SORT ;R20,大循环继续进行 INC R0 MOV A,R0 RET SAMP: EQU 30H图5-30 中值滤波程序流程图 67/82第第5章计算机控制系统程序设计章计算机控制系统程序设计5.6.3算术平均值滤波算术平均值滤波的算法为:式中 第k次N个采样值的算术平均值;x(i) 第i次采样值;N 采样次数。 算术平均值滤波的实质是把一个采样周期内N次采样值相加,然后再除以采样次数N,便得到该采样周期的采样值.5.6.4加权平均值滤波 算术平均值滤波中,对于N次以内所有的采样值来说,所占的比例是相同的亦即取每次采样值的/N。但有时为了提高滤波效果,将各采样取不同的比例,然后再相加,此方法称为加权平均法。)(1)(1ixNkyNi68/82第第5章计算机控制系统程序设计章计算机控制系统程序设计一个n项加权平均式为:式中C0、C1、Cn-1均为常数项,应满足下列关系: 式中C0、C1、Cn-1为各次采样值的系数,它体现了各次采样值在平均值中所占的比例,可根据具体情况决定。一般愈新采样值,取的比例愈大,以迅速反映系统当前所受干扰的程度,适用于系统纯延迟时间常数比较大而采样周期比较短的过程。10)(niinixCky69/82第第5章计算机控制系统程序设计章计算机控制系统程序设计5.6.5 RC低通数字滤波图5-31 RC低通滤波器由图5-31,写出低通滤波器的传递函数:其中,为RC滤波器的时间常数,=RC。由公式可以看出,RC低通滤波器实际上是一个一阶滞后滤波系统。70/82第第5章计算机控制系统程序设计章计算机控制系统程序设计将式(5-10)离散化,可得:对于一个确定的采样系统而言,T为已知量,所以由可得当 1时,ln(1-)-1= 假入更改一种形式:即可构成高通滤波形式。)() 1()1 ()(kxkyky)(kx)(ky) 1( kyTe1 第k次采样值; 第k次滤波结果输出值; 第k-1次滤波结果输出值;T 采样周期。 滤波平滑系数, 11)(kykxky71/82第第5章计算机控制系统程序设计章计算机控制系统程序设计5.6.6 复合数字滤波 为了进一步提高滤波效果,有时可以把两种或两种以上不同滤波功能的数字滤波器结合起来,组成复合数字滤波器,或称多级数字滤波器。这种滤波方法的原理可由下式表示。此外,也可采用双重滤波的方法,即把采样值经过低通滤波后,再经过一次高通滤波,这样,结果更接近理想值,这实际上相当于多级RC滤波器。对于多级数字滤波器,根据可知:若x(1)x(2)x(N),3N14,则 10)(212) 1()3()2()(niixNNNxxxky)()1()1()(kxkyky)() 1()(kBxkAyky72/82第第5章计算机控制系统程序设计章计算机控制系统程序设计再进行一次滤波,则 )() 1()(kBykAzkz)(kz) 1( kz)() 1() 1()(2kxBkABykAzkz) 1()2() 1(kBykAzkz)()2() 1(2)(22kxBkzAkAzkz式中 数字滤波器的输出值; 上一次数字滤波器的输出值。将y(k)代入z(k),得 将上式移项,并将k改为k-1,则 将By(k-1)代入,得 此式即为两级数字滤波器公式。据此可以写出相应的多级数字滤波器程序。 73/82第第5章计算机控制系统程序设计章计算机控制系统程序设计5. 7标度变换程序 所谓标度变换就是把被测参数经过变送器转换成统一的电压信号(如05v),由模/数转换器转换成数字量,例如8位A/D时为00HFFH,12位A/D时为000H0FFFH,再把数字量转换为相应的数值和单位,以便于监视和管理。5.7.1线性参数标度变换程序线性标度变换是指被测参数值与A/D转换结果为线性关系。其算法为:0000)(ANNNNAAAmxmX74/82第第5章计算机控制系统程序设计章计算机控制系统程序设计其中,Ax:实际测量值(工程量);Am:一次测量仪表的上限;A0:一次测量仪表的下限;一次仪表如与介质直接接触的测量仪表(4-20mA)。例如,流量传感器为一次仪表,流量显示为二次仪表。Nx: 测量值所对应的数字量;N0: 仪表下限所对应的数字量;Nm:仪表上限所对应的数字量。Am、A0、Nm、N0这些参数对某一固定被测参数来说都是常数,不同参数有着不同的值,在程序设计时,为了简便,一般把一次仪表的下限A0对应的数字量置为零,即N00。于是算法就变成:00)(ANNAAAmxmX75/82第第5章计算机控制系统程序设计章计算机控制系统程序设计考虑到在很多测量系统中,仪表下限值A00,则N0=0,上面的算法就进一步简化为:mxmXNNAA例5-9 某热处理炉温度测量仪表的量程是200800,在某一时刻,经计算机采样并滤波后的数字量是CDH,求此时的温度值是多少?(设仪表量程是线性关系)解:A0=200 Am=800 N0=0, Nm=FFH,Nx=CDH=(205)10 682 200205/255(800200)(00ANNAAAmxmX76/82第第5章计算机控制系统程序设计章计算机控制系统程序设计图5-32线性参数标度变换程序流程图为了程序设计方便,将算法写成如下形式:11bNaAXX(常数)b1=A0 (常数) 开 始 计 算 a1 Nx Ax BCD 码 返 回 计 算 Ax = a1 Nx + b1 5.7.2非线性参数标度变换程序一般而言,非线性参数的变化规律各不相同,故其标度变化公式也需根据各自的具体情况建立。 例如,在流量测量中流量与差压间的关系式为 可见,流体的流量与被测流体流过节流装置前后产生的压力差的平方根成正比,于是得到测量流量时的标度变换公式 :PKQx0 xm00m0()NNQQQQNN77/82第第5章计算机控制系统程序设计章计算机控制系统程序设计5.8 线性化处理程序5.8.1线性插值线性插值法的原理如图5-33所示。已知函数 在点x0、x1上的值为y0、y1,要求多项式 使 其几何意义是求通过A(x0,y0)和B(x1、y1)两点的一条直线,其方程为:)(xfy ( )yp x1100)()(yxPyxP,)()()()(001010 xPxxxxyyyy图5-33线性插值法原理图p(x)是x的一次函数,故称为一次插值多项式,这种插值方法叫线性插值。式(5-32)中, 均为常数,只要测得x值,就可求出y值。00101,)()(yxxyy78/82第第5章计算机控制系统程序设计章计算机控制系统程序设计5.8.2抛物线插值 抛物线插值也叫二次插值。在线性插值中用A(x0,y0)和B(x1,y1)两点来建立y与x的线性关系,如果再利用一个点C(x2,y2)来求y=f(x)的近似值,其几何意义是通过三点作一曲线,当它们不在一直线上时,通过三点的曲线即是抛物线,故称抛物线插值。抛物线插值公式为:)()()()()()()()()(101201010202001010 xxxxxxxxyyxxyyxxxxyyyy因为(x0,y0)、(x1,y1)、(x2,y2)均为常数,式(5-33)可化为:)()()()(12100102010 xxKKxxyxxxxKxxKyy79/82第第5章计算机控制系统程序设计章计算机控制系统程序设计5.8.3线性插值法的应用举例 用分段线性插值法对流量进行线性化处理。图5-34是某流量测量系统流量与差压的实测变化曲线。由图可知,流量差压变化曲线是非线性,将上图曲线采用分段线性插值法作线性化处理。 选取各插值基点,将曲线分段。图5-34流量差压变化曲线80/82第第5章计算机控制系统程序设计章计算机控制系统程序设计插值基点的选取方法有两种: 第一种,等距分段法。指沿横坐标等距离的选取插值基点。优点是间距为常数,计算方便,对于函数的曲率和斜率变化较大时,会产生一定的误差,可通过缩小间距来减小误差。 第二种,非等距分段法:指基点的分段不是等距的,而是根据函数曲线形状的变化率的大小来修正插值基点的距离。当曲率变化大时,插值间距取小一点,也可使常用刻度范围插值距离小一点,不常用刻度区域的插值距离大一点,只是非等距插值点的选取比较麻烦。图5-35用分段线性插值法求解流量图81/82第第5章计算机控制系统程序设计章计算机控制系统程序设计图5-36用插值法计算流量程序流程图82/82第第5章计算机控制系统程序设计章计算机控制系统程序设计确定出入口条件:设检测值差压 经过数字滤波后存放在以DATA为地址的存储单元中,系数 k1,k2 ,k3 和各插值基点 以及各点所对应的流量值 Q1,Q2 ,Q3 分别存放在程序存储器EPROM中,入口地址如表5-7所示。p321,PPP表5-7入口地址表出口地址:计算结果存入R4R5中。