技术论坛

关于根据设备的运行时间控制启停顺序

作者 主题
侠圣

经验值: 4940
发帖数: 790
精华帖: 12
主题:【探讨】关于根据设备的运行时间控制启停顺序


只看楼主 楼主 2020-12-15 19:52:32

1、例如有10台泵,泵的编号为1-10, 每台泵都有一个运行时间

2、现在需要根据泵的运行时间确定泵的启动优先级。

3、例如,

                泵10  运行30分钟, 

                泵9    运行 40分钟

                 泵8   运行20分钟

4、那么下一台最优先启动的泵为 8 号泵, 

     即泵的优先级为:  泵8 > 泵9  > 泵10 

5、有人做过类似的功能吗。

6、排序的话可以完成,但是有点复杂,有没有人想到过更简单的方法


获取资料关注:https://www.cnblogs.com/volcanol/
以下网友喜欢您的帖子:

  
重要声明:

著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

帖子链接:https://www.ad.siemens.com.cn/club/bbs/post.aspx?a_id=1657956&b_id=4&s_id=0&num=5

奇侠

经验值: 8877
发帖数: 2002
精华帖: 12
回复:关于根据设备的运行时间控制启停顺序


只看楼主 1楼 2020-12-15 21:38:25

这个很简单,每次只需要判断出下一个启动谁就可以了,不需要给所有泵都排序。启动是需要找出停止的泵里运行时间最短的,那么在程序开始给T置一个比较大的值,然后用T跟所有运行时间比较一遍,比T小的就把时间赋给T,把编号赋给N,最后N里面就是时间最短的泵编号。每个周期都这么判断一遍,当最短的泵运行后又会再次从停止的泵里找到时间最短的一个作为下一个启动的编号。


污水处理自控工程师,简称污师。
以下网友喜欢您的帖子:

  
至圣

经验值: 43597
发帖数: 15780
精华帖: 61
回复:关于根据设备的运行时间控制启停顺序


只看楼主 2楼 2020-12-16 10:39:11

排序有什么难度?300/400支持scl编程。建立一个fb,里面建立两个数组:pum_no,array[1..10]of int,序号pum_runtime,array[1..10]of int,运行时间。

fb中编程:

拷贝泵的运行数据到两个数组中。

Bstart上升沿输出清零:

pum_start_no:=0

启动按钮给这两个数组排序:

if Bstart then

for i:=1 to 9

      for j:=i to 9

           if pum_runtime[i]>pum_runtime[j] then

             ''''''时间交换

              temp:=pum_runtime[i]

              pum_runtime[i]:=pum_runtime[j]

              pum_runtime[j]:= temp

             '''''''序号交换

              temp:=pum_no[i]

              pum_no[i]:=pum_no[j]

               pum_no[j]:=temp

           end if

        end for

end for

pum_start_no:=pum_no[1]

Bstart:=0

end if

时间序号排好顺序后,则第一个位置的就是需要启动的泵。

在另外一个块编程判断前面这个fb的输出的值,用select case,等于几就启动几号泵,等于0则不启动


活到老,学到老!为了生活学习吧!
以下网友喜欢您的帖子:

  
侠圣

经验值: 4940
发帖数: 790
精华帖: 12
回复:关于根据设备的运行时间控制启停顺序


只看楼主 楼主 3楼 2020-12-18 19:14:47
以下是引用will666在2020-12-15 21:38:25的发言 >1楼

这个很简单,每次只需要判断出下一个启动谁就可以了,不需要给所有泵都排序。启动是需要找出停止的泵里运行时间最短的,那么在程序开始给T置一个比较大的值,然后用T跟所有运行时间比较一遍,比T小的就把时间赋给T,把编号赋给N,最后N里面就是时间最短的泵编号。每个周期都这么判断一遍,当最短的泵运行后又会再次从停止的泵里找到时间最短的一个作为下一个启动的编号。

这个方式比较简单明了。

我现在采用的就是这个方法, 谢谢了。

这个功能需要完善的话,还是需要很多内容的。我加了很多功能,比方说跳过,不满足条件等异常处理。


获取资料关注:https://www.cnblogs.com/volcanol/
以下网友喜欢您的帖子:

  
侠圣

经验值: 4940
发帖数: 790
精华帖: 12
回复:关于根据设备的运行时间控制启停顺序


只看楼主 楼主 4楼 2020-12-18 19:15:40
以下是引用zhangli0在2020-12-16 10:39:11的发言 >2楼

排序有什么难度?300/400支持scl编程。建立一个fb,里面建立两个数组:pum_no,array[1..10]of int,序号pum_runtime,array[1..10]of int,运行时间。

fb中编程:

拷贝泵的运行数据到两个数组中。

Bstart上升沿输出清零:

pum_start_no:=0

启动按钮给这两个数组排序:

if Bstart then

for i:=1 to 9

      for j:=i to 9

           if pum_runtime[i]>pum_runtime[j] then

             ''''''时间交换

              temp:=pum_runtime[i]

              pum_runtime[i]:=pum_runtime[j]

              pum_runtime[j]:= temp

             '''''''序号交换

              temp:=pum_no[i]

              pum_no[i]:=pum_no[j]

               pum_no[j]:=temp

           end if

        end for

end for

pum_start_no:=pum_no[1]

Bstart:=0

end if

时间序号排好顺序后,则第一个位置的就是需要启动的泵。

在另外一个块编程判断前面这个fb的输出的值,用select case,等于几就启动几号泵,等于0则不启动

也想过用这个方法的。

最终采用了楼上的方法。


获取资料关注:https://www.cnblogs.com/volcanol/
以下网友喜欢您的帖子:

  
奇侠

经验值: 8877
发帖数: 2002
精华帖: 12
回复:关于根据设备的运行时间控制启停顺序


只看楼主 5楼 2021-01-31 12:26:55

进行时间判断前就判断该设备是否满足启动条件,启动条件不满足的就不参与时间判断了。


污水处理自控工程师,简称污师。
以下网友喜欢您的帖子:

  
  • 上一页
  • 1
  • 下一页
收起
关于根据设备的运行时间控制启停顺序
您收到0封站内信:
×
×
信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。