回复:一道PLC编程题目

寒音

  • 帖子

    1394
  • 精华

    6
  • 被关注

    13

论坛等级:侠圣

注册时间:2003-06-06

普通 普通 如何晋级?

发布于 2011-03-27 08:56:02

92楼

quote:以下是引用Zane在2011-03-26 23:58:17的发言:
TO:寒音
1.我没有说你新的控制思路是不能实现的,而你没有给出一个完整的答案,你只给出了一个能剔除故障泵的排序程序,就说能解决所有的问题,未免太着急了点,你至少应该做一个能剔除正在运行的泵和故障泵的排序程序(待机泵的排序程序)。
2.加泵要在运行队列里做一次排序插入,减泵要在待机队列里做一次排序插入,如果在加泵减泵的同时,运行队列里有泵故障退出,你的处理策略又是什么,这好像不是改一下FC1那么简单吧。如何把修复的泵添加到待机队列中去,估计还没怎么考虑吧,否则你的泵不是越开越少了吗?如果第一点做到了,至少还能对付一下,大不了重新启动一次待机队列的排序。
3.我很少看别人的程序,论坛里凡是贴程序的帖子,我基本不看的。但你的程序我还是打开看了一下,结果令人失望的。主要是缺乏系统规范的训练,可以说你的水平是实践中来的,而不是理论中来的,今后需要加强理论方面的学习。

话说得不好听,见谅!因为你是本版区的标兵,希望你还能有更大的进步,在论坛发挥出应有的作用。

版主此次给指出具体的问题,非常的好。不过可能是个人思路不同的问题,我觉得启泵、停泵和故障泵切除和投入,实际上的处理不过就是在队列中插入和删除一个元素的操作,没什么难点,所以没写代码。确实改一下FC1,思路已经有了,只是没有用代码表达出来。启停泵只需要一个扫描周期扫描一次队列就可以实现了,不会象FC1这样每次都重构队列,那对控制器的负担就太大了。
而初始化队列是对多个泵进行的入列操作,一是和单泵入列操作类似,而且容易出现超时而导致PLC停机,所以只实现了这个功能块。
关于切除泵的控制,我先简单说一下。对当正在运行的泵故障切除时,是要再启动一台正常的泵的。这时如果恰恰因为控制原因要启动一台泵,这时实际要启动两台泵,而程序处理不好,只启动了一台泵,就会出现版主所担心的问题。而在我的控制里,这种情况是不会出现的。版主应该知道,我的队列初始化程序FC1每个扫描周期只对一台泵进行处理。在启停泵和切除/恢复泵的处理时,也是这样的,对泵的控制会有一个优先级,先处理故障泵切除。当有泵故障需切除时,会先将该泵除出运行泵队列,然后置一个启动泵请求位。后序程序检测到该请求位,就会启动一台泵。同时,该扫描周期不对正常情况泵的启动条件进行检测,而是在下一扫描周期启动泵请求位复位后再进行检测。将正常情况泵的启动延后一个扫描周期,在此应用中应该无问题。

最后谢谢版主指出我程序规范的问题。确实这段程序够乱的,自己都看不过去。说实话,平时项目中的程序是不可能写成这个样子的,否则这程序还敢拿去应用么?这次为什么这样,因为知道版主肯定要去看程序,所以,引用万版以前说过的话,我是故意的,哈哈。
版主别生气。
至于程序,目前是没有时间,主版主不要封贴,等时间稍宽裕了,我把后继的程序补齐。不写出代码来,怕又被版主看扁了。
没有
评论
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SIMATIC S7-300/400

共有54756条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

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

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

  • 分享

  • 只看
    楼主

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