您现在的位置是:首页 > PLC技术 > PLC技术

PLC的PWM脉冲的产生与使用

来源:艾特贸易2017-06-04

简介PWM 脉冲是一种占空比和周期都可调节的脉冲。 PWM 脉冲的周期范围为 10~ 65535 s 或 2~65535ms ,为 16 位无符号数,在设置脉冲周期时,如果周期小于两个时间单位,系统会默认周期值为两个

    PWM脉冲是一种占空比和周期都可调节的脉冲。PWM脉冲的周期范围为10~ 65535μs2~65535ms,为16位无符号数,在设置脉冲周期时,如果周期小于两个时间单位,系统会默认周期值为两个时间单位;PWM脉宽时间为0~65535μs0~65535ms,为16位无符号数,若设定的脉宽等于周期(即占空比为100%),输出一直接通,若设定脉宽等于0(即占空比为0),输出断开。    1.波形改变方式    PWM脉冲的波形改变方式有两种:同步更新和异步更新。    (1)同步更新    如果不需改变时间基准,可以使用同步更新方式,利用同步更新,信号波形特性的变化发生在周期边沿,使波形能平滑转换。    (2)异步更新    如果需要改变PWM发生器的时间基准,就要使用异步更新,异步更新会使PWM功能被瞬时禁止,PWM信号波形过渡不平滑,这会引起被控设备的振动。    由于异步更新生成的PWM脉冲有较大的缺陷,一般情况下尽量使用脉宽变化、周期不变的PWM脉冲,这样可使用同步更新。    2.产生PWM脉冲的编程方法    要让高速脉冲发生器产生PWM脉冲,可按以下步骤编程:    1)根据需要设置控制字节SMB67SMB68    2)根据需要设置脉冲的周期值和脉宽值。周期值在SMW68SMW78中设置,咏宽值在SMW70SMW80中设置。    3)执行高速脉冲输出PLS指令,系统则会让高速脉冲发生器按设置从Q0.0Q0.1端子输出PWM脉冲。    3.产生PWM脉冲的编程实例    5-50是一个产生PWM脉冲的程序,其实现的功能是:让PLCQ0.0端子输出PWM脉冲,要求PWM脉冲的周期固定为5s,初始脉宽为0.5s,每周期脉宽递增0.5s,当脉宽达到4. 5s后开始递减,每周期递减0.5s,直到脉宽为0。以后重复上述过程。    该程序由主程序、SBR_0子程序和INT_0INT_1两个中断程序组成,SBR_0子程序为PWM初始化程序,用来设置脉冲控制字节和初始脉冲参数,INT_0中断程序用于实现脉宽递增,INT_1中断程序用于实现脉宽递减。由于程序采用中断事件0I0.0上升沿中断)产生中断,因此要将脉冲输出端子Q0.010.0端子连接,这样在QO.0端子输出脉冲上升沿时,I0.0端子会输入脉冲上升沿,从而触发中断程序,实现脉冲递增或递减。
产生PWM脉冲的程序
产生PWM脉冲的程序
产生PWM脉冲的程序
    5-50    产生PWM脉冲的程序    程序工作过程说明如下:    在主程序中,PLC上电首次扫描时,SM0.1触点接通一个扫描周期,子程序调用指令执行,转入执行SBR_0子程序。在子程序中,先将M0.0线圈置1,然后设置脉冲的控制字节和初始参数,再允许所有的中断,最后执行高速脉冲输出PLS指令,让高速脉冲发生器按设定的控制字节和参数产生并从Q0.0端子输出PWM脉冲,同时从子程序返回到主程序网络2,由于网络23指令条件不满足,程序执行网络4M0.0常开触点闭合(在子程序中M0.0线圈被置1),中断连接ATCH指令执行,将INT_0中断程序与中断事件0I0.0上升沿中断)连接起来。当Q0.0端子输出脉冲上升沿时,I0.0端子输入脉冲上升沿,中断事件0马上发出中断请求,系统响应该中断而执行INT_0中断程序。    INT_0中断程序中,ADD_I指令将脉冲宽度值增加0.5s,再执行PLS指令,让Q0.0端子输出完前一个PWM脉冲后,按新设置的宽度输出下一个脉冲,接着执行中断分离DTCH指令,将中断事件OINT_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脉冲。