闲言少叙,先看官方例子:
优化定时器
给出的图例是这样的:

我们可以看到图中给定的是3000毫秒的定时,如果定时的时间小于并且接近2147483647毫秒问题不大。假如我设定定时时间为2147483647毫秒大概率就会出现问题,比如此次扫描周期VD4的结果是2147483646,扫描周期为2毫秒,下次VD4里的值是2147483648,这时VD4里的值表现为负值,不可能大于2147483647这个设定值。这是由于西门子官方没有推出无符号双整数比较指令造成的。如果需要输入一个大于2147483647的常数设定值,就需要输入一个负值,这很不人性化。
所以这就需要一个解决方案,这里要感谢一下@tingal_cai 发的帖子。
无符号数据类型的转换、比较及运算解决方案
【S7-200 Smart开源标准化编程】里的可重复调用的定时器原本使用的是官方的方法,现在都进行了修改。

这样修改后的定时器的设定值可以是2147483647,在定时器的时间设定脚上输入大于2147483647数值也是没问题的,也不用输入负值,这样就人性化了。
标准化程序的此方法的修改没完全完成,所以暂时不放出了。感兴趣的坛友可以在之前的程序上自行修改。
---------------------------------------------------------------------------------------------------------------------------------
如果需要输入一个大于2147483647的常数设定值,就需要输入一个负值,这很不人性化。
我前面说的这句话是错误的,大于2147483647的常数做为设定值是没问题的,不需要输入负值。
但有符号双整数比较指令这里还是有问题的。