一段控制阀门的程序 点击:803 | 回复:18



挥动翅膀的驴

    
  • 精华:0帖
  • 求助:0帖
  • 帖子:12帖 | 11回
  • 年度积分:0
  • 历史总积分:49
  • 注册:2008年8月03日
发表于:2008-09-23 20:59:28
楼主

      有三台水泵机组A1,A2,A3,加氯机根据三台机组的开停情况来控制加氯阀门的开启度。阀门使用开关量输出DO1,DO2控制开和关,开关量通过两个继电器来控制。现在我做了三段子程序。首次扫描位25315后,当只开一台机组(A1,A2,A3中任意一台)时,调用1#子程序,将阀门开至20%。当开任意两台机组后,调用2#子程序,将阀门开至40%。当三台机组全开时调用3#子程序,将阀门开至60%。

    下面的问题就让我比较头疼了,比如说1.在三台机组运行的过程中,现在停用了一台机组,变成两部机组运行了(三变二)。2.在两台机组运行的过程中,又开了一台机组,变成三部机组运行了(二变三)。3.二变一。4.一变二。     这个程序的逻辑结构应该怎么处理。再定义四个子程序吗。还有就是比如说从三变二,再从二变一这个过程时,程序怎么连接。有哪位高手能帮我理一理这个程序最好的结构。不胜感激。




caftcg

  • 精华:1帖
  • 求助:0帖
  • 帖子:9帖 | 95回
  • 年度积分:0
  • 历史总积分:175
  • 注册:2004年10月26日
发表于:2008-09-26 09:42:12
1楼

我看了也有些不明,你用开关量怎么控制阀门的开度:20%,40%,60%.         再者假如你的控制要求就是这么简单,用得着编写子程序吗?

你只需想办法确认有几台水泵在工作即可.不明?

神仰慕的孩子

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 18回
  • 年度积分:0
  • 历史总积分:34
  • 注册:2006年1月19日
发表于:2008-09-26 10:07:57
2楼

调用1号子程序的逻辑是Q1=A1*A2(非)*A3(非)+A1(非)*A2*A3(非)+A1(非)*A2(非)*A3

调用2号子程序的逻辑是Q2=A1*A2*A3(非)+A1(非)*A2*A3+A1*A2(非)*A3

调用3号子程序的逻辑是Q3=A1*A2*A3

 

神仰慕的孩子

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 18回
  • 年度积分:0
  • 历史总积分:34
  • 注册:2006年1月19日
发表于:2008-09-26 10:09:08
3楼

调用1号子程序的逻辑是Q1=A1*A2(非)*A3(非)+A1(非)*A2*A3(非)+A1(非)*A2(非)*A3

调用2号子程序的逻辑是Q2=A1*A2*A3(非)+A1(非)*A2*A3+A1*A2(非)*A3

调用3号子程序的逻辑是Q3=A1*A2*A3

 

nan

  • 精华:0帖
  • 求助:0帖
  • 帖子:1帖 | 1099回
  • 年度积分:0
  • 历史总积分:2374
  • 注册:2003年9月23日
发表于:2008-10-01 23:38:03
4楼
开关量是不能控制阀门开度的,要控制开度需要选择模拟量的模块。

99999

  • 精华:0帖
  • 求助:0帖
  • 帖子:21帖 | 1126回
  • 年度积分:0
  • 历史总积分:2627
  • 注册:2007年11月20日
发表于:2008-10-02 00:12:37
5楼

程序很简单的,不复杂..

sd642476

  • 精华:0帖
  • 求助:0帖
  • 帖子:3帖 | 99回
  • 年度积分:0
  • 历史总积分:130
  • 注册:2007年6月19日
发表于:2008-10-03 11:27:06
6楼

我都花好了 .不让我传....

sd642476

  • 精华:0帖
  • 求助:0帖
  • 帖子:3帖 | 99回
  • 年度积分:0
  • 历史总积分:130
  • 注册:2007年6月19日
发表于:2008-10-03 11:31:58
7楼

ld a1 or a2 or a3 not q2 not q3 out q1

 

ld a1 and a2

ld a1 and a3

or ld

ld a2 and a3

or ld

andnot q3 out q2

ld a1 and a2 and a3 out q3

yjig

  • 精华:2帖
  • 求助:5帖
  • 帖子:97帖 | 5237回
  • 年度积分:0
  • 历史总积分:12514
  • 注册:2004年6月04日
发表于:2008-10-03 11:39:11
8楼
工作要求很简单,但被你左个一逻辑,右一个逻辑搞得复杂了。

yjig

  • 精华:2帖
  • 求助:5帖
  • 帖子:97帖 | 5237回
  • 年度积分:0
  • 历史总积分:12514
  • 注册:2004年6月04日
发表于:2008-10-03 12:02:18
9楼
下图是三菱的PLC梯形图,供参考。

sd642476

  • 精华:0帖
  • 求助:0帖
  • 帖子:3帖 | 99回
  • 年度积分:0
  • 历史总积分:130
  • 注册:2007年6月19日
发表于:2008-10-03 19:55:09
10楼

楼上的觉得有点问题吧

同个扫描周期有2个同时变了?

只能记一个吧?

yjig

  • 精华:2帖
  • 求助:5帖
  • 帖子:97帖 | 5237回
  • 年度积分:0
  • 历史总积分:12514
  • 注册:2004年6月04日
发表于:2008-10-03 20:20:17
11楼

不明白,你说的2个是Y000、Y001、Y002?

以Y000(泵1)为例,箭头向上的是泵1在刚接通的瞬间,用INC(增加)命令对D0加1,其余时间不动作。

同样,仍以Y000为例,箭头向下的是在刚断开的瞬间,用DEC(减少)命令对D0减1,其余时间不动作。

无论水泵有几台在工作,D0始终记录着他们的工作状态,D0=0,全部停止,

D0=1,只有1台泵工作(任意),

D0=2,只有2台泵工作(任意),

D0=3,3台泵全部工作。

同理,M1=1就是只有1台泵工作,M2=1就是有2台泵工作,M3=1就是3台泵全部工作。

 

sd642476

  • 精华:0帖
  • 求助:0帖
  • 帖子:3帖 | 99回
  • 年度积分:0
  • 历史总积分:130
  • 注册:2007年6月19日
发表于:2008-10-03 20:54:13
12楼

以Y000(泵1)为例,箭头向上的是泵1在刚接通的瞬间,用INC(增加)命令对D0加1,其余时间不动作。

我觉得应该是扫描到这条指令时比较y000-y002的状态和y000-y002在上一个扫描周期的状态

如果是这样的话

如果其中有一样状态的两个条件的话 or条件 应该是输出了一个 加1

这样不就少记了么 ?

yjig

  • 精华:2帖
  • 求助:5帖
  • 帖子:97帖 | 5237回
  • 年度积分:0
  • 历史总积分:12514
  • 注册:2004年6月04日
发表于:2008-10-03 21:06:03
13楼

楼上说的是Y000与Y001有同时启动的可能?

如果是,还真有点麻烦。

这种概率几乎为零,除非在电路中有意识的处理,也就是两台水泵采用同一个启动信号(继电器、接触器)控制。不过,本人认为也没有这(同时启动)必要吧。

 

sd642476

  • 精华:0帖
  • 求助:0帖
  • 帖子:3帖 | 99回
  • 年度积分:0
  • 历史总积分:130
  • 注册:2007年6月19日
发表于:2008-10-03 21:11:29
14楼

的确...

这种大东西

一般不会一起(一个扫描周期内)启动

不过...

有较真的客户或者领导就不好办了........

yjig

  • 精华:2帖
  • 求助:5帖
  • 帖子:97帖 | 5237回
  • 年度积分:0
  • 历史总积分:12514
  • 注册:2004年6月04日
发表于:2008-10-03 21:29:45
15楼

如果真有可能同时启动,还有一办法,用“SUM”“ON”位数指令:

M8000------------------------[SUM    K1M0    D0]

说明:M0---M2表示3台泵,判断方法仍同上。

M3空,但已被调用,即M0---M3不可作为其他用途。

 

sd642476

  • 精华:0帖
  • 求助:0帖
  • 帖子:3帖 | 99回
  • 年度积分:0
  • 历史总积分:130
  • 注册:2007年6月19日
发表于:2008-10-03 21:47:35
16楼

看不懂了

呵呵

我没用过30的plc~~

yjig

  • 精华:2帖
  • 求助:5帖
  • 帖子:97帖 | 5237回
  • 年度积分:0
  • 历史总积分:12514
  • 注册:2004年6月04日
发表于:2008-10-03 21:54:15
17楼

[SUM    K1M0    D0]指令是:

对M0、M1、M2、M3共4个内部继电器的接通(ON)状态进行求和统计,并将结果存到寄存器D0中。

如M0、M3工作,那么D0=2

当然,楼主只用3台泵,那么就让M3空着不用。

以上M0--M3已经被PLC调用,不能再作其他用途。

sd642476

  • 精华:0帖
  • 求助:0帖
  • 帖子:3帖 | 99回
  • 年度积分:0
  • 历史总积分:130
  • 注册:2007年6月19日
发表于:2008-10-03 22:09:00
18楼

这个很好啊

很强大~~

哈哈

 


热门招聘
相关主题

官方公众号

智造工程师