直播课堂
HOME
直播课堂
正文内容
plc脉冲编程案例 电气工程师:西门子S7-200PLC编程PTO脉冲的产生与使用
发布时间 : 2024-11-24
作者 : 小编
访问数量 : 23
扫码分享至微信

电气工程师:西门子S7-200PLC编程PTO脉冲的产生与使用

PTO功能按照给定的脉冲个数和周期输出一串方波脉冲,占空比为50%。PTO可以产生单段脉冲或通过使用脉冲包络产生多段脉冲。必须为其设定脉冲个数和周期(以微秒或毫秒为单位):脉冲个数:1-4294967295,为32位无符号数;周期:10~65535us或2-65535ms,为16位无符号数。

在设置脉冲个数时,若将脉冲个数设为0,系统会默认为个数为1:在设置脉冲周期时,符号数如果周期小于两个时间单位,系统会默认周期为两个时间单位,例如时间单位为ms,周期设为1.3ms,系统会默认周期为2ms,另外,如果将周期值设为奇数值(如75ms),产生的脉冲波形会失真。

PTO脉冲课分为单段脉冲串和多段脉冲串,多段脉冲串由多个单段脉冲串组成。

1、单段脉冲串的产生

要让Q0.0或Q0.1端子输出单段脉冲串,须先对相关的控制字节和参数进行设置,再执行高速脉冲输出PLS指令。

图1是一段用来产生单段脉冲串的程序。在PLC首次扫描时,SM0.1触点闭合一个扫描周期,复位指令将Q0.0输出映像寄存器(即Q0.0线圈)置0,以便将Q0.0端子用于高速脉冲输出:当I0.1轴点合时,上开沿P触点接通一个扫描周期,MOV_B、MOV_W和MOV_ DW依次执行,对高速脉冲发生器的控制字节和参数进行设置,然后执行高速脉冲输出PLS指令,让高速脉冲发生器按设置产生单段PTO脉冲串并从Q0.0端子输出。在PTO脉冲串输出期间,如果I0.2触点闭合,MOV_B、 MOV_ DW依次执行,将控制字节设为禁止脉冲输出、脉冲个数设为0,然后执行PLS指令,高速脉冲发生器马上按新的设置工作,即停止从Q0.0端子输出脉冲。单段PTO脉冲串输出完成后,状态位SM66.7会置1,表示PTO脉冲输出结束。

2、单段脉冲串的产生

多段脉冲串有两种类型:单段管道脉冲串和多段管道脉冲串

(1)单段管道脉冲串

由于控制单元参数只能对单段脉冲串产生作用,因此在输出单段管道脉冲串时,要求执行PLS指令产生首段脉冲串后,立即接第二段脉冲串要求刷新控制参数单元,并再次执行PLS串中的每个脉冲参数要相同指令,这样首段脉冲串输出完成后,会接着按新的控制参数输出第二段脉冲串。单段管道脉冲串的每个脉冲串可采用不同参数,这样易出现脉冲串之间连接不平稳,在输出多个参数不同的脉冲串时,编程也很复杂。

(2)多段管道脉冲串

多段管道脉冲串也由多个单段脉冲串组成,每个单段脉冲串的参数可以不同,单段脉冲串中的每个脉冲参数也可以不同。

①参数设置包络表

由于多段管道脉冲串的各个脉冲串允许有较复杂的变化,无法用产生单段管道脉冲串的方法来输出多段管道脉冲串,S7-200PLC采用在变量存储区建立一个包络表的方法,由该表来设置多段管道脉冲串中的各个脉冲串的参数。多段管道脉冲串的参数设置包络表见表1,从包络表中可以看出,每段脉冲串的参数占用8字节,其中2字节为16位初始周期值,2字节为16位周期增量值,4字节为32位脉冲数值,可以通过编程的方式使脉冲的周期自动增减,在周期增量处输入一个正值会增加周期,输入一个负值会减少周期,输入0将不改变周期。

在多段管道模式下,系统仍使用特殊存储器区的相应控制字节和状态位,每个脉冲串的参数则从包络表的变量存储器区读出,在多段管道编程时,必须将包络表的变量存储器起始地址(即包络表中的n值)存入SMW168或SMW178中,在包络表中的所有周期值必须使用同一个时间单位,而且在运行时不能改变包络表中的内容,执行PLS指令来启动多段管道操作。

②多段管道脉冲串的应用举例。

多段管道脉冲串常用于步进电动机的控制。图2是一个步进电动机的控制包络线,包络线分3段:第1段(AB段)为加速运行,电动机的起始频率为2kHz(周期为500s),终止频率为10kHz(周期为100us),要求运行脉冲数目为200个:第2段(BC段)为恒速运行,电动机的起始和终止频率均为10kHz(周期为100s),要求运行脉冲数目为3600个;第3段(CD段)为减速运行,电动机的起始频率为10kHz(周期为100us),终止频率为2kHz(500us),要求运行脉冲数目为200个。

根据图2步进电动机的控制包络线列出的包络表

根据包络表可编写出步进电动机的控制程序,如图3所示,该程序由主程序、SBR_0子程序和NT_0中断程序组成。

主程序

SBR_0子程序

INT_0中断程序

​在主程序中,PLC首次扫描时SM0。触点闭合一个扫描周期,先将Q0.0端子输出映像寄存器置0,以便将该端子用于高速脉冲输出,然后执行子程序调用指令转入SBR0子程序。在SBR0子程序中,网络1用于设置多段管道脉冲串的参数包络表(段数、第1段参数、第2段参数和第3段参数),网络2先设置脉冲输出的控制字节,并将包络表起始单元地址号送入SMW168单元,然后用中断连接指令将NT0中断程序与中断事件19(PTO0脉冲串输出完成产生中断)连接起来,再用EN指令允许所有的中断,最后执行PLS指令,让高速脉冲发生器按设定的控制方式和参数(由包络表设置)工作,即从Q0.0端子输出多段管道脉冲串,去驱动步进电动机按加速、恒速和减速顺序运行。当Q00端子的多管道PTO脉冲输出完成后,马上会向系统发出中断请求,系统则执行DNT0中断程序,Q10线圈得电。

以上,欢迎动动手分享及收藏!

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://lf3-cdn-tos.bytescm.com/obj/cdn-static-resource/pgc/v2/pgc_tpl/static/image/commodity_buy_f2b4d1a.png); } S7-200 SMART PLC应用技术 ¥88 购买

相关问答

plc编程一秒的脉冲怎么编?

一秒的脉冲周期,需要编写定时器来生成脉冲信号。在PLC编程中,通常使用计数器和定时器来实现定时控制和生成脉冲信号。对于一秒的脉冲信号,可以编写一个计数器...

西门子PLC肿么编写脉冲程序-ZOL问答

Y=X-6400/25600*100,你的程序就按照这条公式编程就行了。有用(0)回复baidu_chuiguoyan一般直接加上或者减去一个数即可,如果是个常数,直接在plc里编程。如.....

三菱plc脉冲正反转编程实例?

回答如下:以下是一个三菱PLC脉冲正反转编程实例:1.确定PLC模型和IO点例如,使用FX3UPLC,需要确定脉冲输入和输出的IO点,例如脉冲输入为X0、脉冲输出为Y0...

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

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

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

西门子PLC编写脉冲程序的具体步骤取决于所使用的具体型号和软件版本。一般来说,您需要首先设置输入和输出模块,然后在PLC编程软件中创建一个新的脉冲程序。接...

脉冲信号接PLC?

三极管起到的是开关和驱动作用PLC输出的脉冲信号驱动能力有限所以外扩三极管做功率开关。如果功率较大的话三极管依然会发热,可以加散热器,也可以两级...

PLC多段脉冲怎么控制?

主要看被控的伺服电机的运动情况:如果是独立的多个电机,时间上没有冲突,可以一对多,用脉冲切换器去切换被控的伺服驱动器(占用数字量输出口);如果步进...主...

欧姆龙cp1E-60DT-Dplc脉冲指令怎么使用?要怎样写原点和单站动?

有关脉冲的指令有SPEED.PULS.ACC.PLS2,原点有ORG指令,不过这些不是三言两语能说清楚的,建议参考CP1系统编程手册及CP1E操作手册有关脉冲的指令有SPEED.PUL...

plc一般脉冲是接哪里?

plc脉冲一般接输出线,采用专用端钮接线盒。安装及使用电度表在出厂前经检验合格,并加封铅印,可安装使用。如果无铅封或贮存时间过久的电度表应请有关部门重校...

在编程软件PLC设定里面脉冲输出怎么设置程序怎么写?

这个不难搞啊,提示你一下,按钮都为输入点,一个输入有上升沿,置位相应输出点;在每个输出点中间,串入其他输出点的常闭;写一段复位输出点程序;在每个抢答输...

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

QQ

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

热线

188-0000-0000
专属服务热线

微信

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