quote:以下是引用emil128在2012-09-04 16:53:19的发言:
S7-300/400的所有T定时器应该都是独立的晶振,其启动和停止都依赖于CPU给出的指令。
而且T定时器是异步刷新的,其计时不受PLC的扫描周期影响,可能会出现在同一个扫描周期内,定时器状态改变的情况。也就是扫描开始时,定时器为0;扫描到一半,定时器变成1了。
以你的例子,你在FB1里启动了T0,其后FB1不被调用了,因此是T0并没有收到停止的指令,所以一直在计时。如果你取消跳转,继续调用FB1,那么RLO为0时,你就可以看到T0停止计时了。
因此涉及到T定时器的使用时,最好不要跳转,保证每个周期都执行定时器指令。
这个测试是在硬件平台上测试的吗?为什么我用PLCSIM仿真使用系统的定时器和IEC_TC中的SFB4效果是一样的,即都与LZ描述不一致呢?——当停止调用时,定时器都停止工作了!
(修改为:测试结果一致)****************************************************************************************************************
实在不好意思,因为自己测试的疏忽和不细心,出现了错误的判断!
在仿真的时候,应该在PLCSIM中监视Timer,而不应该直接监视相对应的FB或FC块,因为当FB或FC未被执行时,监控时候数据将会停留在最后被调用时刻的状态。当然,如果LZ在FB中使用的是IEC定时器,将不会出现这种情况——即只要改IEC定时器所在的FB或FC未被调用时,该定时器将停止计时!