回复:一道PLC编程题目

寒音

  • 帖子

    1394
  • 精华

    6
  • 被关注

    13

论坛等级:侠圣

注册时间:2003-06-06

普通 普通 如何晋级?

发布于 2011-03-25 23:12:00

89楼

quote:以下是引用Zane在2011-03-23 17:18:59的发言:
quote:以下是引用寒音在2011-03-23 12:09:11的发言:
回到两种方法的讨论。
计时法也是可以进行优化的。
具体方法如下:
1、建立两个队列,在运行泵运转时间队列和未运行泵运转时间队列,运行泵按运转时间从大到小排列,未运转泵队列按运行时间的从小到大排序。这样在系统的初始状态,在运行泵队列为空,未运行泵队列可以通过一次排序,建立队列。
2、需要启动泵时,取未运行泵队列的第一个泵启动,未运行泵队列整体前移一个位置。启动的泵根据其运行时间,插入在运行泵的队列。程序只需用一个循环比较就可以完成,不复杂。
3、需停泵时,取在运行泵队列的第一台泵关闭,运行泵队列整体前移一个位置。关闭的泵根据其实际运转时间,插入未运行泵队列中。
4、泵故障时,将该泵从以上两个队列中删除。
5、故障泵恢复时,将其插入未运行泵队列中。
6、另外,还可以加入泵启停的最小间隔的限制。
当然,该方法还是不如zane版主的循环移位法简单,可能也存在问题,但加以完善后,是足以应付任意台泵的控制应用的。



TO : 寒音

很高兴,你还能提出新的想法来,当然,你的想法可能我已经经历过了。当前,我觉得对你的新的方案进行评判优劣也没有必要,我给你的建议是1.分析你的方案能否自圆其说,2.如果能,你就付诸实施编出一套程序来。如果你一周还不能整出个子丑寅卯来,那就说明你的方案有问题了,我不怀疑你的能力。


版主发话了,不敢不从命。不过最近工作很忙,只好抽晚上的时间编了一部分程序,相信以版主的水平,从这部分程序也就足以做出判断了。
简要做一下说明:
程序采用315-2DP的处理器,DB1中存了编号从1-90的90台泵的运转时间和故障状态(维修状态),DB1的第一个字存的是泵的总数量。FC1在系统开始运行时建立初始的未运行泵队列,实现了将DB1中90个泵的编号按运转时间从小到大排序存贮到DB3中,DB3的第一个字存贮该队列中泵的数量,故障状态为1的泵(故障泵)不参与排序,即90台泵如果有5台泵的状态为故障,则DB3队列中泵的数量为85。
因为初始队列的建立就是将每个泵按运转时间的长短插入已有队列的过程,与启泵和停泵时的处理相同,而写此程序的目的是为了证明此法通过程序可以实现,所以就不再写启泵与停泵时队列处理的程序了。实际上只要对FC1稍加改动,就可以实现启泵和停泵时队列处理的功能。
该程序已测试通过,不相信的可以自己测试一下。

点击此处查看附件
没有
评论
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SIMATIC S7-300/400

共有54755条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

快扫描右侧二维码晒一晒吧!

再发帖或跟帖交流2条,就能晋升VIP啦!开启更多专属权限!

  • 分享

  • 只看
    楼主

top
X 图片
您收到0封站内信:
×
×
信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。