基于PLC的高速计数器
基于PLC的高速计数器设计

在设计实现高速计数器的过程中,需要确定系统处 理的信号类型 、电 压 电 流 范 围 等 指 标 ,以 便 确 定 通 道 电 路,进行系统的硬件选型。本文设计的高速计 数器,主 要处理工业过 程 控 制 中 的 增 量 编 码 器 、光 电 传 感 器 、接 近开关等脉冲发生设备的输出信号。目前市场上的旋 转 编 码 器 、传 感 器 等 设 备 的 输 出 信 号 大 多 为 方 波 脉 冲 信 号,信号频率在1 MHz以下,电压范围为10V~26.4V,
摘要:针对当前工业控制中高速脉冲计数的需求, 设 计 了 一 种 PLC 控 制 系 统 中 的 高 速 计 数 器。 首 先 介 绍 了 高速计数器常用的3种模式,之后设计了系统的整体结构,并对高速计数模块和中断控制进行了实现。经过 实践证明,本系统脉冲计数的准确性好,具有较高的实用价值。 关 键 词 :PLC; 高 速 计 数 器 ; 频 率 测 量 中 图 分 类 号 :TP273 文 献 标 识 码 :A
数 ;当 输 入 脉 冲 信 号 落 后 方 向 控 制 信 号 90°相 位 时 ,计 数 器减法计数,且在输入信号的下降沿到来时计数 。 [3]
在编码器×4 模 式 下,输 入 信 号 1 和 输 入 信 号 2 最 高 允 许 频 率 为 250kHz,保 持 90°相 位 差 。 采 用 倍 频 实 现 双 沿 计 数 ,在 输 入 脉 冲 1 的 上 升 沿 、下 降 沿 和 输 入 脉冲 2 的 上 升 沿、下 降 沿 到 来 时 计 数。 当 输 入 脉 冲 1 相 对 于 输 入 脉 冲2 超 前90°时 ,计 数 器 加 法 计 数 ;反 之 , 计数器减法计数。
PLC高速计数器在传送带位置控制中的应用

输 出脉 冲的个数就能得到 电机 的旋转角度 .从而得到传 送带上工件移
动 的位 移
’
当 PLC需 对比其扫描频率高的输入信号进行计数时 .为避免输
入脉 冲信号丢失 .需使用 高速计数器来 实现 在分拣单元 的 PLC中.
1_3 三相交流异步 电动机和变频器概述
高速计数器有 6个 .其地址编号为 HSC0~HSC5。高速计数器 的计数频
当输送单元送来工件放 到传送带上并被人料 口光电传感器检测
1.2 增 量式旋转编码器概述
到时 .PLC的 QO.0端输 出高电平信号 .启动变频 器 .控制交 流电机 以
增量式旋转编码器 由码盘和光电检测装 置组成 码盘是 在一定 30H 的频率运行 .编码 器开始发出脉冲信 号 .PLC的高速计数器开始
脉 冲相位差 90。。YL一335B分拣单元 的三相交流异步 电动机上就使 用 心点时 .约发出 1284个脉冲。当传送带上工件I!Iiii达指定位置时 ,推
了这种具有 A、B两相 90。相位差 的通用 型旋转编码器 。通过计算 每 杆就会将其推到指定料槽 内
秒 旋转编码器输 出脉 冲的个数就能反映当前电动机的转 速 :通过计 算 2.2 高速计数器认 知
相 交流异步电动机结构简单 坚固 .价格低廉 .在 电力拖 动领域 率与 PLC的扫描周期无关 .有 12种 不同的工作模式。
编 B 尬.1
码 王_。 器 Ll
S7—2Oo-224XP IPLC选 用 SIEMENS公 司 的 s7—200—224 XP/DC/RLY 型 PLC.内
置 HSC0~HSC5共 6个高速计数器 :编码器选用增 量式旋转编码 器 .
图 1 位 置 控 制 系统 硬 件 连 线 图
PLC高速计数器在双速电梯中应用

PLC高速计数器在双速电梯中的应用内容摘要:本文通过对一台plc控制的双速电梯将楼层永磁感应器部分改造为利用plc本身的高速计数器资源,通过井道自学习来提供减速点与楼层位置信号,以实现电梯控制,简要地从理论上介绍了井道自学习的功能要求及其流程。
同时,通过对电梯的实际改造,阐叙了如何运用plc高速计数器来进行逻辑运算,以得到减速点和楼层信号,以及改造后对一些存在问题的调试处理。
中图分类号:th724文献标识码: a 文章编号:一、引言我公司在泰然工贸园204栋东侧装有一台六层六站劲达牌双速人货梯,使用以来经常出现楼层显示错误,到站不停车,冲顶、蹲底等故障现象。
经检查发现电梯楼层永磁感应器动作不灵敏,易粘死;某些楼层遮磁板与楼层永磁感应器接合距离偏差大,线路松动接触不良,是造成电梯出现这些故障的主要原因,针对这些情况,结合该梯是采用三菱fx2nplc进行控制的特点,提出一个解决问题的思路:取消该梯的所有楼层永磁感应器,利用plc本身的高速计数器资源,用脉冲测距的方法来提供减速点与楼层位置信号,达到实际电梯控制的目的。
二、井道自学习的功能要求脉冲测距的实质就是通过plc对输入脉冲数的逻辑运算,将减速点与楼层位置信号用自学习的方式送入各寄存器中,因此井道自学习应满足如下要求:(1)电梯可以检修运行。
(2)安全回路\门锁回路正常。
(3)plc输入\输出信号应满足正常运行要求。
(4)用平层感应器作为门区信号,如图一所示。
(5)井道内每层均应有一块遮磁板,其长度应相等,且安装在准确的平层位置。
(6)x0作为高速计数器的输入端。
(7)光码盘安装于马达轴端,产生脉冲,供plc进行逻辑运算。
(8)每个脉冲所等效电梯运行距离计算公式如下:l=dπi/p式中,d 曳引轮直径;i 曳引机减速比;p旋转编码器的分辨率。
(9)plc的停电保持寄存器为d200 d799。
三、井道自学习的流程图井道自学习的流程如图二所示,运行过程如下:电梯置于底层平层位置,设置为检修状态,将自学习开关拨至自学习状态,产生一个上微分指令,将自学习程序中用到的高速计数器\寄存器\变址寄存器全部清零。
三菱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两个寄存器里面了。
5-3 S7-1200 PLC的高速计数器介绍

使用CPU上集成I/O或者信 I1.0
号板或者PTO0
I4.0
I1.1 I4.1
I1.2
HSC6 使用CPU上集成I/O
I1.3 I1.4
I1.5
单相计数,内部方向控制 单相计数,外部方向控制。 模式 双向计数,两路时钟脉冲输入 A/B相正交计数 监控PTO输出
时钟
时钟 方向
加时钟 减时钟
A相 时钟
以秒为单位的新周期值(仅限频率测量模 式): 1000:1s 100:0.1s 10:0.01s
功能忙 状态代码
5.高速计数器指令介绍与应用
高速计数器指令介绍与应用
【例5】用高速计数器HSC1计数,当计数值达到50~100之间时报警,达到100时重新计 数,报警灯Q0.0灭。
5.高速计数器指令介绍与应用
高速计数器编号 HSC4 HSC5 HSC6
默认地址 ID1012 ID1016 ID1020
3
4个字节,即 ID1000,可修改
1
4.高速计数器指令
LAD
输入/输出 HSC DIR CV RV PERIOD NEW_DIR NEW_CV NEW_RV
NEW_PERIOD
BUSY STATUS
参数说明 HSC标识符 1:请求新方向 1:请求设置新的计数器值 1:请求设置新的参考值 1:请求设置新的周期值(仅限频率测量模式) 新方向,1:向上,-1:向下 新计数器值 新参考值
I0.0 I4.0 PTO 0
I0.1
I4.1
I0.3
PTO 0方向
HSC2
使用CPU上集成I/O或者信 号板或者PTO1
I0.2 PTO 1
I0.3 PTO 1方向
PLC高速计数器功能及应用

1、高速计数器的数量及编号
高速计数器在程序中使用时的地址编号用HSCn来表示, HSC表编程元件名称为高速计数器,n(n=0~5)为编号。
每个高速计数器的计数结果都对应有一个当前值寄存器。 编程时可通过地址HCx(x=0~5)来读取高速计数器的当前值。
不同型号的PLC主机,高速计数器的数量对应如下表所示。
4)在第4页设置当前值等于预置值时产生中 断(中断事件编号为12),使用默认的中断程序 符号名COUNT_EQ。
向导允许高速计数器按多个步骤进行计数, 即在中断程序中修改某些参数,例如修改计数器的 计数方向、当前值和预置值,并将另一个中断程序 连接至相同的中断事件。
本例设置编程2步,在中断程序COUNT_EQ中,
A相 B相
a)正转
A相 B相
b)反转
③ 三通道增量式编码器
编码器内部除了有双通道增量式编码器的两对光 耦合器外,在脉冲码盘的另外一个通道有一个透光段, 每转一圈,输出一个脉冲,该脉冲称为Z相零位脉冲, 用作系统清零信号,或坐标的原点,以减少测量的积 累误差。
2、绝对式编码器
N位绝对式编码器有N个码道,最外层的码道对 应编码的最低位。每一码道有一个光耦合器,用来读 取该码道的0、1数据。绝对式编码器输出的N位二进 制数反映了运动物体所处的绝对位置,根据位置的变 化情况,可以判别出旋转的方向。
S7-200的高速计数器有4类工作模式,共有12种。每个模 式各有不同,可通过编程,使用定义高速计数器指令HDEF来 选定工作模式。
1、高速计数器的工作模式
2、高速计数器的工作模式说明
从各个高速计数器的工作模式的描述可知:6个 高速计数器具有不完全相同的功能,最多可能有12种 工作模式,可分为四种类型。下面以HC1的工作模式 为例加以说明。
PLC高速计数器功能应用在定位控制上的案例

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

高速计数器对CPU扫描速率无法控制的高速事件进行计数,最多可配置12种不同的操作模式。
高速计数器的最高计数频率取决于您的CPU类型。
每台计数器对支持此类功能的时钟、方向控制、复原和起始均有专用输入。
对于二相计数器,两个时钟均可以最高速率运行。
在正交模式中,可选择1乘以(1x)或4乘以(4x)最高计数速率。
所有计数器均以最高速率运行,互不干扰。
本标题讨论下列主题:使用高速计数器识别高速计数器的详细计时功能为高速计数器连接输入线高速计数器编址(HC)识别不同的高速计数器选择现用状态和1x/4x模式高速计数器初始化顺序控制字节HSC模式设置当前值和预设值状态字节为中断赋值使用高速计数器返回顶端通常高速计数器被用作鼓式计数器驱动器,以恒速旋转的转轴配有增量轴式编码器。
轴式编码器提供每次旋转的指定计数以及每次旋转一个复原脉冲。
轴式编码器的时钟和复原脉冲为高速计数器提供输入。
用最先的几个预设值载入高速计数器,并在当前计数小于当前预设值的期间内激活所需输出。
当前计数等于预设值或复原时,计数器设置提供中断。
每次发生当前计数值等于预设值中断事件时,载入新预设值,并设置下一个输出状态。
发生复原中断事件时,设置第一个预设值和第一个输出状态,并重复该循环。
因为中断的发生速率远远低于高速计数器的计数速率,可对高速操作执行精确的控制,并对整体PLC扫描循环产生相对较小的影响。
中断附加方法允许在独立中断例行程序中执行每个载入的新预设值,以便进行状态控制。
(另一种方法是在单个中断例行程序中处理所有的中断事件。
)识别高速计数器的详细计时功能返回顶端下列时序图显示根据模式分类的每台计数器的功能。
在另一个时序图中显示复原和起始输入操作,并应用于所有使用复原和起始输入的模式。
在复原和起始输入图中,复原和起始的现用状态均被编程为高级。
有复原、无起始的操作举例有复原和起始的操作举例模式0、1和2操作举例模式3、4和5操作举例使用计数模式6、7和8时,上下时钟输入的上升沿间隔0.3微秒,高速计数器可能认为这些事件同时发生。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
高速计数器
概述
本例叙述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
// 子程序0初始化,并激活脉冲输出(PLS)。
// 在特殊存储字节SMB67中定义脉冲输出特性:脉冲串(PT0),时基,可更新数值,激活PLS。
// SMW68定义脉冲周期,其值为时基的倍数。
// 最后,在SMD72中指定需要产生的脉冲数。
(SMD72)为内存双字,即4个字节)。
// 子程序0
SBR 0 // 子程序0
MOVB 16#8D,SMB67 // 装载脉冲输出(PLS0)的控制位:PT0,时基1ms,可更新,激活。
MOVW 1,SMW68 // 脉冲周期1ms。
MOVD 30000,SMD72 // 产生30000个脉冲。
PLS 0 // 起动脉冲输出(PLS 0),从输出端Q0.0输出脉冲。
RET // 子程序0结束。
// * * * * * * * * * * * * * * * * * * * *
// 子程序1:
// 子程序1起动HSC0,并把中断程序0分配给中断事件12(HSC 0的当前值CV等于设定值PV)。
// 只要脉冲计数值(当前值CV)达到设定值(PV),该事件就会发生。
// 最后,允许中断。
// 子程序1
SBR 0 // 子程序1。
ATCH 0,12 // 把中断程序0分配给中断事件12(HSC 0的CV=PV)。
ENI // 允许中断。
HSC 0 // 按主程序中对HSC 0的初始组态特性,起动HSC0。
RET // 子程序1结束。
// * * * * * * * * * * * * * * * * * * * *
// 中断程序0:
// 当HSC 0的计数脉冲达到第一,设定值1000时,调用中断程序0。
// 输出端Q0.1置位(Q0.1=1)。
// 为HSC 0设置新的设定值1500(第二设定值)
// 用中断程序1取代中断程序0,分配给中断事件12(HSC 0的CV=PV)。
// 中断程序0
INT 0 // 中断程序0。
S Q0. 1,1 // 输出端Q0.1置位(Q0.1=1)。
MOVB 16#A0,SMB37 // 重置HSC 0的控制位,仅更新设定值(PV)。
MOVD 1500,SMD42 // HSC 0的下一个设定值为1500(第二设定值)。
ATCH 1,12 // 用中断程序1取代中断程序0,分配给中断事件12。
HSC 0 // 起动HSC 0,,为其装载新的设定值。
RETI // 中断程序0结束。
// * * * * * * * * * * * * * * * * * * * *
// 中断程序1:
// 当HSC 0的计数脉冲达到第二设定值1500时,调用中断程序1。
// 输出端Q0.2置位(Q0.2=1)。
// HSC 0改成减计数,并置新的设定值1000(第三设定值)。
// 用中断程序2取代中断程序1,分配给中断事件12(HSC 0的CV=PV)。
// 中断程序1:
INT 1 // 中断程序1。
S Q0. 2,1 // 输出端Q0.2置位(Q0.2=1)。
MOVB 16#B0,SMB37 // 重置HSC 0的控制位,更新设定值,并改成减计数(反向计数)。
MOVD 1000,SMD42 // HSC 0的下一个设定值为1000(第三设定值)。
ATCH 2,12 // 用中断程序2取代中断程序1,分配给中断事件12。
HSC 0 // 起动HSC 0,,为其装载新的设定值和方向。
RETI // 中断程序1结束。
// * * * * * * * * * * * * * * * * * * * *
// 中断程序2:
// 当HSC 0的计数脉冲达到第三设定值1000时,调用中断程序2。
// 输出端Q0.1和Q0.2复位(Q0.1=0,Q0.2=0)。
// HSC 0的计数方向重新改为正向(增计数),并将当前计数值置为0,而设定值PV保持不变(1000)。
// 重新把中断程序0分配给中断事件12,程序再次起动HSC 0运行。
// 当脉冲数达到SMD72中规定的个数后,程序就终止。
// 中断程序2:
INT 2 // 中断程序2。
R Q0. 1,2 // 输出端Q0.1和Q0.2复位(Q0.1=0,Q0.2=0)。
MOVB 16#D8,SMB37 // 重置HSC 0的控制位,更新CV,改为正向计数(增计数)。
MOVD 0,SMD38 // HSC 0的当前值复位(CV=0)。
ATCH 0,12 // 把中断程序0分配给中断事件12。
HSC 0 // 重新起动HSC 0。
RETI // 中断程序2结束。