课程中心
HOME
课程中心
正文内容
脉冲plc编程 PLC产生脉冲信号的两种方法
发布时间 : 2024-10-06
作者 : 小编
访问数量 : 23
扫码分享至微信

PLC产生脉冲信号的两种方法

脉冲信号在PLC编程中会经常用到,比如:通信过程中的心跳脉冲、蜂鸣器/指示灯的报警脉冲等等。这些脉冲信号可以来自硬件(组态),也可以来自软件(编程)。今天这篇文章,给大家介绍下两种产生脉冲信号的方法,包括:

CPU的时钟脉冲;扩展函数LGF_Frequency;

1、CPU的时钟脉冲

CPU的时钟脉冲可以产生8个不同频率的脉冲信号(占空比1:1)。在CPU的硬件组态中找到【系统和时钟存储器】,勾选【启用时钟存储器字节】,在时钟存储器字节的地址中输入位存储器的地址(默认为MB0),那么CPU的硬件(严格来说是操作系统)会将相应频率的脉冲写入到该位存储器字节的相应位。比如下面这张图:M0.1是5Hz的时钟脉冲,M0.5是1Hz的时钟脉冲。

这种配置脉冲信号的方法很简单,不过其缺点在于会降低程序的通用性。比如:有的人使用MB0作为时钟存储器字节,有的人使用MB10或者其它的位存储区作为时钟存储器字节,这在不同的项目程序移植时会造成一些困难。为了提高程序的通用性,可以使用通用扩展函数库中的LGF_Frequency函数。

2、LGF_Frequency

扩展函数LGF_Frequency可以产生指定频率及占空比的脉冲信号,在全局库【信号发生器】中可以找到该函数,其初始添加状态如下图所示:

函数LGF_Frequency有两个输入参数和两个输出参数:

输入参数包括:

frequency:实数,发生器的输出频率,单位Hz;脉冲的周期为频率的倒数,假设频率设置为0.5,则该脉冲的周期为2s;PulsePauseRatio:实数,输出脉冲的占空比,即高电平持续时间与低电平持续时间的比值;假设占空比为3.0,则高电平持续时间/低电平持续时间=3/1;

输出参数包括:

clock:布尔型,脉冲输出地址;countdown:TIME型,当前状态的剩余时间;

使用LGF_Frequency函数可以产生与硬件无关的脉冲信号。比如,

下面的代码(FB2_ClockTest)分别产生一个1Hz、10Hz、0.5Hz且占空比为1:1的脉冲信号。

这些信号存放在全局数据块DB10_GlobalPulse的变量中:

执行该函数块的Trace数据如下图所示:

这种通过函数块和数据块实现的脉冲信号提高了程序的可读性,并且能产生任意需要的周期及占空比的脉冲信号,缺点是需要手动编程,相比CPU的脉冲信号复杂一点;

说明:其实之前介绍过LGF_Frequency及通用函数库,可以看看文章:博途扩展函数库LGF系列教程(1)-LGF_Frequency

好了,关于PLC产生脉冲信号的两种方法就先介绍到这里。

我的书《西门子S7-200 SMART PLC应用技术——编程、通信、装调、案例》已经出版,欢迎点击下面的链接查看:

#pgc-card .pgc-card-href { text-decoration: none; outline: none; display: block; width: 100%; height: 100%; } #pgc-card .pgc-card-href:hover { text-decoration: none; } /*pc 样式*/ .pgc-card { box-sizing: border-box; height: 164px; border: 1px solid #e8e8e8; position: relative; padding: 20px 94px 12px 180px; overflow: hidden; } .pgc-card::after { content: " "; display: block; border-left: 1px solid #e8e8e8; height: 120px; position: absolute; right: 76px; top: 20px; } .pgc-cover { position: absolute; width: 162px; height: 162px; top: 0; left: 0; background-size: cover; } .pgc-content { overflow: hidden; position: relative; top: 50%; -webkit-transform: translateY(-50%); transform: translateY(-50%); } .pgc-content-title { font-size: 18px; color: #222; line-height: 1; font-weight: bold; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } .pgc-content-desc { font-size: 14px; color: #444; overflow: hidden; text-overflow: ellipsis; padding-top: 9px; overflow: hidden; line-height: 1.2em; display: -webkit-inline-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; } .pgc-content-price { font-size: 22px; color: #f85959; padding-top: 18px; line-height: 1em; } .pgc-card-buy { width: 75px; position: absolute; right: 0; top: 50px; color: #406599; font-size: 14px; text-align: center; } .pgc-buy-text { padding-top: 10px; } .pgc-icon-buy { height: 23px; width: 20px; display: inline-block; background: url(https://lf6-cdn-tos.bytescm.com/obj/cdn-static-resource/pgc/v2/pgc_tpl/static/image/commodity_buy_f2b4d1a.png); } S7-200 SMART PLC应用技术 ¥88 购买

S7-1200 PLC基本指令之脉冲类指令

S7-1200的位逻辑指令,这也是我们在学习PLC编程时最先接触到的指令,最基本的指令。

位逻辑运算指令是对二进制位进行操作的指令,数据类型是BOOL型,这其中又包括了触点指令与赋值指令、置位与复位指令、沿脉冲检测指令这三个部分。

在前面两篇文章中,我们介绍了触点与赋值指令、置位复位指令,那么这篇文章就介绍一下S7-1200 PLC的沿脉冲类指令。

什么是沿脉冲指令呢?

沿脉冲是指程序执行中只接通一个扫描周期时间,也可以理解为是一瞬间的很短的一个时间。我们的沿指令分为上升沿和下降沿,当信号从0变成1的时候称为上升沿,当信号从1变成0的时候称为下降沿。

S7-1200 PLC提供了四种沿脉冲指令,包括扫描操作数信号边沿指令、在信号边沿置位操作数指令、扫描RLO的信号边沿指令,以及检测信号边沿指令。下面我们就分别来学习一下这些指令吧。

一、扫描操作数信号边沿指令

触点中间带P的指令是扫描操作数上升沿指令,触点中间带N的指令是扫描操作数下降沿指令。我们看一下程序段1的程序,当检测到I0.0从0变为1时,那么Q0.0就置位为1,那指令下方的M0.0是什么意思呢?

如果有用过S7-200/200 SMART PLC的话,都知道在这些PLC里面的沿指令上方和下方是没有操作数的,这也是我们S7-200/200 SMART PLC与S7-1200 PLC的区别,大家要特别注意了。

其实指令下方的M0.0是边沿存储位,是用来存储上一次扫描循环时I0.0的状态的,PLC会通过对I0.0的当前状态和上一次循环状态的结果进行对比,判断是否有变化。

如果上一次循环状态为0,也就是M0.0为0的话,I0.0的当前状态为1,就说明产生了上升沿信号,这个触点就会接通,就可以置位Q0.0。同理,对于下降沿指令,如果上一次循环状态结果为1,也就是M0.1为1的话,I0.1的当前状态为0,就说明产生了下降沿。

二、在信号边沿置位操作数的指令

线圈指令中间带P的指令是在信号上升沿置位操作数指令,线圈指令中间带N的指令是在信号下降沿置位操作数指令。

同样的,这两个指令的下方也是有操作数的,比如下图程序中的M0.0和M0.1都是用来存储上一次的逻辑运算结果的。

如果上一次的逻辑运算结果是0,也就是M0.0为0的话,当I0.0从0变成1的时候(I0.3常闭为1),说明产生了上升沿,M10.0会接通一个扫描周期时间,同时将Q0.0置为1。这里需要注意的是,Q0.0的为1为0的状态是受前面的逻辑运算结果影响的,如果前面的逻辑运算结果为0,那么Q0.0就断开,如果前面的逻辑运算结果为1,那么Q0.0就接通。

同理,在信号下降沿置位操作数指令也是一样的,这里就不再赘述了。

三、扫描RLO的信号边沿指令

P_TRIG是扫描RLO的信号上升沿指令,N_TRIG是扫描RLO的信号下降沿指令。同样的,这两个指令的下方也是有操作数的,比如下图程序中的M0.0和M0.1都是用来存储上一次的逻辑运算结果的。

我们可以看到P_TRIG和N_TRIG指令还有一个管脚叫CLK,CLK是逻辑运算结果的输入端。

我们看下图的程序,如果前一个扫描周期的逻辑运算结果为0,也就是M0.0为0的话,当I0.0从0变成1的时候(I0.3常闭为1),说明产生了上升沿,M10.0会接通一个扫描周期时间,同时将Q0.0置位为1。

当扫描到前一个扫描周期的逻辑运算结果为1,也就是M0.1为1的话,当I0.3接通,常闭点断开,说明产生了下降沿,M0.1会接通一个扫描周期时间,同时将Q0.0复位为0。

四、检测信号边沿指令

R_TRIG是检测信号上升沿指令,F_TRIG是检测信号下降沿指令,这两个指令其实是FB块,我们在使用的时候是需要给它分配背景DB块的,调用的时候,也会自动弹出下图这个页面。

我们看下图的程序,CLK是逻辑运算结果的输入端,R_TRIG指令的上一次逻辑运算结果是存储在背景DB块的“Stat_Bit”这个变量中的。

如果前一个扫描周期的逻辑运算结果为0,也就是Stat_Bit为0的话,当前CLK输入端的逻辑运算结果为1时,那么Q管脚的输出M10.0会输出为1一个扫描周期的时间。

同理,F_TRIG检测信号下降沿指令也是一样的,这里就不再赘述了。

以上就是S7-1200 PLC基本指令中的脉冲类指令介绍,我们跟S7-200/200 SMART PLC对比,会发现S7-1200 PLC的脉冲类指令多了好几个,使用上也会相对复杂一些,不同的地方我们要重点分析和学习哦。

通过本文的讲解,不知道你学会了吗?

(技成培训网原创,作者:蔡慧荥,未经授权不得转载,违者必究)

⇩领取资料

相关问答

PLC发脉冲编程指令?

PLC脉冲指令是指对西玛仪表028-6650595713808018567关于作为PLC连接驱动器来控制步进电机的,比如使用台达PLC(三菱系也是一样),连接Y0,和C0到步进电机驱动器...

西门子PLC怎么编写脉冲程序?

编写西门子PLC脉冲程序需要考虑脉冲的输入方式和输出方式,首先定义输入端口为脉冲输入,然后编写一个计数器,设定计数器的计数值,当计数器达到设定值时,触发...

plc接收脉冲程序怎么写?

作为一名电气工程师很高兴能够回答您的问题,关于您的问题PLC接收脉冲的程序怎么写?那么我们来分析一下接收脉冲的来自哪些元器件以及前期准备哪些工作;最常用...

plc中如何自定义一个脉冲?

在PLC(可编程逻辑控制器)中,你可以通过编写程序来生成自定义脉冲。以下是一个基本的步骤指南:确定需求:首先,你需要明确你需要什么样的脉冲。脉冲的频率、...

西门子plc脉冲输入怎么编程?

回答如下:编程步骤如下:1.在程序中声明需要使用的输入点,例如I0.0表示使用I0口的0号输入点。2.在程序中设置需要使用的输入点的工作模式为脉冲输入模式,...

plc脉冲定位编程实例?

PLC脉冲定位编程实例:1、脉冲定位编程:(1)首先配置脉冲定位模块,确定脉冲定位模块的通道号、脉冲定位方向、脉冲定位频率和脉冲定位位置等信息;(2)编...PL...

请问怎么写三菱PLC发脉冲的程序?

编写三菱PLC发脉冲的程序需要分为几个步骤。首先,通过连接PLC并编写适当的输入输出(I/O)逻辑,确保PLC与外部设备正确通信。然后,使用PLC编程软件创建一个...

plc普通输出口怎么发脉冲?

PLC普通输出口可以通过控制输出信号的持续时间来发出脉冲。具体来说,可以通过设置输出信号的时间延时来控制脉冲的宽度和重复周期,从而实现脉冲信号的发生。通...

欧姆龙plc1秒时钟脉冲编程器怎么写入-懂得

输入“C”后,然后在地址中输入一个"P"然后往下选择,找到一秒脉冲确认就行了。或者直接添加一个触点,输入地址“CF102”就好了。输入“C”后,然后在...

三菱步进电机脉冲编程实例?

以三菱PLC的脉冲+方向控制为例首先是接线:步进驱动器的脉冲端,分别接到PLC的脉冲输出端Y0,方向端接PLC任意输出端Y3;然后是编程:PLSY发脉冲即可[PLSYD100...

 ral色卡  进步网 
王经理: 180-0000-0000(微信同号)
10086@qq.com
北京海淀区西三旗街道国际大厦08A座
©2024  上海羊羽卓进出口贸易有限公司  版权所有.All Rights Reserved.  |  程序由Z-BlogPHP强力驱动
网站首页
电话咨询
微信号

QQ

在线咨询真诚为您提供专业解答服务

热线

188-0000-0000
专属服务热线

微信

二维码扫一扫微信交流
顶部