写给初学者的博途教程(高速计数器示例组态应用)
哈喽,大家下午好啊!
今天的文章非常干货,赶紧码住学习~
写给初学者的博途教程18(高速计数器示例组态应用)
高速计数器是PLC在发脉冲中用于计算脉冲个数 的功能,与普通的计数器不一样是,它的计数频率比普通计数器要高的多,高速计数器用的最多在场合是PLC控制步进和伺服电机时。
话不多少,我们直接开始高速计数器组态教程。
S7-1200PLC的高速计数功能说明
1、CPU将每个高速计数器的测量值,存储在输入过程映像区内,数据类型为32位双整型有符号数,用户可以在设备组态中修改这些存储地址,在程序中可直接访问这些地址。
但由于过程映像区受扫描周期影响,读取到的值并不是当前时刻的实际值,在一个扫描周期内,此数值不会发生变化,但计数器中的实际值有可能会在一个周期内变化,用户无法读到此变化。用户可通过读取外设地址的方式,读取到当前时刻的实际值。以ID1000为例,其外设地址为“ID1000:P”。表所示为高速计数器寻址列表。
2、S7-1200产品从固件版本V4.2起除了有计数、频率测量功能,还新增了门功能、同步功能、捕获功能、比较功能,这些功能通过CTRL_HSC_EXT扩展高速计数器指令实现。其他高速计数性能与V4.1固件版本完全兼容,原来早期的指令是CTRL_HSC。
3、高速计数器寻址(6路高速计数通道,不但可以进行信号高速计数,也可以进行信号的频率测量,周期测量等功能。这里建议大家查阅1200plc相关的系统手册,可在常州智控教育官网下载)
图1-1
图1-1是S7-1200plc系列的高速计数器功能简介。
高速计数器组态步骤:
新建一个项目文件 :
图1-2
在设备视图中,选中CPU,打开属性界面,在属性-常规中,找到高速计数器(HSC)。
可以看到,当前1215CDC/DC/DCplc带有6个高速计数器。
图1-3
通过图1-3,大家可以看到不同型号的plc,所自带的高速计数器数量是不一样的。(截自S7-1200样本手册,可在智控教育官网下载 )
下面是结合示例,给普通电机加装编码器,可实现基本定位,但这是开环控制。(只能读取当前设备位置,但设备不能自动调节至目标位置)那这里,我们使用PLC的高速计数器功能中的计数。
图1-4
这是线下实训的恒压供水单机项目设备。
可以看到,图1-4中,红框的地方,是移动电机和编码器;
移动电机是普通的异步电机,编码器参数如下:
图1-5
图1-6
编码器的分辨率是1000P/r(1000个脉冲转一圈)
接线 :黑接A相、白接B相、橘接Z相(这里Z相不接)。
(编码器是A/B相正交增量式编码器。)
给移动电机装载编码器,目的就是为了知道移动电机实时移动的位置,而编码器发出的脉冲又是高速脉冲,所以这里需要我们启用1200plc的高速计数器功能,来测试编码器。
回到博图项目文件中,我们按顺序选用HSC1;HSC1包含许多功能,但不是每个功能都要使用,这里我们会为大家简单介绍每个功能。
首先是“常规”:
图1-7
在常规中,勾选“启用该高速计数器”。
“功能”
图1-8
功能中,需要选择“计数类型”和“工作模式”;
计数类型这里选择:计数。
工作模式这里选择:A/B计数器(图1-9)
图1-9
初始计数方向一般都是默认的加计数。(这里默认)
“初始值”
图1-10
初始值:CPU每次开始运行时会加载初始值。初始值仅在计数模式中使用。(这里默认)
“同步输入”
图1-11
同步输入:可将当前计数值设置为起始值(或初始计数器)。通常可用同步输入将计数器重置为“0”。(这里不用)
“捕捉输入”
图1-12
捕捉输入:入可将捕获到的计数值设置到触发捕获输入时保存的计数值。(这里不用)
“门输入”
图1-13
门输入:可停止HSC计数。(这里不用)
“比较输出”
图1-14
比较输出:是HSC的唯一输出,且仅在“计数”模式下可用。(这里不用)
“事件组态”
图1-15
事件组态:事件组态区下,可通过下拉菜单(或创建新的OB)选择硬件中断OB,然后将其连接到HSC事件。中断的优先级取值范围在2至26之间,其中2为最低优先级,26
为最高优先级。(这里不用)
“硬件输入”
图1-16
硬件输入:1215CDC/DC/DC plc带有4个高速脉冲输出点;(图1-17红框内容,plc固件是4.0/4.1版本)
图1-17
“硬件输出”
图1-18
这里没有使用比较输出,所以硬件输出这里也不用选择。
“IO地址”
图1-19
IO地址:起始地址默认为ID1000。
完成以上组态,将编码器与plc硬件连接,结果可以在监控表中监视。
图1-20
今天《写给初学者的博途教程18(高速计数器示例组态应用)》小智就分享到这,大家可以收藏使用,如果遇到问题或者不能理解的地方可以找小智私聊或评论留言,如果喜欢关注小智,点赞转发谢谢!
经典案例——西门子S7-200 PLC 高速计数器的相关程序
最近有很多人咨询有关西门子S7-200 PLC高速计数器的问题,所以今天来看一个程序案例应用吧,对这个案例,我们以两种方法来实现它。通过对高速计数器应用的练习,来更好的掌握高速计数器的内容。
1、用比较指令来实现正反转控制 ,按下启动按钮I0.3,Q0.0输出,电机正转,高速计数器计到50个脉冲后电机停止,过5秒后Q0.1输出,电机反转,计数器计到50个脉冲后电机停止,过5s后又开始电机的正转,如此循环。
主程序:
子程序 :
以上的程序中,首先做一个高速计数器初始化的子程序, 首先是定义控制字节,送16#F8到SMB37,定义为加计数更新当前值,这里写入初始值为0和预设值为50,定义的是高速计数器HSC0和HSC模式1,然后激活高速计数器。
因为控制要求是按下启动按钮I0.3,Q0.0输出,电机正转。 首先就做个起保停程序,I0.3启动串联I0.4停止,来驱动输出Q0.0并做Q0.0的自锁,同时做一个用I0.3的上升沿来调用高速计数器初始化子程序,注意这里的起保停是有做正反转的互锁的。然后再用Q0.0常开触点串联一个HC0大于等于SMD42的比较指令来输出M0.0,并把M0.0的常闭触点串联在起保停程序中,作为高速计数器计到50个脉冲后电机停止。
电机停止过5秒后Q0.1输出,电机反转,那么我们就用M0.0来置位M0.1,再用M0.1常开触点来驱动来驱动定时器T37延时5秒,并用T37常开触点来驱动复位M0.1,这里是为了让定时器定时时间到时复位定时器。然后再用T37常开触点来驱动输出Q0.1并做Q0.1的自锁,同时也用T37的上升沿来调用高速计数器初始子程序。然后再用Q0.1常开触点串联一个HC0大于等于SMD42的比较指令来输出M0.2,并把M0.2的常闭触点串联在起保停程序中,作为高速计数器计到50个脉冲后电机停止。
电机停止过5s后又开始电机的正转,那么我们就用M0.2来置位M0.3,再用M0.3常开触点来驱动来驱动定时器T38延时5秒,并用T38常开触点来驱动复位M0.3,这里也是为了让定时器定时时间到时复位定时器。同时我们用T38常开触点并联在电机正转的控制程序上,这样可以实现循环。
2、用中断来实现正反转控制, 按下启动按钮I0.3,Q0.0输出,电机正转,高速计数器计到50个脉冲后电机停止,过5秒后Q0.1输出,电机反转,计数器计到50个脉冲后电机停止,过5s后又开始电机的正转,如此循环。
主程序:
子程序:
中断程序:
以上的程序中,首先做一个高速计数器初始化的子程序 ,首先是定义控制字节,送16#F8到SMB37,定义为加计数更新当前值,这里写入初始值为0和预设值为50,定义的是高速计数器HSC0和HSC模式1,然后激活高速计数器,还做了高速计数器中断,建立中断程序0和中断事件12的中断连接,并全局允许中断。
在主程序中,用SM0.1的上升沿调用高速计数器初始化子程序,因为控制要求是按下启动按钮I0.3,Q0.0输出,电机正转,就用I0.3常开触点来置位Q0.0,并用I0.3的上升沿激活高速计数器。控制还要求当高速计数器计到50个脉冲后电机停止,那么当计数当前值等于预设值50时就进入中断程序去执行,我们就可以在中断程序中编写用Q0.0常开触点串联Q0.1常闭触点来复位Q0.0并置位M0.0,那么当当前值等于预设值时复位Q0.0电机停止,并置位M0.0,然后又回到主程序进行执行。
电机停止过5秒后Q0.1输出,电机反转 ,在主程序中用M0.0常开触点驱动定时器T37延时5秒,并用T37常开触点来复位M0.0复位定时器和置位Q0.1,并用T37的上升沿激活高速计数器。当高速计数器计到50个脉冲后电机停止,那么当计数当前值等于预设值50时就进入中断程序去执行,我们就可以在中断程序中编写用Q0.1常开触点串联Q0.0常闭触点来复位Q0.1并置位M0.2,那么当当前值等于预设值时复位Q0.1电机停止,并置位M0.2,然后又回到主程序进行执行。
电机停止过5s后又开始电机的正转, 那么我们就用M0.2来驱动来驱动定时器T38延时5秒,并用T38常开触点来驱动复位M0.2,这里也是为了让定时器定时时间到时复位定时器。同时我们用T38常开触点并联在电机正转的控制程序上,这样可以实现循环。
那么以上就是用了两种方法来实现正反转的控制,利用中断的方法可能会难理解一下,但是其实分析清楚执行过程也是不难的,对吗。
相关问答
台达plc高速计数指令怎么写?
台达的高速计数器一般是c235到c254,你用的是哪个高速计数器,现在值就存在哪个高速计数器中,比如,你用c235,现在值就在c235中,和普通的计数器c0,c1什么的是...
plc中怎样利用高速计数器来计算距离?
加装编码器,通过编码器发生脉冲数和测距轮周长的比例关系计算距离。加装编码器,通过编码器发生脉冲数和测距轮周长的比例关系计算距离。
台达plc高速计数输入点有几个?
可以查看其说明书资料;搜索得:30点主机,16DI/10DO(继电器),3AI/1AO。据这个,则开关量输入有16点;可以再核实一下。可以查看其说明书资料;搜索得:30点主机,16...
台达PLC高速计数器计数记得的脉冲数是编码器发送的5倍?
C246默认停电保持的,程序开头你先清零一下,然后再接受脉冲,看看计数是多少。高速计数模式有三种:1.一项一输入:脉冲/方向2.一相两输入:正反转3.两项...C2...
S7200plc中怎样利用高速计数器来计算距离?
关于这个问题,在S7-200PLC中,可以使用高速计数器来计算距离。以下是一种基本的方法:1.首先,确定要计算的距离的物体或装置的速度。2.配置高速计数器。进...
【初学PLC(三菱).希望能得到大家的支持!脉冲数计算线速度,产...
[最佳回答]用PLC高速计数器统计编码器脉冲可以计算出电机的转速r/min.电机转速除5得出辊子的转速r/min.辊子转速乘周长200mm/r,就可得出线速度m/min(注意单位...
三菱plc高速计数怎么不能触发?
关于这个问题,可能原因如下:1.计数器的设置有误。需要检查计数器的计数方式、计数范围、计数器使能等设置是否正确。2.输入信号问题。需要检查计数器的输入...
三菱plc显示高速计数器数值程序?
使用DMOV指令可以读取高速计数器的数值,读取数据存在数据寄存器,你再调用数据寄存器中的数值就行了。使用DMOV指令可以读取高速计数器的数值,读取数据存在数...
伺服ab相怎么接高速计数?
AB相脉冲,一般选择支持AB相输入的高速计数模块(大部分高速计数模块都支持这种标准方式),有些一体式PLC的高速输入口可以配置成高速计数模块。不管是编码器直...
西门子PLC高速计数器?
西门子S7—200,cpu226有6个高速计数器,分别为HSC0,HSC1,HSC2,HSC3,HSC4,HSC5西门子S7—200,cpu226有6个高速计数器,分别为HSC0,HSC1,HSC2...