计算机控制技术-常用控制程序设计讲解学习_第1页
计算机控制技术-常用控制程序设计讲解学习_第2页
计算机控制技术-常用控制程序设计讲解学习_第3页
计算机控制技术-常用控制程序设计讲解学习_第4页
计算机控制技术-常用控制程序设计讲解学习_第5页
已阅读5页,还剩47页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

计算机控制技术-常用控制程序设计3.软件CODE SEGMENTASSUME CS:CODE;DS:CODESTART: PUSHDS ;保护DS MOVAX,SEGADINT ;设置A/D中断矢量 MOVDS,AX MOVDX,OFFSETADINT MOVAX,250AH INT21H POPDS ;恢复DS INAL,21H ;保存中断屏蔽字,开放IRQ2 MOVBP,AX ANDAL,0FBH OUT21H,AL MOVCH,5 ;每通道采样5次 MOVBX,7000H ;设采样数据存放段地址 MOVDS,BX MOVDX,220H ;设1#炉A/D通道地址 MOVCL,8 ;共采样8个通道 MOVBX,0 ;每通道数据起始存放地址 MOVDI,BX ;每通道数据存放地址 STI ;开中断L0: OUTDX,AL ;启动A/D转换 HLT ;等待A/D转换结束 JMPL0ADINT PROCNEAR ;A/D转换中断服务程序 INAL,DX ;读A/D值并存储 MOV[DI],AL ADDDI,5 ;调整DI,形成下一A/D值存放地址 INCDX ;形成下一A/D通道地址 DECCL ;8个通道未采完,转L1 JNZL1 DECCH ;每通道未采完5次,转L2 JNZL2 MOVAL,20H ;送“EOI”命令 OUT20H,AL MOVAX,BP ;恢复中断屏蔽字 OUT21H,AL MOVAX,4C00H ;返回DOS INT21HL1: MOVAL,20H OUT20H,AL STI ;开中断 IRET ;中断返回L2: MOVCL,8 ;采样8个通道 MOVDX,220H ;设1#炉A/D通道地址 MOVDI,BX ;形成下次采样存放首地址 INCDI ;形成下次采样存放地址 MOVBX,DI MOVAL,20H OUT20H,AL STI IRETADINT ENDPCODE ENDS ENDSTART例:试设计一个数据采集系统要求该系统能对八路模拟信号(变化频率≤100Hz)进行连续巡回检测,电压范围0V~10V,分辨率为5mV(0.05%),巡回检测周期允许为1s,但为了对采样的数据进行滤波处理,必须对每路信号进行多次采集。因此,A/D转换器选用转换速度较快的AD574。AD574的分辨率12位(0.025%),转换误差0.05%,转换时间25μs,输入电压的范围均能符合上述要求。多路模拟开关选用CD4051。CD4051导通电阻为200Ω,由于采样/保持器的输入电阻一般在10MΩ以上,所以输入电压在CD4051上的压降仅为0.002%左右,符合要求。CD4051的开关漏电流仅为0.08nA,当信号源内阻为10kΩ时,误差电压约为0.08μV,可以忽略不计。采样/保持器选用LF398,LF398采样速度快,保持性能好,非线性度为士0.01%,也符合上述要求。整个系统采用以8086CPU构成的微机系统来实施控制。八路自动巡回检测系统电路原理图3.2数字滤波程序

3.2.1概述由于工业控制对象的环境比较恶劣,干扰源比较多,如环境温度、电场及磁场等。因此,为了减少对采样值的干扰,提高系统的性能,一般先对采样值进行数字滤波,再进行数据处理和调节控制。所谓数字滤波,是通过一定的计算程序对采样信号进行平滑加工,提高其有用信号,消除或减少各种干扰和噪音,以保证计算机系统的可靠性。一、程序判断滤波程序判断滤波的方法,是根据生产经验,确定出两次采样输入信号可能出现的最大偏差△Y,若超过此偏差值,则表明该输入信号是干扰信号,应该去掉,若小于此偏差值,可将信号作为本次采样值。程序判断滤波既照顾了采样的实时性,又照顾了不采样时的连续性,是一种折中的方法,可用于变化较慢的参数,如温度、液位等,可克服由于随机干扰和误检测或者变送器不稳定而引起采样信号的严重失真。程序判断滤波分为限幅滤波和限速滤波两种。3.2.2数字滤波方法

2.限速滤波设顺序采样时刻t1、t2、t3所采集的参数分别为y1、y2、y3,则当|y2-y1|≤△Y,则y2输入计算机,|y2-y1|>△Y,则y2不采用,但仍保留,再继续采样一次,得y3。|y3-y2|≤△Y,则y3输入计算机,|y3-y2|>△Y,则取(y2+y3)/2输入计算机。1.

限幅滤波|Yn-Yn-1|≤△Y,则Yn=Yn,取本次采样值|Yn-Yn-1|>△Y,则Yn=Yn-1,舍本次采样值,取上次采样值二、中值滤波所谓中值滤波就是对某一个被测参数连续采样n次(一般n取奇数,数值不宜太大,取3~5即可),然后把n次的采样值从小到大(或从大到小)排队,再取中间值作为本次采样值。采用本程序滤波,对于去掉脉动性质的干扰比较有效,但对快速变化过程的参数(如流量)则不宜采用。三、算术平均滤波该方法是把n次采样值相加(通常流量取12次,压力取4次),然后取其算术平均值,即:本方法主要适用于对压力、流量等周期脉动值的采样,但对脉冲性干扰的平滑尚不理想。四、加权平均滤波将各采样值取不同的比例,然后再相加五、一阶滞后滤波为提高对于慢速随机变化过程的采样效果,可采用动态滤波方法,即一阶滞后滤波方法,其表达式为:六、复合滤波程序把两种以上的滤波方法结合起来使用。如把中值滤波程序和算数平均值滤波两种结合起来,把n个采样值首先按大小排序,然后分别去掉k个最大值和最小值,再把剩下的值加起来,最后取平均值。即1.滤波效果a.对于变化比较慢的参数如温度,可选用程序判断滤波以及一阶滞后滤波方法比较好;b.对于变化比较快的脉冲参数,如压力、流量等,则可选用算术平均和加权平均滤波方法;c.对于要求比较高的系统可选用复合滤波方法。d.在算术平均滤波和加权平均滤波中,其滤波效果与所选择的次数n有关,n越大,则效果越好,但花费时间也越长。2.滤波时间在考虑滤波效果的前提下,尽量采用执行时间比较短的程序,如果时间允许,则可采用更好的复合滤波程序。3.注意,并不是在任何一个系统中都需要进行数字滤波!七、各种滤波方法的比较3.2.3数字滤波程序设计用复合滤波方法将上节中1号退火炉的5个温度采样值(起始存放地址为7000H:0)进行滤波,并存入SAMP单元。程序设计1.将5个数据从小到大排序,2.去掉一个最大值和一个最小值,3.求剩下3个数的算术平均值。DOSSEG ;采用DOS简化段定义.MODEL MIDUM.DATASAMP DB 0 ;定义滤波结果单元CNT =5 ;共5个数.CODESTART:MOV AX,7000H ;指向采样数据段 MOV DS,AX MOV BX,CNT-1 ;置外循环次数LP1: MOV SI,0 ;指向采样数据首地址 MOV CX,BX ;置内循环次数LP2: MOV AL,[SI] ;相邻两数据比较 CMP AL,[SI+1] JB BIG ;大于转BIG XCHG AL,[SI+1] ;小于两数交换 XCHG AL,[SI]BIG: INC SI ;调整指针 LOOP LP2 ;本轮未比较完转LP2 DEC BX JNZ LP1 ;未全部比较完转LP1

MOV CX,CNT-2 ;去掉最大最小值并求和存AX LEA SI,1 MOV AX,0 MOV BH,0LP3: MOV BL,[SI] ADD AX,BX INC SI LOOP LP3 MOV CL,CNT-2 ;求平均值存CL DIV CL MOV CL,AL MOV AX,@DATA ;存入SAMP单元 MOV DS,AX MOV SAMP,CL MOV AX,4C00H ;程序结束返回DOS INT 21H END START3.3标度变换程序

被测量-------------------------0~5V-----------------00~FF温度、压力等传感器,变送器A/D把输入计算机的数字量转换成不同的量纲,以便操作人员进行监视和管理生产,就是所谓的标度变换3.3.1线性标度变换

如果被测参数的起点A0(输入信号为0)所对应的A/D转换值为0,即N0=0,这样式(3-6)化简为:【例】某热处理炉温度测量仪表的量程为200~800C,在某一时刻计算机采样并经数字滤波后的数字量为CDH,求此时的温度是多少?(设该仪表的量程是线性的)。解:A0=200C,Am=800C,Nx=CDH=(205)D,Nm=FFH=(255)D。所以此时的温度为标度变换程序DOSSEG ;采用DOS简化段定义.MODELSMALL.STACK100H.DATAAMDW800 ;测量仪表上限A0DW200 ;测量仪表下限NMDW255 ;A/D转换上限N0DW0 ;A/D转换下限NXDW205 ;实际A/D转换值MXDW? ;实际温度.CODESTART:MOVAX,@DATA MOVDS,AX MOVAX,AM ;计算Am-A0 SUBAX,A0 MOVBX,NX ;计算Nx-N0 SUBBX,N0 MULBX ;计算(Am-A0)*(Nx-N0) MOVBX,NM ;计算Nm-N0 SUBBX,N0

DIVBX ;计算(Am-A0)*(Nx-N0)/(Nm-N0) ADDAX,A0 ;计算(Am-A0)*(Nx-N0)/(Nm-N0)+A0 CALL HEX_BCD ;调二进制转十进制子程序 MOVMX,AX ;存标度变换结果 MOV AX,4C00H INT 21HHEX_BCDPROC NEAR MOVDX,AX SUBAX,AX MOVCX,16LP: ADDDX,DX ADCAL,AL DAA XCHGAH,AL ADCAL,AL DAA XCHGAH,AL LOOPLP RETHEX_BCDENDP ENDSTART3.3.2非线性参数标度变换

例:压差流量计,其流量与差压的公式为所得的流量测量的标度变换公式:对于流量测量仪表,一般下限均取零,此时G0=0,N0=0:整数开方的计算方法令被开方数N=n2,则被开方数的近似计算公式:3.3.3非线性补偿

1.线性插值法2.非线性补偿应用举例

线性化处理程序DATA SEGMENTK DW K1,K2,K3,K4 ;为保证精度,各段 斜率扩大10倍存储V DW V1,V2,V3,V4T DW TD,TC,TB,TASAMP DB ?TMP DW ?DATA ENDSCODE SEGMENT ASSUME CS:CODE,DS:DATASTART: MOV AX,DATA MOV DX,AX MOV AL,SAMP ;AX=Vi MOV AH,0 CMP AX,[V4] ;Vi≥V4转N5 JAE N5 CMP AX,[V3] ;Vi≥V3转N4 JAE N4 CMP AX,[V2] ;Vi≥V2转N3 JAE N3 CMP AX,[V1] ;Vi≥V1转N2 JAE N2N1: MOV CX,[K1] ;Vi<V1,计算K1Vi MUL CX MOV CX,10 ;计算结果缩小10倍 DIV CX JMP DONEN2: SUB AX,[V1] ;计算K2(Vi-V1)+tA MOV CX,[K2] MUL CX MOV CX,10 DIV CX ADD AX,[TA] JMP DONEN3: SUB AX,[V2] ;计算K3(Vi-V2)+tB MOV CX,[K3] MUL CX MOV CX,10 DIV CX ADD AX,[TB] JMP DONEN4: SUB AX,[V3] ;计算K4(Vi-V3)+tC MOV CX,[K4] MUL CX MOV CX,10 DIV CX ADD AX,[TC] JMP DONEN5: MOV AX,[TD] ;t=tDDONE: MOV [TMP],AX ;存线性化结果 MOV AX,4C00H INT 21HCODE ENDS END START3.4上、下限报警程序

报警程序的设计是比较简单的,它主要是采用比较法,把采样并经数字滤波以及标度变换后的被测参数值与给定的上下限值进行比较,如果大于上限或者小于下限,则输出报警信号或进行自动处理。举例:某温度巡回检测系统,共有4个回路,每个回路都有一个上限和下限报警值,分别为XMAXi和XMINi。采用顺序比较法,即首先取出1#炉的上限报警值XMAX1进行比较,如果X1≥XMAX1,则转1#炉上限报警,否则再检查X1是否小于下限报警值XMIN1,如果X1<XMIN1则转下限报警。1#炉上下限报警处理完毕或无报警,再转2#炉报警处理,其方法与1#炉相同,如此下去,直到把四个炉子全部处理完毕,返回主程序。报警程序流图(图3-9)DOSSEG ;采用DOS简化段定义.MODEL SMALL.STACK100H.DATASAMPDB 3,21,30,35 ;实际值ALARMDB 10,5,200,15,130,25,40,30 ;报警上、下限ALMMODDB 1,2,4,8,16,32,64,128 ;报警模型ALMBUFDB 0 ;报警缓冲区.CODESTART:MOVAX,@DATA MOVDS,AX MOVDX,203H ;8255A口方式0输出 MOVAL,80H OUTDX,AL MOVCX,4 ;4路报警 LEASI,SAMP LEADI,ALARMLP1:MOVAL,[SI] ;实际值与报警上、下限比较 CMPAL,[DI] JBLP2 CALL ALM ;大于上限,报警LP2: INCDI CMPAL,[DI] JALP3

CALL ALM ;小于下限,报警

LP3: INCDI

INCSI

LOOPLP1 ;四路报警未完继续

MOVAX,4C00H

INT21H

ALM:PROC NEAR ;上、下限报警处理

MOVAL,[DI+8] ;取报警模型

ORALMBUF,AL ;并入报警缓冲区

MOVAL,ALMBUF

NOTAL ;报警缓冲区模型求反

MOVDX,200H ;8255A口输出

OUTDX,AL

RET

ENDSTART

3.5 数码管显示程序

3.5.1LED数码管显示原理

七段数码显示数字、字母和符号(a对应最低位,g对应最高位)3.5.2静态显示

一、软件查表法用软件的显示不需译码器,而直接将数码管经锁存器和CPU相连。软件查表法显示程序P69二、硬件译码法由硬件译码器代替软件查表求出显示字模“56”的输出显示程序:MOV AL,56HMOV DX,200HOUT DX,AL 3.5.3动态显示

动态显示是利用扫描的方法不断对每一位LED数码管依次进行显示驱动。优点:硬件开销小、成本低、适合多位LED数码管显示。缺点:由于扫描占用了大量CPU的时间,使软件开销过大。一、共阴LED数码管显示

显示程序由拆字程序和循环显示程序组成。P70二、共阳LED数码管显示3.6 键处理程序

对非编码键盘主要是用软件扫描的办法进行编码。以8×8非编码键盘为例:键盘扫描程序的一般先行扫描,即依次使各行为低电平,然后分别读出列数据,并检查是否有键按下,则找出该键的位置并计算其编码,然后转入该功能键的入口程序地址。若无键按下,则进行下一步的扫描,直到八行全部检查完为止,若都无键按下,则返回。8255连接的键盘接口电路图中PB0~PB7为行扫描锁存器的输出,经八个反相器分别与X7~X0相连接。列数据的读入由PA0~PA7进行控制。X,Y的每一个交点设置一个键,其编号1、2……64。一、扫描键值的确定1、判断是否有键按下CPU依次使X0~X7为低电平,其代码分别为X0(01H),X1(02H),X2(04H),X3(08H),X4(10H),X5(20H),X6(40H),X7(80H),然后由三态门读出列线Y0~Y7的值,若无键按下为FFH,否则不等于FFH,由此可判断是否有键按下。2、求十进制键值分别设一个行值寄存器BL和列值寄存器BH,每扫完一行后,如果此行无键按下,则行寄存器加08,否则不加08而转到求列值。求列值的方法是将列值读数右移,每移一次列值寄存器加1,直到有键按下为止(低电平表示有键按下),最后把行值和列值相加并进行DAA修正,即可得到所求键值。二、功能键入口地址的确定对数字键就是要把该键值直接送到显示缓冲区进行显示。对功能键则是找到该键处理程序入口地址,并转去执行。64键全译码键扫描程序和功能键处理(功能键散转法)框图如图3-16所示,其程序程序P75。DATA SENMENTINR DB ? ;存放键值单元DATA ENDSCODE SEGMENT ASSUME CS:CODE;DS:DATASTART: MOV AX,DATA MOV DS,AX MOV AL,90H ;A口方式0输入,B口方式0输出 MOV DX,203H OUT DX,AL XOR BX,BX ;行键值BL=0,列键值BH=0 MOV AL,0FFH ;B口输出全“1”,各行全“0” MOV DX,201H OUT DX,AL MOV DX,200H ;A口输入全“1”,无键按下转DONE IN AL,DX CPM AL,0FFH JE DONE CALL DELAY ;A口输入非全“1”,有键按下调延时 MOV DX,200H ;A口输入全“1”,无键按下转DON

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论