第一章 分基本指令
第一十八节 利用高速脉冲输出控制灯泡亮度
项目18
利用高速脉冲输出控制灯泡亮度

通过调整模拟电位器0的设置值来改变输出端Q0.0方波信号的脉冲宽度,从而调整灯泡的亮度。

每个S7-200 CPU有两个PTO/PWM(脉冲列/脉冲宽度调制器)发生器,分别通过两个数字量输出Q0.0和Q0.1输出特定数目的脉冲或周期的方波,即产生高速脉冲列或脉冲宽度可调的波形。项目17给出了输出高速脉冲列的应用,本项目则为根据模拟电位器POT0的设置来输出脉冲宽度可调的方波信号。
在程序的每次扫描过程中,模拟电位器0的值由特殊存储字节SMB28复制到内存字MW0的低字节MB1中。将模拟电位器0的值除以8(即右移3位)作为脉宽,脉宽和脉冲周期的比率大致决定了灯泡的亮度(相对于最大亮度)。除以8的目的是去掉SMB28所存值的3个最低有效位(由于抖动等原因模拟电位器的值每个周期都有可能发生变化),从而使程序更稳定。如果模拟电位器的值发生变化,则将重新初始化输出端Q0.0的脉宽调制,而模拟电位器的新值将被变换成脉宽的毫秒值。
例如,模拟电位器0的值SMB28=80,除以8即80/8=10,则可以得出:
10/25(脉宽/周期)=40%(电压时间比)=40%最大亮度
本项目的流程图如图18-1所示。
根据工艺要求和流程图编写的程序及注释如图18-2所示。