如图:想知道为什么C1只计一次数,之后就不计数了?
刘玉蓉
发布于2014-10-09 15:30
0
0
标签:
这是编程常见问题之一文档中截取的,对C1只计一次数的问题请教.
图片说明: 1,计数截图
佳答案
造成这种情况是由定时器的刷新方式引起的,S7-300/400的定时器是异步刷新的,也就是定时时间到可能出现在PLC程序中任何时刻,不像输入映像区是在扫描之前刷新。PLC程序是顺序扫描的,对于梯形图来说就是自左向右自上而下,程序执行时序对于PLC来说是区别于继电器回路的一个显著特点,把梯形图转换成STL语句表就可以很好的分析。
首先计时C1计数一次是由I0.4的上升沿引起的
A I 0.4
= L 20.0
A L 20.0
AN T 0
= L 20.1
A L 20.1
BLD 102
L S5T#1S
SD T 0
A L 20.1 //只有当T0定时时间到出现在T0定时器指令之后C1的CU指令之前,C1才能检测到T0的状态变化,才会计数,但这个区间时间是非常之短的,CPU在扫描之外还要处理通讯以及刷新输入输出映像区,所以T0定时时间到出现在这里的概率几乎为0。
CU C 0
BLD 101
NOP 0
NOP 0
NOP 0
NOP 0
NOP 0
NOP 0
A L 20.0
AN T 0
CU C 1
BLD 101 //如果T0时间到出现在计数器C1指令之后或T0定时器指令之前,那么对于C1来说下一个扫描周期因定时器已经被复位了,所以C1的CU端状态不会改变,即C1检测不到T0的状态的变化,所以就不计数了
NOP 0
NOP 0
NOP 0
NOP 0
NOP 0
NOP 0