登录
首页 PLC论坛 PLC论坛
回帖 发帖
正文

主题:长时间定时电路中的一个很难发现的错误

点击:2406 回复:33

42.9千万S=13年220天6小时40分
12-06-28 10:50

引用 知道一点 在 2012/6/28 8:19:10 发言【内容省略】

下面是我们的试验结果,供大家参考。
首先,为了减少运行时间,我们把问题做个简化,5小时改成1小时,20分钟改成10分钟。
程序中去掉了计数器C1,其余部分结构不变,仅仅计数器的参数做相应的调整,程序目标是实现5h10m的定时。
由前面的分析,大家已经公认原程序只能做到1h9m的定时。这里我们看一下,如果把最后一个网络中T38改成非T38能否做到1h10m。(如果对原程序中的问题还不太理解的话,只要弄懂这个程序,也可以理解问题所在)。
1)在 1h 时程序的情况(红色部分是接通的线圈):
附件
此时由于T38改成非T38,所以C2没有开始计数。
2)在1h下一周期时程序的情况:
附件
T38在一个周期内就由ON转变成OFF,因此计数器C2由0变1。所以,定时效果同直接使用T38是一样的。
3)在1h9m时的情况,计数已经达到10,时间是1h9m,没有实现预期的定时目标1h10m:
附件
对这个问题,只要把C2的计数值从10改成11就可以实现1h10m定时。
最后修改:2012/6/29 8:02:04
12-06-28 19:06
对不起,我错了
12-06-29 10:24

引用 zhangpei4712 在 2012/6/28 10:50:04 发言【内容省略】

(((13*365+220)*24+6)*60+40)*60=429000000(4.29千万)
小数点差一位。
42.9千万s=136年70天6小时28分15秒
准确的是FFFFFFFF=4,294,967,295
12-06-29 10:35

引用 Kate 在 2012/6/28 9:52:15 发言【内容省略】

“网络4前移”的修改方案同8楼提出的”把C2前的T38非一下“的做法有类似的效果。也就是说,在5h时,没有启动C2计数,但在下一周期,把C2变成1。
下面我们做具体分析。为了简单起见,同前面一样,把问题修改为1h20m定时。在1h时刻,程序状态如下,其中C2没有得到输入:
附件
在1h的下一周期,C2变为1:
附件
所以,这个调整方案所做的依然是1h9m定时,而不是1h10m定时。
12-06-29 20:44

引用 知道一点 在 2012/6/29 10:24:15 发言【内容省略】

每个人都会错,以后我有错的时候,也欢迎帮助指正。
不怕犯错,敢于说出自己的想法,这一点也不容易。从错误中学习,是一个很有效的学习方式。
上面的一些编程错误,主要不是个人能力问题,本题确实有一定难度。论坛上有位网友说得好,PLC中布尔量最容易,也最难。
现在的PLC编程软件功能不够强大,这也是容易出错的一个重要原因。
12-06-29 21:00
学习中表情
12-06-29 21:09
6楼说的应该是将C2提到C1前,你再看看是否可行,PLC的"怪"就在这里,在前-后结果不一样.
12-06-29 21:13
附件
12-06-29 21:20

引用 知道一点 在 2012/6/29 21:13:55 发言【内容省略】

把“C2提到C1前”的做法确实是对的,因为5h之后的下一周期T38已经OFF了。试验结果也是如此:
附件
12-06-30 02:39

上一页 下一页

工控新闻

更多新闻资讯