我用SIEMENS的STEP 7软件3年有余,时间不可谓不长,但由于性格原因,一直难得静下心来好好的琢磨一下软件的一些细节,每次都是因事搞,搞完了!因为每次都相对顺利,有时不自然的会滋生一些自大(认为对这个软件掌握了十之八九)情绪,没想到最近的一个工程让我彻底警醒!
例:
//////
a(
l #aa
l 1
==i
)
jcn x01
an i0.0
=q0.0
a i0.0
jcn x01
l 1
l #aa
+i
t #aa
x01:nop 0
/////
a(
l #aa
l 2
==i
)
jcn x02
a i0.0
l s5t#1m
sd t1
.........
第一次,当#aa等于2时,t1定时器激活,但之后就不能激活了?为什么?为什么?难道是程序有误(当然有误)?可问题出在那呢?我百思不得其解。也不知冤死多少脑细胞,提早退休了多少根我长得黑亮黑亮的可怜的头发,我突然间想起一个我常常不加以重视的东东!这就是状态字!在执行之初,由于#aa等于1,“l s5t#1m”语句没有扫描!但可以确信,FC位应该是“0”,当#aa第一次等于2,执行到“l s5t#1m”语句时,如果i0.0为“1”,则“l s5t#1m”句的FC位变为1,与之前有变化,此时可激发定时器。在但在#aa第二次等于2时,由于“l s5t#1m”的FC位因#aa不等于2后未扫描,仍然保持为1,故FC(RLO)没有变化,所以定时器不能被激活了。
如此简单的道理我居然当终身大事一样的冥思苦想了许久!实在是现实给于一个老革命毫不客气的警示!当劝众多新手朋友,以我为戒,认真些,在认真些(虽然这个社会很浮躁)。