查看原文
其他

PLC高速脉冲输出指令

2016-06-23 机械工业出版社E视界
导读

基本指令和顺序控制指令是PLC最常用的指令,为了适应现代工业自动控制需要,PLC制造商开始逐步为PLC增加很多功能指令,功能指令使PLC具有强大的数据运算和特殊处理功能,从而大大扩展了PLC的使用范围。

S7-200 PLC内部有两个高速脉冲发生器,通过设置可让它们产生占空比为50%、周期可调的方波脉冲(即PTO脉冲),或者产生占空比及周期均可调节的脉宽调制脉冲(即PWM脉冲)。占空比是指高电平时间与周期时间的比值。PTO脉冲和PWM脉冲如图1所示。


图1 PTO脉冲和PWM脉冲说明

在使用脉冲发生器功能时,其产生的脉冲从Q0.0和Q0.1端子输出,当指定一个发生器输出端为Q0.0时,另一个发生器的输出端自动为Q0.1,若不使用脉冲发生器,这两个端子恢复普通端子功能。要使用高速脉冲发生器功能,PLC应选择晶体管输出型,以满足高速输出要求。


01class指令说明

高速脉冲输出指令说明如下:

02class高速脉冲输出的控制字节、参数设置和状态位

要让高速脉冲发生器产生合符要求的脉冲,须对其进行有关控制及参数设置,另外,通过读取其工作状态可触发需要的操作。

1.控制字节

高速脉冲发生器的控制采用一个SM控制字节(8位),用来设置脉冲输出类型(PTO或PWM)、脉冲时间单位等内容。高速脉冲发生器的控制字节说明见表5-14,例如当SM67.6=0时,让Q0.0端子输出PTO脉冲;当SM77.3=1时,让Q0.1端子输出时间单位为ms的脉冲。


表1 速脉冲发生器的控制字节

2.参数设置

高速脉冲发生器采用SM存储器来设置脉冲的有关参数。脉冲参数设置存储器说明见表2,例如SM67.3=1,SMW68=25,则将脉冲周期设为25ms。


表2 脉冲参数设置存储器

3. 状态位

高速脉冲发生器的状态采用SM位来显示,通过读取状态位信息可触发需要的操作。高速脉冲发生器的状态位说明见表3,例如SM66.7=1表示Q0.0端子脉冲输出完成。


表3 高速脉冲发生器的状态位

03classPTO脉冲的产生与使用PTO脉冲是一种占空比为50%、周期可调节的方波脉冲。PTO脉冲的周期范围为10μs~65535μs或2 ms~65535 ms,为16位无符号数;PTO脉冲数范围为1~4294967295,为32位无符号数。

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

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

1.单段脉冲串的产生

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

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

若网络2中不使用边沿P触点,那么在单段PTO脉冲串输出完成后如果I0.1触点仍处于闭合,则会在前一段脉冲串后面继续输出相同的下一段脉冲串。


图2 一段产生单段脉冲串的程序

2. 多段脉冲串的产生

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

1)单段管道脉冲串

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

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

2)多段管道脉冲串

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

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


表4 多段管道脉冲串的参数设置包络表

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

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

列包络表除了要知道段脉冲的起始周期和脉冲数目外,还须知道每个脉冲的周期增量,周期增量可用下面公式计算获得:

周期增量值=(段终止脉冲周期值-段起始脉冲周期值)/该段脉冲数

例如AB段周期增量值=(100μs-500μs/200-2μs


图3 一个步进电机的控制包络线

根据步进电机的控制包络线可列出相应的包络表,包络表见表5


表5 根据步进电机的控制包络线列出的包络表

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

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



图4 步进电机控制程序

04classPWM脉冲的产生与使用PWM脉冲是一种占空比和周期都可调节的脉冲。PWM脉冲的周期范围为10μs~65535μs或2 ms~65535 ms,为16位无符号数,在设置脉冲周期时,如果周期小于两个时间单位,系统会默认周期值为两个时间单位;PWM脉宽时间为0μs65535μs0ms65535 ms,为16位无符号数,若设定的脉宽等于周期(即占空比为100%),输出一直接通,设定脉宽等于0 (即占空比为0%),输出断开。

1. 波形改变方式

PWM脉冲的波形改变方式有两种:同步更新和异步更新。

(1)同步更新

如果不需改变时间基准,则可以使用同步更新方式,利用同步更新,信号波形特性的变化发生在周期边沿,使波形能平滑转换。

(2)异步更新

如果需要改变PWM发生器的时间基准,就要使用异步更新,异步更新会使PWM功能被瞬时禁止, PWM信号波形过渡不平滑,这会引起被控设备的振动。

由于异步更新生成的PWM脉冲有较大的缺陷,一般情况下尽量使用脉宽变化、周期不变的PWM脉冲,这样可使用同步更新。

2. 产生PWM脉冲的编程方法

要让高速脉冲发生器产生PWM脉冲,可按以下步骤编程:

1)根据需要设置控制字节SMB67或SMB68。

2)根据需要设置脉冲的周期值和脉宽值。周期值在SMW68或SMW78中设置,脉宽值在SMW70或SMW80中设置。

3)执行高速脉冲输出PLS指令,系统则会让高速脉冲发生器按设置从Q0.0或Q0.1端子输出PWM脉冲。

3.产生PWM脉冲的编程实例

图5是一个产生PWM脉冲的程序,其实现的功能是:让PLC从Q0.0端子输出PWM脉冲,要求PWM脉冲的周期固定为5s,初始脉宽为0.5s,每周期脉宽递增0.5s,当脉宽达到4.5s后开始递减,每周期递减0.5s,直到脉宽为0。以后重复上述过程。

该程序由主程序、SBR_0子程序和INT_0、INT_1两个中断程序组成,SBR_0子程序为PWM初始化程序,用来设置脉冲控制字节和初始脉冲参数,INT_0中断程序用于实现脉宽递增,INT_1中断程序用于实现脉宽递减。由于程序采用中断事件0(I0.0上升沿中断)产生中断,因此要将脉冲输出端子Q0.0与I0.0端子连接,这样在Q0.0端子输出脉冲上升沿时,I0.0端子会输入脉冲上升沿,从而触发中断程序,实现脉冲递增或递减。

程序工作过程说明如下:

在主程序中,PLC上电首次扫描时SM0.1触点接通一个扫描周期,子程序调用指令执行,转入执行SBR_0子程序。在子程序中,先将M0.0线圈置1,然后设置脉冲的控制字节和初始参数,再允许所有的中断,最后执行高速脉冲输出PLS指令,让高速脉冲发生器按设定的控制字节和参数产生并从Q0.0端子输出PWM脉冲,同时从子程序返回到主程序网络2,由于网络2、3指令条件不满足,程序执行网络4,M0.0常开触点闭合(在子程序中M0.0线圈被置1),中断连接ATCH指令执行,将INT_0中断程序与中断事件0(I0.0上升沿中断)连接起来。当Q0.0端子输出脉冲上升沿时,I0.0端子输入脉冲上升沿,中断事件0马上发出中断请求,系统响应该中断而执行INT_0中断程序。

在INT_0中断程序中,ADD_I指令将脉冲宽度值增加0.5s,再执行PLS指令,让Q0.0端子输出完前一个PWM脉冲后按新设置的宽度输出下一个脉冲,接着执行中断分离DTCH指令,将中断事件0与INT_0中断程序分离,然后从中断程序返回主程序。在主程序中,又执行中断连接ATCH指令,又将INT_0中断程序与中断事件0连接起来,在Q0.0端子输出第二个PWM脉冲上升沿时,又会产生中断而再次执行INT_0中断程序,将脉冲宽度值再增加0.5s,然后执行PLS指令让Q0.0端子输出的第三个脉冲宽度增加0.5s。以后INT_0中断程序会重复执行,直到SMW70单元中的数值增加到4500。

当SMW70单元中的数值增加到4500时,主程序中的“SMW70|>=I|4500”触点闭合,将M0.0线圈复位,网络4中的M0.0常开触点断开,中断连接ATCH指令无法执行,INT_0中断程序也无法执行,网络5中的M0.0常闭触点闭合,中断连接ATCH指令执行,将INT_1中断程序与中断事件0连接起来。当Q0.0端子输出脉冲上升沿(I0.0端子输入脉冲上升沿)时,中断事件0马上发出中断请求,系统响应该中断而执行INT_1中断程序。

在INT_1中断程序中,将脉冲宽度值减0.5s,再执行PLS指令,让Q0.0端子输出PWM脉冲宽度减0.5s,接着执行中断分离DTCH指令,分离中断,然后从中断程序返回主程序。在主程序中,又执行网络5中的中断连接ATCH指令,又将INT_1中断程序与中断事件0连接起来,在Q0.0端子输出PWM脉冲上升沿时,又会产生中断而再次执行INT_1中断程序,将脉冲宽度值再减0.5s。以后INT_1中断程序会重复执行,直到SMW70单元中的数值减少到0。

当SMW70单元中的数值减少到0时,主程序中的“SMW70|==I|0”触点闭合,子程序调用指令执行,转入执行SBR_0子程序,又进行PWM初始化操作。

以后程序重复上述工作过程,从而使Q0.0端子输出先递增0.5s、后递减0.5s、周期为5s连续的PWM脉冲。





图5 产生PWM脉冲的程序

(-END-)

选自《学PLC技术超简单》蔡杏山 主编

往期精彩

单片机入门经典!11个单片机程序设计经典项目!25个项目资料免费放送!

顺序控制指令及应用实例

PLC常用的基本控制电路及梯形图

PID控制、指令及应用





您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存