GE PLC 功能块如何自行定义 点击:6699 | 回复:15



lizhe_com

    
  • 精华:0帖
  • 求助:0帖
  • 帖子:6帖 | 10回
  • 年度积分:0
  • 历史总积分:161
  • 注册:2004年12月27日
发表于:2010-11-28 13:25:43
楼主
GE PLC可以自做功能块,但如何制作,请教。多谢



wujp

  • 精华:0帖
  • 求助:0帖
  • 帖子:2帖 | 77回
  • 年度积分:0
  • 历史总积分:641
  • 注册:2010年10月24日
发表于:2010-11-28 22:33:01
1楼
你参考一下这个功能块。当然,在功能块里面还要写程序。

青青子衿

  • 精华:0帖
  • 求助:0帖
  • 帖子:1帖 | 323回
  • 年度积分:0
  • 历史总积分:6487
  • 注册:2004年11月01日
发表于:2010-11-29 21:58:00
2楼

首先要看你是哪个系列,不同系列支持的功能块方式不同。

自定义功能块有以下几种方式:

1.自定义不带引脚的子程序块。可以建个子程序块,里面用到的变量定义好地址,其它程序反复调用,调用前给子程序块里的变量赋值。在一个扫描周期内完成所有调用,不支持中断,因此子程序块不能用上升,下降沿之类的指令,计时器也不要用。

2.BLOCK(块):和1的区别就是支持中断。没有引脚。

3.parameterized block(参数块):带参数的BLOCK,根据系列不同,支持的参数数量不同。参数块不能定义块的局部变量。(memory)

4.function block(功能块):parameterized block的加强版,可以定义块的局部变量,而且可以定义静态变量,如果自己编的PID,用这个块是一种方式。不支持中断。

5.超强块------C块:C语言编写的功能块。分为三类。第一类,BLOCK,和上面讲到的BLOCK不同,这个BLOCK最多可以定义七个输入,一个输出。第二类,FUNCTION BLOCK(FBK),可以定义七对输入输出。第三类,standalone C program,独立的C程序,没有引脚,这个功能块不用在主程序中调用,和主程序是顺序执行的,并列关系。

    C块的生成是由GE的专用编译软件来完成的,9070,9030的编译软件是plc_C_TooLKIt,PAC系列的是PACSsystems C Toolkit。

以上介绍完功能块的种类,下面说一个不同系列支持哪种。

1.versamax:只支持1

2.9030,只支持1,5。说明:9030只支持C块的BLOCK,FBK两种,只能在程序中调用。需要在编译软件的BLDVARS文件中定义编译成哪种方式,不支持指针。

3.9070:支持1,2,3,5。说明:9070的参数块,最多可以定义七对输入输出;支持三种C块。需要在编译软件的BLDVARS文件中定义编译成哪种方式,不支持指针。

4.PAC:支持1,3,4,5。说明:不支持2,其实参数块如果不定义参数,就是2了。C块,只有一种C BLOCK,兼容9070的C BLOCK和C FUNCTION BLOCK,不支持standalone C program方式,支持指针。

以上纯属个人总结,欢迎指正,补充。

voloFuny

  • 精华:0帖
  • 求助:0帖
  • 帖子:10帖 | 161回
  • 年度积分:0
  • 历史总积分:137
  • 注册:2008年3月02日
发表于:2010-12-07 14:10:04
3楼
我用的versamax 是不是就不能像西门子那样 自己做一个FC块来用用的 如果只支持1的话 我觉得意义就不大了,如果有两个功能同时要调用到这个子程序里,那么里面对应的地址的值岂不是乱套了,比如R00001这个点位,温度也调有这个块,压力也调用这个块,那岂不是同时赋值给这个R00001 那不是乱套了吗?不知道我理解的对不对,望高手给出很给力的方法。

青青子衿

  • 精华:0帖
  • 求助:0帖
  • 帖子:1帖 | 323回
  • 年度积分:0
  • 历史总积分:6487
  • 注册:2004年11月01日
发表于:2010-12-09 00:10:24
4楼

 voloFuny :

不带引脚的功能块可以反复调用。每次调用后要把结果输出到其它的变量里。

例如,你做一个量程转换的功能块,可以在功能块中用R1到R5分别定义量程转换前的上下限,工程单位上下限和实际采样值,再定义一个R20做为输出。调用功能块前,先用MOVE给这几个R赋值,然后用CALL调用,再将R20赋给转换后的变量。这样,就可以反复调用这个功能块。

zlj_lf

  • 精华:0帖
  • 求助:0帖
  • 帖子:1帖 | 4回
  • 年度积分:0
  • 历史总积分:16
  • 注册:2010年5月10日
发表于:2010-12-21 15:06:20
5楼
青青师父很厉害啊,想向您学习啊

zlj_lf

  • 精华:0帖
  • 求助:0帖
  • 帖子:1帖 | 4回
  • 年度积分:0
  • 历史总积分:16
  • 注册:2010年5月10日
发表于:2010-12-21 15:16:21
6楼
您好,我想请问一下,为什么不支持中断的子程序中就不能用上升沿和下降沿之类的指令呢!

青青子衿

  • 精华:0帖
  • 求助:0帖
  • 帖子:1帖 | 323回
  • 年度积分:0
  • 历史总积分:6487
  • 注册:2004年11月01日
发表于:2010-12-21 16:30:02
7楼

在一个扫描周期内反复调用一个里面有上升或下降沿的功能块,每次执行到这个功能块时,对上升和下降沿重新赋值,由于上升和下降沿是一个周期内有效的,因此多次调用,上升和下降沿还没有完成功能,就被重新赋值。

kangyancheng

  • 精华:0帖
  • 求助:0帖
  • 帖子:2帖 | 30回
  • 年度积分:0
  • 历史总积分:156
  • 注册:2006年6月17日
发表于:2010-12-28 11:12:10
8楼

利用程序扫描完成多次调用

见图片

kangyancheng

  • 精华:0帖
  • 求助:0帖
  • 帖子:2帖 | 30回
  • 年度积分:0
  • 历史总积分:156
  • 注册:2006年6月17日
发表于:2010-12-28 11:14:04
9楼
子程序图片       (测试)

青青子衿

  • 精华:0帖
  • 求助:0帖
  • 帖子:1帖 | 323回
  • 年度积分:0
  • 历史总积分:6487
  • 注册:2004年11月01日
发表于:2010-12-28 19:03:12
10楼

楼上发的就是第一种方法。

 

boyyxt

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 3回
  • 年度积分:0
  • 历史总积分:33
  • 注册:2002年9月01日
发表于:2011-11-28 14:04:38
11楼
正在使用中。好好研究。

supop

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

学习了,楼上的几位都很厉害呀

未注册

  • 精华:0帖
  • 求助:0帖
  • 帖子:1帖 | 37回
  • 年度积分:0
  • 历史总积分:103
  • 注册:2010年3月03日
发表于:2012-05-05 13:14:48
13楼

很简单的,新建一个function block,定义输入和输出变量,将需要的逻辑写到功能块,然后在新的程序块中直接调用就可以了。

 

多啦美

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 2回
  • 年度积分:0
  • 历史总积分:2
  • 注册:2013年9月16日
发表于:2013-09-16 19:02:04
14楼

回复内容:

对: wujp  你参考一下这个功能块。当然,在功能块里面还要写程序。 内容的回复!


 您好,我想请问一下,这个GE的功能块,我增加了一个新的管脚,把程序下传下去时报了一个ERROR 9681   说Ehanced psbs cannot be used in IC698CRE020。我不太明白,我只是增加一个管脚,求帮助

多啦美

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 2回
  • 年度积分:0
  • 历史总积分:2
  • 注册:2013年9月16日
发表于:2013-09-16 19:02:56
15楼

回复内容:

对: 青青子衿  首先要看你是哪个系列,不同系列支持的功能块方式不同。自... 内容的回复!


 您好,我想请问一下,这个GE的功能块,我增加了一个新的管脚,把程序下传下去时报了一个ERROR 9681   说Ehanced psbs cannot be used in IC698CRE020。我不太明白,我只是增加一个管脚,求帮助


热门招聘
相关主题

官方公众号

智造工程师