发布于 2006-07-16 20:39:47
0楼
同意平静和的意见。
楼主的误区是太相信自己的程序了,以至于没有认真地理解定时器的基本特性。
借花献佛,有一教科书中的经典程序:
S7300 用一个定时器作输出闪烁程序
AN M0.0
L S5T#2S 值可设,例如2秒
SD T1
A T1
=M 0.0
L T1 取定时器内容
T MW26
L MW26 通过变量表实时观察T1的最大值(16进制),与其的二
分之 一比较
L 88 T1的二分之一(换成10进制,例如,88)
>=I
= M 0.1
A M0.1
=Q 0.0 输出闪烁
该例的定时器的应用,与楼主实现的目标相同。该例为什么用了这么多的语句呢?
1.关键是正像上面阿鸣所分析的那样,不能确保楼主程序中的T10=1,
2.不能将逻辑结果的判断用A T10的指令来判断,因为延时接通定时器被你的AN T1O的RLO给关闭啦!
3.在延时接通定时器启动时,利用读取其数值与一特定值进行比较,两值如相等,即可得到RLO=1的结果(即与楼主想得到的T10=1相同的逻辑结果)。
4.本例中的延时接通定时器达到预置的最大值后就为零了,这是因为被其输出信号的非给关闭了。但是,在定时器关闭之前,可读到其数值,这就是本样例的精华。
5.这是应用一个定时器实现输出闪烁的例子,如用两个定时器来编写实现输出闪烁的程序,实现起来可简单一些。
心诚则灵