2在初始化子程序中设置控制字节。如将16#D3(时基微秒)或16#DB(时基毫秒)写入SMB67 或SMB77,控制功能为:允许PTO/PWM功能、选择PWM操作、设置更新脉冲宽度和周期数值、以及选择时基(微秒或毫秒)。 3在SMW68或SMW78中写入一个字长的周期值。 4在SMW70或SMW80中写入一个字长的脉宽值。 5执行PLS指令,使S7-200为PWM发生器编程,并由Q0.0或Q0.1输出。 6可为下一输出脉冲预设控制字。在SMB67或SMB77中写入16#D2(微秒)或16#DA(毫秒)控制字节中将禁止改变周期值,允许改变脉宽。以后只要装入一个新的脉宽值,不用改变控制字节,直接执行PLS指令就可改变脉宽值。
6退出子程序。 分析:因为每个周期都有操作,所以须把Q0.0接到I0.0,采用输入中断的方法完成控制任务,并且编写两个中断程序,一个中断程序实现脉宽递增,一个中断程序实现脉宽递减,并设置标志位,在初始化操作时使其置位,执行脉宽递增中断程序,当脉宽达到0.9s时,使其复位,执行脉宽递减中断程序。在子程序中完成PWM的初始化操作,选用输出端为Q0.0,控制字节为SMB67,控制字节设定为16#DA(允许PWM输出,Q0.0为PWM方式,同步更新,时基为ms,允许更新脉宽,不允许更新周期)。程序如图6-16所示。
(b)子程序 (c)中断程序 图6-16 例6-8题图 |