19高速脉冲输出指令一
高速脉冲输出功能是指在可编程序控制器的某些输出端产生高速脉冲,用来驱动负载实现精确控制。
这在运动控制中具有广泛应用。
使用高速脉冲输出功能时,PLC主机应选用晶体管输出型,以满足高速输出的频率要求。
一、高速脉冲有关概念
1. 高速脉冲输出的方式
高速脉冲输出有高速脉冲串输出PTO和宽度可调脉冲输出PWM两种方式。
PTO可以输出一串脉冲(占空比50%),用户可以控制脉冲的周期和个数,如图5-13(a)所示,PWM可以输出一串占空比可调的脉冲,用户可以控制脉冲的周期和脉宽,如
图5-13(b)所示。
2. 高速脉冲输出端子的确定
每种PLC主机最多可提供2个高速脉冲输出端。
高速脉冲的输出端不是任意选择的,必须按系统指定的输出点Q0.0和Q0.1来选择,也可以是以上两种方式的任意组合。
高速脉冲输出点包括在一般数字量输出映像寄存器编号范围内。
同一个输出点只能用做一种功能,如果Q0.0和Q0.1在程序执行时用做高速脉冲输出,则只能被高速脉冲输出使用,其通用功能被自动禁止,任何输出刷新、输出强制、立即输出等指令都无效。
只有高速脉冲输出不用的输出点才可能做普通数字量输出点使用。
在Q0.0和Q0.1编程时用做高速脉冲输出,但未执行脉冲输出指令时,可以用普通位操作指令设置这两个输出位,以控制高速脉冲的起始和终止电位。
二、高速脉冲指令及特殊寄存器
高速脉冲输出有两种输出形式:高速脉冲序列(或称高速脉冲串)输出PTO(Pulse train Output)和脉冲宽度调制输出PWM(Pulse Width modulation),可通过特殊继电器来定义输出形式,输出形式可以是PTO/PWM的任意组合。
1. 脉冲输出指令
LAD
STL
作用
PLS Q0.X
检测各个相关特殊继电器的状态,激活由控制位定义的脉冲操作,从Q0.0或Q0.1输出高速脉冲。
高速脉冲串输出PTO 和宽度可调脉冲输出PWM 都由PLS 指令激活输出。
2. 特殊标志寄存器
每个高速脉冲发生器对应一定数量的特殊寄存器,这些寄存器包括控制字节寄存器、状态字节寄存器和参数数值寄存器。
它们用以控制高速脉冲的输出形式,反映输出状态和参数值。
各寄存器的功能如表5-9所列。
表5-9 特殊寄存器功能表 Q0.0的寄存器
Q0.1的寄存器
功能描述
SMB66 SMB76 状态字,在PTO 方式下,跟踪脉冲串的输出状态 SMB67 SMB77 控制字,控制PTO/PWM 脉冲输出的基本功能 SMW68 SMW78 周期值,PTO/PWM 的周期值,2~65535 SMW70 SMW80 脉宽值,PWM 的脉宽值,0~65535 SMD72 SMD82 脉冲数,PTO 的脉冲数,1~4294967295 SMB166 SMB176 段号,多段管线PTO 进行中的段的编号 SMW168
SMW178
多段管线PTO 包络表起始字节地址
用于PTO 方式。
每个高速脉冲输出都有一个状态字节,程序运行时根据运行状态使某些位自动置位。
可以通过程序来读取相关位的状态,用此状态作为判断条件实现相应的操作。
状态字节中各状态位的功能如表5-10所列。
表5-10 状态字节表 Q0.0 Q0.1 功能描述
SM66.0 SM76.0 不用 SM66.1 SM76.1 SM66.2 SM76.2 SM66.3 SM76.3 SM66.4 SM76.4 PTO 包络表因计算错误而终止:0无错误,1终止 SM66.5 SM76.5 PTO 包络表因用户命令而终止:0无错误,1终止
SM66.6 SM76.6 PTO 管线溢出:0无溢出,1有溢出
SM66.7
SM76.7
PTO 空闲:0执行中,1空闲
(2)控制字节
每个高速脉冲输出都对应一个控制字节,通过对控制字节指定位的编程:设置字节中各控制位,如脉冲输出允许、PTO /PWM 模式选择、PTO 单段/多段选择、更新方式、时间基准和允许更新等。
控制字节中各控制位的功能如表5-11所列。
表5-11 控制位含义表 Q0.0控制位 Q0.1控制位 功能描述
SM67.0 SM77.0 PTO/PWM 更新周期值:0不更新,1允许更新 SM67.1 SM77.1 PWM 更新脉冲宽度值:0不更新,1允许更新 SM67.2
SM77.2
PTO 更新输出脉冲数:0不更新,1允许更新
三、PTO输出形式
1. PTO输出
PTO输出形式是指从Q0.0或(和)Q0.1输出指定周期的一段或几段方波脉冲序列,周期值为16位无符号数据,周期范围为50~65535μs或2~65535ms,占空比为50%,一般对周期值的设定为偶数,否则会引起输出波形占空比的失真。
每段脉冲序列中,脉冲的数量为32位数据,可分别设定为1~4294967295。
在PTO输出形式中,允许连续输出多个方波脉冲序列(脉冲串),每个脉冲串的周期和脉冲数可以不同。
当需要输出多个脉冲串时,允许这些脉冲串进行排队,形成管线,在当前的脉冲串输出完成后,立即输出新的脉冲串。
根据管线的实现方式,可分为单段则和多段PTO。
①单段管线PTO
在单段管线PTO输出时,管线中只能存放1个脉冲串的控制参数(入口地址)。
在当前脉冲串输出期间,就要对下一个脉冲串相关的特殊继电器进行更新,待当前的脉冲串输出完成后,通过执行PLS指令,就可以立即输出新的脉冲串,实现多段脉冲串的连续输出。
采用单段管线PTO的优点是:各个脉冲串的时间基准可以不同。
采用单段管线PTO的缺点是:编程复杂且烦琐,当参数设置不当时,会造成各个脉冲串间连接的不平滑。
②多段管线PTO。
当采用多段管线PTO输出高速脉冲串时,需要在变量存储器区(V)中建立一个包络表,在包络表中存储各个脉冲串的参数,当执行PLS指令时,CPU自动按顺序从包络表中调出各个脉冲串的入口地址,连续输出各个脉冲串。
包络表由包络段数和各段构成,每段长度为8字节,用于存储脉冲周期值(16位),周期增量值(16位),脉冲计数值(32位)。
编程时必须装入包络表的偏移首地址。
在表5-12中,给出了一个3段包络表的格式。
表5-12 包络表的格式
采用多段管线PTO输出的优点是:编程简单,可按照用序设定的周期增量值自动增减脉冲周期。
采用多段管线PTO输出的缺点是:所有脉冲串的时间基准必须一致,当执行PLS指令时,包络表中的所有参数均不能改变。
注意:输入0作为脉冲串的段数会产生一个非致命错误,将不产生PTO输出。
2. 使用PTO指令功能的编程要点
①确定高速脉冲串的输出端(Q0.0或Q0.1)和管线的实现方式(单段或多段)
②进行PTO初始化,利用特殊继电器SM0.1调用初始化子程序:
②编写初始化子程序。
.设置控制字节,将控制字节写入SMB67或SMB77。
.写入初始周期值,周期增量值和脉冲个数。
.如果是多段PTO,则装入包络表的首地址(可以子程序的形式建立包络表)。
.设置中断事件。
.编写中断服务子程序。
.设置全局开中断。
.执行PLS指令。
.退出子程序。
3. 多段管线PTO输出控制制应用举例
某台步进电机的运行曲线如图5-14所示,电机从A点(频率为2KHz)开始加速运行,加速阶段的脉冲数为200个,到B点(频率为10KHz)后变为恒速运行,恒速阶段的脉冲数为3400个;到C点(频率仍为10KHz)后开的减速,减速阶段的脉冲数为400个;到D点(频率为2KHz)后指示灯亮,表示从A点到D点的运行过程结束。
图5-14中的示例给出的包络表的值要求产生一个输出波形包括三段:步进电机加速(第一段);步进电机匀速(第二段)和步进电机减速(第三段)。
对该例,要4000个脉冲达到要求的电机转动数,启动和结束频率是2kHz,最大脉冲频率是
10kHz。
出于包络表中的值是则周期表示的,而不是用频率,需要把给定的频率值转化为周期值。
所以,启动和结束脉冲周期为
500μs。
最高频率的对应周期为
100μs。
在输出包络的加速部分,要求在200个脉冲左右达到最大脉
图5-14 频率/时序图
冲频率。
假定包络的减速部分在400个脉冲完成。
在该例中,使用一个简单公式计算PTO/PWM发生器用来调整每个脉冲周期所使用的周期增量值。
给定段的周期增量=(ECT-ICT)/Q
其中,ECT为该段结束周期时间;ICT为该段初始化周期时间;Q为该段的脉冲数量。
利用这个公式,加速部分(第一段)的周期增量是2;相似地,减速部分(第三段)的周期增量是1。
出于第二段是恒量控制,因此.该段的周期增量为0。
假定包络表存放在从VB200开始的V存储器区,表5-13给出了产生所要求波形的值。
表5-13 包络值表
V寄存器地址存储值V寄存器地址存储值
VB200 3(总段数)VW211 0(周期增量——段#2)
VW201 500(初始周期——段#1)VD213 3400(脉冲数——段#2)
VW203 -2(周期增量——段#1)VW217 100(初始周期——段#3)
VD205 200(脉冲数——段#1)VW219 1(周期增量——段#3)
VW209 100(初始周期——段#2)VD221 400(脉冲数——段#3)。