quote:以下是引用n次看你的背影在2011-08-06 21:16:01的发言:
楼主:如果你光电开关输入PLC地址是连续的,如果控制变频器信号是0-27648!以下代码没有经过测试,根据楼主的要求及时写的。可以参考下面的代码!楼主:我希望我能够帮助到你!呵呵.......看“非诚勿扰”了!
//╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬(一)统计当前的纺丝位正常工作个数╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬
L 0
T MW 100 //将上一次统计结果清零
LAR1 P#I 0.0 //第一个光电开关的输入信号的起始地址
L 36 //36个光电开关
NEXT: T LW 100 //循环查询电开关的输入状态
A [AR1,P#0.0] //判断光电开关信号是否为状态“1”
JCN M001 //如果为“0”,不计数,并跳转到查询下个地址
L MW 100
+ 1 //当前光电开关信号如果为1,就计累计一个数
T MW 100 //统计当前查询的结果,并存储
M001: +AR1 P#0.1 //下一个光电开关的输入地址
L LW 100 //LW100里面的内容减1,直至循环减至0离开循环
LOOP NEXT //LW100如果不是0跳转到循环标签NEXT,如果是0往下执行
//╬╬╬╬╬╬╬╬╬╬╬(二)判断正常纺丝位是否小于32个(需优先判断)╬╬╬╬╬╬╬╬╬╬╬╬╬
L MW 100 //装载本周期统计纺丝位正常运行的个数
L 32 //装载设定32
= M 102.0 //M102.0=1为报警,M102.0=0为不报警
JC M002 //如果小于32个正常纺丝位,跳转到变频器增加1Hz
//╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬(三)判断正常纺丝位是否小于35个╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬
L MW 100 //装载本周期统计纺丝位正常运行的个数
L 35 //装载设定值35
= M 102.1 //M102.1=1为故障,M102.0=0为正常
JC M003 //如果小于35个正常纺丝位,跳转到变频器增加1Hz
JU EXIT //如果没有问题存在跳转到正常状态
//╬╬╬╬╬╬╬╬╬╬╬(四)判断正常纺丝位故障发生时,并做相应处理╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬
M002: A M 102.0 //如果纺丝位正常工作位小于32个故障信号发生
FP M 102.2 //判断上升沿
JC HzUP //跳转到变频器增加1Hz
A M 102.0 //如果纺丝位正常工作位小于32个故障信号消失
FN M 102.3 //判断下降沿
JC HzDN //跳转到变频器减去1Hz
JU EXIT
M003: A M 102.1 //如果纺丝位正常工作位小于35个故障信号发生
FP M 102.4 //判断上升沿
JC HzUP //跳转到变频器增加1Hz
A M 102.1 //如果纺丝位正常工作位小于35个故障信号消失
FN M 102.5 //判断下降沿
JC HzDN //跳转到变频器减去1Hz
JU EXIT //如果没有故障发生,跳转到EXIT
HzUP: L "FC_SET_Hz" //装载变频器原来运行设定值
L 553 //变频器增加1Hz的数值27648/50=552.96
+I
T "FC_SET_Hz"
JU EXIT
HzDN: L "FC_SET_Hz" //装载变频器原来运行设定值
L 553 //变频器减去1Hz的数值,27648/50=552.96
-I
T "FC_SET_Hz"
EXIT: NOP 0
//╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬
是16384