请教高手,这是一段控制变频器的程序,麻烦高手给逐一解释一下,主要是跳转的地方,万分感谢
问题补充:
请问 艾星落尘高手,MAD1-8执行了几个啊,我就是跳转时搞不清,谢谢
图片说明:
最佳答案
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