S7300语句表问题

请教高手,这是一段控制变频器的程序,麻烦高手给逐一解释一下,主要是跳转的地方,万分感谢

问题补充:
请问 艾星落尘高手,MAD1-8执行了几个啊,我就是跳转时搞不清,谢谢

图片说明:

S7300语句表问题    S7300语句表问题   

最佳答案

A  #iEnable          
    JCN MAD1             //当#iEnable为1时执行以下程序,否则直接跳转到MAD1
    AN  #iSlowFast       //如果#iSlowFast为0就跳转到MAD2,否则接着执行程序,这里应该就是速度FAST和SLOW的选择
    JC  MAD2             //考虑到调用的时候M0.0常为0,那么就直接跳转到MAD2,选择低速的
    L   #iFastSpeed      //
    JU  MAD3
MAD2:L   #iSlowSpeed
MAD3:T   #_PO2_SetPoint     //将速度值#iSlowSpeed赋值给 #_PO2_SetPoint  
     L    100
     <I                     //如果#iSlowSpeed<100就跳转到MAD4,如果大于等于100就直接跳转到MAD5
     JC  MAD4
     JU  MAD5
MAD4:TAK                    //累加器1和累加器2的值互换
     L   0
     >I                     //如果 #iSlowSpeed>0 就跳转到MAD6,否则就接着执行
     JC  MAD6
MAD5:T    #_PO2_SetPoint    //在不大于0的情况下,将#iSlowSpeed>赋值给 #_PO2_SetPoint  
MAD6:A    #iBackwards       //没有反向信号的话,跳转到MAD7,有反向信号的情况下就接着执行程序
     JCN  MAD7
     =    #_PO1_CtrWord.SetpointInvert    //有反向信号就置位这个变量
     L    #_PO2_SetPoint
     NEGI
     T    #_PO2_SetPoint                  //并将速度值取反
MAD7:A  #i3PDW                            //这个值为0就执行跳转到MAD8,否者接着执行程序
     JCN   MAD8
     L    #iRamp
     T   #_PO3_Ramp            //#i3PDW为1的时候,#_PO3_Ramp=#iRamp               
MAD8:L    #_PO2_SetPoint        
     L   163
      *I
     T    #_PO2_SetPoint       //#_PO2_SetPoint=#_PO2_SetPoint*163
MAD1:NOP 0
 
从调用的情况来看,这里#iSlowFast  #iBackwards和#i3PDW 都为0,都是执行#iSlowSpeed*163=#_PO2_SetPoint
补充:MAD2,MAD4,MDA6,MAD7,MAD8因为#iSlowFast  #iBackwards和#i3PDW 都为0,#iSlowSpeed=35
看跳转,其实就是看条件是否满足,满足条件就跳转到相应的位置执行程序,不满足就接着执行程序,如果跳转比较多的话,不妨先看完整体的,然后再一步一步的分析,能够结合实际的工序流程就更容易看懂!

提问者对于答案的评价:
thanks

原创文章,作者:more0621,如若转载,请注明出处:https://www.zhaoplc.com/plc150624.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2017年6月4日 上午8:00
下一篇 2017年6月4日 上午8:00

相关推荐