工业控制中流水作业的计数与定时装置设计案例分析报告资料.docx
《工业控制中流水作业的计数与定时装置设计案例分析报告资料.docx》由会员分享,可在线阅读,更多相关《工业控制中流水作业的计数与定时装置设计案例分析报告资料.docx(12页珍藏版)》请在冰豆网上搜索。
工业控制中流水作业的计数与定时装置设计案例分析报告资料
班级:
自控0904
学号:
200941105
2012微机接口技术课程案例分析报告
北京化工大学自动化专业微机接口技术课程案例分析报告
报告题目:
工业控制中流水作业的计数与定时装置设计
院系:
信息科学与技术学院专业:
自动化
班级:
自控0904
学号:
200941105
课程序号:
185
指导教师:
韩阳
2012年4月24日完成
1.背景
2.8253功能实现2
2.1分析题目2
2.2方式选择与工作流程3
2.3软件编程4
2.3.1计数初值计算4
2.3.2主体代码4
3.心得体会5
3.1感受和收获5
3.2思考与扩展5
4.参考文献7
5.附录7
5.18253编程命令字7
1.背景
某机械零件加工产品包装流水线上需一自动计数定时装置:
一个包装箱装24个零
件,要求每通过24个,流水线要暂停5秒钟,等待封箱打包完毕,然后重启流水线继续装箱。
微机控制流水线作业时按ESC键则停止生产。
2.8253功能实现
2.1分析题目
为了实现设计要求,有两个工作要做:
一是对24个零件计数:
一是对5秒钟停顿定时。
并且两者之间又是相互关联的,因此,通过定时器的通道0作计数器,通道1作定时器,并且把通道0的计数已到(24)输出OUT0信号连到通道1的GATE。
线上作为外部硬件启动信号去触发通道l的5秒定时,以及去控制流水线的暂停与重启。
电路结构原理如图1所示,定时器端口地址为:
320H(通道0),321H(通道1),322H(通道2),323H(命令口)。
图1中的虚线框是流水线工作台示意图,其中零件计数检测部分的原理是,零件从光源和光敏电阻R之间通过时,在晶体管T发射极上会产生零件的脉冲信号,此脉冲信号即可作为计数脉冲,接到CLK。
对零件进行计数。
2.2方式选择与工作流程
8253是24脚双列直插式芯片,+5V电源供电。
通道0作为计数器,工作在方式2,因为PTC8253—5的6种工作方式中,只有2方式和3方式具有自动重装计数初值的功能,能输出连续波形,保证生产流水线循环往复运行。
GATE0接+5V电源电压,输出端OUT0直接连接到通道的GATE1方式,以作通道1定时器的外部硬件启
动信号
通道1作为定时器,工作在1方式,CLK1为100Hz时钟脉冲。
输出端OUT1接流水线工作台,进行5秒钟定时后重启流水线,继续工作,通道0又重新开始计数。
2.3软件编程
2.3.1计数初值计算
计数初值的计算分两种情况,若8253作计数器用时,则将要求计数的次数就作计数初值,直接装入计数初值寄存器和减法计数器,不要经过计算;若作定时器用时,则计数初值也就是定时常数需要经过换算才能得到。
其换算方法如下:
要求产生定时时间间隔的定时常数
Tc=fclk*T(其中fclk为100Hz,T为5s。
)
通道0的方式命令=00010100B=14H
通道0的计数初值=24=18H
通道1的方式命令=01110010B=72H
通道1的定时系数Tc=5*100=500=1F4H
2.3.2主体代码
初始化部分省略,要注意的是通道一的初值大于256需要分两次写入。
下面给出等待按键的代码:
CHECK:
MOVAH,0BH
INT21H
CMPAL,00H;无键按下则等待。
JECHECK
MOVAH,08H
INT21H
CMPAL,1BH;若不是ESC则等待。
JNECHECK
MOVAH,4CH;若是则结束。
INT21H
3.心得体会
3.1感受和收获
此应用的特殊之处,在于把计数器和定时器组合应用。
把定时和计数连结起来,相互作用,使其在实际生活中发挥更大的作用。
还有一点特别地方,在于此例程巧妙应用了8253计数器在不同方式下的输出不同的特性。
结合流水线设备的触发条件,使整个工作流程衔接流畅,前后联系紧密才得以实现其整体功能。
3.2思考与扩展
这就引发我们对定时器/计数器几种不同工作方式的思考。
由于工作方式不同,其计数过程,基本功能,启动方式,输出波形,初值重装,中止方式及典型应用都有差别。
因此,在使用8253或8254时,应根据不同的用途来选择不同的工作方式,以充分发挥其作用。
在此,再把8254的6中工作方式的特点复习一下。
1.方式0的计数结束中断
计数结束,输出端产生0-1的上升沿,利用此信号可申请中断。
2.方式1的可编程单稳态触发器功能
负脉冲的宽度可以由程序控制,改变计数初值就可以改变延时时间。
3.方式2的分频功能
产生宽度相等连续的负脉冲,可以用作分频器,分频系数即计数初值。
4.方式3的方波发生器功能
输出占空比近1:
1的重复连续波形。
5.方式4和方式5的单个负脉冲发生器
方式4和方式5都是单个负脉冲发生器,输出一个完整负脉冲,但两者启动方式不同,前者为软件启动,后者为硬件启动。
以上5种功能为8254的基本功能,用户以这些原始功能为基础,通过组合和设计可以进一步开发各种各样的应用。
例如,用于计时系统,作定时中断;用于通信系统,作波特率始终发生器;用于实时控制系统,作数据采集和速度控制;还可以用于发声系统,作音乐发生器等。
它们都是基于8254的原始功能或相互间的组合来实现的。
4.参考文献
1.刘乐善主编,华中科技大学出版社,《32位微型计算机接口技术及应用》
2.李玉声,《现代机械》2006年第一期,《机加零件自动包装计数定时装置的设计》
5.附录
5.18253编程命令字
使用8253时,必须首先进行初始化编程。
初始化编程的步骤和内容如下:
首先写入方式控制字,以选择计数通道,确定其工作方式。
每一计数通道的方式控制字都是由CPU依次写入控制字寄存器的,控制字寄存器端口地址只有一个。
然后写入计数初值到对应的计数通道中。
若规定只写低8位,则写入的计数初值为低8位,高8位自动清0;若规定只写高8位,则写入的计数初值为高8位,低8位自动清0;若规定写16位,则分两次写入,先写入的计数初值为低8位,后写入的计数初值为高8位,每个计数通道均有自己的端口地址。
方式控制字的格式如下:
SC1、SC0:
计数通道选择。
确定这个方式控制字是确定哪个计数通道的工作方式的。
若SC1SC0=00,选择计数通道0;若SC1SC0=01,选择计数通道1;若SC1SC0=10,选择计数通道2;若SC1SC0=11,为非法选择。
RL1、RL0:
规定CPU向计数通道写入计数初值的格式和向计数通道锁存器发锁存命令,以及未锁存时CPU从计数通道读取当前计数值的格式。
数据读/写格式为:
RL1RL0=00,计数器锁存命令
RL1RL0=01,只读/写低8位数据
RL1RL0=10,只读/写高8位数据
RL1RL0=11,读/写16位数据,先低8位,后高8位
CPU写入计数通道的计数初值是写到计数通道的初值寄存器中的,而初值寄存器是16位的寄存器。
如果只写入低8位初值,则初值寄存器的高8位自动清0;如果只写入高8位初值,则初值寄存器的低8位自动清0;如果写入16位初值,则先写入低8位初值后写入高8位初值。
计数通道在计数过程中,CPU可以随时读取计数通道的当前值且不影响计数通道的现行计数,CPU读取的计数通道的当前值是锁存寄存器中的值。
在未锁存时(RL1RL0≠00),减1计数器减1计数的同时把当前值送到锁存寄存器中,即锁存寄存器的值跟随减1计数器当前值的变化而变化。
若在读计数通道当前值之前,先写入锁存命令(RL1RL0=00),则在计数过程中,减1计数器减1计数虽然照常进行,但不把当前值送到锁定寄存器中,即锁定寄存器的值被锁定,当对计数通道重新初始化或CPU读计数通道锁定值后,自动解除锁存命令,锁定寄存器的值又随减1计数器
变化。
在未锁定时,若RL1RL0=11,可能会使从计数器直接读出的数值不正确,因为若先读入的低8位值00H时,由于在两次读数值之间计数器计数低8位可能向高8
位有借位,造成后读入的高8位值错误,克服的办法可以用GATE无效或阻断CLK时钟脉冲输入等方法,使计数器暂停计数,以保证CPU读到正确的计数器当前值。
为了计数过程照常进行和保证CPU读到正确的计数器当前值,常常采用先写入锁存命令后读入计数器当前值的方法。
例如,若要读取计数通道2的16位计数值,初始化时若计数通道2工作在方式
0,按二进制计数,设控制字寄存器地址为F6H,计数通道2地址为F4H,则程序为:
MOVAL,10000000B;计数器2锁存命令
OUT0F6H,AL;写入锁存命令
INAL,0F4H;读低8位当前值
MOVCL,AL;存入CL中
INAL,0F4H;读高8位当前值并解除锁存状态
MOVCH,AL;存入CH中
M2M1M0:
由这3位决定计数通道的工作方式。
规定如下:
M2M1M0:
=000,计数通道工作在方式0
M2M1M0:
=001,计数通道工作在方式1
M2M1M0:
=X10,计数通道工作在方式2
M2M1M0:
=X11,计数通道工作在方式3
M2M1M0:
=100,计数通道工作在方式4
M2M1M0:
=101,计数通道工作在方式5
BCD:
该位用来决定计数通道在减1计数过程中是按二进制计数还是按二検
疲˙CD计数制)以及写入的计数初值是二进制还是BCD数,若BCD=0,则按二进制计数,写入的计数初值是二进制数初值范围是0000~FFFFH,其中0000为最大值,代表65536;若BCD=1,则按BCD计数,初值范围是0000~9999H,它是十进制数的BCD码,其中0000是最大值,代表10000,9999H代表9999。
注:
读取计数器的当前值
⑴直接读计数器:
输出锁存器在非锁存状态会跟随计数器计数的变化而变化,直接读计数器是从锁存器得到计数器的当前值。
但由于计数器处于工作状态,读出值不
⑵先锁存再读取:
①通过方式选择控制字对指定通道(SC1、SC0)的计数值锁入锁存器(RL1RL0=00),锁存器一旦锁存了当前计数值,就不再随计数器变化直到被读取。
②读计数器通道(有锁存器)。
5.28253的6种工作方式详细介绍
8253的六种工作方式区别
三个计数通道可有6种可供选择的工作方式,以完成定时、计数或脉冲发生器等多种功能:
方式0:
计数结束则中断
工作方式0被称为计数结束中断方式。
当任一通道被定义为工作方式0时,OUTi输出为低电平;若门控信号GATE为高电平,当CPU利用输出指令向该通道写入计数值使WR#有效时,OUT仍保持低电平,之后的下一时钟周期下降沿计数器开始减“1”计数,直到计数值为“0”,此刻OUT将输出由低电平向高电平跳变,可用它向CPU发出中断请求,OUT端输出的高电平一直维持到下次再写入计数值为止。
在工作方式0情况下,门控信号GATE用来控制减“1”计数操作是否进行。
当GATE=1时,允许减“1”计数;GATE=0时,禁止减“1”计数;计数值将保持GATE有效时的数值不变,待GATE重新有效后,减“1”计数继续进行。
显然,利用工作方式0既可完成计数功能,也可完成定时功能。
当用作计数器时,应将要求计数的次数预置到计数器中,将要求计数的事件以脉冲方式从CLK端输入,由它对计数器进行减“1”计数,直到计数值为0,此刻OUTi输出正跳变,表示计数次数到。
当用作定时器时,应把根据要求定时的时间和CLKi的周期计算出定时系数,预置到计数器中。
从CLK,输入的应是一定频率的时钟脉冲,由它对计数器进行减“1”计数,定时时间从写入计数值开始,到计数值计到“0”为止,这时OUTi输出正跳变,表示定时时间到。
有一点需要说明,任一通道工作在方式0情况下,计数器初值一次有效,经过一次计数或定时后如果需要继续完成计数或定时功能,必须重新写入计数器的初值。
方式1:
单脉冲发生器
工作方式1被称作可编程单脉冲发生器。
进入这种工作方式,CPU装入计数值n后OUT输出高电平,不管此时的GATE输入是高电平还是低电平,都不开始减“1”计数,必须等到GATE由低电平向高电平跳变形成一个上升沿后,计数过程才会开始。
与此同时,OUT输出由高电平向低电平跳变,形成了输出单脉冲的前沿,待计数值计到“0”,OUT输出由低电平向高电平跳变,形成输出单脉冲的后沿,因此,由方式l所能输出单脉冲的宽度为CLK周期的n倍
如果在减“1”计数过程中,GATE由高电平跳变为低电乎,这并不影响计数过程,仍继续计数;但若重新遇到GATE的上升沿,则从初值开始重新计数,其效果会使输出的单脉冲加宽,如教材图9-22(b)中的第2个单脉冲。
这种工作方式下,计数值也是一次有效,每输入一次计数值,只产生一个负极性单脉冲。
方式2:
速率波发生器
工作方式2被称作速率波发生器。
进入这种工作方式,OUT输出高电平,装入计数值n后如果GATE为高电平,则立即开始计数,OUT保持为高电平不变;待计数值减到“1”和“0”之间,OUT将输出宽度为一个CLK周期的负脉冲,计数值为“0”时,自动重新装入计数初值n,实现循环计数,OUT将输出一定频率的负脉冲序列,其脉冲宽度固定为一个CLK周期,重复周期为CLK周期的n倍。
如果在减“1”计数过程中,GATE变为无效(输入0电平),则暂停减“1”计数,待GATE恢复有效后,从初值n开始重新计数。
这样会改变输出脉冲的速率。
如果在操作过程中要求改变输出脉冲的速率,CPU可在任何时候,重新写人新的计数值,它不会影响正在进行的减“1”计数过程,而是从下一个计数操作用期开始按新的计数值改变输出脉冲的速率。
方式3:
方波发生器
工作方式3被称作方波发生器。
任一通道工作在方式3,只在计数值n为偶数,则可输出重复周期为n、占空比为1:
1的方波。
进入工作方式3,OUT输出低电平,装入计数值后,OUT立即跳变为高电平如果当GATE为高电平,则立即开始减“1”计数,OUT保持为高电平,若n为偶数,则当计数值减到n/2时,OUT跳变为低电平,一直保持到计数值为“0”,系统才自动重新置入计数值n,实现循环计数。
这时OUT端输出的周期为n×CLKi周期,占空比为1:
1的方波序列;若n为奇数,则OUTi端输出周期为n×CLK周期,占空比为((n+1)/2)/((n-1)/2)的近似方波序列。
如果在操作过程中,GATE变为无效,则暂停减“1”计数过程,直到GATE再次有效,重新从初值n开始减“l”计数。
如果要求改变输出方波的速率,则CPU可在任何时候重新装入新的计数初值n,并从下一个计数操作周期开始改变输出方波的速率。
方式4:
软件触发方式计数
工作方式4被称作软件触发方式。
进入工作方式4,OUT输出高电平。
装入计数值n后,如果GATE为高电平,则立即开始减“1”计数,直到计数值减到“0”为止,OUT输出宽度为一个CLKi周期的负脉冲。
由软件装入的计数值只有一次有效,如果要继续操作,必须重新置入计数初值n。
如果在操作的过程中,GATE变为无效,则停止减“1”计数,到GATE再次有效时,重新从初值开始减“1”计数。
显然,利用这种工作方式可以完成定时功能,定时时间从装入计数值n开始,则OUT输出负脉冲(表示定时时间到),其定时时间=n×CLK周期。
这种工作方式也可完成计数功能,它要求计数的事件以脉冲的方式从CLK输入,将计数次数作为计数初值装入后,由CLK端输入的计数脉冲进行减“1”计数,直到计数值为“0”,由
OUTt端输出负脉冲(表示计数次数到)。
当然也可利用OUT向CPU发出中断请求因此工作方式4与工作方式0很相似,只是方式0在OUT端输出正阶跃信号、方式
4在OUT端输出负脉冲信号。
方式5:
硬件触发方式计数
工作方式5被称为硬件触发方式。
进入工作方式5,OUT输出高电平,硬件触发信号由GATE端引入。
因此,开始时GATE应输入为0,装入计数初值n后,减“1”计数并不工作,一定要等到硬件触发信号由GATE端引入一个正阶跃信号,减“1”计数才会开始,待计数值计到“0”,OUT将输出负脉冲,其宽度固定为一个CLK周期,表示定时时间到或计数次数到。
这种工作方式下,当计数值计到“0”后,系统将自动重新装入计数值n,但并不开始计数,一定要等到由GATE端引入的正跳沿,才会开始进行减“1”计数,因此这是一种完全由GATE端引入的触发信号控制下的计数或定时功能。
如果由CLKi输入的是一定频率的时钟脉冲,那么可完成定时功能,定时时间从GATE上升沿开始,到OUT端输出负脉冲结束。
如果从CLK端输入的是要求计数的事件,则可完成计数功能,计数过程从GATE上升沿开始,到OUT输出负脉冲结束。
GATE可由外部电路或控制现场产生,故硬件触发方式由此而得名。
如果需要改变计数初值,CPU可在任何时候用输出指令装入新的计数初值m,它将不影响正在进行的操作过程,而是到下一个计数操作周期才会按新的计数值进行操作。
从上述各工作方式可看出,GATE作为各通道的门控信号,对于各种不同的工作
方式,它所起的作用各不相同。
在8253的应用中,必须正确使用GATE信号,才能保证各通道的正常操作
门控信号GATE的作用
方式
功能
GATE=1
GATE=0
GATE上升沿
0
计数结束产生中断
允许计数
停止计数
不受影响
1
可重触发单稳
不受影响
不受影响
从初值开始重新计数
2
分频器
允许计数
停止计数
从初值开始重新计数
3
方波信号发生器
允许计数
停止计数
从初值开始重新计数
4
软件触发选通
允许计数
停止计数
从初值开始重新计数
5
硬件触发选通
不受影响
不受影响
硬件触发信号