1、第4章 常用控制程序设计,4.1 巡回检测程序设计 4.2 上下限报警处理程序设计 4.3 定时程序设计 4.4 电机控制程序设计 4.5 步进电机控制,4.1 巡回检测程序设计,4.1.1 概述 4.1.2 巡回检测举例,返回本章首页,4.1.1 概述,所谓的巡回检测就是对生产过程中的各个参数按照一定的周期进行检查和测量,检测的数据通过计算机处理后可以进行显示、打印和报警等操作。巡回检测程序主要由以下几个方面构成:1. 采样周期T的确定 2. 采样开关通道号的控制 3. A/D转换 4. 数据处理,返回本节,6.2.2 巡回检测举例,1. 利用8位A/D转换芯片(ADC0809) 2. 采用
2、12位A/D转换芯片(AD574A),1. 利用8位A/D转换芯片(ADC0806),图6-8 炉温巡回检测电路原理图,系统的硬件电路介绍:,(1)测量元件和变送器 (2)A/D转换电路 (3)二分频电路,本程序由系统初始化程序和中断程序组成。初始化程序完成中断向量和定时器初值的设定;中断程序完成数据采样工作,实现对8个通道的巡回检测。初始化程序功能:设置定时器0、外部中断0和外部中断1的中断程序入口;设置定时器0的工作方式为方式1,定时时间为100ms;设置计数单元(30H)初值。初始化程序流程框图如图6-6所示。,图6-6 初始化程序流程图,初始化程序清单:,ORG0000H AJMPST
3、ART ORG0003H AJMPSAMPLE;转采样中断程序 ORG000BH AJMPTIME0;转8秒定时中断程序ORG0013HAJMPEOC;转EOC中断处理程序START:MOVTMOD,#01H;置定时器0为工作方式1 MOVTH0,#3CH,MOV TL0,#0B0H;定时器初值设定 MOV30H,#00H;置计数初值SETBIT0;中断请求信号为脉冲方式 SETBIT1;中断请求信号为脉冲方式 SETBEX0;外部中断0中断允许SETBET0;定时器0中断允许 SETBEA;开中断SETBTR0;启动定时器HERE:AJMPHERE;等待中断,定时器中断程序流程框图如图6-1
4、0所示。,图6-10 定时器中断程序流程框图,定时器中断程序程序清单:,TIME0:CLREA;关中断INC30H MOVA,30H XRLA,#50H;判断是否到8秒JZS_8;8秒定时到,转至S_8AJMPRECOUN;未到8秒,继续计时S_8:SETBP3.2;触发外部中断0NOP CLRP3.2 NOPRECOUN:MOVTH0,#3CH MOVTL0,#0B0H;设定定时器初值SETBEA;开中断RETI;中断返回,数据采样程序流程框图如图6-11所示。,数据采样程序程序清单:,SAMPLE:SETB00H;设置标志位 MOVDPTR,#0F00H;设置通道初值 MOVR6,#08H
5、;设置通道数 MOVR7,#05H;设置采样次数 MOVR0,#40H;设置数据区首址 TRAN_S:MOVXDPTR,A;启动A/D转换程序流程图WAIT:JB00H,WAIT;标志位为1等待A/D转换完成中断,SETB00H;置标志位INCDPTR;通道号加1INCR0INCR0INCR0INCR0INCR0;45H为下一通道采样数据存放首址DJNZR6,#TRAN_S;8个通道采样未完,继续采样MOVDPTR,#0F00H;8个通道采样结束,重置通道初值INCR0;修改采样数据存放地址DJNZR7,TRAN_S;未完成5次采样,继续;数据处理程序.RETI,2. 采用12位A/D转换芯片
6、(AD574A),图6-14 AD574A和8031的硬件接口电路图,图6-15 AD574A A/D转换程序流程框图,D574A A/D转换程序清单:,ORG0000HAJMPSTARTORG0003HAJMPSAMPLE;转至数据采样程序START:MOVDPTR,#0000H;建立AD574A的地址MOVR0,#40H;设置数据存储初址SETBEX0;允许外部中断0SETBIT0;设置外部中断0请求信号方式为脉冲方式SETBEA;中断允许MOVXDPTR,A;启动A/D转换HERE:AJMPHERE;等待中断,中断服务程序清单:,SAMPLE:CLREA;关中断MOVDPTR,#0002
7、H MOVXA,DPTR;读A/D转换数据的高8位MOVR0,A;保存数据INCR0INCDPTR MOVXA,DPTR;读A/D转换数据的低4位SETBEA;开中断RETI,返回本节,6.2 上下限报警处理程序设计,报警程序主要有以下几个步骤组成:(1)采样被测参数。(2)比较采样值和给定的上下限。(3)根据比较结果执行相应的处理程序。,返回本章首页,例6-3设计一简单的单字节上下限报警程序,当采样值超出上、下限时,分别执行相应的报警处理程序。设上限报警值存放在Amax单元,下限报警值存放在Amin单元,采样值存放在SAMP单元。简单上下限报警程序程序清单如下:,.CLRC;清进位标志位MO
8、VA,Amax;读上限报警值SUBBA,SAMP;判断是否超过上限报警值 JCUPPER;超过上限,转报警处理程序MOVA,Amin;读下限报警值SUBBA,SAMP;判断是否超过下限报警值JNCLOWER;超过下限,转报警处理程序UPPER:超上限处理程序。LOWER:超下限处理程序。,例6-4 设计一报警处理程序。只有采样值连续3次异常时,系统才进行报警处理。报警程序流程框图如图6-23所示。,图6-23 报警程序流程框图,报警程序清单:,MOVNUM,#03HCHECK:CLRC;清进位标志位MOVA,Amax;读上限报警值SUBBA,SAMP;判断是否超过上限报警值 JCABNORMA
9、L;超过上限,转ABNORMALMOVA,Amin;读下限报警值SUBBA,SAMP;判断是否超过下限报警值JNCABNORMAL;超过下限,转ABNORMAL,CLRFLAG;采样正常,清采样异常标志位AJMPRETUABNORMAL:JBFLAG,ABNOR_L;上次采样异常,转ABNOR_L MOVNUM,#03H;上次采样正常,重置允许连续异常次数SETBFLAG;置位采样异常标志位AJMPRETU ABNOR_L:MOVA,NUM;读允许连续采样异常次数JZALARM;允许采样异常次数=0,执行报警处理程序DECNUM;允许采样异常次数0,允许采样异常次数减1SETBFLAG;置位采
10、样异常标志位AJMPRETUALARM1:.;报警处理程序.RETU:RET,返回本节,4.3 定时程序设计,4.3.1 软件定时程序 4.3.2 硬件定时程序,返回本章首页,6.7.1 软件定时程序,双循环定时程序流程如图6-33所示。,如取N=166(0A6H),上述简单软件定时程序的定时时间就是1ms,如果需要250ms的定时时间,则所需的外循环的次数为250(0FAH)。程序如下:DELAY250:MOVR6,#0FAH;置外循环次数DELAY1:MOVR7, #0A6H;置内循环次数NOP;空操作指令 D1:NOP DJNZR7,D1;内循环未结束,继续DJNZR6,DELAY1;外
11、循环未结束,继续RET,返回本节,6.7.2 硬件定时程序,51系列单片机内部有两个16位的可编程定时器T0和T1,分别由TH0、TL0和TH1、TL1两个8位计数器构成。T0和T1的定时功能是通过对单片机内部计数脉冲的计数实现的。因为每个机器周期产生一个计数脉冲,因此根据单片机的晶振频率就可以计算出定时器的计数频率。这样,如果确定了计数值,就能计算出定时时间,而知道了定时时间也可计算出计数器的预置值。定时器控制寄存器(TCON)和工作方式控制寄存器(TMOD)分别控制定时器的运行和工作方式。,1. 定时器简介TMOD寄存器是控制定时器工作方式的8位专用寄存器。寄存器的高4位定义T1,低4位定
12、T0。各位的具体定义如表6-3所示。,2. 硬件定时程序设计例6-5设单片机的晶振频率为6 MHz,利用T0产生周期为500s的等宽正方波脉冲,通过P1.7端口输出。(1)选择工作方式 (2)计算预置计数值 (3)TMOD寄存器初始化 (4)程序设计,程序设计,主程序:MOVTMOD,#02H;T0工作方式2MOVTH0,#83H;设置计数初始值MOVTL0,#83H;保存计数初始值SETBEA;开中断SETBET0;T0中断允许 SETBTR0;启动定时 WAIT:AJMPWAIT;等待中断中断服务程序:CPLP1.7;方波输出RETI;中断返回,例6-6设计一个能够自动记录秒、分和小时的计
13、时时钟。程序设计分为初始化和中断服务程序两部分。初始化程序清单: ORG0000HAJMPMAINORG0003HAJMPINT0;设置外部中断0中断入口地址ORG000BH,AJMPTIME0;设置T0中断入口地址ORG001BHAJMPCOUN1;设置T1中断入口地址MAIN:MOVSEC,#00H;秒存储单元清0MOVMIN,#00H;分存储单元清0MOVHUR,#00H;小时存储单元清0MOVTMOD,#41H;T1为计数方式,定时器0工作方式1 MOVTH0,#17H;设置T0的计数初值MOVTL0,#0B6HMOVTH1,#0FFH;设置T1的计数初值MOVTL1,#0F7H,SE
14、TBEA;开中断SETBIT0;外中断0中断请求信号为脉冲方式SETBET1;T1中断允许SETBET0;T0中断允许SETBEX0;外中断0中断允许SETBTR0;启动定时器0SETBTR1;启动计数器1HERE:AJMPHERE;等待中断,中断服务程序分以下几部分。,定时器T0定时中断程序清单:TIME0:CLREA;关中断SETBP3.5;发计数脉冲NOPCLRP3.5NOP MOVTH0,#17H;加载T0计数值MOVTL0,#0B6HSETBEA;开中断RETI;中断返回,计数器T1计数中断程序清单:,COUN1:CLREA;关中断SETBP3.2;发送脉冲,通知1秒计时到NOPCL
15、RP3.2NOPMOVTH1,#0FFH;加载T1计数值MOVTL1,#0F7HSETBEARETI,外部中断0中断程序流程如图6-34所示。,外部中断0中断程序清单:,INT0:CLREA;关中断 INCSEC;秒存储单元加1MOVA,SECCJNEA,#3CH,S_SHOW;判断是否到60秒INCMIN;60秒到,分存储单元加1MOVSEC,#00H;秒存储单元清0S_SHOW:ACALLHTOBCD;调用16进制数转化为BCD码子程序 ACALLDISP;调用显示子程序,显示秒 MOVA,MINCJNEA,#3CH,M_SHOW;判断是否到60分,INCHUR;60分到,小时存储单元加1
16、MOVMIN,#00H;小时存储单元清0M_SHOW:ACALLHTOBCD;调用16进制数转化为BCD码子程序ACALLDISP;调用显示子程序,显示分MOVA,HURCJNEA,#18H,H_SHOW;判断是否到24小时MOVHUR,#00H;24小时到,小时存储单元清0H_SHOW:ACALLHTOBCD;调用16进制数转化为BCD码子程序ACALLDISP;调用显示子程序,显示小时SETBEA;开中断RETI;中断返回,返回本节,6.10 电机控制程序设计,4.4.1 中小功率直流电机调速原理 4.4.2 开环脉冲调速系统 4.4.3 带方向控制的脉冲调速系统,返回本章首页,6.10.
17、1 中小功率直流电机调速原理,设电机在恒定电压下的转速为Vmax,控制信号的占空比D= t /(其中t代表通电时间,代表脉冲周期),则电机的的转速和控制信号的关系可用如下公式表示: V=VmaxD (6-10),返回本节,6.10.2 开环脉冲调速系统,1. 开环脉冲调速系统原理开环脉冲调速系统的原理如图6-40所示。,图6-41是一个单片机控制的开环脉冲调速系统示意图。,2. 开环脉冲调速系统程序设计脉冲宽度的调制可通过软件延时法实现。设定图6-41中8155的地址为7F00H,PA、PC口为基本输入口,PB口为基本输出口。则调速系统的软件延时法程序流程图如图6-42所示。,软件延时法的程序
18、清单:,MOVDPTR,#7F00H;设置8155命令寄存器地址MOVA,#06H MOVXDPTR,A;设置PA、PB、PC口的工作方式MOVDPTR,#7F03H;指向PC口CHECK:MOVXA,DPTR;检测是否启动电机JNBACC.5,CHECK;继续检测TURN:MOVDPTR,#7F01H;设置PA口地址MOVXA,DPTR;读开关数N,MOVB,A;保存NINCDPTR;指向PB口MOVA,#80H;启动电机MOVA,B;延时N个单位时间 MOVR7,ADELA1:ACALLDELAY DJNZR7,DELA1MOVA,#00H;输出停止脉冲,MOVXDPTR,A MOVA,B
19、 CPLA;求MOVR7,A;延时个单位时间DELA2:ACALLDELAYDJNZR7,DELA2INCDPTR;指向PC口 MOVXA,DPTR;检测是否停止运行JBACC.5 TURN;继续运行,转TURNOFF:RET;停止运行,返回本节,6.10.3 带方向控制的脉冲调速系统,在很多场合下,不仅要求电机能够正向旋转,而且还能反向旋转。电机旋转方向控制原理图如图6-43所示。,由图6-43可以看出,当开关S1和S4闭合时,电机正向旋转;开关S2和S3闭合时,电机反向旋转;开关S3和S4闭合时,电机绕组被短路处于刹车状态;所有开关都打开时,电机处于自由滑行状态。电机的工作状态真值表如表6
20、-6所示。,表6-6 电机工作状态真值表,双向电机控制系统原理图如图6-44所示。,双向电机的脉冲调速控制,首先要判断电机的旋转方向,根据要求的方向输出相应的控制代码,然后再进行脉冲宽度调速控制。控制程序流程图如图6-45所示。,返回本节,6.11 步进电机控制,6.11.1 步进电机的工作原理 6.11.2 步进电机控制系统 6.11.3 步进电机控制程序的设计,返回本章首页,6.11.1 步进电机的工作原理,步进电机的结构原理图如图所示。,返回本节,定子,转子,一、步进电机构成:步进电机是一种将电脉冲信号转换成机械角位移的特殊电机。步进电机的转子上无绕组且制有若干个均匀分布的齿,在定子上有
21、励磁绕组。两种状态:当有脉冲输入时,转子就转过一个固定的角度,其角位移量与输入脉冲个数严格地成正比,在时间上也与输入脉冲同步。 当无脉冲时,在绕组电源的激励下,气隙磁场能使转子保持原有位置不变而处于定位状态。,步进电机工作原理尽管步进电机种类很多,其基本原理实质都是一致的。现以三相反应式步进电机为例,说明其工作原理:在步进电机定子上有三对磁极,上面绕有励磁绕组,分别称为A相、B相和C相。转子上带有等距小齿(图中有四个齿),如果先将A相加上电脉冲,则有:,A,A,B,B,C,C,1,2,3,4,(a) A相通电,A,A,B,B,C,C,1,2,3,4,如果将B相加上电脉冲,则有:,(b)B相通电
22、,转子逆时针旋转,30,。,A,A,B,B,C,C,1,2,3,4,(a) A相通电,如果再将C相加上电脉冲,则有:,A,A,B,B,C,C,1,2,3,4,(c)C相通电,转子逆时针旋转,30,。,A,A,B,B,C,C,1,2,3,4,(b)B相通电,转子逆时针旋转,30,。,A,A,B,B,C,C,1,2,3,4,(a) A相通电,这种三相励磁绕组依次单独通电,切换三次为一个循环,称为三相单三拍通电方式。由于每次只有一相磁极通电,易在平衡位置附近发生振荡,而且在各相磁极通电切换的瞬间,电机失去自锁力,容易造成失步。为改善其工作性能,可采用三相六拍的通电方式,其通电方式及通电顺序为AABB
23、BCCCAA或者AACCCBBBAA 这种通电方式当由A相通电转为AB相共同通电时,转子磁极将同时受到A相与B相的吸引,它就停在AB两相磁极中间,这时它转过的角度是15。这种通电方式在切换时,始终有一相磁极不断电,故而工作较稳定,且在相同频率下,每相导通的时间增加,平均电流增加,从而可以提高电磁转矩、启动频率及连续运行频率等特性。显然,通入脉冲频率越高,电机的转速就越高,且电机每步转过的角度越小,所能达到的位置精度也越高。,。,(三)步进电机的主要特性参数()步距角 步进电机每接受一个脉冲,转子所转过的角度,称为步距角。它是决定开环伺 服系统脉冲当量的重要参数。360 mkz 式中 步距角;
24、m 定子励磁绕组的相数; z 转子齿数; k 通电方式系数,单拍时,k=1;双拍时,k2。,。,2)最大启动转矩 步进电机在启动时能带动的最大负载转矩,如步进电机的负载转矩超过此值,则电机不能启动。其值越大, 则承载能力越强。(3)起动频率 步进电机在启动时,从静止状态突然启动而不丢步的最高频率。它与负载惯量有关,一般地它随负载的增加而减小。,(4)连续运行最高频率 步进电机启动之后,控制脉冲的频率可进一步提高。能够跟上控制脉冲的频率而不失步的最高频率,称为连续运行最高频率。它随负载的增加而下降,它比最高启动频率大许多,因它不需克服惯性力矩。它代表着步进电机的最高转速。目前世界最高值可达700
25、0rmin。(四)步进电机的驱动 根据步进电机的工作原理,我们知道步进电机的角位移量与指令脉冲的个数成正比,旋转方向与通电方向有关。因此步进电机的驱动电路,必须能控制步进电机各相励磁绕组电信号的通电断电变化频率、次数和通电顺序。这个工作由脉冲分配器和功率放大器来完成。,脉冲分配器:通过脉冲指令,按一定顺序导通或截止功率放大器,使电机相应的励磁绕组通电或 断电的装置叫脉冲分配器,也叫环形分配器。它由门电路、触发器等基本逻辑功能元件组成。步进电机的正转与反转,由方向指令控制。步进电机的转角与转速分别由指令脉冲的频率与数量决定。脉冲分配可由硬件或软件来实现。,脉冲分配器,功率放大器,步进电机,进给脉
26、冲,运动方向,6.11.2 步进电机控制系统,典型的步进电机控制系统如图所示。,如果用软件代替脉冲发生器和脉冲分配器,就可以根据系统需要通过编程的方法在一定的范围之内任意设定步进电机的转速、旋转角度、转动次数和控制步进电机的运行状态。典型的微机控制步进电机的系统原理框图如图所示。,利用微机现对步进电机的控制,必须解决以下两个问题:脉冲序列的形成2. 步进电机旋转方向控制 在微机控制系统中,延时可通过软件或定时器实现。利用软件形成脉冲序列的程序流程图如图所示。,利用软件形成脉冲序列的程序清单: PULSE_S:MOVR7,#NUM;设定脉冲个数PUSHA;保护现场PUSHPSWLOOP:SETB
27、P1.0;输出高电平ACALL DELAY1;延时CLRP1.0;输出低电平ACALL DELAY2;延时DJNZR7,LOOP;R70,继续输出脉冲 POPPSW;恢复现场POPARET,利用定时器形成脉冲序列的程序流程如图6-50所示。,(a)主程序,(b)定时器中断服务程序,2. 步进电机旋转方向控制,(1)三相单三拍方式:正向旋转,通电顺序为 ABCA; 反向旋转,通电顺序为 ACBA。(2)三相双三拍方式:正向旋转,通电顺序为 ABBCCAAB; 反向旋转,通电顺序为 ABCABCAB。(3)三相六拍方式: 正向旋转,通电顺序为 AABBBCCCAA; 反向旋转,顺序为 ACACBC
28、BABA。,步进电机的旋转方向控制方法:,(1)用单片机的一位输出口控制步进电机的一相绕组,例如,可以用P1.0、P1.1、P1.2分别控制A相、B相和C相绕组。(2)根据步进电机的类型和控制方式找出相应的控制模型。(3)按照控制方式规定的顺序向步进电机发送脉冲序列,即可控制步进电机的旋转方向。上述三种控制方式的数序模型如表6-7、表6-8和表6-6所示。,表6-7 三相单三拍控制模型,表6-8 三相双三拍控制模型,返回本节,表6-6三相六拍控制模型,6.11.3 步进电机控制程序的设计,三相单三拍控制程序流程图如图6-51所示。,三相单三拍控制程序清单:,T_CON:PUSHA;保护现场 P
29、USHPSW MOVR7,#N;设定控制步数JNBFLAG, LEFT;判断旋转方向 RIGHT:MOVR0,RM;正转模型起始地址 AJMPROTATE LEFT:MOVR0,LM ROTATE:MOVA,R0;取第一拍控制模型 MOVP1,A;输出第一拍控制模型 ACALL DELAY1;延时,INCR0MOVA,R0;取第二拍控制模型 MOVP1,A;输出第二拍控制模型ACALL DELAY1;延时 INCR0 MOVA,R0;取第三拍控制模型 MOVP1,A;输出第三拍控制模型 ACALL DELAY1;延时 DEC R0 DEC R0 DJNZR7,ROTATE;未走完要求的步数,继
30、续POPPSW;恢复现场 POPA RET;返回,三相六拍控制程序流程图如图6-52所示。,(a) 主程序流程图,(b) 定时器中断服务程序,三相六拍控制程序中断服务程序清单:,INTT0:PUSHA;保护现场PUSHPSWMOVA,R0;取控制模型MOVP1,A;输出控制模型INCR0;指向下一控制模型MOVA,#00H;判断是否控制模型结束标志XRLA,R0JNZNEXT;不是,继续MOVA,R0;是,恢复控制模型起始地址CLRCSUBBA,#06H,MOVR0,ANEXT:DJNZR7,RETU;未走完规定步数,继续 CLRET1;走完规定步数,禁止T1中断CLREA;关中断RETU:POPPSW;恢复现场POPA RETI;中断返回,返回本节,THANK YOU VERY MUCH !,本章到此结束,谢谢您的光临!,返回本章首页,结束放映,