高速计数器
![高速计数器](https://img.360docs.net/img21/010d3j8kf8nj80y0l9m9-11.webp)
![高速计数器](https://img.360docs.net/img21/010d3j8kf8nj80y0l9m9-a2.webp)
1 引言
切纸机械是印刷和包装行业最常用的设备之一。切纸机完成的最基本动作是把待裁切的材料送到指定位置,然后进行裁切。其控制的核心是一个单轴定位控制。我公司引进欧洲一家公司的两台切纸设备,其推进定位系统的实现是利用单片机控制的。控制过程是这样的,当接收编码器的脉冲信号达到设定值后,单片机系统输出信号,断开进给电机的接触器,同时电磁离合制动器的离合分离,刹车起作用以消除推进系统的惯性,从而实现精确定位。由于设备的单片机控制系统老化,造成定位不准,切纸动作紊乱,不能正常生产。但此控制系统是早期产品,没有合适配件可替换,只能采取改造这一途径。目前国内进行切纸设备进给定位系统改造主要有两种方式,一是利用单片机结合变频器实现,一是利用单片机结合伺服系统实现,不过此两种改造方案成本都在两万元以上。并且单片机系统是由专业开发公司设计,技术保守,一旦出现故障只能交还原公司维修或更换,维修周期长且成本高,不利于改造后设备的维护和使用。我们结合自己设备的特点提出了新的改造方案,就是用PLC的高速计数器功能结合变频器的多段速功能实现定位控制,并利用HMI(人机界面HumanMachineInterface)进行裁切参数设定和完成一些手动动作。
2 改造的可行性分析
现在的大多PLC都具有高速计数器功能,不需增加特殊功能单元就可以处理频率高达几十或上百KHz的脉冲信号,而切纸机对进给系统的精度和响应速度要求不是很高。可以通过对切纸机进给系统相关参数的计算,合理的选用编码器,让脉冲频率即能在PLC处理的范围内又可以满足进给的精度要求。在进给过程中,让PLC对所接收的脉冲数与设定数值进行比较,根据比较结果驱动相应的输出点对变频器进行输出频率的控制,实现接近设定值时进给速度变慢,从而减小系统惯性,达到精确定位的目的。另外当今变频器技术取得了长足的发展,使电机在低速时的转矩大幅度提升,从而也保证了进给定位时低速推进的可行性。
3 主要控制部件的选取
3.1 PLC的选取
设备需要的输入输出信号如下:
x0脉冲输入
x1脉冲输入
x2前限位
x3后限位y3 前进!
x4前减速位y4 后退
x5电机运转信号y5 高速
x6刀上位y6 中速
x7滑刀保护y7 低速
x10压纸器上位y10
x11光电保护y11
x12小车后位y12 进给离合
x13双手下刀按钮y13 压板下
x14停止按钮y14 刀离合
x15连杆保护y15 电机禁启动
x16刀回复到位
针对这些必需的输入点数,选用了FX1s-30MR的PLC,因为选用了人机界面,其它一些手动动作,如前进、后退、换刀等都通过人机界面实现,不需占用PLC输入点,从而为选用低价位的FX1s系列PLC成为可能,因为FX1s系列PLC输入点最多只有16点。另外此系列PLC的高速计数器具有处理频率高达60千赫的脉冲的能力,足可以满足切纸机对精度的要求。
3.2 编码器的选取
编码器的选取要符合两个方面,一是PLC接收的最高脉冲频率,二是进给的精度。我们选用的是编码器分辨率是500P/R(每转每相输出500个脉冲)的。通过验正可以知道此分辨率可以满足上面两个条件。验证所需的参数:电机最高转速是1500转/分(25转/秒)、进给丝杆的导程是10mm/转。验证如下:
本系统脉冲最高频率=25转/秒×500个/转×2(A/B两相)=25KHz
理论进给分辨率=10mm/500=0.02mm
同时由上面的数据知道进给系统每走1mm编码器发出50(此数据很重要,在PLC程序的数据处理中要用到)个脉冲信号。由于此工程中对编码器的A/B 相脉冲进行了分别计数,使用了两个高速计数器,且在程序中应用了高速定位指令,则此PLC可处理的最高脉冲频率为30千赫,因此满足了第一个条件;我们的切纸机的载切精度要求是0.2mm,可知理论精度完全满足此要求。
3.3 变频器和HMI的选取
这两个部件我们都选用了三菱公司的产品,分别是FR-E540-0.75K-CH和
F920GOT-BBD-K-C。
4 F920GOT-BBD-K-C的特点:
F920GOT是带按键型的HMI,它的使用和编程非常简单方便。它具有以下特点:1)可以方便的实现和PLC的数据交换;2)通过本身自带的6个功能按键开关,可以控制PLC 内部的软继电器,从而可以减少PLC输入点的使用;3)具有两个通讯口,一个RS232C(用于和个人电脑通讯)和一个RS422(用于和PLC通讯),利用电脑和F920GOT相连后不仅可以对HMI进行程序的读取和上传,还可以直接对PLC的程序进行上传下载、调整和监控。
5 PLC和HMI程序的编写
此工程中程序的难点主要在于数据的处理上。在切纸机工作过程中除手动让进给定位机构前进后退外,还要实现等分裁切功能和指定具体位置定位功能,并且HMI上还要即时显示定位机构的当前位置。我们为了简化程序中的计算,采用了两个高速计数器C235和
C236。C236通过计算前进后退的脉冲数,再进行换算后用于显示进给机构的当前位置;C235用于进行精确定位。定位过程是这样的,每次进给机构需要定位工作时,通过计算把需要的脉冲数送到C235,不论进给机构前进还是后退C235进行减计数,同时对C235中的数值进行比较,根据比较结果驱动相应的输出点对变频器进行输出频率的控制,实现接近设定值时进给速度变慢,从而达到精确定位。因为任何系统都有惯性和时间上的迟滞,所以变频器停止输出的时间并不是C235中的计数值减小到0时,而是让C235和一个数据寄存器D130比较,当C235中的值减小到D130中的设定值时PLC控制变频器停止输出。D130的值可通过人机界面进行修改和设定,在调试时通过修改这个值,以达到定位准确的目的。显示定位机构当前位置的程序见下图1,
图1显示定位机构当前位置程序段
实现定位控制的程序段见下图2。
图2定位程序段
还有一个问题是参数设定时的小数点位问题,实际工作中在设定位置时要精确到
0.1mm。这个问题在一些单片机系统中常会遇到,常见的处理办法是加大一个数量级,就是设定数据时,在人机界面上用1代替0.1mm,10代替1mm。不过我们在处理此问题时通过HMI中对数据的设置和PLC的程序编写达到了所见即所得的效果。HMI中主要是对数值的格式要设定好。HMI中的设置画面见下图。
图3HMI中数据设置画面
比如我要等分裁切10.5mm的纸,就可以在HMI上设定为10.5,而不是像我公司其它设备上要设为105,但PLC的寄存器D128的内容是105而不是10.5,这样在计算需要的脉冲数时就要用下面一条命令:
MULD128K5D10(此命令中尽管编程时D11不出现但实际上寄存器D11被占用,不能再应用于其它地方,否则会出现问题。)
而不是用:
MULD128K50D10
编程中其它应注意的问题。一是双线圈问题。本工程中利用条件跳转和步进指令避免了双线圈问题。二是误信号问题。编码器是一种比较精密的光电产品,受振动时不可避免的会出现误信号,而切纸机在执行裁切动作时会造成很大振动,如果忽视这个现象,定位精度和执行机构当前位置的显示都会不准确。本工程中处理方法参见上面例子程序图1,只有Y3、Y4接通,即只有进给机构前进和后退时才让C236进行计数,这样就屏蔽了裁切时震动造成的误信号。
6 变频器的参数设置
此工程中需设定的变频器的主要参数见下。
参数号名称设定值
0 转矩提升8%(低速时电机转矩不足时可提高此数字)
43 速设定(高速)30Hz
53 速设定(中速)10Hz
63 速设定(低速)2Hz
7 加速时间0.5s
8 减速时间0.5s
24 多段速设定(4速)50Hz
79 操作模式2(只执行外部操作)
在调试过程中为了达到定位速度和精度的完美结合,应对三段速设定值,加减速时间和HMI中D130、D200和D202的数值进行相应调整。
7 结论
通过上述的改造过程,完全恢复了我们切纸机的功能,试用三个月以来运行非常稳定。由这个应用实例可以看出结合PLC的高速计数器功能,合理的进行应用,在一定场合可以取代高成本的定位控制系统,实现控制系统最优的性价比。也迎合了我国当前提出的建设节约型社会的宗旨。
西门子PLCS高速计数器指令用法
高速计数器计数器 输入/输出操作数数据类型 N常数(0,1,2,3,4或5)字 内存范围错误S7-200 CPU指令支持SIMATIC/国际助记符 数据范围CPU内存中的指令大小编址内存 高速计数器(HSC)指令根据HSC特殊内存位的状态配置和控制高速计数 器。参数N指定高速计数器的号码。 高速计数器最多可配置为十二种不同的操作模式。 每台计数器在功能受支持的位置有专用时钟、方向控制、复原和起始输入。 对于双相计数器,两个时钟均可按最高速度运行。在正交模式中,您可以 选择一倍\(1x)或四倍(4x)的最高计数速率。所有的计数器按最高速率 运行,而不会相互干扰。 注释: CPU 221和CPU 222支持4台高速计数器 (HSC0、HSC3、HSC4、HSC5) CPU 221和CPU 222不支持HSC1和HSC2 CPU 224、CPU224XP、CPU 226支持6台高速计数器 (HSC0至HSC5) 您可以为每台高速计数器使用一条"高速计数器定义"指令。文档光盘中"提 示与技巧"中的第4条提示和第29条提示提供使用高速计数器的程序。 设置ENO = 0的错误条件: 0001 HSC在HDEF之前 0005 HSC/PLS同步 程序举例 LAD FBD
STL NETWORK 1 // 主程序 // 首次扫描时,调用SBR_0 LD SM0.1 CALL SBR_0 NETWORK 1 // 子程序0开始 // 配置HSC1 LD SM0.1 // 首次扫描时 MOVB 16#F8 SMB47 // 配置HSC1:// - 启用计数器 // - 写入新当前值
0-99手动计数器的设计要点
┊┊┊┊┊┊┊┊┊┊┊┊┊装┊┊┊┊┊订┊┊┊┊┊线┊┊┊┊┊┊┊┊┊┊┊┊┊ 第1章绪论 1.1 计数器介绍 本设计是根据我们所学习的单片机课程,按照课程要求进行的课程设计。单片机技术是一个不可或缺的技术,尤其是对于我们电气专业来说它是我们必须要掌握的技能之一,使我们未来工作和生活的根本。现在的社会是一个信息科技高速发展的社会,也是一个电子技术和微机计算机迅速发展的时代,单片机的档次和水平在不断的提高,其应用的领域和范围也越来越广,成为现代电子系统中最重要的智能化核心部分。 随着计数器技术的不断发展与进步,计数器的种类越来越多,应用的范围越来越广,随之而来的竞争也越来越激烈。过硬的技术也成为众多生产厂商竞争的焦点之一。厂商为了在竞争中处于不败之地,从而不断地改进技术,增加产品的种类。 现计数器的种类以增加到:电磁计数器、电子计数器、机械计数器(拉动机械计数器、转动机械计数器、按动机械计数器、测长机械计数器)、液晶计数器等。计数器的应用范围也遍布印刷、纺织、印染、针织、电缆、电讯、军工、轻工、机械、开关、断路器、矿山、实行多班制的纺织行业的织布机、织带机、制线、制带、造纸、制革、薄膜、高压开关电器产品、试验设备,印刷设备、短路器、医疗、纺织、机械、仓库和码头的货运、行人及车辆过往的数量计数、冶金、食品、国防、包装、配料、石油、化工、发电、机床、仪表、自动化控制等行业。 1.2 本次设计的要求 1) 上电时,数码管显示为00。 2) 利用单片机来制作一个手动计数器,在单片机的管脚上接一个轻触开关,作为手动计数的按钮,用单片机的I/O口接数码管,作为计数器,进行加计数显示。 3) 计数器计数到99后,再按计数按钮,则数码管从00重新开始计数。 1.3 本次设计的目的 1) 学习基本理论在实践中综合运用的初步经验,掌握电路设计的基本方法、设计步骤,培养综合设计与调试能力。 2) 掌握汇编语言程序设计方法。 3) 培养实践技能,提高分析和解决实际问题的能力。
实验三单片机定时计数器实验
实验三单片机定时/计数器实验 1、实验目的 1、学习计数器的使用方法。 2、学习计数器程序的编写。 3、学习定时器的使用方法。 4、学习定时器程序的编写。 5、熟悉汇编语言 2、实验说明 1、8051内部定时计数器T0,按计数器模式和方式1工作,对P3.4(T0)引脚进行计数。将其数值按二进制数在P1口驱动LED灯上显示出来。 2、用CPU内部定时器中断方式计时,实现每一秒钟输出状态发生一次反转 3、实验仪器和条件 计算机 伟福实验箱(lab2000P) 4、实验内容 1、8051内部定时计数器T0,按计数器模式和方式1工作,对P3.4(T0)引脚进行计数。将其数值按二进制数在P1口驱动LED灯上显示出来。 2、外部事件计数脉冲由P3.4引入定时器T0。单片机在每个机器周期采样一次输入波形,因此单片机至少需要两个机器周期才能检测到一次跳变。这就要求被采样电平至少维持一个完整的机器周期,以保证电平在变化之前即被采样。同时这就决定了输入波形的频率不能超过机器周期频率。 3、用CPU内部定时器中断方式计时,实现每一秒钟输出状态发生一次反转 4、定时器有关的寄存器有工作方式寄存器TMOD和控制寄存器TCON。TMOD
用于设置定时器/计数器的工作方式0-3,并确定用于定时还是用于计数。TCON 主要功能是为定时器在溢出时设定标志位,并控制定时器的运行或停止等。 5、在例程的中断服务程序中,因为中断定时常数的设置对中断程序的运行起到关键作用,所以在置数前要先关对应的中断,置数完之后再打开相应的中断。 五、思考题 1、使用其他方式实现本实验功能; 2、改为门控方式外部启动计数; 3、如果改为定时间隔为200us,如何改动程序; 4、使用其他方式实现本实验功能,例如使用方式1,定时间隔为10ms,如何改动程序。 六、源程序修改原理及其仿真结果 思考题一:使用其他方式实现本实验功能 方法一: movTMOD, #00000100b;方式0,记数器 movTH0, #0 movTL0, #0 setbTR0;开始记数;由于方式0的特点是计数时使用TL0的低五位和八位 TH0,故用加法器a用“与”(ANL)取TL0的低五位,再用yiwei子程序实现TH0的低三位变为高三位与TL0相加,这样赋给P1时就是八位计数的结果。 Loop: mova,TL0 anla,#1fh
计数器工作原理及应用
计数器工作原理及应用 除了计数功能外,计数器产品还有一些附加功能,如异步复位、预置数(注意,有同步预置数和异步预置数两种。前者受时钟脉冲控制,后者不受时钟脉冲控制)、保持(注意,有保持进位和不保持进位两种)。虽然计数器产品一般只有二进制和十进制两种,有了这些附加功能,我们就可以方便地用我们可以得到的计数器来构成任意进制的计数器。下面我们举两个例子。在这两个例子中,我们分别用同步十进制加法计数器74LS160构成一个六进制计数器和一个一百进制计数器。 因为六进制计数器的有效状态有六个,而十进制计数器的有效状态有十个,所以用十进制计数器构成六进制计数器时,我们只需保留十进制计数器的六个状态即可。74LS160的十个有效状态是BCD编码的,即0000、0001、0010、0011、0100、0101、0110、0111、1000、1001[图5-1]。 图5-1 我们保留哪六个状态呢?理论上,我们保留哪六个状态都行。然而,为了使电路最简单,保留哪六个状态还是有一点讲究的。一般情况下,我们总是保留0000和1001两个状态。因为74LS160从100 1变化到0000时,将在进位输出端产生一个进位脉冲,所以我们保留了0000和1001这两个状态后,我们就可以利用74LS160的进位输出端作为六进制计数器的进位输出端了。于是,六进制计数器的状态循环可以是0000、0001、0010、0011、0100和1001,也可以是0000、0101、0110、0111、1000和1001。我们不妨采用0000、0001、0010、0011、0100和1001这六个状态。 如何让74LS160从0100状态跳到1001状态呢?我们用一个混合逻辑与非门构成一个译码器[图5. 3.37b],当74LS160的状态为0100时,与非门输出低电平,这个低电平使74LS160工作在预置数状态,当下一个时钟脉冲到来时,由于等于1001,74LS160就会预置成1001,从而我们实现了状态跳跃。
三菱高速计数器应用
三菱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不能重复使用,即某一个输入端已被某个高速计数器占用,它就不能再用于
倒计数计数器程序
#include
计数器原理分析及应用实例
计数器原理分析及应用实例 除了计数功能外,计数器产品还有一些附加功能,如异步复位、预置数(注意,有同步预置数和异步预置数两种。前者受时钟脉冲控制,后者不受时钟脉冲控制)、保持(注意,有保持进位和不保持进位两种)。虽然计数器产品一般只有二进制和十进制两种,有了这些附加功能,我们就可以方便地用我们可以得到的计数器来构成任意进制的计数器。下面我们举两个例子。在这两个例子中,我们分别用同步十进制加法计数器74LS160构成一个六进制计数器和一个一百进制计数器。 因为六进制计数器的有效状态有六个,而十进制计数器的有效状态有十个,所以用十进制计数器构成六进制计数器时,我们只需保留十进制计数器的六个状态即可。74LS160的十个有效状态是BCD编码的,即0000、0001、0010、0011、0100、0101、0110、0111、1000、1001[图5-1]。 图5-1 我们保留哪六个状态呢?理论上,我们保留哪六个状态都行。然而,为了使电路最简单,保留哪六个状态还是有一点讲究的。一般情况下,我们总是保留0000和1001两个状态。因为74LS160从1001变化到0000时,将在进位输出端产生一个进位脉冲,所以我们保留了0000和1001这两个状态后,我们就可以利用74LS160的进位输出端作为六进制计数器的进位输出端了。于是,六进制计数器的状态循环可以是0000、0001、0010、0011、0100和1001,也可以是0000、0101、0110、0111、1000和1001。我们不妨采用0000、0001、0010、0011、0100
和1001这六个状态。 如何让74LS160从0100状态跳到1001状态呢?我们用一个混合逻辑与非门构成一个译码器[图5.3.37b],当74LS160的状态为0100时,与非门输出低电平,这个低电平使74LS160工作在预置数状态,当下一个时钟脉冲到来时,由于等于1001,74LS160就会预置成1001,从而我们实现了状态跳跃。 图5.3.37b用置数法将74160接成六进制计数器(置入1001) 比这个方案稍微繁琐一点的是利用74LS160的异步复位端。下面这个电路中[图5.3.34],也有一个由混合逻辑与非门构成的译码器。 图5.3.34用置零法将74LS160接成六进制计数器
c++计数器的使用方法
C++计数器的使用方法 在可视化编程时,常常会用到计数器,大部分人都会为所在的类添加一个成员变量,这个成员变量在程序中将会是全局变量,所以每次对他的操作,下次还会有记录,所以用它来当计数器。为什么不能在类中的函数里写一个变量来计数呢?因为在函数中的变量生存周期只在当前函数中存活,一旦这个函数运行完,这个变量会释放,下次再用的时候没有保留上次的值,所以当然不能做计数器啦。那么有人会问了,还有别的方法吗,答案是肯定的。请看下面两个简单的实例,观察运行结果 实例一 #include "stdafx.h" #include