8泵轮换 高难度编程 谁能解决准是牛人 点击:3247 | 回复:52



xcgkpangqingtao

    
  • 精华:0帖
  • 求助:0帖
  • 帖子:1帖 | 10回
  • 年度积分:0
  • 历史总积分:34
  • 注册:2008年4月26日
发表于:2009-01-08 13:04:59
楼主
8台水泵轮换运行PLC如何实现 条件:1 我起多少台完全由我自己定 , 8台水泵地位平等,2 定时轮换 3故障轮换 4不管开多少台都是先开运行累计时间最短的泵 ,

谁能帮我写个功能块啊 这对我来说太难老 我电话13668203037 庞 邮箱:pangqingtao@163.com QQ93348591

谢谢!!!!!!!!



siren

  • 精华:36帖
  • 求助:0帖
  • 帖子:426帖 | 6724回
  • 年度积分:0
  • 历史总积分:21846
  • 注册:2002年3月09日
发表于:2009-01-08 20:12:20
21楼

不是控制器的事!

建议楼主编一个逻辑图,分析一下,能实现的。

wenjian1

  • 精华:1帖
  • 求助:0帖
  • 帖子:10帖 | 600回
  • 年度积分:15
  • 历史总积分:1083
  • 注册:2006年11月14日
发表于:2009-01-09 21:35:52
22楼
高难度??????????????

xcgkpangqingtao

  • 精华:0帖
  • 求助:0帖
  • 帖子:1帖 | 10回
  • 年度积分:0
  • 历史总积分:34
  • 注册:2008年4月26日
发表于:2009-01-12 15:40:30
23楼

各位,我赞同一些看法 ,但是我更赞同能给我一个列子程序啊  真的   你要是仔细研究哈你就会发现里面的内容不是各位想的那么简单.

1:我需要的是一个象函数一样的功能块,换言之就是我在主程序直接调用这个功能块,

我给你的输入信号有这些     

 1:   8台分别运行累计时间   2:   8泵的运行信号  3 :  8泵的故障轮换信号    4:8泵的定时轮换信号  5:   启泵台数信号    

而这个功能块给我的输出信号就是8泵的启动信号

 

xcgkpangqingtao

  • 精华:0帖
  • 求助:0帖
  • 帖子:1帖 | 10回
  • 年度积分:0
  • 历史总积分:34
  • 注册:2008年4月26日
发表于:2009-01-12 15:42:57
24楼
各位,我赞同一些看法 ,但是我更赞同能给我一个列子程序啊 真的 你要是仔细研究哈你就会发现里面的内容不是各位想的那么简单.

1:我需要的是一个象函数一样的功能块,换言之就是我在主程序直接调用这个功能块,

我给你的输入信号有这些

1: 8台分别运行累计时间 2: 8泵的运行信号 3 : 8泵的故障轮换信号 4:8泵的定时轮换信号 5: 启泵台数信号 6:每次启泵都是启运行累计时间最小的

而这个功能块给我的输出信号就是8泵的启动信号


1234456

  • 精华:0帖
  • 求助:0帖
  • 帖子:5帖 | 275回
  • 年度积分:0
  • 历史总积分:256
  • 注册:2004年12月12日
发表于:2009-01-13 08:53:24
25楼

要是用S7-300的PLC我可以帮助解决,我做过3,4,5,6台轮换的,自己做有些难度,我通过别人的程序修改的,qq:642630083

Informed

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 59回
  • 年度积分:0
  • 历史总积分:0
  • 注册:1900年1月01日
发表于:2009-01-13 09:39:18
26楼
花钱请别人做吧!!!

阳光月光

  • 精华:1帖
  • 求助:0帖
  • 帖子:16帖 | 421回
  • 年度积分:0
  • 历史总积分:1071
  • 注册:2008年9月27日
发表于:2009-01-13 10:30:00
27楼
正在学习中.                                    

rwhuang

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 137回
  • 年度积分:0
  • 历史总积分:175
  • 注册:2005年6月10日
发表于:2009-01-13 10:36:28
28楼

用我们产品我免费帮你做,呵呵~~~16台都没有问题

不懂工控

  • 精华:0帖
  • 求助:0帖
  • 帖子:32帖 | 647回
  • 年度积分:0
  • 历史总积分:583
  • 注册:2004年9月23日
发表于:2009-01-13 11:20:25
29楼

赵久发是高手,按照他的l思想做就可以了

芳季

  • [版主]
  • 精华:5帖
  • 求助:5帖
  • 帖子:86帖 | 5336回
  • 年度积分:0
  • 历史总积分:20165
  • 注册:2003年1月31日
发表于:2009-01-13 12:09:56
30楼

楼主

假设我手头上已经有了这个程序了。那下一步工作轮到是什么?

是你发给我还是我发给你。

认真的。

星然

  • 精华:0帖
  • 求助:0帖
  • 帖子:23帖 | 306回
  • 年度积分:0
  • 历史总积分:269
  • 注册:2007年2月04日
发表于:2009-01-13 20:55:38
31楼

我这7台泵,还没有你说的那么多条件启动转换,别人编的,S7-400,用的是8421码的思路做的。

赵久发

  • 精华:0帖
  • 求助:0帖
  • 帖子:1帖 | 81回
  • 年度积分:0
  • 历史总积分:317
  • 注册:2004年10月13日
发表于:2009-01-14 13:35:57
32楼

我们是用OMRON PLC编写的高速路上的隧道风机的启动停止程序,通过检查一氧化碳来自动控制风机的启停,这个跟风机的多少关系不大,主要是程序结构必须清楚就很容易实现,但是程序还是比较大。~~~~~

kurt

  • 精华:0帖
  • 求助:0帖
  • 帖子:3帖 | 40回
  • 年度积分:0
  • 历史总积分:116
  • 注册:2006年3月03日
发表于:2009-01-14 14:57:30
33楼
呃~~~还以为什么高难度的问题呶~~~这个给两小时就能搞定...

老菜鸟

  • 精华:22帖
  • 求助:0帖
  • 帖子:301帖 | 8609回
  • 年度积分:0
  • 历史总积分:24924
  • 注册:2003年6月15日
发表于:2009-01-14 15:22:00
34楼

S7-200就可以实现。

        给每台电机配置3个存储器:1个编号存储器(建议依次为1~8)、1个累计运行时间存储器、1个已处理标志存储器;然后再设置8个累计时间存放存储器(这里假设为1-8#累计时间存储器)、8个编号存储器(这里假设为1-8#编号存储器)。

        将1#泵的累计运行时间MOV给1#累计运行时间存储器,把1#泵的编号MOV给1#编号存储器。再把2#-8#泵的累计时间依次与1#累计时间存储器比较,如果哪台泵的累计时间比1#累计时间存储器小就把值MOV给1#累计时间存储器,同时把该泵的编号MOV给1#编号存储器。处理完毕后,根据1#编号存储器的值把对应泵的已处理标志置为1。这样,1#累计时间存储器放的就是累计时间最小的泵的时间,1#编号存储器放的就是累计时间最小的泵的编号,运行时间最少的泵的已处理标志就为1。

         如果1#泵的已处理标志不等于1,就把1#泵的累计运行时间MOV给2#累计运行时间存储器,把1#泵的编号MOV给2#编号存储器。如果1#泵的已处理标志等于1,就把2#泵的累计运行时间MOV给2#累计运行时间存储器,把2#泵的编号MOV给2#编号存储器。         再把1#-8#泵中已处理标志位为0的泵的累计时间依次与2#累计时间存储器比较,如果哪台泵的累计时间比2#累计时间存储器小就把值MOV给2#累计时间存储器,同时把该泵的编号MOV给2#编号存储器。处理完毕后,根据2#编号存储器的值把对应泵的已处理标志置为1。这样,2#累计时间存储器放的就是累计时间倒数第2的泵的时间,2#编号存储器放的就是累计时间倒数第2的泵的编号,运行时间倒数第2的泵的已处理标志就为1。

        如果1#泵的已处理标志不等于1,就把1#泵的累计运行时间MOV给3#累计运行时间存储器,把1#泵的编号MOV给3#编号存储器。如果1#泵的已处理标志等于1而且2#泵的已处理标志不等于1,就把2#泵的累计运行时间MOV给3#累计运行时间存储器,把2#泵的编号MOV给3#编号存储器。如果1#泵和2#泵的已处理标志均等于1,就把3#泵的累计运行时间MOV给3#累计运行时间存储器,把3#泵的编号MOV给3#编号存储器。       再把1#-8#泵中已处理标志位为0的泵的累计时间依次与3#累计时间存储器比较,如果哪台泵的累计时间比3#累计时间存储器小就把值MOV给3#累计时间存储器,同时把该泵的编号MOV给3#编号存储器。处理完毕后,根据3#编号存储器的值把对应泵的已处理标志置为1。这样,3#累计时间存储器放的就是累计时间倒数第3的泵的时间,3#编号存储器放的就是累计时间倒数第3的泵的编号,运行时间倒数第3的泵的已处理标志就为1。

        如果1#泵的已处理标志不等于1,就把1#泵的累计运行时间MOV给4#累计运行时间存储器,把1#泵的编号MOV给4#编号存储器。如果1#泵的已处理标志等于1而且2#泵的已处理标志不等于1,就把2#泵的累计运行时间MOV给4#累计运行时间存储器,把2#泵的编号MOV给4#编号存储器。如果1#泵和2#泵的已处理标志等于1而且3#泵的已处理标志不等于1,就把3#泵的累计运行时间MOV给4#累计运行时间存储器,把3#泵的编号MOV给4#编号存储器。如果1#至3#泵的已处理标志均等于1,就把4#泵的累计运行时间MOV给4#累计运行时间存储器,把4#泵的编号MOV给4#编号存储器。     再把1#-8#泵中已处理标志位为0的泵的累计时间依次与4#累计时间存储器比较,如果哪台泵的累计时间比4#累计时间存储器小就把值MOV给4#累计时间存储器,同时把该泵的编号MOV给4#编号存储器。处理完毕后,根据4#编号存储器的值把对应泵的已处理标志置为1。这样,4#累计时间存储器放的就是累计时间倒数第4的泵的时间,4#编号存储器放的就是累计时间倒数第4的泵的编号,运行时间倒数第4的泵的已处理标志就为1。

        如果1#泵的已处理标志不等于1,就把1#泵的累计运行时间MOV给5#累计运行时间存储器,把1#泵的编号MOV给5#编号存储器。如果1#泵的已处理标志等于1而且2#泵的已处理标志不等于1,就把2#泵的累计运行时间MOV给5#累计运行时间存储器,把2#泵的编号MOV给5#编号存储器。如果1#泵和2#泵的已处理标志等于1而且3#泵的已处理标志不等于1,就把3#泵的累计运行时间MOV给5#累计运行时间存储器,把3#泵的编号MOV给5#编号存储器。如果1#至3#泵的已处理标志等于1而且4#泵的已处理标志不等于1,就把4#泵的累计运行时间MOV给5#累计运行时间存储器,把4#泵的编号MOV给5#编号存储器。如果1#至4#泵的已处理标志均等于1,就把5#泵的累计运行时间MOV给5#累计运行时间存储器,把5#泵的编号MOV给5#编号存储器。       再把1#-8#泵中已处理标志位为0的泵的累计时间依次与5#累计时间存储器比较,如果哪台泵的累计时间比5#累计时间存储器小就把值MOV给5#累计时间存储器,同时把该泵的编号MOV给5#编号存储器。处理完毕后,根据5#编号存储器的值把对应泵的已处理标志置为1。这样,5#累计时间存储器放的就是累计时间倒数第5的泵的时间,5#编号存储器放的就是累计时间倒数第5的泵的编号,运行时间倒数第5的泵的已处理标志就为1。

        。。。。。。这样编程,一直持续到8台。

        需要启动几台,就依次触发1-8#编号存储器对应的泵就可以了。

        更简单的排序编程我暂时还没想到。

        以上编程适合N台泵。

老菜鸟

  • 精华:22帖
  • 求助:0帖
  • 帖子:301帖 | 8609回
  • 年度积分:0
  • 历史总积分:24924
  • 注册:2003年6月15日
发表于:2009-01-14 15:49:45
35楼

        我在想,如果有100个数据需要排序,那真还不好搞,上面的控制方案不适合(程序太长)。

        更简单的排序编程方式我还没有想到。

        如果采用上位机,用VC的话就简单了。

赵久发

  • 精华:0帖
  • 求助:0帖
  • 帖子:1帖 | 81回
  • 年度积分:0
  • 历史总积分:317
  • 注册:2004年10月13日
发表于:2009-01-14 16:28:09
36楼
引用老菜鸟 的回复内容:

        我在想,如果有100个数据需要排序,那真还不好搞,上面的控制方案不适合(程序太长)。

        更简单的排序编程方式我还没有想到。

        如果采用上位机,用VC的话就简单了。




    老菜鸟你只是把时间排序做出来了还远远不够的,因为还有故障判断和启停延时判断等等,时间排序是最简单的字程序,后面的2个子程序才是最困难的。如果你能用C语言把这个程序写出来就应该能用PLC把他实现啦。只是繁简的问题。时间排序的问题我用OMRON使用FOR-NEXT指令程序很短,就是把时间作为一个数组进行排序,学过高级语言的都知道怎么做。只是把他引申到PLC而已,编程思想是一样的。的确要有个编号,我上面说的3个子程序的时候说漏了~~~~~~~
  楼主我晚上回去给你编个发给你~~~~~我现在在做项目,16个风机的启停控制,条件跟你一样的。不过我用OMRON的不知道你能不能用???

赵久发

  • 精华:0帖
  • 求助:0帖
  • 帖子:1帖 | 81回
  • 年度积分:0
  • 历史总积分:317
  • 注册:2004年10月13日
发表于:2009-01-14 16:32:59
37楼
AB的今天我才接触那个编程软件还有些地方没弄明白,直接用AB来编好像是不可能的啦~~~~~~~

yjd159

  • 精华:0帖
  • 求助:0帖
  • 帖子:16帖 | 312回
  • 年度积分:0
  • 历史总积分:417
  • 注册:2007年3月03日
发表于:2009-01-14 16:37:46
38楼
哎,看你们写的,洋洋洒洒几百字。。。思路很简单,封装一个类,将处理函数(比如时间判断,状态判断)做为静态函数封装在里面,有几个风机就创建几个实例,over...人人都会写代码,问题是能写成什么样子。。。

yjd159

  • 精华:0帖
  • 求助:0帖
  • 帖子:16帖 | 312回
  • 年度积分:0
  • 历史总积分:417
  • 注册:2007年3月03日
发表于:2009-01-14 16:40:56
39楼
目前手上有一项目,控制N套空调机组的运行。。说“N”是因为每组不定多少台,使用面向对象的思想,一套程序全搞定了。。。还用得照那么复杂啊。。

yjd159

  • 精华:0帖
  • 求助:0帖
  • 帖子:16帖 | 312回
  • 年度积分:0
  • 历史总积分:417
  • 注册:2007年3月03日
发表于:2009-01-14 16:48:33
40楼
我那个是有10多组空调机组,每组有不定台数的空调,没组里有一个中央控制器,通过modbus rtu方式采集下面每台空调运行数据及根据运行时间,负载,报警,故障等情况判断投入空调运行数量。。。。。使用AB的compactlogix,我的思路,将每台空调的参数及函数封装为一个类,上电时扫描modbus从站数量,取得每组中有多少空调,根据数量创建实例,需要启停的时候按照客户指定的流程调用循环轮询每个实例的状态,符合要求后,启动。

热门招聘
相关主题

官方公众号

智造工程师