首页 上一页 1 2 下一页 尾页

(已结贴)工控PLC擂台第88期-PLC模拟量控制比例阀的问题 点击:13430 | 回复:36



玻璃的心

    
  • 精华:30帖
  • 求助:2帖
  • 帖子:962帖 | 5801回
  • 年度积分:0
  • 历史总积分:61250
  • 注册:2010年6月11日
发表于:2012-03-11 19:55:39
楼主

用模拟量模块控制一个电磁比例阀,0-5V控制,需要在设定的时间内线性的从零到最高值,但是这个时间是个变量值,可以随时调整
注意一定是线性递增的控制方式,在设定时间内线性递增。
试编写控制程序。

 

     PLC类型任意选择,回答的最好最完全的,原创最多,阐述最详细,程序越准确者获一等奖!

 

 

工控PLC擂台每周一期,本期待87期结束一周后结贴。奖项设置:一等奖1名:30~50MP,二等奖3名:10MP,三等奖10名:100积分。

MP介绍:gongkongMP即工控币,是中国工控网的用户积分与回馈系统的一个网络虚拟计价单位,类似于大家熟悉的QB,1个MP=1元人民币。

MP有什么用?兑换服务:以1个MP=1元来置换中国工控网的相关服务。 兑换现金:非积分获得的MP可兑换等值现金(满100MP后、用户可通过用户管理后台申请兑换)。



楼主最近还看过



prague502

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 4回
  • 年度积分:0
  • 历史总积分:34
  • 注册:2011年12月11日
发表于:2012-03-12 14:23:26
1楼

菜鸟学习下:)

s7-200PLC

按开始按钮运行,停止按钮停止并复位输出;

人机界面输入设定时间,与100%计算出斜率K,然后每秒输出递增K;

达到100%输出可以自动复位0%,重新开始;

运行过程中可以随时改变设定时间,比如开始设定100S,K=1,运行50s时开度50%,此时改变设定时间为200s,K=0.5,当输出100%时需再运行100s;

当然严格的说曲线并不是完全线性,像微分一样缩短间隔时间可以增加曲线平滑度。当然一般情况过分最求也没必要。

 

多多指教。

 

怪话二王

  • 精华:3帖
  • 求助:10帖
  • 帖子:160帖 | 6809回
  • 年度积分:0
  • 历史总积分:24592
  • 注册:2004年2月03日
发表于:2012-03-12 15:26:53
2楼

PLC,不会鸟

不会滴苦逼人,闪个猪头滴来~~~~~~~~~~~~~~~~~·55555555

 

闪电游侠

  • 精华:0帖
  • 求助:7帖
  • 帖子:34帖 | 485回
  • 年度积分:0
  • 历史总积分:1205
  • 注册:2006年2月09日
发表于:2012-03-12 16:44:38
3楼

VW100 设置时间,单位为秒,最大为32.767秒,AQW2----模拟量输出。I0.1 ------启动比例阀

Tough

  • 精华:3帖
  • 求助:19帖
  • 帖子:39帖 | 150回
  • 年度积分:0
  • 历史总积分:1009
  • 注册:2010年11月09日
发表于:2012-03-13 15:44:14
4楼

PLC品牌:台达    EX2系列

0~5V对应的PLC内模拟量为0~1000

PLC的模拟量输出口地址为D1116.

PLC内T127的应用是1ms,即变量时间的单位为ms

PLC梯形图

矩形科技

  • 精华:1帖
  • 求助:0帖
  • 帖子:26帖 | 276回
  • 年度积分:0
  • 历史总积分:1221
  • 注册:2008年1月18日
发表于:2012-03-13 17:01:12
5楼

这个题目实际严格用PLC来做,只能实现一个台阶输出。

1:就看如何看待这个线性变化的精度。

2:爬升的时间不能太快。

本题中,必须对输出做数字化处理,即将输出分为N次输出,每次输出的变化数一样。假设爬升时间为T,T变量放在寄存器40100中。分为N份输出,N变量放在寄存器40101中。PLC输出0-5V对应的数值为0~32767的变化范围,对应模拟量DA输出寄存器为40001。本例程设定加速时间为30S,分1000次递增输出。

用毫秒定时器来触发,改变40001的数值。毫秒定时器的长度为 40200 =(T*1000)/N = ((40100)*1000)/40101 = 30*1000/1000=30毫秒,这个时间就不考虑余数的问题了。

每次DA输出寄存器增加值为(40202) = 32767/N=32767/1000=32,余数为767。(40203)为整除之后的余数

有了这些铺垫,下面就是程序,以及仿真运行的结果,输出40001寄存器=32767丝毫不差,本程序需注意的关键是余数的处理。不然会加不到最大值。

本程序先设定爬升时间为30S,分1000次直线输出(可任意修改)。每次定时器到的时候,先加上递增的幅度,如果余数计数器没有到,则再加上一个1。1000次到后,则不做加法了。

 

另外,题外可以用硬件的方式来实现,用一个电阻和大的电容,这样,直接输出一个最大的5V,然后由电阻和电容的数值,实现一个输出指数的爬升,估计比PLC实现的波形不会差,不过爬升时间越大,这个电容就要求越大,就越不现实了。

再贴张大一点图。

需要原程序的可联系liujl@plcstar.com

wyb2866255---王者之师

  • 精华:73帖
  • 求助:0帖
  • 帖子:218帖 | 2872回
  • 年度积分:0
  • 历史总积分:31450
  • 注册:2010年7月01日
发表于:2012-03-16 08:44:13
6楼

一、硬件的组成及设置:

  1、选用S7-200PLC  模块为EM235     模拟量输出设定为0~20ma,输出口对模拟地并接250Ω标准电阻,变0~20ma 电流输出为0~5V电压输出。

  2PLC的输入I0.0为启动电磁阀开门命令信号,EM235AQW0输出点为控制电磁阀的输出0~20ma,流经250Ω标准电阻,输出给电磁阀为0~5V的电压信号。

  3、设VW0为设定电磁阀动作时间的置数区,此值是由由上位机或触摸屏中设定,再传递给PLC

    3、编程处理:按下启动按钮,使M0.0=1,将T0值送入VW10,启动振荡器,此时振荡周期=2T0。用T96=1的前沿,将 送入AQW0,,每产生一次T96=1的前沿,将AQW0+ -àAQW0,第10次后,将余数 送入VW10,振荡周期改为2T1。当T96=1时,将  送入AQW0,到此控制过程结束。

三、编程:

 

wyb2866255---王者之师

  • 精华:73帖
  • 求助:0帖
  • 帖子:218帖 | 2872回
  • 年度积分:0
  • 历史总积分:31450
  • 注册:2010年7月01日
发表于:2012-03-18 13:28:29
7楼

  第二种编程方案与计算方法

   6楼讲的是将电磁阀控制时间等分10份,按十分之一的时间线性的递增AQW0的数字输入值,如动作时间较长,使模拟量输出变为阶梯似的线性增长,为使阶梯幅度变小,缩短连续送数的时间间隔,为此选用第二种方案,即规定送数时间间隔为4mS,这样在T时间内,求出送数的次数NN=T / 4 ,再求出余数:m= T4·N,每次送出的数字增量:△X=32000 / N (取整数),如m0,在最后m时间里送出的数字量=32000N·△X 。见以下编程:

jiang_0514

  • 精华:0帖
  • 求助:0帖
  • 帖子:65帖 | 213回
  • 年度积分:0
  • 历史总积分:14165
  • 注册:2005年7月21日
发表于:2012-03-23 15:48:17
8楼

各楼主多很厉害吗,学习中。     

xiaomomei

  • 精华:0帖
  • 求助:1帖
  • 帖子:2帖 | 81回
  • 年度积分:0
  • 历史总积分:246
  • 注册:2011年3月15日
发表于:2012-04-01 20:10:32
9楼
引用 jiang_0514 的回复内容: 各楼主多很厉害吗,学习中。     



戴国政

  • 精华:0帖
  • 求助:1帖
  • 帖子:1帖 | 14回
  • 年度积分:0
  • 历史总积分:98
  • 注册:2010年4月29日
发表于:2012-04-19 21:31:54
10楼

·从原理上讲,比例阀的响应频率不过25HZ,即在设计时需要根据比例阀的响应速度设置控制周期,在程序上为最小时基。但往往控制周期还跟很多因素有关,本程序将时基设置为可设,但如果把时基设置小于扫描周期,是没有意义的。

·采用西门子PLC,加12位精度模拟量模块,0-10v输出对应0-27648,输出地址PQW256;

·I0.0控制启停;

 

程序结构:

DB1:

       +0.0     Int  OutPV

      +2.0     DI    PulseBase      

       +6.0    real   SetTimeBase

      +10.0   real   SetRampingTime

 

程序:

OB1------------------------------------nw1----------------------------------   L     LD     6
      ITD  
      DTR  
      L     1.000000e+003
      /R   
      T     MD   100            //周期扫描时间s转换成ms

   

      L     MD   200
      L     MD   100
      +R   
      T     MD   200

      L     DB1.DBD    6
      >R   
      JCN   init                        //生成设定时间基数循环标志位;
      S     M     10.0              //计时到,置位M10.0,计数清零;

      L     0.000000e+000
      T     MD   200


nw2--------------------------------------------------------------------------

 

init: L     DB1.DBD   10
      L     DB1.DBD    6
      <R                             //若设定爬坡时间输入小于时基,将时基赋予爬坡时间;

      JCN   _001
      L    DB1.DBD6

      T   DB1.DBD10 

_001: L     DB1.DBD   10
      L     DB1.DBD    6
      /R   
      T     #TimesOfRamping    //求出需要循环累加的次数;

 

      L     13824
      T     #OutLimit

      L     #OutLimit
      ITD  
      DTR  
      L     #TimesOfRamping
      /R   
      T     #ValueReal
      TRUNC
      T     DB1.DBD    2                //计算每次循环需要累加控制量;

 

nw3--------------------------------------------------------------------------

 

      A     I      0.0
      JC    Run
      L     0                           //未启动,输出赋0,程序返回;
      T     DB1.DBW    0
      BEC  

Run:  A     M     10.0          //周期未到,返回;
      JC    Caut
      BEC  

Caut: L     DB1.DBW    0                //循环累加并输出
      L     DB1.DBW    4
      +I   
      T     DB1.DBW    0

      L     #OutLimit
      >I   
      JCN   OutP

      L     #OutLimit
      T     DB1.DBW    0

OutP: L     DB1.DBW    0
      T     PQW  256
      R     M     10.0                  //每个控制周期输出一次,完成后复位循环标志位,等待下一次触发;

·

先进维修

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 11回
  • 年度积分:0
  • 历史总积分:10
  • 注册:2009年11月12日
发表于:2012-04-21 20:59:10
11楼

很厉害长见识了。。。。。

aleckfan

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 15回
  • 年度积分:0
  • 历史总积分:137
  • 注册:2012年4月24日
发表于:2012-04-24 16:55:19
12楼
mark~明天来回答

aleckfan

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 15回
  • 年度积分:0
  • 历史总积分:137
  • 注册:2012年4月24日
发表于:2012-04-25 14:48:52
13楼

我用beckhoff的plc编的,请大家看看:

aleckfan

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 15回
  • 年度积分:0
  • 历史总积分:137
  • 注册:2012年4月24日
发表于:2012-04-25 14:50:43
14楼
不好意思,上面没有贴全,继续

aleckfan

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 15回
  • 年度积分:0
  • 历史总积分:137
  • 注册:2012年4月24日
发表于:2012-04-25 14:53:48
15楼
解释一下:
1:时间输入,喜欢在多少MS内完成
2:把总长分成10段
3:类型转换
4/5: 做了一个脉冲发生器,时间就是根据前面希望完成的总是见除以10
6:计数器,没个上升沿+1
7假设是0-5v对应的也是0-5,那么我每次计数器加的数值还要*0.5,数值给比例阀就行了

aleckfan

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 15回
  • 年度积分:0
  • 历史总积分:137
  • 注册:2012年4月24日
发表于:2012-05-11 13:04:30
16楼
这个贴还没评分吗?什么时候结贴?

夏天

  • 精华:1帖
  • 求助:2帖
  • 帖子:5帖 | 30回
  • 年度积分:0
  • 历史总积分:933
  • 注册:2005年12月04日
发表于:2012-05-24 10:50:31
17楼
各楼主多很厉害吗,学习中。

飘在半途中

  • 精华:2帖
  • 求助:0帖
  • 帖子:22帖 | 65回
  • 年度积分:0
  • 历史总积分:775
  • 注册:2010年9月09日
发表于:2012-10-19 17:12:35
18楼

人是中国人,心是中国心!

我用CJ2M系列的PLC,模拟量模块采用CJ1W-DA041(单元号:0,第1CH)

两次刷新时间间隔越小,线性度越好,本人采用1ms周期对模拟量输出通道的值进行刷新

硬件设置如下:

 

 

程序如下:

 

 

 

 

 

 

 

 

 

 

 

 

飘在半途中

  • 精华:2帖
  • 求助:0帖
  • 帖子:22帖 | 65回
  • 年度积分:0
  • 历史总积分:775
  • 注册:2010年9月09日
发表于:2012-10-19 17:23:32
19楼
版主快结贴吧,快过去一年了!

芽菜@技术豆

  • 精华:0帖
  • 求助:5帖
  • 帖子:24帖 | 326回
  • 年度积分:0
  • 历史总积分:0
  • 注册:1900年1月01日
发表于:2012-11-09 09:34:19
20楼
飘过 学习  长知识啊...

热门招聘
相关主题

官方公众号

智造工程师
    首页 上一页 1 2 下一页 尾页