首页 理论教育 PTO/PWM初始化及编程方法|地铁设备PLC应用

PTO/PWM初始化及编程方法|地铁设备PLC应用

时间:2023-10-11 理论教育 版权反馈
【摘要】:下面说明PTO/PWM的初始化及操作步骤,以便进一步理解PTO及PWM功能。如果情况与此不符,或如果必须对PTO/PWM功能重新初始化,当然可以利用除第一扫描内存位之外的其他条件调用初始化程序。这些数值设定控制字节的目的是:启动PTO/PWM功能、选择PWM操作、选择微秒或毫秒为递增单位,以及设定更新脉冲宽度及周期时间值。执行PLS指令使S7-200程序对PTO/PWM生成器进行编程。

PTO/PWM初始化及编程方法|地铁设备PLC应用

下面说明PTO/PWM的初始化及操作步骤,以便进一步理解PTO及PWM功能。

在整个步骤说明过程中,一直使用脉冲输出Q0.0。初始化假定S7-200刚刚进入运行(RUN)模式,因此第一次扫描内存位(SM0.1)为真。如果情况与此不符,或如果必须对PTO/PWM功能重新初始化,当然可以利用除第一扫描内存位之外的其他条件调用初始化程序。

1.PWM初始化

将Q0.0初始化成PWM,按下列步骤进行:

(1)利用第一扫描内存位(SM0.1)将输出初始化为0,并调用需要的子程序进行初始化操作。使用子程序调用时,随后的扫描不再调用该子程序。因此可降低扫描执行时间,并使程序结构化更强。

(2)在初始化子程序内,以微秒为递增单位,以PWM数值16#D3装载SMB67(或以毫秒为递增单位,以PWM数值16#DB装载)。这些数值设定控制字节的目的是:启动PTO/PWM功能、选择PWM操作、选择微秒或毫秒为递增单位,以及设定更新脉冲宽度及周期时间值。

(3)用所需周期时间装载SMW68。

(4)用所需脉冲宽度装载SMW70。

(5)执行PLS指令,使S7-200对PTO/PWM生成器进行编程。

(6)退出子程序。

说明:以微秒为单位用数值16#D2装载SMB67(或以毫秒为单位装载数值16#DA),允许改变脉冲宽度。可以装入一个新的脉冲宽度值,然后不需要修改控制字节就执行PLS指令。

2.修改PWM输出的脉冲宽度

在子程序内为PWM改变脉冲宽度,应按下列步骤操作(假定SMB67已被预先装载数值16#D2或16#DA)。

(1)调用子程序用所要求的脉冲宽度装载SMW70。

(2)执行PLS指令,使S7-200对PTO/PWM生成器进行编程。

(3)退出子程序。

【例4-18】图4-33是一个脉宽调制(PWM)的示例。本例中一共有3个程序块。主程序(OB1)的功能是调用子程序SBR0把Q0.1初始化成PWM,调用子程序SBR1以改变PWM的脉冲宽度。

图4-33 PWM控制的编程

1)OB1

支路1:首次扫描复位Q0.1,调用子程序SBR0。

支路2:当M0.0=1(需要改变脉冲宽度时,使M0.0=1)时,调用子程序SBR1。

2)SBR0

支路1:把十六进制数DB装入SMB77,令SMB77的第7~0位分别是11011011。其功能是:允许PTO/PWM、选择PWM、单段操作、同步更新、时基为1 ms、脉冲数不更新、脉冲宽度值更新、周期更新。

支路2:把10000装入SMW78中,设定周期时间等于10 s。

支路3:把1000装入SMW80中,设定脉冲宽度为1000 ms。

支路4:启动PLS,是把PWM操作赋予Q0.1。

支路5:把十六进制数DA装入SMB77,复位控制字中的更新周期位,而允许改变脉冲宽度。装入一个新的脉冲宽度,不需要修改控制字节就可以执行PLS指令。

3)SBR1

支路1:把5000装入SMW80,设定脉冲宽度为5000 ms。

支路2:执行PLS指令编程,启动PLS。

3.PTO单段操作初始化

把Q0.0初始化成PTO,应按下列步骤操作:

(1)利用第一扫描内存位(SM0.1)复位输出为0,并调用所需子程序进行初始化操作。这样可降低扫描执行时间并使程序结构化更强。

(2)在初始化子程序内,以微秒为递增单位把PTO数值16#85装入SMB67(或以毫秒为单位把PTO数值16#8D装入)。用这些数值设定控制字节的目的是:启动PTO/PWM功能、选择PTO单段操作、选择以微秒或毫秒为递增单位,以及选择更新脉冲计数及周期时间数值。

(3)用所需周期时间装载SMW68。

(4)用所需脉冲计数装载SMD72。

(5)这一步是可选步骤。如果在脉冲输出完成之后要立即进行其他相关功能,可以将脉冲序列完成事件(中断事件19)加于中断子程序,对中断进行编程,利用ATCH指令,并执行全局中断允许指令ENI。

(6)执行PLS指令,使S7-200对PTO/PWM生成器进行编程。

(7)退出子程序。

4.改变PTO单段操作周期时间

利用单段PTO操作改变中断程序或子程序内的PTO脉冲数,应按下列步骤操作:

(1)以微秒为递增单位把PTO数值16#81存入SMB67(或以毫秒为单位时存入数值16#89)。用这些数值设定控制字节的目的是:启动PTO/PWM功能、选择PTO操作、选择以微秒或毫秒为递增单位,以及设定更新脉冲数。

(2)用所需周期时间装载SMW68。

(3)执行PLS指令,使S7-200对PTO/PWM生成器进行编程。更新脉冲数波形输出开始之前,CPU必须完成全部启动的PTO。

(4)退出中断程序或子程序。

5.改变PTO单段操作脉冲数

当使用单段PTO操作时,为了在中断程序或子程序内改变PTO脉冲数,应按下列步骤操作:

(1)以微秒为单位把数值16#84存入SMB67(或以毫秒为单位存入PTO数值16#8C)。用这些数值设定控制字节的目的是:启动PTO/PWM功能、选择PTO操作、选择以微秒或毫秒为递增单位,以及更新脉冲数。

(2)用所需脉冲数装载SMD72。

(3)执行PLS指令,使S7-200程序对PT0/PWM生成器进行编程。更新脉冲计数输出开始之前,CPU必须完成已经启动的PTO。

(4)退出中断程序或子程序。

6.改变PTO单段操作周期及脉冲数

利用单段PTO操作在中断程序或子程序内改变PTO周期时间及脉冲数,应按下列步骤操作:

(1)以微秒为单位把PTO数值16#85存入SMB67(或以毫秒为单位存入PTO数值16#8D)。用这些数值设定控制字节的目的是:启动PTO/PWM功能、选择PTO操作、选择以微秒或毫秒为递增单位,以及设定周期时间及脉冲数。

(2)用所需周期时间装载SMW68。

(3)用所需脉冲数装载SMD72。(www.xing528.com)

(4)执行PLS指令使S7-200程序对PTO/PWM生成器进行编程。更新脉冲计数及周期时间波形输出开始之前,CPU必须完成全部PTO操作。

(5)退出中断程序或子程序。

7.PTO多段操作初始化

进行PTO初始化,应按下列步骤操作:

(1)利用第一扫描内存位(SMO.1)复位输出为0,并调用所需的子程序进行初始化操作。这样可降低扫描执行时间,并使程序结构化更强。

(2)在初始化子程序内,以微秒为递增单位把PTO数值16#A0(或以毫秒为单位存入PTO数值16#A8)存入SMB67。用这些数值设定控制字节的目的是:启动PTO/PWM功能、选择PTO及多段操作,并选择微秒或毫秒为递增单位。

(3)将包络表的起始V内存偏移量存入SMWl68。

(4)设定包络表内的段数值,保证段数目数值(表内第一字节)正确。

此步为可选步骤。如果在PTO包络完成后立即希望进行相关功能,可将脉冲序列完成事件(中断事件19)加于中断子程序,对中断编程。对ATCH指令编程,执行全局中断允许指令ENI。

(5)执行PLS指令,S7-200为PTO/PWM生成器编程。

(6)退出子程序。

【例4-19】图4-34是一个使用单段操作的脉冲序列输出的示例。本例中共有3个程序块:主程序块(OB1)、子程序块(SBR0)、中断程序块(INT3)。

图4-34 单段脉冲序列控制程序

1)OB1

支路1:在SM0.1=1时,复位Q0.O,

支路2:调用子程序SBR0。

2)SBR0

子程序SBR0是初始化PTO程序。该PTO功能由Q0.0完成。因而子程序(SBR0)中把控制字节装入与Q0.0相关的存储器中。

支路1:把十六进制数8D装入SMB67中,控制字节的功能是:选择PTO操作选择时间基准为1 ms、设定脉冲宽度和周期时间、允许PTO功能。

支路2:把500装入SMW68,设定周期时间为500 ms。

支路3:把4装入SMD72,设定脉冲数为4。

支路4:中断连接指令ATCH,把PTO完成引起的中断事件(中断事件19)连接到中断程序INT3。

支路5:指令ENI允许全局中断。

支路6:启动PLS指令,把PTO操作赋予Q0.0。

支路7:把十六进制数89装入SMB67中,为其周期时间的修改而预装控制字节。

3)INT3

中断程序INT3的功能是根据PTO/PWM的寄存器修改PTO的脉冲周期。

支路1:SMW68是PTO/PWM周期时间寄存器,当SMW68=500时,表明PTO当前周期时间是500 ms,若满足这个条件,就把1000装入SMW68中,把周期设定改为1000 ms,而输出脉冲数4未变。

支路2:启动PLS。

中断时序如图4-35所示。

图4-35 中断时序

【例4-20】图4-36是一个用多段操作的脉冲序列输出的示例。

图4-36 多段脉冲序列控制程序

该程序由3个程序块组成,主程序OB1、子程序SBRO和中断程序INT2。

(1)主程序OB1的功能是利用初次扫描(SM0.1),复位映像寄存器Q0.0位,并调用子程序SBR0。

(2)子程序SBR0的各条语句具体功能如下:

① 向Q0.0的PTO控制字节传送控制字16#AO,设定控制字节为选择PTO操作、选择多段操作、选择时基为微秒、选择允许PTO功能。

将500送至SMWl68,指定包络表的起始地址为VB500。

将3送至VB500,设定包络表的段数为3。

将500送至VW501,设定第一段的初始周期为500 µs。

将-2送至VW503,设定第一段周期增量是-2 µs。

将200送至VD505,设定第一段的脉冲个数是200。

将100送至VW509,设定第二段的周期为100 µs。

将0送至VW511,设定第二段的周期增量为0 µs。

将3400送至VD513,设定第二段的脉冲数为3400。

将100送至VW517,设定第三段的初始周期为100 µs。

将1送至VW519,设定第三段的周期增量为1 µs

将400送至VD521,设定第三段的脉冲数为400。

定义中断程序2为处理PTO(中断事件19为PLSO脉冲完成事件)完成中断。

允许全局中断。

启动PTO操作。

(3)中断程序INT2的功能是:当PTO输出包络完成时接通Q0.5。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈