西门子6ES7 321-1BH50-0AA0全新原装 西门子6ES7 321-1BH50-0AA0现货
主要经营范围:
PLC及 模块:S7-200、 S7-300、 S7-400、S7-1200,S7-1500,ET-200系列
变 频 器:MM420、 MM430、 MM440、 6SE70、 6RA70,V20,V60,V90系列
触 摸 屏:OP27、 OP37、 OP270、 OP370,TD200, TD400C, K-TP OP177 TP177,MP277, MP377,等系列
数 控:6SN、1FT、6FC、6FX,1FK等系列
主要优势:
逻辑控制模块: LOGO!230RC、230RCO、230RCL、24RC、24RCL
SITOP直流电源: 24V DC 1.3A、2.5A、3A、5A、10A、20A、40A可并联.
数控伺服停产备件:(6FC,6SN全系列)
全数字直流调速装置: 6RA23、6RA24、6RA28、6RA70、6SE70系列
SIEMENS 数控 伺服
SINUMERIK:801、802S 、802D、802D SL、810D、840D、611U、S120
系统及伺报电机,力矩电机,直线电机,伺服驱动等备件销售
SIEMENS S7系列
S7-400(优势产品,库存量大)
S7-300(优势产品,库存量大)
S7-200 (优势产品,库存量大)
SIEMENS 其他产品
PLC周边产品(编程电缆,前连接器,导轨)
PLC编程软件
规 格:德国Siemens原产出品;凡所购公司产品,均按原厂质保一年。
品牌:西门子SIEMENS 触摸屏 (西门子全新原装正品)
【信誉**、诚信交易】【长期销售、安全稳定】
【信任买卖、质量保证】【诚信为本、长久合作】
【产品质量、质保一年】【买的舒心、用的放心】
【称心满意、服务动力】【真诚面对、沟通无限】
【服务**、一诺千金】【质量承诺、客户满意】
《销售态度》:质量保证、诚信服务、及时到位!
《销售宗旨》:为客户创造价值是我们永远追求的目标!
《服务说明》:现货配送至全国各地含税(13%)含运费!
《产品质量》:原装正品,全新原装!
《产品优势》:专业销售 薄利多销 信誉好,口碑好,价格低,货期短,大量现货,服务周到!
我店只销售西门子原装正品,享受西门子免费1年保修,欢迎选购!
1 前言
单片机内部一般有若干个定时器。如8051单片机内部有定时器0和定时器1。在定时器计数溢出时,便向CPU发出中断请求。当CPU正在执行某指令或某中断服务程序时,它响应定时器溢出中断往往延迟一段时间。这种延时虽对单片机低频控制系统影响甚微,但对单片机高频控制系统的实时控制精度却有较大的影响,有时还可能造成控制事故。为扩大单片机的应用范围,本文介绍它的定时器溢出中断与CPU响应中断的时间误差、补偿误差的方法和实例。
2 误差原因、大小及特点
产生单片机定时器溢出中断与CPU响应中断的时间误差有两个原因。一是定时器溢出中断信号时,CPU正在执行某指令;二是定时器溢出中断信号时,CPU正在执行某中断服务程序。
2.1. CPU正在执行某指令时的误差及大小
由于CPU正在执行某指令,因此它不能及时响应定时器的溢出中断。当CPU执行此指令后再响应中断所延迟的较长时间为该指令的指令周期,即误差的值为执行该指令所需的时间。由于各指令都有对应的指令周期,因此这种误差将因CPU正在执行指令的不同而不同。如定时器溢出中断时,CPU正在执行指令MOV A, Rn,其误差为1个机器周期。而执行指令MOV Rn, direct时,其误差为2个机器周期。当CPU正在执行乘法或除法指令时,时间误差可达4个机器周期。在8051单片机指令系统中,多数指令的指令周期为1~2个机器周期,因此时间误差一般为1~2个机器周期。若振荡器振荡频率为fosc,CPU正在执行指令的机器周期数为Ci,则时间误差为Δtmax1=12/fosc×Ci(us)。例如fosc=12MHZ,CPU正在执行乘法指令(Ci=4),此时的
时间误差为:
Δtmax1=12/fosc×Ci=12/(12×106)×4=4×10-6(s)=4(μs)
2.2 CPU正在执行某中断服务的程序时的误差及大小
定时器溢出中断信号时,若CPU正在执行同级或高**级中断服务程序,则它仍需继续执行这些程序,不能及时响应定时器的溢出中断请求,其延迟时间由中断转移指令周期T1、中断服务程序执行时间T2、中断返回指令的指令周期T3及中断返回原断点后执行下一条指令周期T4(如乘法指令)组成。中断转移指令和中断返回指令的指令周期都分别为2个机器周期。中断服务程序的执行时间为该程序所含指令的指令周期的总和。因此,时间误差Δtmax2为:
Δtmax2=(T1+T2+T3+T4)12/fosc=(2+T2+2+4)12/ fosc=12(T2+8)/ fosc
若设fosc=12MHZ,则时间误差为:
Δtmax2=12(T2+8)/ fosc =12(T2+8)/12×106=(T2+8)×10-6(s)=T2+8(μs)。
由于上式中T2一般大于8,因此,这种时间误差一般取决于正在执行的中断服务程序。当CPU正在执行中断返回指令RETI、或正在读写IE或IP指令时,这种误差在5个机器周期内。
2.3 误差非固定性特点
定时器溢出中断与CPU响应中断的时间误差具有非固定性特点。即这种误差因CPU正在执行指令的不同而有相当大的差异。如CPU正在执行某中断服务程序,这种误差将远远大于执行一条指令时的误差。后者误差可能是前者误差的几倍、几十倍、甚至更大。如同样只执行一条指令,这种误差也有较大的差别。如执行乘法指令MUL AB 比执行MOV A, Rn指令的时间误差增加了3个机器周期。这种误差的非固定不仅给误差分析带来不便,同时也给误差补偿带来困难。
3 误差补偿方法
由于定时器产生溢出中断与CPU响应中断请求的时间误差具有非固定性,因此,这种误差很难用常规方法补偿。为此,本文介绍一种新方法。现介绍该方法的基本思路、定时器新初值及应用情况。
3.1 基本思路
为使定时器溢出中断与CPU响应中断实现同步,该方法针对中断响应与中断请求的时间误差,对定时器原有的计数初值进行修改,以延长定时器计数时间,从而补偿误差。在该方法中,当定时器溢出中断得到响应后,即停止定时器的计数,并读出计数值。该计数值是定时器溢出后,重新从OOH开始每个机器周期继续加1所计的值。然后,将这个值与定时器的停止计数时间求和。若在定时器原计数初值中减去这个和形成新计数初值,则定时器能在新计数初值下使溢出中断与CPU响应中断实现同步,从而达到误差的补偿要求。
3.2 定时器新计数初值
若定时器为计数方式,操作方式为1,则计数器初值X0=216-t0×fosc/12。式中fosc为振荡器的振荡频率。t0为需要定时的时间,也为中断的间隔时间。X0为定时器原计数初值。在对定时器溢出中断与CPU响应中断时间误差进行补偿时,定时器的新计数初值X1为:
X1=216-t3× fosc/12
t3=t0+t1+t2
式中t0为中断间隔时间。t1为定时器停止计数时间,该时间为定时器停止计数到重新启动计数之间所有程序指令周期数的总和。t2为定时器溢出中断后,重新从OOH开始直至计数器停止时计的值。在误差补偿中,若将定时器计数初值X1取代X0,则可使定时器下次的溢出中断与CPU响应中断实现同步。
3.3 实例
要求补偿定时器每1ms产生一次溢出中断时的中断响应延迟的误差。若振荡器振荡频率fosc=12MHZ,定时器工作在计数方式,工作模式为1,则补偿中断响应时间误差时的定时器新初值X1为:
X1=216-t3× fosc/12=216-(t0+ t1)- t2=216-(1000+ 13)- t2