1,根本原因在于你用了DADDP,这是个32位的指令。实际计算过程是把[D351 D350]与[T1 T0]相加后放入了[D351 D350];
2,仿真与实机的区别在于,仿真默认扫描周期是100ms的,而实机的扫描周期会原低于这个数。这就造成仿真在T0计时到后,其输出触点驱动了T1计时,T1的数值马上变成了1,所以扫描到达T0的上升沿,执行加法处理时,就是00000000+00010014--》00010014(都用16进制表示)的计算过程,这个十六进制的数换成十进制就是65556;执行到第八遍的时候,这个数就是65556*8=524448。而因实机的扫描周期远低于100ms,则在实机上执行该程序,T0计时到达,扫描到T1时,该数值还没有累积到0.1S,所以T1的数值还是0没有变成1,继续执行加法处理时,就是00000000+00000014--》00000014的计算过程,这个十六进制的数换成10进制就是20,得到了想要的结果;
3,将DADDP指令换成16位的ADDP指令可以避免这种情况;
4,将T0上升沿后做加法运算这一句紧放在T0输出线圈这一句后面可以避免这种情况;T0输出线圈这一句放在RST T0这段后面更好。