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 购买西门子脉冲输出的几种方式有什么区别?如何应用?理解全面的人不多
序: PTO和PMW的在应用上的区别为:
PTO为脉冲控制模式,而PWM为模拟量控制模式。
当设备对位置有精确要求时选用PTO,而当设备对转速和力矩有精确要求时选用PWM。
根据设备的需要选择伺服设备的类型,再选择用哪种控制方式。
PWM是通过高速计数器将输入信号模拟为恒定的电压输出,通过控制电压的变化来控制电机转速的变化。
一 西门子PLC高速脉冲输出的几个概念
1 高速脉冲输出的形式
A 高速脉冲串输出 PTO : ( Pulse Train Output )
输出指定数量,占空比为50% 的方波脉冲串。
B 宽度可调脉冲输出 PWM : ( Pulse Width Modulation )
输出数量不限,占空比可调的脉冲串信号。
2 高速脉冲输出端子
西门子S7-200CPU可以提供 2 个高速脉冲发生器
● PTO/PWM 发生器0 的输出端子是 Q0.0
● PTO/PWM 发生器1 的输出端子是 Q0.1
3 高速脉冲输出优先权
有PTO/PWM 输出时,CPU 把输出端子Q0.0、Q0.1 控制权交给 PTO/PWM 发生器,禁止普通逻辑输出。
输出映像寄存器 Q 的状态会影响PTO/PWM波形的起始电平, 高速脉冲输出前要先把Q0.0、 Q0.1的状态清零。
4 高速脉冲输出适用机型
输出高频脉冲信号时,应选用晶体管输出型 PLC。
二 高速脉冲输出指令及特殊寄存器
1 高速脉冲输出指令( Pulse )
指令功能:EN 有一个上升沿时,激活PLS,控制PLC从 Q0.0 或 Q0.1 输出高速脉冲。
PLS指令可以输出:
※ 高速脉冲串 PTO
※ 宽度可调的脉冲信号 PWM
数据类型:
※ 操作数Q0.X:X必须是常数 0 或 1。
※ EN:只接通一个扫描周期的短信号。
2 特殊寄存器
每个 PTO/PWM 都有一组配套参数:
● 1个 8位的控制字节
● 1个 8位的状态字节
● 1个 16位的周期值
● 1个 16位的脉宽值
● 1个 32位的脉冲数量
对于多段 PTO,还有
● 1个 8位的段字节
● 1个 16位包络表起始地址
这些参数存放在系统指定的特殊标志寄存器中
状态字节
PTO 方式下运行时,系统根据运行状态使相应位置位。
控制字节
通过设置字节中各控制位,来定义高速脉冲输出的特性.
控制字节中各控制位的功能
三 高速脉冲串输出PTO
特点:高速脉冲串输出(PTO)方式下,只能改变脉冲的周期值和脉冲数。
1 周期和脉冲数
●周期:单位:μs或ms。周期值为16位无符号整数。变化范围:50~65535 μs或 2~65535 ms。
脉冲数:是一个32位的无符号整数,取值范围:1~4294967295。
2 高速脉冲串输出中断
PTO 方式下,当输出完指定数量的脉冲后,产生高速脉冲串输出中断。
● PTO/PWM 0 的中断事件号是19
● PTO/PWM 1 的中断事件号是20
高速脉冲串输出时,CPU自动将PTO空闲位SM66.7(或SM76.7)置1。
3 PTO的种类
PTO方式下,要输出多段脉冲串时,允许脉冲串排队。PTO输出多段脉冲的方式有两种:
●单段PTO:定义一个脉冲串,输出一个脉冲串 (特性参数通过特殊寄存器分别定义) 。
●多段PTO:集中定义多个脉冲串,按顺序输出多个脉冲串(特性参数通过包络表集中定义)
单段PTO 实现的方法
用指定的特殊标志寄存器定义脉冲串特性参数(每次定义一个脉冲串)。一个脉冲串输出完成后,产生中断。在中断服务程序中再为下一个脉冲串更新参数,输出下一个脉冲串。
优点: 各脉冲段可以采用不同的时间基准。◎缺点:单段PTO输出多段高速脉冲串时,编程复杂,且参数设置不当会造成脉冲串之间的不平滑转换。
多段PTO 操作
多段PTO:集中定义多个脉冲串,并把各段脉冲串的特性参数按照规定的格式写入变量存储区用户指定的缓冲区中--称为包络表
包络表说明:
● 包络表由包络段数和各段构成。
● 第一个字节为需要输出的脉冲串总段数,范围:1~255 ;
● 定义一段脉冲串的特性参数需要8个字节
※ 2个字节存放脉冲串的起始周期值
※ 2个字节定义脉冲串的周期增量
※ 4个字节存放该段脉冲串的脉冲数
包络表中的周期单位可以为 ms 或 μs,
但表中所有周期单位必须一致。
● 周期增量的计算公式:
多段PTO操作时,需把包络表的起始地址装入标志寄存器 SMW168(或SMW178)中。
● PTO指令执行时,当前输出段的段号由系统填入 SMB166 或 SMB176 中。
多段PTO的优点:
编程简单,且在同一段脉冲串中其周期可以均匀改变。
多段 PTO 编程方法及步骤:
A. 初始化操作(以PTO/PWM 0为例):
a. 将 PTO 的输出点 Q0.0 复位;
b. 调用初始化子程序SBR-0,完成下列任务:
设置控制字节SMB67 ,按照控制要求按位填写:如使SMB67=16#A0。
将包络表的起始地址写入 SMW168;
● 填写包络表中各段脉冲串的特性参数;
建立中断连接:用ATCH指令建立脉冲输出完成中断事件与中断程序的联系。当PLS指令输出完指定数量的脉冲串时,产生中断。
● 用ENI全局开放中断;
B. 有启动信号时,执行高速脉冲输出指令PLS,按顺序输出多段脉冲串。
C. 有停止信号时,停止高速脉冲串输出。
停止 PTO 输出的方法
PLS指令一经激发,就能完成指定脉冲串的输出,故要停止PTO输出,必须先在控制字节中禁止PTO输出,且执行PLS指令。
多段PTO应用实例
已知步进电机的起动频率为2 kHz(A点),经过400个脉冲加速后频率上升到10 kHz(B点和C点),恒速转动的脉冲数为4000个,减速过程脉冲数为200个,频率降为2 kHz(D点),其频率特性如图所示。
解:● 确定脉冲发生器及工作模式
要求PLC输出三段串脉冲。故采用多段PTO输出方式。选择输出端为 Q0.0。
● 填写控制字节SMB67:使SMB67=16#A0
将包络表首地址装入SMW168中。
● 填写包络表。
参数换算:
起始频率:2 kHz ,起始周期值:500μs,
运行频率为10 kHz,运行周期值:100μs。
输出3段脉冲串,时基取μs,定义三段脉冲串特性参数的包络表为:
中断连接:高速脉冲输出完成时,产生中断事件19,用ATCH指令将与中断事件与中断服务程序INT0连接起来,并全局开中断(ENI)。
● 执行PLS指令。
采用多段PTO,脉冲串连续输出期间,按启动按钮I0.0不起作用,不会出现脉冲串重复排队输出的现象,脉冲串能够按照规定的顺序输出完后,停止输出。
四 宽度可调的脉冲输出PWM
特点: PWM方式下,用户可以改变脉冲的周期值 和 脉宽值 ,脉冲数不受限制。
1 周期值和脉宽值
周期值:是一个16位无符号数据,单位:μs或ms;变化范围:50~65535μs或2~65535 ms。
脉冲宽度:是一个16位无符号整数,单位:μs或ms;变化范围是0~65535 μs或ms。即占空比在0%~100%之间变化。
2 PWM 更新方式
● 同步更新:在改变脉冲周期值和脉宽值时,不改变时间基准。特点:同步更新时,波形的变化发生在周期的边缘,输出波形进行平滑转换。
异步更新:在改变脉冲周期值和脉宽值时,改变时间基准。特点:采用异步更新会使高速脉冲输出功能被瞬时禁止,这时输出端交由输出映像寄存器Q控制,可能使 PWM 的波形不连续,引起被控制设备的振动。
结论:改变 PWM 波形的特性时应尽量采用同步更新。
3 PWM的编程方法及步骤
A.确定脉冲发生器:
※ 选择高速脉冲输出端(发生器);
※ 选择工作模式为PWM。
B. PWM的初始化
a. 将PWM的输出点(Q0.0或Q0.1)复位;
b. 调用初始化子程序SBR-0,它所完成的任务:
按位填写控制字节(如SMB67):SMB67=16#DB
向SMW68写入第一个脉冲串的周期值;
●向SMW70写入第一个脉冲串的脉宽值 ;
●执行PLS指令,输出指定宽度的脉冲信号。修改脉冲串宽度的方法
● 改写控制字节SMB67,将允许改脉宽值位置1 ,其它位不变。
● 向SMW70写入新的脉冲宽度值
● 执行PLS,输出指定宽度的脉冲信号。
PWM 输出举例
要求 PWM0的脉冲周期是 T=10000ms,开始时输出占空比为 10%的脉冲,当 I0.0=1时,输出占空比为 50%的脉冲 ,当 I0.2=1时,停止输出脉冲。
相关问答
PLC发脉冲编程指令?
PLC脉冲指令是指对西玛仪表028-6650595713808018567关于作为PLC连接驱动器来控制步进电机的,比如使用台达PLC(三菱系也是一样),连接Y0,和C0到步进电机驱动器...
西门子PLC肿么编写脉冲程序-ZOL问答
Y=X-6400/25600*100,你的程序就按照这条公式编程就行了。有用(0)回复baidu_chuiguoyan一般直接加上或者减去一个数即可,如果是个常数,直接在plc里编程。如.....
三菱plc的脉冲读取指令详解与实例?
三菱PLC的脉冲读取指令用于读取或清除累计脉冲计数器的值。该指令适用于需要统计脉冲信号的应用程序,例如计数器、位置控制等方面。下面是该指令的详细解释和...
PLC1200发送一个脉冲用多久?
对不起,无法给出PLC1200发送一个脉冲的确切时间,因为这取决于许多因素,如脉冲的频率、脉冲的宽度、PLC的处理速度等。一般来说,PLC发送脉冲的速度非常快,可...
plc5秒脉冲信号怎么发出?
当然是一次性按一定的频率发完啊!有频率所以就有速度快慢的问题了,PLC通过伺服驱动器的定位完成信号可以确定伺服已经完成了定位,如果有故障伺服驱动器接受了...
欧姆龙plc脉冲输入怎么接线?
欧姆龙PLC的脉冲输入通常用于接收外部设备的脉冲信号,例如编码器、计数器等。接线方法如下:1.在PLC的输入模块上找到脉冲输入终端,通常标有"X"。这些终端用...
如何让PLC一直输出脉冲?
我来回答这个问题,让PLC输出脉冲的方法还是比较多的,我们可以根据控制不同的负载,通过不同的指令输出脉冲的频率是不一样的。下面我们以日系PLC(可编程控制器...
s7200plc脉冲指令?
S7200PLC脉冲指令是指西门子S7200系列可编程逻辑控制器的一种指令类型,用于控制和操作脉冲信号。这种指令可以实现对脉冲信号的计数、频率测量、时间延迟等功...
PLC多段脉冲怎么控制?
主要看被控的伺服电机的运动情况:如果是独立的多个电机,时间上没有冲突,可以一对多,用脉冲切换器去切换被控的伺服驱动器(占用数字量输出口);如果步进...主...
plc怎么发送脉冲信号?
plc发送脉冲信号一般都是由特殊存储器来实现的。plc之所以发送脉冲信号,一般的原理是当ms定时器规定的时间到,PLC在中断里面写输出为1,而平时为0,这样就实...