ersion 2.0 门子版权所有
*+'"%# ¸¹ºW
SIMATIC S7-200 例7 7处理脉宽调制 概述 在S7-200系列中,CPU-214的输出端Q0.0和Q0.1能够输出方波信号,而且方波信号 的周期和脉宽均能独立调节,其中脉宽指的是在一个周期内,输出信号处于高电平的时间 长度。 下面这个例子说明了脉宽调制(PWM)是如何工作的。输出端Q0.0输出方波信号,其 脉宽每周期递増0.5秒,周期固定为5秒,并且脉宽的初始值为0.5秒。当脉宽达到设定 的最大值45秒,脉宽改为每周期递减05秒,直到脉宽为零为止。以上过程周而复始。 在这个例子中必须把输出端α0.0与输入端10.0连接,这样程序才能控制PWM 例图 CPU 214 脉冲输出 DC/DC/DC Q0.0 Pulse Outpu PW 宽调制信号 PWM-Sign cU214 CIIILIIIIIIILI = Period length周期 Pulse width脉宽 M 10.0: Input High-apeed Counter 高速计数器输入 西门子版权所有
¸¹ºW *+'"%# ,-./ #¿ 0 4 0 áÇ-i : d2-i : #ST4/0]áÈ$1* Î/0Õ#ê]ST :D\#e d~ îwÞEFb/012 ! êíÉtc# ¿ 0 -i : Î /0RSTÊä ã STË Ù ã r2/0#ðñ¦Ù ã ¾/0þ& #èë¦ ã /0EÙRSTÊÁ ã fþ/0ÙÄÙ ÌwSdÅñ Þ¿ 0 ¿ uv Þn-á2 ! h>zpu $()*+,-(./01 $()*+,-(./01 78 $$2-3(4*,01 $$2-3(4*,01 9: !" #$ !" #$
例 SIMATIC S7-200 程序框图 设定PWM的控制 调开子程序0 字,周期5秒,脉宽 初始化PWM 初值0.5秒 脉宽增吗 SBRO “|0.0的上升 “|0.0的上升沿” 脉宽增加0.5秒 脉宽减少05秒 断开事件与中断 断开事件与中断 程序和注解 特殊存储字节SMB67用来初始化输出端O0.0的PMM。这个控制字内含PWM 修改周期和脉宽的允许位,以及时间基数选择位等,由子程序0来调整这个控制字 过EN指令,使所有的中断成为全局允许,然后通过PLS0指令,使系统接受各设定值, 并初始化“ PTO/PWM发生器”,从而在输出端Q00输出脉宽调制(PWMM)信号。 另外,周期5秒是通过将数值5000置入特殊存储字SMW68来实现的,初始脉宽0.5秒 则通过将500写入特殊存储字SMW70来实现的 这个初始化过程是在程序的第一个扫描周期通过执行子程序0来实现,第一个扫描周期标 志是SM0.1=1。当一个PWM循环结束,即当前脉宽为0秒时,将再一次初始化PWM 辅助内存标记Mo.0用来表明脉宽是增加,还是减少,初始化时将这个标记设为增加。输 出端α00与输入端10.0相连,这样输出信号民可送到输入端100。当第一个方波脉冲 输出时,利用ATCH指令,把中断程序1(NT1)赋给中断事件0(100的上升沿)。 每个周期中断程序1将当前脉宽增加05秒,然后利用DTCH指令分离中断INT1,使这 个中断再次被屏蔽。如果在下次增加时,脉宽大于或等于周期,则将辅助内存标记位M0.0 再次置0。这样就把中断程序2赋予事件0,并且脉宽也将每次递减0.5秒。当脉宽值减 为零时,将再次执行,初始化程序(子程序0 本程序长度为63个 ersion 2.0 西门子版权所有
*+'"%# ¸¹ºW S ! Y + z >H h 58 5@ h + + h/ h0 6 6 ÑÒÓÔ)* , ðñò¿ 0 # ! Þ2); ! æç ÌEST4/0#æç ÌÍeÏOÍ4 n 1AÞ2)* w / Õ ºW# ÙÎÏæç < w Õ vxÐ& ¦ rðñò ! ³d¿ 0 /012 ! : Ñ ST ãêw#¦ 'ÑÒÓÔ) ! 6# ðñ/0 ã w# 5ÑÒÓÔ) ! 6# Þðñòwên#Ö]ûüSTwlan 6 Ö]ûüST0 1ê 1 ¾] ! XY %¾3/0Ù ã #L]úðñò ! Ò¼Ó0Ó ÔF/0êäå êÁÕ ðñò#Þ0Ó&Ùäå ¿ 0 ¿ Hu Þ :Ö=|þ¿ ¾Ö]-i/ Õ n / ½j op #ý< RST n #¾3/0äå ã < Õ÷× / Þ LúeØÙ í"îúäå /0ëD(4DST #Ò¼Ó0Ó Lú' Þ n ½¾op r2/0Ú#RúÊÁ ã ¾/0¦Á ÙÄ #Lúla ðñòn n »nd~Ù )
SIMATIC S7-200 例7 ∥标题:处理脉宽调制 主程序 客水客*冰水 SM0.1 ∥在第一个扫描周期SM0.1=1 CALL ∥调用子程序0来起动PWM,即初始化PWM。 LDW>=SMW70, VWO 果脉宽大于等于(周期-脉宽) M0.0 ∥则将辅助内存标记位M00置0。 LDW= SMW700 ∥如果脉宽为零 ∥则调用子程序0来重新开始一个完整的PWM 10.0 ∥如果输入10.1=1。 M0.0 ∥且辅助内存标记位M0.0=1(脉宽增加) ATCH 1,0 ∥则把NT1赋给事件0(输入10.0的正向上升沿) ∥如果输入10.0=1。 M0.0 ∥且辅助内存标记位M0.0=0(脉宽减少), ATCH 2,0 刂把NT2赋给事件0(输入10.0的正向上升沿) MEND ∥主程序结束。 *******主程序0******* ∥初始化脉宽调制。 M0.0,1 ∥将增加脉宽的辅助内存标记位M00置1 MOVb 16#CB, SMB6 ∥设定输出端Q0.0的 PTO/PWM控制字节 ∥SM670:= →允许接受新的周期 ∥SM67.1:=1→允许接受新的脉宽 ∥SM67.3 →时间基数为1ms(基为0,则时间基数为1us)。 ∥SM676:=1选择PMM模式(若为0,则PTO模式) ∥SM677:=1→允许高速输出功能 MOVW 500, SMW70 ∥指定初始脉宽(500ms)。 MOVW 500, SMW68 ∥周期为5s ∥允许全部中断。 PLSO ∥对 PTO/PWM生成器编程的指令 MOVE ∥将周期置入数据字Wo。 500,Wo ∥将(周期一脉宽)的值置入数据字Wwo。 RET ∥子程序0结束并返回主程序 西门子版权所有
¸¹ºW *+'"%# ;<9:=> ôõõôõõôõõôõõôõõôõõôõ ôõõôõõôõõôõõôõõôõõô Ö]ûüST 1 1n A? ! %ðñò ! 5# í"/0ëD4D ST /0 #Ò¼Ó0Ó ' #" í"/0ÙÄ 1n ¢®ñ]ÛA# ! í" 1 2Ò¼Ó0Ó 1 /0äå / ½jop #«Ný< í" 1 2Ò¼Ó0Ó 1 /0ÁÕ / ½jop #«Ný< ïn ôõõôõõôõõôõõôõõôõõôõ õôõõôõõôõõôõõôõõôõõô ðñò/012 #äå/0#Ò¼Ó0Ó ' # & ¿ 0 # ! 2)* 1 ⇒æçvx#ST 1 ⇒æçvx#/0 1 ⇒eÏÙ -' ÏÙ eÏÙ ' 1 ⇒OÍ ! " zÙ " 1 ⇒æçá # Õ ðñ/0 -' STÙ ' æçÎö $ ó ! #Õ #ST'´) ! 6 # ST]/0 #¦'´) ! n rVWïn
例 SIMATIC S7-200 ******中断服务程序1****** ∥增加脉宽 500,SMW70 脉宽增加500ms PLS ∥对 PTO/PWM生成器编程的指令。 DTCH 0 ∥将中断与事件0断开。 RET ∥中断服务程序1结束,并返回主程序。 ******中断服务程序2*** INT ∥减少脉宽。 500,SMW70 ∥脉宽减少500ms LS ∥对 PTO/PWM生成器编程的指令。 DTCH 0 将中断与事件0断开。 RETI ∥中断服务程序2结束,并返回主程序 请参考 SIMATIC STEP7编程参考手册63节“高速输出指令”,为您提供了更多的关于脉宽调制的信息 ersion 2.0 门子版权所有
*+'"%# ¸¹ºW ôõõôõõôõõôõõôõõôõõôõ?@ õôõõôõõôõõôõõôõõôõõô äå/0 # /0äå -' $ ó ! #Õ # op ® Ün rVWïn ôõõôõõôõõôõõôõõôõõôõ?@ õôõõôõõôõõôõõôõõôõõô ÁÕ/0 6 # /0ÁÕ -' $ ó ! #Õ # op ® Ün rVWïn * Õ Ùbc#ÀD/012# |