巧用中断—PLC扩展AB相高速计数器方法

巧用中断—PLC扩展AB相高速计数器方法
巧用中断—PLC扩展AB相高速计数器方法

巧用中断——PLC扩展AB相高速计数的方法

杨敬东

(广东佛山菜鸟控制实验室)

摘要:本文介绍了利用可变程序控制器PLC的中断机制,扩展PLC中的AB两相高速计数器的方法。

一、引言:PLC可编程序控制器,是一种工业上广泛应用的通用控制器,但是在应用实践中,不少情况是应用的要求,略为超出了PLC的资源,通常是IO端口的不匹配,最遗憾的是,有时只差1、2个端口,就要选购大一级点数规格的PLC,所以很多学者研究了不增加成本的情况下扩展IO端口的方法。但AB两相高速计数器不够用而扩展的,恐怕大多数人认为,只能购买昂贵的高速计数器特殊模块了。但如果满足特定条件时,也可以用PLC基本单元作少量增加,以下以三菱FX系列PLC基本单元为例扩展1路AB相高速计数器。

二、问题背景:某机械设备设计制造公司要设计制造一种液压机械,机器需要用到3把AB相光栅尺,其中1把连接到液压缸驱动的进给机构,以作为定位之用,运动速度高;另外2把连接到一个平面上的X轴、Y轴两个方向的调节机构,该2个调节机构进给速度相对前者稍慢。公司计划采用三菱FX1N系列PLC基本单元作为控制器,由于三菱FX1N系列PLC基本单元最多只能同时接入2个AB相高速计数器,于是将其分配接入2把AB相光栅尺,完成X轴、Y轴调节机构的功能,另购置1个高速计数器特殊功能模块,完成进给机构高速定位功能。但是,PLC特殊功能模块的价格是比较昂贵的,如果机器

的生产数量是比较多的话,就削弱了产品的竞争力。

三、FX1N系列PLC内部高速计数器和外部中断简介:

内部21点高速计数器C235—C255共用PLC特定的8个输入端X0—X7,某一高速计数器输入端都有其对应的输入端口,不同类型的高速计数器可以同时使用,但是它们的输入端不能冲突。其中AB相高速计数器与端口的对应关系如表—1:

因此,最多只能同时使用2个AB相高速计数器。

FX1N系列PLC有6个外部中断输入端X0—X5,分别对应中断指针I□0□,同一输入中断源只能使用上升沿触发或下降沿触发,不能同时是上升沿和下降沿触发。用于中断的输入点不能与已经用于高速计数器的输入点冲突。

四、问题的解决:回到问题的背景,如何可以在不改变硬件和增

加成本的情况下,使FX1N基本单元具有3路AB相高速计数器功能呢?答案是,用PLC本身的中断机制。经过核算,3个光栅尺产生的脉冲频率,都在三菱FX1N系列PLC中断所能处理的频率之内。

使用PLC内部高速计数器C251,对应端子X0、X1,分别连接到由液压缸驱动的进给机构上的光栅尺的AB相;X轴定位机构上的光栅尺AB相分别连接到PLC端子X2、X3,Y轴定位机构上的光栅尺AB 相分别连接到PLC端子X4、X5。3把光栅尺读数的复位或清除,由其他端子控制。

以下是AB相光栅尺的时序,如图:

定义X2、X3端子为脉冲上升沿中断触发方式,则其数字滤波器时间自动设置为0(不含RC滤波器时间常数)。当光栅尺正方向运动时,在t1时刻,X2产生脉冲上升沿中断,此时中断程序刷新X3的输入映像寄存器、如果检测X3到是OFF,则中断程序对PLC内部继电器M1置位,表示A相超前B相,光栅尺正向移动。光栅尺继续移动,到达时刻t2,X3产生脉冲上升沿中断,该中断服务程序检测M1,如果M1=1,则对PLC内部数据寄存器D1加1,然后复位M1。

当光栅尺反方向运动时,在t4时刻,X3产生脉冲上升沿中断,此时中断程序刷新X2的输入映像寄存器、如果检测到X2是OFF,则中断程序对PLC内部继电器M2置位,表示B相超前A相,光栅尺反向移动。光栅尺继续移动,到达时刻t3,X2产生脉冲上升沿中断,该中断服务程序检测M2,如果M2=1,则对数据寄存器D1减1,然后复位M2。

数据寄存器D1的值就是这个由中断机制构造出来的高速计数器的当前值。

语句表:

EI //开中断

………

I201 LD M8000

REF X0 K8 //刷新X0—X7输入映像寄存器

LDI X3 // 读X3实时值,如果是OFF

SET M1 //置位M1

LD M2

SUB D0 K1 D0

RST M2

IRET

I301 LD M8000

REF X0 K8

LDI X2

SET M2

LD M1

ADD D0 K1 D0

RST M1

IRET

END

为什么不只使用X2上升沿中断,直接读取X3输入映像,根据X3输入映像,判断光栅尺运动方向,从而对D1进行加减?如果这样,当光栅尺停在t1点所对应位置附近时,如果连接光栅尺的机构没有减震的措施,很容易受到机器运行的震动影响在该点来回抖动,这时将不断产生X2上升沿中断。

五、结语

外部端口中断的使用是很灵活的,还可以实现很多功能,例如捕获窄脉冲信号、计算脉冲宽度、实现高精度定时器,甚至可以实现简单的串行通信功能。

三菱高速计数器应用

三菱FX系列PLC计数器(C)内部计数器高速计数器 2016-02-03 来源:网络或本站原创 FX2N系列计数器分为内部计数器和高速计数器两类。 1.内部计数器 内部计数器是在执行扫描操作时对内部信号(如X、Y、M、S、T等)进行计数。内部输入信号的接通和断开时间应比PLC的扫描周期稍长。 (1)16位增计数器(C0~C199)??共200点,其中C0~C99为通用型,C100~C199共100点为断电保持型(断电保持型即断电后能保持当前值待通电后继续计数)。这类计数器为递加计数,应用前先对其设置一设定值,当输入信号(上升沿)个数累加到设定值时,计数器动作,其常开触点闭合、常闭触点断开。计数器的设定值为1~32767(16位二进制),设定值除了用常数K设定外,还可间接通过指定数据寄存器设定。 下面举例说明通用型16位增计数器的工作原理。如图1所示,X10为复位信号,当X10为ON时C0复位。X11是计数输入,每当X11接通一次计数器当前值增加1(注意X10断开,计数器不会复位)。当计数器计数当前值为设定值10时,计数器C0的输出触点动作,Y0被接通。此后既使输入X11再接通,计数器的当前值也保持不变。当复位输入X10接通时,执行RST复位指令,计数器复位,输出触点也复位,Y0被断开。 图1??通用型16位增计数器 (2)32位增/减计数器(C200~C234)??共有35点32位加/减计数器,其中C200~C219(共20点)为通用型,C220~C234(共15点)为断电保持型。这类计数器与16位增计数器除位数不同外,还在于它能通过控制实现加/减双向计数。设定值范围均为~(32位)。 C200~C234是增计数还是减计数,分别由特殊辅助继电器M8200~M8234设定。对应的特殊辅助继电器被置为ON时为减计数,置为OFF时为增计数。 计数器的设定值与16位计数器一样,可直接用常数K或间接用数据寄存器D的内容作为设定值。在间接设定时,要用编号紧连在一起的两个数据计数器。 如图2所示,X10用来控制M8200,X10闭合时为减计数方式。X12为计数输入,C200的设定值为5(可正、可负)。设C200置为增计数方式(M8200为OFF),当X12计数输入累加由4→5时,计数器的输出触点动作。当前值大于5时计数器仍为ON状态。只有当前值由5→4时,计数器才变为OFF。只要当前值小于4,则输出则保持为OFF状态。复位输入X11接通时,计数器的当前值为0,输出触点也随之复位。 图2? 32位增/减计数器 2.高速计数器(C235~C255) 高速计数器与内部计数器相比除允许输入频率高之外,应用也更为灵活,高速计数器均有断电保持功能,通过参数设定也可变成非断电保持。FX2N有C235~C255共21点高速计数器。适合用来做为高速计数器输入的PLC输入端口有X0~X7。X0~X7不能重复使用,即某一个输入端已被某个高速计数器占用,它就不能再用于

中断的妙用―扩展PLCAB相高速计数器方法(精)

中断的妙用—PLC AB相高速计数的方法 杨敬东 (广东佛山菜鸟控制实验室) 摘要:本文介绍了利用可变程序控制器PLC的中断机制,扩展PLC中的AB两相高速计数器的方法。 一、引言:PLC可编程序控制器,是一种工业上广泛应用的通用控制器,但是在应用实践中,不少情况是应用的要求,略为超出了PLC的资源,通常是IO端口的不匹配,最遗憾的是,有时只差1、2个端口,就要选购大一级点数规格的PLC,所以很多学者研究了不增加成本的情况下扩展IO端口的方法。但AB两相高速计数器不够用而扩展的,恐怕大多数人认为,只能购买昂贵的高速计数器特殊模块了。但如果满足特定条件时,也可以用PLC基本单元作少量增加,以下以三菱FX系列PLC基本单元为例扩展1路AB相高速计数器。 二、问题背景:某机械设备设计制造公司要设计制造一种液压机械,机器需要用到3把AB相光栅尺,其中1把连接到液压缸驱动的进给机构,以作为定位之用,运动速度高;另外2把连接到一个平面上的X轴、Y轴两个方向的调节机构,该2个调节机构进给速度相对前者稍慢。公司计划采用三菱FX1N系列PLC基本单元作为控制器,由于三菱FX1N系列PLC基本单元最多只能同时接入2个AB相高速计数器,于是将其分配接入2把AB相光栅尺,完成X轴、Y轴调节机构的功能,另购置1个高速计数器特殊功能模块,完成进给机构高速定位功能。但是,PLC特殊功能模块的价格是比较昂贵的,如果机器的生产数量是比较多的话,就削弱了产品的竞争力。 三、FX1N系列PLC内部高速计数器和外部中断简介: 内部21点高速计数器C235—C255共用PLC特定的8个输入端X0—X7,某一高速计数器输入端都有其对应的输入端口,不同类型的高速计数器可以同时使用,但是它们的输入端不能冲突。其中AB相高速计数器与端口的对应关系如表—1:

[整理]s7-200高速计数器详细解说

[整理]s7-200高速计数器详细解说s7-200高速计数器详细解说 1.高速计数器指令 普通计数器受CPU扫描速度的影响,是按照顺序扫描的方式进行工作。在没个扫描周期中,对计数脉冲只能进行一次累加;对于脉冲信号的频率比PLC的扫描频率高时,如果仍采用普通计数器进行累加,必然会丢失很对输入脉冲信号。在PLC 中,对比扫描频率高的输入信号的计数可也使用高速计数器指令来实现。 在S7-200的CPU22X中,高速计数器数量及其地址编号表如下 CPU类型 CPU221 CPU222 CPU224 CPU226 高速计数器数量 4 6 高速计数器编号 HC0,HC3~HC5 HC0~HC5 1(高速计数器指令 高速计数器的指令包括:定义高速计数器指令HDEF 和执行高速计数指令HSC,如表 HDEF HSC (1) 定义高速计数器指令HDEF HDE指令功能是为某个要使用的高速计数器选定一种工作模式。每个高速计数器在使用 前,都要用HDEF指令来定义工作模式,并且只能用一次。它有两个输入 端:HSC为要

使用的高速计数器编号,数据类型为字节型,数据范围为0~5的常数,分别对应HC0~ HC5;MOCE为高速计数的工作模式,数据类型为字节型,数据范围为0~11的常数,分 别对应12种工作模式。当准许输入使能EN有效时,为指定的高速计数器HSC 定义工 作模式MODE。 (2)执行高速计数指令HSC HSC指令功能功能是根据与高速计数器相关的特殊继电器确定在控制方式和工作状态,使高速计数器的设置生效,按照指令的工作模式的工作模式执行计数操作。它有一个数据输入端N:N为高速计数器的编号,数据类型的字型,数据范围为0~5的常数,分别对应高速计数器HC0~HC5.当准许输入EN使能有效时,启动N号高速计数器工作。 2(高速计数器的输入端 高速计数器的输入端不像普通输入端那样有用户定义,而是由系统指定的输入点输入信号,每个高速计数器对它所支持的脉冲输入端,方向控制,复位和启动都有专用的输入点,通过比较或中断完成预定的操作。每个高速计数器专用的输入点如表 高速计数器的输入点 高速计数器标号输入点高速计数器标号输入点 HC0 I0.0,I0.1,I0.2 HC3 I0.1 HC1 I0.6,I0.7,I1.0,11.1 HC4 I0.3,I0.4,I0.5 HC2 I1.2,I1.3,,I1.4,I1.5 HC5 I0.4 3(高速计数器的状态字节系统为每个高速计数器都在特殊寄存器区SMB提供了一个状态字节,为了监视高速计数器的工作状态,执行由高速计数器引用的中断事件,其格式如表。

三菱高速计数器应用

三菱FX系列PLC计数器(C) 内部计数器高速计数器 2016-02-03 来源:网络或本站原创 FX2N系列计数器分为内部计数器与高速计数器两类。 1.内部计数器 内部计数器就是在执行扫描操作时对内部信号(如X、Y、M、S、T等)进行计数。内部输入信号得接通与断开时间应比PLC得扫描周期稍长。 (1)16位增计数器(C0~C199)共200点,其中C0~C99为通用型,C100~C199共100点为断电保持型(断电保持型即断电后能保持当前值待通电后继续计数)。这类计数器为递加计数,应用前先对其设置一设定值,当输入信号(上升沿)个数累加到设定值时,计数器动作,其常开触点闭合、常闭触点断开。计数器得设定值为1~32767(16位二进制),设定值除了用常数K设定外,还可间接通过指定数据寄存器设定。 下面举例说明通用型16位增计数器得工作原理。如图1所示,X10为复位信号,当X10为ON时C0复位。X11就是计数输入,每当X11接通一次计数器当前值增加1(注意X10断开,计数器不会复位)。当计数器计数当前值为设定值10时,计数器C0得输出触点动作,Y0被接通。此后既使输入X11再接通,计数器得当前值也保持不变。当复位输入X10接通时,执行RST复位指令,计数器复位,输出触点也复位,Y0被断开。 图1 通用型16位增计数器 (2)32位增/减计数器(C200~C234)共有35点32位加/减计数器,其中C200~C219(共20点)为通用

型,C220~C234(共15点)为断电保持型。这类计数器与16位增计数器除位数不同外,还在于它能通过控制实现加/减双向计数。设定值范围均为-214783648~-+214783647(32位)。 C200~C234就是增计数还就是减计数,分别由特殊辅助继电器M8200~M8234设定。对应得特殊辅助继电器被置为ON时为减计数,置为OFF时为增计数。 计数器得设定值与16位计数器一样,可直接用常数K或间接用数据寄存器D得内容作为设定值。在间接设定时,要用编号紧连在一起得两个数据计数器。 如图2所示,X10用来控制M8200,X10闭合时为减计数方式。X12为计数输入,C200得设定值为5(可正、可负)。设C200置为增计数方式(M8200为OFF),当X12计数输入累加由4→5时,计数器得输出触点动作。当前值大于5时计数器仍为ON状态。只有当前值由5→4时,计数器才变为OFF。只要当前值小于4,则输出则保持为OFF状态。复位输入X11接通时,计数器得当前值为0,输出触点也随之复位。 图2 32位增/减计数器 2.高速计数器(C235~C255) 高速计数器与内部计数器相比除允许输入频率高之外,应用也更为灵活,高速计数器均有断电保持功能,通过参数设定也可变成非断电保持。FX2N有C235~C255共21点高速计数器。适合用来做为高速计数器输入得PLC 输入端口有X0~X7。X0~X7不能重复使用,即某一个输入端已被某个高速计数器占用,它就不能再用于其它高速计数器,也不能用做它用。各高速计数器对应得输入端如表1所示。 高速计数器可分为四类: (1)单相单计数输入高速计数器(C235~C245)其触点动作与32位增/减计数器相同,可进行增或减计数(取决于M8235~M8245得状态)。计数器得加减信号都由一个端子输入,通过设置改变输入信号得极性。 如图3a所示为无启动/复位端单相单计数输入高速计数器得应用。当X10断开,M8235为OFF,此时C235为增计数方式(反之为减计数)。由X12选中C235,从表1中可知其输入信号来自于X0,C235对X0信号增计数,当前值达到1234时,C235常开接通,Y0得电。X11为复位信号,当X11接通时,C235复位。 如图3 b所示为带启动/复位端单相单计数输入高速计数器得应用。由表3 4可知,X1与X6分别为复位输入端与启动输入端。利用X10通过M8244可设定其增/减计数方式。当X12为接通,且X6也接通时,则开始计数,

编码器的脉冲计数,高速计数器小归纳

我们一般采用高速输出信号控制步进电机和伺服电机做位置,角度和速度的控制,比如定位,要实现这个目的,我们要知道这几个条件:1、PLC高速输出需要晶体管输出,继电器属于机械动作,反应缓慢,而且易坏 2、以三菱PLC为例,高速输出口采用Y0 、Y1 3、高速输出指令常用的有 PLSY 脉冲输出 PLSR 带加减速 PLSV……可变速的脉冲输出 ZRN……原点回归 DRVI……相对定位 DRVA……绝对定位 4、脉冲结束标志位M8029 5、D8140 D8141 为Y0总输出脉冲数 6、在同一个程序里面Y0做为脉冲输出,程序可以存在一次,当需要多次使用的时候,可以采用变址V进行数据的切换,频率,脉冲在不同的动作模式中,改变数据

正对上述讲解的内容:我们用一个程序来表示若我们以后可能接触步进。伺服这一块,上述内容,大家一定要熟练掌握! 23、PLC编程实现编码器的脉冲计数 在高速计数器与编码器配合使用之前,我们首先要知道是单向计数,还是双向计数,需要记录记录的数据,需要多少个编码器,在PLC 中也需要多少个高速输入点,我们先要确认清楚。 当我们了解上面的问题以后,参照上题的寄存器分配表得知我们该选择什么高速计数器 如:现在需要测量升降机上升和下降的高度,那么我们需要采用双向编码器,即可加可减的,AB相编码器,PLC需要两个IO点,查表

得知,X0 X1为一路采用C251高速计数器那么我们可以这样编程,如图 开机即启动计数,上升时(方向),C251加计数 下降时(方向),C251减计数 我们要求编码器转动的数据达到多少时,就表示判断实际升降机到达的位置 注意:在整个程序中没有出现X0、X1这个两个软元件? 是因为C251为X0、X1的内置高速计数器,他们是一一对应的,只要见到c251,X0 X1就在里面了,当然,用了C251以后,X 0 、X1不能在程序里面再当做开关量使用了

PLC高速计数器测量电机转速的标准程序

PLC高速计数器测量电机转速的标准程序 通过与电动机同轴齿轮齿条变化来测量电动机转速,电动机输出轴与齿轮的传动比=1,齿条数=12,要求测量单位:转/分钟。 主程序: 子程序0

中断程序0

主程序MAIN 程序初始化,PLC上电运行的第一个扫描周期执行一次初始化子程序SBR_0。用于程序运行的初始设置 子程序SBR_0 在PLC运行的第一个扫描周期,将用于记录累加数据次数和累加数据的中间变量VB8和VD0置0 设置高速计数器HC0的控制字节SMB37,用十六进制表示(16#F8),也可以用二进制表示(2#11111000)。 设置高速计数器HC0工作模式为0,单相计数输入,没有外部控制功能。 设置高速计数器HC0初始值寄存器SMD38为0。 执行HSC指令,将控制字节SMB37、初始值/预置值寄存器(SMD38/SMD42)以及工作模式写入高速计数器HC0。 设定定时中断事件的时间为50ms 定时中断事件号10和中断处理程序INT_0建立关联。 允许中断,将定时中断事件和中断处理程序连接 中断处理程序INT_0 中断处理程序每隔50ms扫描刷新一次。 采用整数加法指令,将高速计数器HC0的计数当前值(32位)和累加数据相加一次。用于数据的累加。 采用整数递增指令,记录累加次数。 执行HSC指令,在这里执行的目的,是将初始值寄存器SMD38(0)再次写入高速计数器HC0,使计数当前值为0,以便下个定时采样。 当累加数据次数等于32次,子程序中网络2中程序执行。 采用除法指令,计算32次的累加数据平均值。 将平均值转换成测量单位:转/分,转换后的数据送入双字VD4。 将平均值转换成字数据,送入字VW10中。VW10中的数据就是电机速度值。之所以转换,是因为在程序中一般要求以字的概念存在。 将记录累加数据次数的字节VB6中数据置0。用于下一次开始时,从新开始累加。 将用于累叫数据的中间变量VD4置0。

高速计数器

1 引言 切纸机械是印刷和包装行业最常用的设备之一。切纸机完成的最基本动作是把待裁切的材料送到指定位置,然后进行裁切。其控制的核心是一个单轴定位控制。我公司引进欧洲一家公司的两台切纸设备,其推进定位系统的实现是利用单片机控制的。控制过程是这样的,当接收编码器的脉冲信号达到设定值后,单片机系统输出信号,断开进给电机的接触器,同时电磁离合制动器的离合分离,刹车起作用以消除推进系统的惯性,从而实现精确定位。由于设备的单片机控制系统老化,造成定位不准,切纸动作紊乱,不能正常生产。但此控制系统是早期产品,没有合适配件可替换,只能采取改造这一途径。目前国内进行切纸设备进给定位系统改造主要有两种方式,一是利用单片机结合变频器实现,一是利用单片机结合伺服系统实现,不过此两种改造方案成本都在两万元以上。并且单片机系统是由专业开发公司设计,技术保守,一旦出现故障只能交还原公司维修或更换,维修周期长且成本高,不利于改造后设备的维护和使用。我们结合自己设备的特点提出了新的改造方案,就是用PLC的高速计数器功能结合变频器的多段速功能实现定位控制,并利用HMI(人机界面HumanMachineInterface)进行裁切参数设定和完成一些手动动作。 2 改造的可行性分析 现在的大多PLC都具有高速计数器功能,不需增加特殊功能单元就可以处理频率高达几十或上百KHz的脉冲信号,而切纸机对进给系统的精度和响应速度要求不是很高。可以通过对切纸机进给系统相关参数的计算,合理的选用编码器,让脉冲频率即能在PLC处理的范围内又可以满足进给的精度要求。在进给过程中,让PLC对所接收的脉冲数与设定数值进行比较,根据比较结果驱动相应的输出点对变频器进行输出频率的控制,实现接近设定值时进给速度变慢,从而减小系统惯性,达到精确定位的目的。另外当今变频器技术取得了长足的发展,使电机在低速时的转矩大幅度提升,从而也保证了进给定位时低速推进的可行性。 3 主要控制部件的选取 3.1 PLC的选取 设备需要的输入输出信号如下: x0脉冲输入 x1脉冲输入 x2前限位 x3后限位y3 前进! x4前减速位y4 后退 x5电机运转信号y5 高速

51单片机C语言中断程序定时计数器

51单片机C语言中断程序定时/计数器 程序一 利用定时/计数器T0从P1.0输出周期为1s 的方波,让发光二极管以1HZ闪烁, #include //52单片机头文件 #include //包含有左右循环移位子函数的库#define uint unsigned int //宏定义 #define uchar unsigned char //宏定义 sbit P1_0=P1^0; uchar tt; void main() //主函数 { TMOD=0x01;//设置定时器0为工作方式1 TH0=(65536-50000)/256; TL0=(65536-50000)%256; EA=1;//开总中断 ET0=1;//开定时器0中断 TR0=1;//启动定时器0 while(1);//等待中断产生 }

void timer0() interrupt 1 { TH0=(65536-50000)/256; TL0=(65536-50000)%256; tt++; if(tt==20) { tt=0; P1_0=~P1_0; } } 程序二 利用定时/计数器T1产生定时时钟, 由P1口控制8个发光二极管, 使8个指示灯依次一个一个闪动, 闪动频率为10次/秒(8个灯依次亮一遍为一个周期),循环。#include //52单片机头文件 #include //包含有左右循环移位子函数的库 #define uint unsigned int //宏定义 #define uchar unsigned char //宏定义

用定时器计数器设计一个简单的秒表

目录 摘要................................................................................................ 错误!未定义书签。 1 Proteus简介错误!未定义书签。 2 主要相关硬件介绍错误!未定义书签。 AT89C52简介错误!未定义书签。 四位数码管错误!未定义书签。 74LS139芯片介绍错误!未定义书签。 3 设计原理错误!未定义书签。 4 电路设计错误!未定义书签。 电路框图设计错误!未定义书签。 电路模块介绍错误!未定义书签。 控制电路错误!未定义书签。 译码电路错误!未定义书签。 数码管显示电路错误!未定义书签。 仿真电路图错误!未定义书签。 5 设计代码错误!未定义书签。 6 仿真图错误!未定义书签。 7 仿真结果分析错误!未定义书签。 8 实物图错误!未定义书签。 9 心得体会错误!未定义书签。 参考文献错误!未定义书签。

摘要 现在单片机的运用越来越宽泛,大到导弹的导航装置、飞机上各种仪表的控制、计算机的网络通讯与数据传输、工业自动化过程的实时控制和数据处理,小到广泛使用的各种智能IC卡、各种计时和计数器等等。本次课设我们要设计一个能显示计时状态和结果的秒表,它是基于定时器/计数器设计一个简单的秒表。 本次设计的数字电子秒表系统采用AT89C51单片机为中心器件,利用其定时器/计数器定时和记数的原理,结合显示电路、LED数码管以及外部中断电路来设计计时器。将软、硬件有机地结合起来,使得系统能够实现四位LED显示,显示时间为0~秒,计时精度为秒,能正确地进行计时,并显示计时状态和结果。其中软件系统采用汇编或者C语言编写程序,包括显示程序,定时中断服务,外部中断服务程序,延时程序等,并在keil中调试运行,硬件系统利用PROTEUS强大的功能来实现,简单切易于观察,在仿真中就可以观察到实际的工作状态。 关键词:秒表,AT89C51,proteus,C语言

中断及定时计数器

单片机的中断与定时器/计数器 中断就是停止当前的任务,去做另一个需要马上处理的任务,做完后再回去做原来的任务! P1.0P1.1P1.2P1.3P1.4P1.5P1.6P1.7RST/V PD P3.0/RXD P3.1/TXD P3.2/INT0P3.3/INT1P3.4/T0P3.5/T1P3.6/WR P3.7/RD XTAL2XTAL1V SS V CC P0.0P0.1P0.2P0.3P0.4P0.5P0.6P0.7EA/V PP PSEN P2.7P2.6P2.5P2.4P2.3P2.2P2.1P2.0 RST P3.0/RXD P3.1/TXD XTAL2XTAL1P3.2/INT0P3.3/INT1P3.4/T0P3.5/T1 GND V CC P1.7P1.6P1.5P1.4P1.3P1.2 P1.1/AIN1P1.0/AIN0P3.7 注:类似的还有Philips公司的 87LPC64,20引脚 8XC748/750/(751),24引脚 8X749(752),28引脚 8XC754,28引脚 等等 如上图 8051中有5个中断: P3.2和P3.3为外部中断INT0和INT1端口, P3.4和P3.5为定时器/计数器中断T0和T1端口, 以及一个串行口中断,(此内容暂时不讲) 8052中有6个中断,比8051多一个特殊的定时器/计数器中断。(暂时不讲) 外部中断: INT0和INT1 外部中断通过其对应的引脚来接受外部中断请求,触发方式有两种: 1.低电平触发,即得到地电位就触发中断。 2.负边沿触发,即由高电平降至低电平的瞬间触发。 区别在于低电平触发属于静态触发,只要是低电平就一定触发;而负边沿触发为动态触发,必须由高电平变为低电平的时候才会触发。 控制触发方式的开关为:IT 。 IT0和IT1分别对应控制INT0和INT1的触发方式。 0为低电平触发,1为负边沿触发。 例:外部中断INT0开启低电平触发: IT0=0; 定时器/计数器中断: T0和T1 它有两种工作模式:定时器与计数器。 1. 定时器模式下,单片机对内部时钟脉冲进行计数。不使用外部端口。 2. 计数器模式下,单片机对外部脉冲进行计数,使用外部端口,外部脉冲由外部对应

高速计数器

5.3 高速计数器 前面讲的计数器指令的计数速度受扫描周期的影响,对比CPU扫描频率高的脉冲输入,就不能满足控制要求了。高速计数器HSC用来累计比PLC扫描频率高得多的脉冲输入,利用产生的中断事件完成预定的操作。 一、高速计数器介绍 S7-200系列PLC设计了高速计数功能(HSC),其计数自动进行不受扫描周期的影响,最高计数频率取决于CPU的类型,CPU22x系列最高计数频率为30KHz。高速计数器在程序中使用时的地址编号用HC n来表示(在非正式程序中有时用HSC n),HC (HSC)表示编程元件名称为高速计数器,n为编号。 表5-3 高速计数器的数量与编号表 1.高速计数器输入端的连接 每个高速计数器对它所支持的时钟、方向控制、复位和启动都有专用的输入点,通过中断控制完成预定的操作。每个高速计数器专用输入点如表5-4所示。 注意:同一个输入端不能用于两种不同的功能。但是高速计数器当前模式未使用的输入端均可用于其他用途,如作为中断输入端或作为数字量输入端。每个高速计数器的3种中断的优先级由高到低,各个高速计数器引起的中断事件如表5-5所示。

S7-200系列PLC高速计数器HSC0~HSC5可以分别定义为四种工作类型:带有内部方向控制的单相计数器;带有外部方向控制的单相计数器;带有增/减计数脉冲输入的双相计数器;A/B相正交计数器。 根据有无复位输入和启动输入,每种高速计数器类型可以设定为三种工作状态:无复位且无启动输入;有复位但无启动输入;有复位且有启动输入。 HSC0~HSC5可以根据外部输入端的不同配置12种模式(模式0~模式11),高速计数器的工作模式见表6-4。 表6-5 高速计数器的控制字节(位)

定时器中断程序设计实验

实验一定时器/中断程序设计实验 一、实验目的 1、掌握定时器/中断的工作原理。 2、学习单片机定时器/中断的应用设计和调试 二、实验仪器和设备 1、普中科技单片机开发板 HC6800-EM3V3.0; 2、Keil uVision4 程序开发平台; 3、PZ-ISP 普中自动下载软件。 三、实验原理 805l 单片机内部有两个 16 位可编程定时/计数器,记为 T0 和 Tl。8052 单片机内除了 T0 和 T1 之外,还有第三个16位的定时器/计数器,记为T2。它们的工作方式可以由指令编程来设定,或作定时器用,或作外部脉冲计数器用。定时器T0由特殊功能寄存器TL0和TH0组成,定时器Tl由特殊功能寄存器TLl和TH1组成。定时器的工作方式由特殊功能寄存器TMOD编程决定,定时器的运行控制由特殊功能寄存器TCON编程控制。T0、T1在作为定时器时,规定的定时时间到达,即产生一个定时器中断,CPU转向中断处理程序,从而完成某种定时控制功能。T0、T1用作计数器使用时也可以申请中断。作定时器使用时,时钟由单片机内部系统时钟提供;作计数器使用时,外部计数脉冲由P3口的P3.4(或P3.5)即T0(或T1)引脚输入。 方式控制寄存器TMOD的控制字格式如下: 低4位为T0的控制字,高4位为T1的控制字。GATE为门控位,对定时器/计数器的启动起辅助控制作用。GATE=l时,定时器/计数器的计数受外部引脚输入电平的控制。由由运行控制位TRX(X=0,1)=1和外中断引脚(0INT或1INT)上的高电平共同来启动定时器/计数器运行;GATE=0时。定时器/计数器的运行不受外部输入引脚的控制,仅由TRX(X=0,1)=1来启动定时器/计数器运行。 C/-T 为方式选择位。C/-T=0 为定时器方式,采用单片机内部振荡脉冲的12 分频信号作为时钟计时脉冲,若采用12MHz的振荡器,则定时器的计数频率为1MHZ,从定时器的计数值便可求得定时的时间。C/-T=1为计数器方式。采用外部引脚(T0为P3.4,Tl为P3.5)的输入脉冲作为计数脉冲,当T0(或T1)输入信号发生从高到低的负跳变时,计数器加1。最高计数频率为单片机时钟频率的1/24。M1、M0二位的状态确定了定时器的工作方式,详见表。

三菱PLC高速计数器和编码器应用

三菱PLC高速计数器和编码器应用 编码器的作用相信大家会经常听到,但是,到底怎么用,相信很多人是一知半解,那么,今天陈老师就给大家分享一下具体的使用方法。使用编码器之前,我们需要先学习高速计数器的概念。 一、什么是高速计数器假如我们的PLC的X0点接入了一个按钮,在plc里面写入以下的程序,我们按住按钮1次,那么计数器就会记1,按2次就记2,… …我们按1000次了,计数器c0的常开触点就会闭合,这很好理解。 假如我1秒按一次,那么,人为去按,那么按个1000次就能导通。 重点来了,如果说我不接按钮,我接了个光电感应器或者编码器去感应,由机器去触发,机器运行的速度非常快,可能1秒按了几百次,甚至几百几千次,我们的X0的常开触点就感应不了了,那么怎么办,我们可以用高速计数器。 如下表,是我们的单相的高速计数器

假如我把光电感应器接到,X0,那么C235,就是它的专用的计数器,X0每感应到的每一个信号都会用C235进行计数,我们用以下程序就能把X0感应到的脉冲数存放到D235里面。(同理,C236记录的是X1的脉冲数;C237记录的是X2的脉冲数… …) 当然计数器的计数频率是有个极限的,普通的FX系列的X点,接受的速度是50KHz,就是1秒钟能接收导通50 000次。 二、编码器的使用(相对值编码器) 上图是一个编码器,转动上面的轴可以发出2个信号,每转动一定的角度,这2个输出都会闭合一定的次数,就像上面的光电感应器的接线一样,接线可以接到2个X点上面去。然后我们可以通过高速计数器来对它进行计数,从而知道它转动了多少距离。 它与前面那种一个点输入的感应器又不一样,编码器正转计数会增加,反转计数应该减少。 作用的话定位才能准确。这时我们需要用到下面另外一种高速计数器

s7-200高速计数器详细解说分析

s7-200高速计数器详细解说 1.高速计数器指令 普通计数器受CPU扫描速度的影响,是按照顺序扫描的方式进行工作。在没个扫描周期中,对计数脉冲只能进行一次累加;对于脉冲信号的频率比PLC的扫描频率高时,如果仍采用普通计数器进行累加,必然会丢失很对输入脉冲信号。在PLC中,对比扫描频率高的输入信号的计数可也使用高速计数器指令来实现。 CPU类型CPU221 CPU222 CPU224 CPU226 高速计数器数量 4 6 高速计数器编号HC0,HC3~HC5 HC0~HC5 1.高速计数器指令 HDEF HSC (1)定义高速计数器指令HDEF HDE指令功能是为某个要使用的高速计数器选定一种工作模式。每个高速计数器在使用前,都要用HDEF指令来定义工作模式,并且只能用一次。它有两个输入端:HSC为要使用的高速计数器编号,数据类型为字节型,数据范围为0~5的常数,分别对应HC0~ HC5;MOCE为高速计数的工作模式,数据类型为字节型,数据范围为0~11的常数,分别对应12种工作模式。当准许输入使能EN有效时,为指定的高速计数器HSC定义工作模式MODE。 (2)执行高速计数指令HSC HSC指令功能功能是根据与高速计数器相关的特殊继电器确定在控制方式和工作状态,使高速计数器的设置生效,按照指令的工作模式的工作模式执行计数操作。它有一个数据输入端N:N为高速计数器的编号,数据类型的字型,数据范围为0~5的常数,分别对应高速计数器HC0~HC5.当准许输入EN使能有效时,启动N号高速计数器工作。 2.高速计数器的输入端 高速计数器的输入端不像普通输入端那样有用户定义,而是由系统指定的输入点输入信号,每个高速计数器对它所支持的脉冲输入端,方向控制,复位和启动都有专用的输入点,通过比较或中断完成预定的操作。每个高速计数器专用的输入点如表

51单片机C语言程序 定时 计数器 中断

51单片机C语言程序定时计数器中断51单片机C语言程序定时计数器 中断 程序一 利用定时/计数器T0从P1.0输出周期为1s的方波,让发光二极管以1HZ闪烁, #include reg52.h//52单片机头文件 #include intrins.h//包含有左右循环移位子函数的库 #define uint unsigned int//宏定义 #define uchar unsigned char//宏定义 sbit P1_0=P1^0; uchar tt; void main()//主函数 { TMOD=0x01;//设置定时器0为工作方式1 TH0=(65536-50000)/256; TL0=(65536-50000)%256; EA=1;//开总中断 ET0=1;//开定时器0中断 TR0=1;//启动定时器0 while(1);//等待中断产生 } void timer0()interrupt 1 { TH0=(65536-50000)/256; TL0=(65536-50000)%256; tt++;

if(tt==20) { tt=0; P1_0=~P1_0; } } 程序二 利用定时/计数器T1产生定时时钟, 由P1口控制8个发光二极管, 使8个指示灯依次一个一个闪动, 闪动频率为10次/秒(8个灯依次亮一遍为一个周期),循环。 #include reg52.h//52单片机头文件 #include intrins.h//包含有左右循环移位子函数的库 #define uint unsigned int//宏定义 #define uchar unsigned char//宏定义 sbit P1_0=P1^0; uchar tt,a; void main()//主函数 { TMOD=0x01;//设置定时器0为工作方式1 TH0=(65536-50000)/256; TL0=(65536-50000)%256; EA=1;//开总中断 ET0=1;//开定时器0中断 TR0=1;//启动定时器0 a=0xfe; while(1);//等待中断产生 } void timer0()interrupt 1

用计数器中断实现100以内的按键计数

3.33 用计数器中断实现100以内的按键计数 一. 单片机系统功能简介: 本例利用计数器中断实现按键计数,这与此前的按键计数程序看起来比较相似,但是用方法完全不同。 本例用T0计数器中断实现按键计数,由于计数寄存器初值为1,因此P3.4引脚的每次负跳变都会触发T0中断,实现计数值累加。 二.单片机系统硬件电路设计: 2.1 proteus原理图: 2.2 原件清单:

三.软件设计: 3.1 主程序流程图: 3.2 程序清单: #include #define uchar unsigned char #define uint unsigned int uchar code DSY_CODE[]={0X3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x00 }; uchar Count=100; void main() { P0=0x00; P2=0x00; TMOD=0X06; TH0=TL0=256-1; ET0=1; EX0=1; EA=1; IP=0X02; IT0=1; TR0=1; while (1)

{ P0=DSY_CODE[Count/10]; P2=DSY_CODE[Count%10]; } } void Clear_Counter()interrupt 0 { Count=0; } void Key_Counter() interrupt 1 { Count=(Count-1)%100; } 四.系统调试 4.1 在PROTEUS7.5仿真步骤 1将程序在KEIL中编译,直到达到要求的功能为止; 2在PROTEUS中绘制硬件图(在PROTEUS仿真时可以不添加最小系统电路;实际电路中需要); 3将KEIL C中编译好的HEX文档加载到PROTEUS中; 4按下K1开始计数,按下K2可以清零。

基于PLC的高速计数器

高速计数器 概述 本例叙述SIMATIC S7-200的高速计数器(HSC)的一种组态功能。对来自传感性(如编码器) 信号的处理,高速计数器可采用多种不同的组态功能。 本例用脉冲输出(PLS)来为HSC产生高速计数信号,PLS可以产生脉冲串和脉宽调制信号, 例如用来控制伺服电机。既然利用脉冲输出,必须选用CPU 224DC/DC/DC。 下面这个例子,展示了用HSC和脉冲输出构成一个简单的反馈回路,怎样编制一个程序来实 现反馈功能。 例图 224 高速计数器输入

程序和注释 本例描述了S7-200 DC/DC/DC 的高速计数器(HSC)的功能。HSC 计数速度比PLC 扫描时间快得多,采用集成在CPU 224中的20K 硬件计数器进行计数。总的来说,每个高速计数器需要10个字节内存用来存控制位、当前值、设定值、状态位。 本程序长度为91个字。 // 主程序: // 在主程序中,首先将输出Q0.0置,0,因为这是脉冲输出功能的需要。再初始化高速计 // 数器HSC0,然后调用子程序0和1。 // HSC0起动后具有下列特性:可更新CV 和PV 值,正向计数。 // 当脉冲输出数达到SMD72中规定的个数后,程序就终止。 // 主程序 LD SM0.1 // 首次扫描标志(SM0.1=1)。 R Q0.0,1 // 脉冲输出Q0.0复位(Q0.0=0)。 MOVB 16#F8,SMB37 // 装载HSC0的控制位: // 激活HSC0,可更新CV ,可更新PV , // 可改变方向,正向计数。 // HSC 指令用这些控制位来组态HSC 。 MOVD 0,SMD38 // HSC0当前值(CV )为0。 MOVD 1000,SMD42 // HSC0的第一次设定值(PV )为1000。 HDEF 0,0 // HSC0定为模式0。 CALL 0 // 调用子程序0。 CALL 1 // 调用子程序1。 MEND // 主程序结束。 // * * * * * * * * * * * * * * * * * * * * // 子程序0: …………. INT1 INT0 INT2 …………. …………. 1000 1500 1000

三菱F系列PLC特殊功能寄存器M指令代码详细功能介绍

三菱F系列P L C特殊功能寄存器M指令代码 详细功能介绍 Document serial number【LGGKGB-LGG98YT-LGGT8CB-LGUT-

M8000:上电接通 M8001:上电断开 M8002:初始化脉冲(首次扫描接通) M8003:初始化脉冲(首次扫描断开) M8004:错误发生(FX3UC时M8060,M8061,M8064,M8065,M8066,M8067其中哪一个ON时动作;FX3UC以外M8060,M8061,M8063, M8064,M8065,M8066,M8067其中哪一个ON时动作) M8005:电池电压降低(电池电压异常降低时动作) M8006:电池电压降低锁存(电池电压异常降低时动作保持) M8007:瞬间停止检测(当M8007为ON的时间小于D8008,PLC将继续运行) M8008:停电检测(当M8008电源关闭时,M8000也关闭) M8009:DC24V故障 M8011:10ms时钟脉冲 M8012:100ms时钟脉冲 M8013:1s时钟脉冲 M8014:1min时钟脉冲 M8015:内存实时脉冲(计时停止以及预先装置) M8016:内存实时脉冲(显示停止,时刻读出显示的停止) M8017:内存实时脉冲(补正,±30s补正) M8018:内存实时脉冲(安装,安装检测) M8019:内存实时脉冲错误

M8020:零位标志,加减演算结果为0 M8021:借位标志,演算结果成为最大的负数值以下时 M8022:进位标志,进位发生在ADD(FNC20)指令期间或当数据移位操作的结果发生溢出时。 M8023:小数点演算标志,ON:进行浮点运算。 M8024:BMOV方向指定,转送方向替换,数据从终点到源的方向转送。 M8029:指令结束,DSW(FNC72)等等的动作结束时动作 M8030:电池LED消灯指令,当驱动M8030时,及时电池电压降低,PLC面板的LED也不会点亮。 M8031:非锁存内存全部清除 M8032:锁存内存全部清除 M8033:内存保持停止,ON时内存保持,当PLC从RUN→STOP,图像存储或者数据存储的内容保持原来状态。 M8034:所有输出禁止 M8035:强制RUN模式 M8036:强制RUN指令 M8037:强制STOP指令 M8038: ON时,通讯参数被设定;在FX2、FX2C里,作为RAM文件寄电器全部删除动作。M8074=1,M8038=1,D6000-D7999文件寄电器被删除。

s7-200高速计数器使用技巧

s7-200高速计数器详细解说 一、高速计数器 普通计数器是通过两次扫描中输入端子的电平变化实现计数的,可以用普通的寄存器通过加1指令实现。特点是受扫描的影响,只能用于低频脉冲计数。高速脉冲使用PLC内部的高速计数器,各种PLC都内置高速计数器。S7-200 CPU具有集成的、硬件高速计数器。 CPU221和CPU222可以使用4个30kHz单相高速计数器或2个20kHz的两相高速计数器,而CPU224和CPU226可以使用6个30kHz单相高速计数器或4个20kHz的两相高速计数器。 高速计数器的主要功能就是对主机实际转速反馈进行测量,这是电子调速器的一项重要 功能,因为主机实际转速反馈测量的准确与否直 接关系到保证主机转速稳定,保证主机运行的安 全。重点介绍了S7-200 PLC高速计数器。在开 发研制中发现,采用S7-200 PLC高速计数器可 以非常准确地对电动机实际转速反馈进行测量, 而且硬件实现非常简单,价格也比较低,具有很 大的应用价值。 (一)概述 普通计数器是通过两次扫描输入端子电平 变化来进行计数的,因此其端子输入脉冲的频率 必须必扫描频率低得多。对于高速脉冲而言,这 种方法会出现丢失脉冲导致计数错误。S7-200 内置了高速计数器HSC,其工作情况类似于单 片机中的计数器。起动后不受扫描周期的影响, 由硬件自动计数,当满足一定条件时发出中断申 请。其最高技术频率高达30KHz。 S7-200的计数器最多可以设置12种不同的 工作模式,用于实现高速运动的精确控制。 S7-200还设有高速脉冲输出,输出频率可 以高达20KHz。用于PTO(脉冲串输出,输出 一个频率可调,占空比50%的脉冲。)和PWM(脉宽调制脉冲)。PTO用于带有位置控制功能的步进电机控制或者伺服电机驱动器控制,通过输出脉冲的个数作为位置给定值的输入,以实现定位控制功能。通过改变脉冲的输出频率,可以改变运动的速度。PWM用于直接驱动调速系统或运动控制系统的输出,控制主逆变回路。 1.高速计数器指令 普通计数器受CPU扫描速度的影响,是按照顺序扫描的方式进行工作。在没个扫描周期中,对计数脉冲只能进行一次累加;对于脉冲信号的频率比PLC的扫描频率高时,如果仍采用普通计数器进行累加,必然会丢失很对输入脉冲信号。在PLC中,对比扫描频率高

三菱plc高速计数器和编码器应用

三菱plc高速计数器和编码器应用 编码器的作用相信大家会经常听到,但是,到底怎么用,相信很多人是一知半解,那么,今天陈老师就给大家分享一下具体的使用方法。使用编码器之前,我们需要先学习高速计数器的概念。 一、什么时高速计数器 假如我们的plc的X0点接入了一个按钮,在plc里面写入以下的程序,我们按住按钮1次,那么计数器就会记1,按2次就记2,… …我们按1000次了,计数器c0的常开触点就会闭合,这很好理解。 假如我1秒按一次,那么,人为去按,那么按个1000次就能导通。 重点来了,如果说我不接按钮,我接了个光电感应器或者编码器去感应,由机器去触发,机器运行的速度非常快,可能1秒按了几百次,甚至几百几千次,我们的X0的常开触点就感应不了了,那么怎么办,我们可以用高速计数器。 如下表,是我们的单相的高速计数器 假如我把光电感应器接到,X0,那么C235,就是它的专用的计数器,X0每感应到的每一个信号都会用C235进行计数,我们用以下程序就能把X0感应到的脉冲数存放到D235里面。(同理,C236记录的是X1的脉冲数;C237记录的是X2的脉冲数… …)

当然计数器的计数频率是有个极限的,普通的FX系列的X点,接受的速度是50KHz,就是1秒钟能接收导通50 000次。 接下来,看看编码器是怎么使用的。 二、编码器的使用(相对值编码器) 右图是一个编码器,转动上面的轴可以发出2个信号,每转动一定的角度,这2个输出都会闭合一定的次数,就像上面的光电感应器的接线一样,接线可以接到2个X点上面去。然后我们可以 通过高速计数器来对它进行计数,从而知道它转动了多少距离。它与前面那种 一个点输入的感应器又不一样,编码器正转计数会增加,反转计数应该减少。 作用的话定位才能准确。这时我们需要用到下面另外一种高速计数器 如下图: 我们可以选用C251到C255这几个计数器,假如我的编码器接的是X0和X1(接线后面再讲),那么选用的就是C251,我们来写一段程序看看: 这样,我们就把编码器记录的位置记录在D0、D1两个寄存器里面了。 最后我们来看看接线。 三、编码器的接线 如下图,我们选择一款编码器进行接线,先来看看原理

相关文档
最新文档