找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 4161|回复: 15

如何使用PLC多重背景块编程

  [复制链接]
  • 打卡等级:即来则安
  • 打卡总天数:29
  • 打卡月天数:1
  • 打卡总奖励:7791
  • 最近打卡:2025-12-13 17:25:16

2540

主题

1353

回帖

2万

积分

管理员

积分
21301
发表于 2019-5-8 21:42:00 | 显示全部楼层 |阅读模式
当功能块FB1在组织块中被调用时,使用了与FB1相关联的背景数据块。这样FB1有几次调用,就必须配套相应数量的背景数据块。当FB1的调用次数较多时,就会占用更多的数据块。使用多重背景数据块可以有效地减少数据块的数量,其编程思路是创建一个比FB1级别更高的功能块,如FB10,对于FB1的每一次调用,都将数据存储在FB10的背景数据块中。这样就不需要为FB1分配任何背景数据块。
下面以发动机组控制系统为例,介绍如何编辑和使用多重背景数据块。
例 发动机组控制系统设计——使用多重背景
设某发动机组由1台汽油发动机和1台柴油发动机组成,现要求用[color=#444444 !important]plc控制发动机组,使各台发动机的转速稳定在设定的速度上,并控制散热风扇的启动和延时关闭。每台发动机均设置一个启动按钮和一个停止按钮。
项目的编程步骤如下:
(1)创建S7项目。使用菜单“文件”à“新建工程”向导创建发动机组 控制系统的S7项目,并命名为“多重背景”。CPU选择CPU 315- 2DP,项目包含组织块OB1。
(2)硬件配置。在“多重背景”项目内打开“SIMATIC 300(1)”文件夹,打开硬件配置窗口,并按图1完成硬件配置。

图1 硬件配置
(3)编辑如图2所示的符号表。

(4) 规划程序结构。程序结构规划如图3所示。FB10为上层功能块,它 把FB1作为其“局部实例”,通过二次调用本地实例,分别实现对汽 油机和柴油机的控制。这种调用不占用数据块DB1和DB2,它将每次调用(对于每个调用实例)的数据存储到体系的上层功能块FB10的背景数据块DB10中。

(5)编辑功能(FC)。FC1用来实现发动机(汽油机或柴油机)的风扇控制,按照控制要求,当发动机启动时,风扇应立即启动;当发动机停止后,风扇应延时关闭。因此FC1需要一个发动机启动信号、一个风扇控制信号和一个延时定时器。
1) 定义局部变量声明表。局部变量声明表如表1所示,表中包含3个变量,两个IN变量,1个OUT变量。
表1 变量声明表

2) 编辑FC1的控制程序。FC1所实现的控制要求:发动机启动时风扇启动,当发动机再次关闭后,风扇继续运行4s,然后停止。定时器采用断电延时定时器,控制程序如图4所示。

图4 FC1控制程序
(6)编辑共享数据块。共享数据块DB3可为FB10保存发动机(汽油机和柴油机)的实际转速,当发动机转速都达到预设速度时,还可以保存该状态的标志数据。DB3的数据如图5所示。

(7) 编辑功能块(FB)。在该系统的程序结构内,有2个功能块:FB1和FB10。FB1为底层功能块,所以应首先创建并编辑;FB10为上层功能块,可以调用FB1。
1) 编辑底层功能块FB1。在项目内创建FB1,符号名“Engine”。定义功能块FB1的变量声明表如表2所示。

FB1主要实现发动机的启停控制及速度监视功能,其控制程序如图6所示。

图6 FB1程序
2) 编辑上层功能块FB10。在项目内创建FB10,符号名“Engines”。在FB10的属性对话框内激活“多情景标题”选项,如图7所示。

图7 将FB10设置成使用多重背景的功能块
要将FB1作为FB10的一个“局部背景”调用,需要在FB10的变量声明表中为FB1的调用声明不同名称的静态变量,数据类型为FB1(或使用符号名“Engine”),如表3所示。
表3 FB10的变量声明表

在变量声明表内完成FB1类型的局部实例:“Petrol_Engine”和“Diesel_Engine”的声明以后,在程序元素目录的“多重实例”目录中就会出现所声明的多重实例,如图8所示。接下来可在FB10的代码区,调用FB1的“局部实例”。

编写功能块FB10的控制程序如图9所示。调用FB1局部实例时,不再使用独立的背景数据块,FB1的实例数据位于FB10的实例数据块DB10中。发动机的实际转速可直接从共享数据块中得到,如DB3.DW0(符号地址为“S_Data”.PE_Actual_Speed)。

图9 FB10的控制程序
(8) 生成多重背景数据块DB10。在项目内创建一个与FB10相关联的多重背景数据块DB10,符号名“Engine_Data”。如图10所示。

图10 DB10的数据结构
(9) 在OB1中调用功能(FC)及上层功能块(FB)。OB1控制程序如图11所示,“程序段4”中调用了FB10。

图11 OB1控制程序
使用多重背景时应注意以下问题:
(1) 首先应生成需要我次调用的功能块(如例中的FB1)。
(2) 管理多重背景的功能块(如例中的FB10)必须设置为有多重背景功能。
(3) 在管理多重背景的功能块的变量声明表中,为被调用的功能块的每一次调用定义一个静态(STAT)变量,以被调用的功能块的名称(如FB1)作为静态变量的数据类型。
(4) 必须有一个背景数据块(如DB10)分配给管理多重背景的功能块。背景数据块中的数据是自动生成的。
(5) 多重背景只能声明为静态变量(声明类型为“STAT”)。

来源:电工学习网
工控课堂 www.gkket.com

0

主题

107

回帖

434

积分

注册会员

积分
434
发表于 2019-5-9 00:59:02 | 显示全部楼层
无私奉献,好工控人,32个赞送给你!!
工控课堂 www.gkket.com

0

主题

76

回帖

240

积分

注册会员

积分
240
发表于 2019-5-15 16:06:19 | 显示全部楼层
在遇到你之前我对人世间是否有技术大佬保有怀疑,现在我是彻底被你征服了
工控课堂 www.gkket.com

0

主题

100

回帖

290

积分

注册会员

积分
290
发表于 2019-5-24 19:21:21 | 显示全部楼层
感谢{author}无私分享!
工控课堂 www.gkket.com

0

主题

106

回帖

447

积分

注册会员

积分
447
发表于 2019-5-25 11:36:28 | 显示全部楼层
看完楼主的帖子,我的心情竟是久久不能平息,受教了
工控课堂 www.gkket.com

0

主题

76

回帖

193

积分

新手上路

积分
193
发表于 2019-6-12 13:26:12 | 显示全部楼层
党的好公民,人民的好公仆。。。
工控课堂 www.gkket.com

0

主题

131

回帖

329

积分

注册会员

积分
329
发表于 2025-11-14 07:02:11 | 显示全部楼层
同款经历!我当初也这么过来的😂
工控课堂 www.gkket.com

0

主题

86

回帖

139

积分

新手上路

积分
139
发表于 2025-11-14 07:56:26 | 显示全部楼层
蹲个后续,楼主记得更新呀,在线等挺急的~
工控课堂 www.gkket.com

0

主题

77

回帖

119

积分

新手上路

积分
119
发表于 2025-11-14 11:01:19 | 显示全部楼层
说得对!狠狠赞同,没毛病~
工控课堂 www.gkket.com
  • 打卡等级:即来则安
  • 打卡总天数:28
  • 打卡月天数:7
  • 打卡总奖励:7961
  • 最近打卡:2025-12-22 17:16:30

3317

主题

285

回帖

2万

积分

管理员

积分
24106
发表于 2025-11-16 18:12:21 | 显示全部楼层
赞同 + 10086,完全说出了我的想法!
工控课堂 www.gkket.com
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

QQ|手机版|免责声明|本站介绍|工控课堂 ( 沪ICP备20008691号-1 )

GMT+8, 2025-12-22 17:42 , Processed in 0.087799 second(s), 25 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表