发布于 2011-05-19 12:58:47
17楼
总结来了。不过很抱歉,结论和前贴相反。
测试程序如下:
TITLE=100ms定时器“复位”与“送0”的差异
Network 1 // 初始化
// T37作为100ms增量的检测
LD SM0.1
R T37, 1
Network 2
// // 让T37运行
LD SM0.0
TON T37, 10000
Network 3
// 检测增量,并执行“复位”和“送0”
LDW<> T37, VW100
INCW VW102 // VW102不断在变,证实此段程序在执行
// TON
// 复位
R T38, 1
TON T38, 10 //复位后第一个指令
TON T38, 10
TON T38, 10
MOVW T38, VW0 // 保存当前值
// 送0
MOVW 0, T39
TON T39, 10 // 送0后第一个指令
TON T39, 10
TON T39, 10
MOVW T39, VW2 // 保存当前值
// TONR
// 复位
R T5, 1
TONR T5, 10
TONR T5, 10
TONR T5, 10
MOVW T5, VW4
// 送0
MOVW 0, T6
TONR T6, 10
TONR T6, 10
TONR T6, 10
MOVW T6, VW6
Network 4
// 保存T37当前值,以备下一个增量检测
LD SM0.0
MOVW T37, VW100
结论:把当时的CV值COPY到VW0-VW6中,监视VW0-VW6,都是2,就是说三个定时器指令中,二个作了时间累加(很好证明是第一个没累加,因为只剩一个定时器指令时,CV值就是0)。
前一贴似乎也是这样试的(只是程序没保存),区别是怎么来的,已经复现不出。