第一章 分基本指令
第一十九节 处理脉宽调制
项目19
处理脉宽调制

Q0.0输出方波信号,脉宽初始值为0.5s,每周期递增0.5s,周期固定为5s,当脉宽达到设定的最大值4.5s时,脉宽改为每周期递减0.5s,直到脉宽为0,重复以上过程。

脉宽调制(PWM)功能提供可变占空比的脉冲输出,时间基准为μs或ms,周期的变化范围为10~65535μs或2~65535ms,脉冲宽度的变化范围为0~65535μs或0~65535ms。
特殊存储字节SMB67用来初始化Q0.0的PWM,该控制字节包含PWM允许位,修改周期和脉宽的允许位,以及时间基数选择位等,本例由子程序0来调整这个控制字节。通过ENI指令,全局允许所有的中断,然后通过PLS指令,使系统接收各设定值,并初始化“PTO/PWM发生器”,从而在输出端Q0.0输出PWM信号。
本项目中,周期5s是通过将数值5000置入特殊存储字SMW68来实现的,初始脉宽0.5s则通过将500写入特殊存储字SMW70来实现的。该初始化过程在程序的第一个扫描周期通过子程序0来实现。当一个PWM循环结束,即当前脉宽为0s时,将重新初始化PWM。
位存储器M0.0用来表明脉宽是增加还是减少,初始化时将这个标记设为增加。输出端Q0.0与输入端I0.0相连,这样输出信号就送到输入端I0.0。当第一个方波脉冲输出时,利用ATCH指令,把中断程序1(INT1)赋给中断事件0(I0.0的上升沿)。每个周期中断程序1将当前脉宽增加0.5s,然后利用DTCH指令分离中断INT1,使这个中断再次被屏蔽,如果在下次增加时,脉宽大于或等于周期,则将辅助内存标记位M0.0再次置0。这样就把中断程序2赋予事件0,并且脉宽也将每次递减0.5s。当脉宽值减为0时,将再次执行,初始化程序(子程序0)。
本项目程序流程图如图19-1所示。
根据工艺要求和流程图编写的程序及注释如图19-2~图19-5所示。
可以使用两种方法改变PWM波形的特性。
(1)同步更新
同步更新用于不要求改变时间基准的场合。同步更新时,波形特性的变化发生在两个周期的交界处,可以实现平滑过渡。
(2)异步更新
异步更新用于需要改变PTO/PWM时间基准的场合。异步更新瞬时关闭PTO/PWM,与PWM的输出波形不同步,可能引起被控设备抖动。
建议选择一个合适的时间基准,采用同步PWM更新。